Class: Aozora2Html::TagParser
- Inherits:
-
Aozora2Html
- Object
- Aozora2Html
- Aozora2Html::TagParser
- Defined in:
- lib/aozora2html/tag_parser.rb
Overview
注記記法parser
青空記法の入れ子に対応(?)
Constant Summary
Constants inherited from Aozora2Html
ACCENT_BEGIN, ACCENT_END, ACCENT_TABLE, AOZORABUNKO, CAPTION_COMMAND, CHUUKI_COMMAND, CLOSE_MARK, COMMAND_BEGIN, COMMAND_END, COMMAND_TABLE, DAKUTEN, DAKUTEN_KATAKANA_TABLE, DOGYO_KOMIDASHI_COMMAND, DOGYO_MARK, DOGYO_NAKAMIDASHI_COMMAND, DOGYO_OMIDASHI_COMMAND, DYNAMIC_CONTENTS, END_MARK, GAIJI_MARK, IGETA_MARK, INDENT_TYPE, JIAGE_COMMAND, JIS2UCS, JISAGE_COMMAND, KAERITEN_COMMAND, KEIGAKOMI_COMMAND, KOMIDASHI_COMMAND, KU, KUNTEN_OKURIGANA_COMMAND, LEFT_MARK, MADE_MARK, MADO_KOMIDASHI_COMMAND, MADO_MARK, MADO_NAKAMIDASHI_COMMAND, MADO_OMIDASHI_COMMAND, MAIN_MARK, MIDASHI_COMMAND, NAKAMIDASHI_COMMAND, NOJI, NON_0213_GAIJI, OMIDASHI_COMMAND, ONELINE_COMMAND, OPEN_MARK, ORIKAESHI_COMMAND, OVER_MARK, PAREN_BEGIN_MARK, PAREN_END_MARK, PAT_BOUKI, PAT_CHARSIZE, PAT_CHITSUKI, PAT_CHUUKI, PAT_DIRECTION, PAT_EDITOR, PAT_FRONTREF, PAT_GAIJI, PAT_HENYAKU, PAT_IMAGE, PAT_INLINE_RUBY, PAT_JI_LEN, PAT_KAERITEN, PAT_KUTEN, PAT_KUTEN_DUAL, PAT_OKURIGANA, PAT_ORIKAESHI_JISAGE, PAT_ORIKAESHI_JISAGE2, PAT_REF, PAT_REMOVE_OKURIGANA, PAT_REST_NOTES, PAT_RUBY, PAT_RUBY_DIR, PAT_TRANSLATOR, PHOTO_COMMAND, REGEX_HANKAKU, REGEX_HIRAGANA, REGEX_KANJI, REGEX_KATAKANA, REGEX_ZENKAKU, RUBY_BEGIN_MARK, RUBY_END_MARK, RUBY_PREFIX, SEN_MARK, SIZE_LARGE, SIZE_MIDDLE, SIZE_SMALL, TCY_COMMAND, TEIHON_MARK, TENTSUKI_COMMAND, TEN_MARK, UNDER_MARK, VERSION, WARICHU_COMMAND, WARIGAKI_COMMAND, YOKOGUMI_COMMAND
Instance Method Summary collapse
-
#general_output ⇒ Object
出力は返しで!.
-
#initialize(input, endchar, chuuki, image, gaiji_dir:) ⇒ TagParser
constructor
rubocop:disable Lint/MissingSuper.
- #process ⇒ Object
-
#read_char ⇒ Object
method override!.
- #read_to_nest(endchar) ⇒ Object
Methods inherited from Aozora2Html
#block_allowed_context?, #detect_command_mode, #kuten2png, #line_number, #new_midashi_id
Constructor Details
#initialize(input, endchar, chuuki, image, gaiji_dir:) ⇒ TagParser
rubocop:disable Lint/MissingSuper
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/aozora2html/tag_parser.rb', line 10 def initialize(input, endchar, chuuki, image, gaiji_dir:) # rubocop:disable Lint/MissingSuper unless input.is_a?(Jstream) raise ArgumentError, 'tag_parser must supply Jstream as input' end @stream = input @gaiji_dir = gaiji_dir @buffer = TextBuffer.new @ruby_buf = RubyBuffer.new @chuuki_table = chuuki @images = image # globalな環境を記録するアイテムは共有する必要あり @endchar = endchar # 改行を越えるべきか否か… @section = :tail # 末尾処理と記法内はインデントをしないので等価 @raw = +'' # 外字変換前の生テキストを残したいことがあるらしい end |
Instance Method Details
#general_output ⇒ Object
出力は返しで!
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/aozora2html/tag_parser.rb', line 40 def general_output @ruby_buf.dump_into(@buffer) ans = +'' @buffer.each do |s| if s.is_a?(Aozora2Html::Tag::UnEmbedGaiji) && !s.escaped? # 消してあった※を復活させて ans.concat(GAIJI_MARK) end ans.concat(s.to_s) end [ans, @raw] end |
#process ⇒ Object
53 54 55 56 57 58 |
# File 'lib/aozora2html/tag_parser.rb', line 53 def process catch(:terminate) do parse end general_output end |
#read_char ⇒ Object
method override!
27 28 29 30 31 |
# File 'lib/aozora2html/tag_parser.rb', line 27 def read_char c = @stream.read_char @raw.concat(c) c end |
#read_to_nest(endchar) ⇒ Object
33 34 35 36 37 |
# File 'lib/aozora2html/tag_parser.rb', line 33 def read_to_nest(endchar) ans = super(endchar) @raw.concat(ans[1]) ans end |