class FujiMarkdown::Postprocessors::Ruby
Constants
- KANJI_REGEXP
Public Class Methods
new(omit_start_symbol: false)
click to toggle source
# File lib/fuji_markdown/postprocessors/ruby.rb, line 8 def initialize(omit_start_symbol: false) @ruby = false @omit_start_symbol = omit_start_symbol end
Public Instance Methods
call(doc)
click to toggle source
# File lib/fuji_markdown/postprocessors/ruby.rb, line 13 def call(doc) doc.walk do |node| process_ruby_node!(node) if node.type == :inline_html end end
Private Instance Methods
convert_to_kakuyomu_ruby!(kanji_node, kana_node)
click to toggle source
# File lib/fuji_markdown/postprocessors/ruby.rb, line 39 def convert_to_kakuyomu_ruby!(kanji_node, kana_node) if kanji_node.type == :text && !(@omit_start_symbol && start_symbol_omittable?(kanji_node)) kanji_node.string_content = "|#{kanji_node.string_content}" end kana_node.string_content = "《#{kana_node.string_content}》" if kana_node.type == :text end
process_ruby_node!(node)
click to toggle source
# File lib/fuji_markdown/postprocessors/ruby.rb, line 21 def process_ruby_node!(node) # rubocop:disable Metrics/MethodLength case node.string_content when '<ruby>' @ruby = true node.delete when '</ruby>' @ruby = false node.delete when '<rt>' kanji_node = node.previous kana_node = node.next convert_to_kakuyomu_ruby!(kanji_node, kana_node) if @ruby && kana_node.next.string_content == '</rt>' node.delete when '</rt>' node.delete end end
start_symbol_omittable?(kanji_node)
click to toggle source
# File lib/fuji_markdown/postprocessors/ruby.rb, line 46 def start_symbol_omittable?(kanji_node) kanji_node.string_content.match?(KANJI_REGEXP) && !kanji_node.previous.string_content[-1].match?(KANJI_REGEXP) end