Class: Aozora2Html::TagParser

Inherits:
Aozora2Html show all
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

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_outputObject

出力は返しで!



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

#processObject



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_charObject

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