namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NMZ.f vs NMZ.field (Re: namazu's command line options)



まえだです。

たかばやしさん>
> 検索結果の表示をカスタマイズ可能にしようという考えもあって、
> これは NMZ.result なりを用意し、
> 
>   <dt>
>   <strong><a href="$uri">$title</a></strong>
>   <dd>
>   <strong>Author</strong>: <em>$author</em><br>
>   <strong>Date</strong>: <em>$date</em><br>
>   <strong>Size</strong>: <em>$size bytes<\em><br>
>   $summary
>   <dd><a href="$uri">$uri</a><br><br>
> 
> といった記述から、 $uri, $title, などの部分を検索結果の表示
> の際に NMZ.field.* の内容を元に動的に置き換える、という仕組
> みを考えています。
> 
> ただ、こういった処理を C言語で実現するのは面倒なのが難点です。
> どなたか書きません? :)

flexを使うのはだめですかね?
正規表現無しなら、strstr(3)つかっても簡単にできそうかな?
%{
#define		MAX_LEN		256
	unsigned char uri[MAX_LEN];
	unsigned char title[MAX_LEN];
	unsigned char author[MAX_LEN];
	unsigned char date[MAX_LEN];
	unsigned char summary[MAX_LEN];
	int size;
%}

%%

$uri 		printf("%s", uri);
$title 		printf("%s", title);
$author		printf("%s", author);
$date 		printf("%s", date);
$size		printf("%d", size);
$summary	printf("%s", summary);

%%
int main(int argc, char **argv[])
{
	strcpy(uri, "http://www.namazu.org/");
	strcpy(title, "namazuのページ");
	strcpy(author, "Satoru Takabayashi");
	strcpy(date, "1999年6月1日");
	strcpy(summary, "namazuの公式ホームページ");
	size = 1024;
	if ((yyin = fopen("NMZ.result", "r")) == NULL) {
		perror("fopen");
		exit(-1);
	}
	yylex();
}