Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

簡易パースをしてnonumを採番スキップする #554

Merged
merged 5 commits into from
Apr 17, 2016

Conversation

kmuto
Copy link
Owner

@kmuto kmuto commented Apr 14, 2016

#550 のパッチをさらに進めて、nonumの採番を飛ばすようにしてみました。

Chapter#initializeでコンテンツを読み込んでたので、ここでヘッダを探して(Chapter#check_header)見出しタグのtag部がnonumだったらnumberをnilにします。

……で、せっかくPEG化も考えている中、check_headerがまたcompiler由来の正規表現コードになっています。簡易としてヘッダとブロック以外は考えずに解析を回しています。

@@ -35,6 +33,7 @@ def initialize(book, number, name, path, io = nil)
end
if !@content && @path && File.exist?(@path)
@content = File.read(@path).sub(/\A\xEF\xBB\xBF/u, '')
@number = nil if check_header == "nonum"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このcheck_headerってChapterのインスタンスを作るときに1回だけチェックしているようですが、[nonum]が章・節・小節等のいろんなところに出たり出なかったりする場合でもこのコードで問題ないんでしょうか…?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そうか、だめですねこれでは…

だいぶ厄介な気がしてきましたぞ…

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

いや、大丈夫っぽいです。
ここでやっていることは

  • ともかく先頭の見出しを探して(最初のレベルが1とは限らない)、
  • nonum, nodisp, notocだったらそのファイルは章として採番しない(章カウンタをスキップしたい)ので、このChapterオブジェクトのnumber参照時をnilにする

という目的です。

本文のほうは、HTMLBuilderであればheadline→sec_counterで採番していますが、nonumはnonum_beginに落ちてsec_counterを使わないので採番増加も起きません(ほかのno*も同様)。

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

名前をfind_first_header_option にでもするか

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほど、ここのロジックとしては理解できました。先頭が章レベルの見出しじゃない場合があるのが微妙な挙動につながるわけですね。うーむ。

@kmuto kmuto merged commit 656e74e into master Apr 17, 2016
@takahashim
Copy link
Collaborator

テスト用に https://github.com/reviewml/review-samples/tree/master/nonum を作ってみました。

@kmuto kmuto deleted the check_nonum_at_beginning branch April 17, 2016 23:58
@kdmsnr kdmsnr added this to the 2.0.0 milestone Apr 29, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants