にしし らぼらとりー

にしし(西村文宏)製スクリプトの公開開発実験場(ラボラトリー)です。各種スクリプトの最新版やβ版の動作確認ができます。バグ報告や、機能面でのご要望などもお気軽にお知らせ下さい。

※当ウェブサイトは、にしし製フリーCGIなどの動作確認サンプルを公開したり、製作進行に関する呟きを掲載している実験場のようなものです。 各種CGIスクリプトの配布パッケージを入手したい場合や、にしし(西村文宏)の個人サイトをお探しの場合は、 本家サイト「にしし ふぁくとりー」へお越し下さい。(╹◡╹)ノ

RSS Feed

開発放言 No.2466, No.2465, No.2464, No.2463, No.2462, No.2461, No.2459[7件]

新規投稿 / 管理用

この実装方法を考えていたときに気付いたのだが、てがろぐの全文検索では AND、OR、NOT検索が可能ではあるものの、ORの構成要素にNOTを使う検索はできない仕様だった。
例えば -りんご -みかん のようにAND検索の構成要素にNOTを使うことはできるが、 -りんご|-みかん のようにOR検索の構成要素にNOTを使うことはできないと気付いた。そんな需要があるかどうか分からないが(なさそうな気もする)。どちらにしても、激しく面倒なので対応する気はない。┌(:3」└)┐ ChatGPTに頼めば良さげなアルゴリズムを教えてくれそうな気はするけども。

by nishishi. てがろぐ <278文字> 編集

IF文の実装には、ソースを10行くらいしか追加していない。一番面倒だと思われた条件指定部分 [[IF(この部分):~~~ は、元々てがろぐに実装していた全文検索関数にそのまま丸投げすることで済んだので、ほとんどコードを書く必要がなかった。なので、中身は全文検索機能そのままなので、SITUATION:CLASSとして出力される各キーワードと完全一致ではなく部分一致でも使える。例えば、投稿単独表示時には onelog で、複数投稿の連結時には somelogs というキーワードになる仕様なので、[[IF(log):~~~ とだけ書くと、その両方にマッチできる。この仕様があるので home を条件に指定すると問答無用で grandhome にもマッチしてしまうのだが、元々 grandhome は home を内包しているので問題なかった(たぶん)。

by nishishi. てがろぐ <376文字> 編集

てがろぐ本文に書ける装飾記法等は入れ子にできるのだが(できないと不便だから頑張ったのだが)、この判定が凄まじく面倒くさいことに(入れ子を可能にするための)実装段階で気がついた。始まりは [B: のように英字が付いているので探すのは簡単なのだが、終わりは単に閉じカッコ ]があるだけなので、それだけでは「どの装飾の終わりなのか?」が分からない。なので、カッコの対応を外側から順に判別しながらでないと終わりを特定できない。たぶん本職のプログラマが見たら噴飯物の力業で解決してある。世の中にはもっとスマートな解決策があるような気がするが。で、今回実装したIF文にもその問題があるのだが、さすがに面倒くさすぎるので、[[IF(…): で始まるだけでなく ~:IF]] で終わる仕様にした。書くのが少々面倒だが、IF文はそんなに頻繁に書くわけではないだろうから容認してもらいたい。┌(:3」└)┐ なお、IF文自体は入れ子にできない。ELSEとかもない。条件指定部分でAND・OR・NOTを併用できるので、IF文を入れ子にする必要性はないのではないかと思っている。ELSEがあれば便利なのはよく分かるのだが、実装方法を考えるだけで気が遠くなるので考えていない。

by nishishi. てがろぐ <525文字> 編集

このIF文は、外側スキンでも内側スキンでも両方で使える。 >>2462

by nishishi. てがろぐ <35文字> 編集

IF文を使って、特定の状況だけでHTMLの出力を切り替えられる機能も実装できた。めでたい。
全文検索と同じように、AND OR NOT検索で状況を指定できるようにした。
  • [[IF(onelog):~~~:IF]] と書けば「~~~」の部分が投稿単独表示時にだけ出力される。
  • マイナス記号を付けて [[IF(-onelog):~~~:IF]] と書けば「~~~」の部分は投稿単独表示時以外の状況で出力される。
丸括弧の中は home とか grandhome とか cat-info とか user-tomoyo とか、SITUATION:CLASS に出力される状況キーワードを全部使える。AND OR NOT検索と同じ要領で、複数の単語を同時に指定もできる。
なので、
  • 例えば、[[IF(selected-cat -cat-info):~~~:IF]] と書けば、カテゴリ限定表示時(ただしカテゴリinfoの表示時は除く)だけの状況で出力できる。
これは、便利なのでは……。(自画自賛!)

この機能を使うと、状況別にHTMLを出し分けられるだけではなくて、今までなら複数のスキンを併用しないといけなかったことも、もしかして単一のスキンで済むようにもできたりするのではないか……。(いや、深くは考えていないけども。)

by nishishi. てがろぐ <567文字> 編集

ユーザ設定の「紹介文」欄に入力した内容を出力する記法 [[USERINTRO]] を追加した。
USERで始まる記法が複数あるので、どうせなら USER:INTRO とか USER:ID とかにする方が読みやすいかな……と思ったものの、これ以上は増えなさそうだし、そこまで気にするほどでもないかと思い直して、やめた。

by nishishi. てがろぐ <158文字> 編集

どうせなら、[[SITUATION:CLASS]]書いたときに出力されるキーワードをそのまま全部使える仕様だと活用の幅が広がって便利かもしれない。 >>2458
例えば [[[IF(onelog): ~ ]]] と書けば、[[SITUATION:CLASS]]に「onelog」と出力される状況(=投稿単独表示時)だけで出力される、とか。その場合は、否定の記法も用意して [[[IFNOT(onelog): ~ ]]] みたいなのもあると使いやすそうな気がする。

by nishishi. てがろぐ <232文字> 編集

Powered by てがろぐ Ver 4.6.0.

DASHBOARD

■開発放言について

にしし製CGIの開発進行に関する放言です。思いついたことを適当に放り込む空間なので、どんな呟きも確定的な開発予定というわけでは全くありません。しかしながら、機能面でのご要望や開発予定機能への支持表明はお気軽にどうぞ。ただし、ここには直接は投稿頂けませんので、公式動作テスト用てがろぐ等をご利用下さい。

編集

■全文検索:

■日付検索:

■カレンダー:

2023年11月
1234
567891011
12131415161718
19202122232425
2627282930

■ハッシュタグ:

▼現在の表示条件での投稿総数:

7件

▼最後に投稿または編集した日時:

2025年05月25日(日) 12:08:17