スキャナ&パーサーだけで力尽きた…… racc css.y

ホントはアクション部分も少し書いたんだけど、どうも上手くいかないので削除って、とりあえず分離させておくことにしてみた。パーサーから構文木作るところって普通はどういう風に実装するだろう。再帰定義の部分で汚くなっちゃうんだよなぁ。スーパー簡単なサンプルが欲しい……

あーあと、Invalid なものが突っ込まれたとき、その部分を無視してパースを続ける、っていうのはどうやって書くんだろう。謎ががががが。

パースエラーは error に還元される。だから、右辺の正しい場所に error を置いとけば無視できると。CSS の ruleset を処理中にパースエラーが起きたら ruleset : error とか書いておけばそこを飛ばして次のやつを探す?みたいな? 適当にやってみよう。

error トークン書くと on_error 呼ばれないのか。なんかどういう風にエラーを処理するのかわからん。

  1. トップ
  2. web
  3. CSS/Ruby
  1. トップ
  2. prog
  3. CSS/Ruby

なんだか今度は Done までいかずに死んだらしくインデックスが壊れた (?) らしい。新しいファイルが追加されてなかった。インデックス削除したらなおった。

正確には追加されてるみたいなんだけど、検索すると別の文書がヒットする。ポインタ (?) がズレてる感じ。二回目だ……

  1. トップ
  2. web
  3. Namazu
  1. トップ
  2. soft
  3. Namazu

何か Killed って言われるので6時から3時にしてみた。Ruby で日記の XML をセクションごとに HTML にわけるところで Killed。mknmz も中途半端に終わったらしく NMZ.lock2 が残ってた。謎。

  1. トップ
  2. web
  3. CRON で殺される。

img 要素がはみ出したり、Gecko では URI が折り返されなかったりで横スクロールがでるけど確実にうざいので対策。

CSSimg { max-with: 100% }, p, dt, dd, li { overflow: hidden } にしてみた。どんな弊害があるかしら。

と思ったら後者で float したところに流れ込まなくなった。なんでだろう。

float させてる中に画像があると大きさが 0 になっちゃうか。だめだなこりゃ。さくじょー

  1. トップ
  2. web
  3. 横スクロール
  1. トップ
  2. soft
  3. 横スクロール

とりあえずカレントノードとコンテキストノード。

カレントノード = current() で、コンテキストノード = self::node()。カレントノードは XSLT のもの。XPath には current() という関数はないし、そもそも必要ない。

current() が変わるのは xsl:template 又は xsl:for-each。選択 (select) されたノードが current() になる。

self::node() が変わるのは /, [ ]。(別に変わるとは限らない……)

基準点とノードテストがまだあんまり理解できてない……

  1. トップ
  2. web
  3. XSLT と XPath の理解
  1. トップ
  2. xslt
  3. XSLT と XPath の理解

/view-img/2003/ みたいな。

RDF は画像ファイル自身に埋め込んだのを取り出していちいち動的に合成してる。現状では同じディレクトリに samp-meta.rdf があるからそっち直接読んでもいいんだけど……実験ってことで……

合成するとき REXML 使ってるから怪しい XML (名前空間接頭辞が他のファイルと違うとか) があるとたぶんパースエラーになる。稀なケースだし Ruby のライブラリでガッチリキッチリ実装した使いやすいやつを知らないので仕方ない。

ローカル側では RDF を埋め込む (ファイル名に -meta.rdf をつけたやつを突っ込む) ときに画像サイズが一定以上だったらサムネイルを作って、その情報 (foaf:thumbnail) も追加して埋め込む。

サーバー側は同じディレクトリの画像をスキャンして RDF を取り出し、@rdf:about を書き換えて合成。合成したヤツを XSLT エンジンに渡す。あとはまぁ普通に XSLT テンプレの仕事で……

ちなみにファイル名のリストは別に XML 作って渡してる。丁度いい語彙があれば RDFRDF として突っ込んだほうがスマートだけど考えるのが面倒だった。

だいぶソースが汚い。

  1. トップ
  2. sw
  3. 画像をてきとーに一覧表示する。
  1. トップ
  2. web
  3. 画像をてきとーに一覧表示する。
  1. トップ
  2. xslt
  3. 画像をてきとーに一覧表示する。