Hexirp/hexirp-hakyll

コンパイラが適用されない

Hexirp opened this issue · 14 comments

See #89 .
See #86 .

Hexirp/blog@b06bee9 のような事態になっている。やはりどこかがおかしくなっていた。

ここで原因となると思われるのは、

  • Hexyll.Core.Compiler.Internal
  • Hexyll.Core.Rules.Internal
  • Hexyll.Core.Runtime
  • Hexyll.Web.Paginate
  • Hexyll.Web.Tags

これらでは Dependency に関する破壊的な変更があったので怪しい。

ここで、 route が正常に適用されずコンパイラも適用されないという状況である。 Hexyll.Web.PaginateHexyll.Web.Tags は、それぞれページ数の付与とタグの扱いを加える、オプション的な機能であるため、ここまでの破壊的な影響力はないと考えられる。

Hexyll.Core.Runtime がやはり怪しい。 facts は揮発するもので cache は残るもの。 cache を組み立てるのは outOfDate 関数だけ。なので Hexyll.Core.Compiler.InternalHexyll.Core.Compiler.Internal は設計的に cache を組み立てなくてもいいが……

hexyll/src/Hexyll/Core/Runtime.hs を読んだ。原因が見つかったかもしれない。ここでは facts から facts と cache の二つに置き換えていたけど、ここで store していたのが facts のままで cache を store していなかった。これが原因であるかにせよ、修正しなければならないのは確かである。

ここを修正しても直っていないようだから Compiler の方を確かめてみる。

色々やったけど直らないので Route の方がおかしいかもしれない?

はっきりさせよう。 RouteCompiler も適用されない。ここでおかしくなっているのはどこか。

RouteIdentifier がディレクトリも許すものだと扱っている……? でも、これは直接の原因ではないか? 変更が入った後の hexyll-0100-alpha-0 も正常に動作しているし。

うーん、あきらめた方が? どうせ設計は大きく変えるつもりだし。

あ! Rulesmatch とかで使う Pattern の中身まで全部新しい Pattern になったからか!?

なるほど、 https://github.com/Hexirp/blog 側で escapeGlob とかやっていたけどもういらないのか?

よし、 hexyll-0100-alpha-0 ではおかしくなっていないことを確認した。

Hexirp/blog@cfc5fbf で確認。

escapeGlob とかの問題じゃないことを確認。