Module: VivlioStarter::CLI::IndexMarkup
- Defined in:
- lib/vivlio_starter/cli/index_markup.rb
Overview
索引マークアップの綴りの正典。
Constant Summary collapse
- TERM_PATTERN =
索引マークアップ全体(
[用語]と[用語|読み]の双方に一致し、 読みの分離は利用側が行う)。前処理・索引スキャナが使う。 /(?<!\^)\[([^\[\]\n]+)\](?!\()/- TERM_WITH_YOMI_PATTERN =
読み付き
[用語|読み]。辞書登録が読みを取り出すために使う。 /(?<!\^)\[([^\]|]+)\|([^\]]+)\]/- TERM_ONLY_PATTERN =
読みなし
[用語]のみ(|を含むものは TERM_WITH_YOMI_PATTERN の担当)。 辞書登録が 2 パターンを順に当てる方式のため、こちらは|を持たない。 /(?<!\^)\[([^\]|]+)\](?!\()/
Class Method Summary collapse
-
.plain_text(term_text) ⇒ String
--- 索引タグを付けられないときの素のテキスト表現 ---------------------.
-
.skip_term?(term_text) ⇒ Boolean
ブラケットの中身が索引語として無効か。 パターンが弾けない「中身で見分ける記法」——参照脚注
[^id]——を落とす。.
Class Method Details
.plain_text(term_text) ⇒ String
--- 索引タグを付けられないときの素のテキスト表現 ---------------------
索引スキャナが走らないビルド(index_glossary.enabled: false 等)では
[用語] を素のテキストへ落とす。その姿をここに置くのは、同じ「索引語を
表示する」処理が 2 箇所にあってエスケープの有無が食い違っていたため。
索引スキャナは CGI.escapeHTML を通すのに前処理は素通ししており、
[<h1>] が生タグとして VFM に渡って本物の章見出しになっていた
(目次と PDF アウトラインまで汚染。index-markup-plain-fallback-spec.md §2.2)。
読み(| 以降)を落とす規則も前処理にしか無かったので、ここへ寄せる。
81 82 83 84 |
# File 'lib/vivlio_starter/cli/index_markup.rb', line 81 def plain_text(term_text) term = term_text.include?('|') ? term_text.split('|', 2).first : term_text CGI.escapeHTML(term.to_s) end |
.skip_term?(term_text) ⇒ Boolean
ブラケットの中身が索引語として無効か。
パターンが弾けない「中身で見分ける記法」——参照脚注 [^id]——を落とす。
61 62 63 64 65 66 |
# File 'lib/vivlio_starter/cli/index_markup.rb', line 61 def skip_term?(term_text) return true if term_text.nil? || term_text.empty? # 脚注参照 [^id]。著者が意図的にマークアップした [!] [&&] [<h1>] は除外しない term_text.start_with?('^') end |