class FujiMarkdown::Preprocessors::Ruby

Constants

RUBY_REGEXP

Public Instance Methods

call(text) click to toggle source
# File lib/fuji_markdown/preprocessors/ruby.rb, line 8
def call(text)
  text.gsub(RUBY_REGEXP) do |ruby_pattern|
    convert_to_html(ruby_pattern)
  end
end

Private Instance Methods

convert_to_html(ruby_pattern) click to toggle source
# File lib/fuji_markdown/preprocessors/ruby.rb, line 16
def convert_to_html(ruby_pattern)
  kanji_chars, *kanas = ruby_pattern[/\A{(.*)}\z/, 1].split('|')
  return "<ruby>#{kanji_chars}<rt></rt></ruby>" if kanas.empty?

  pairs = kanas.each_with_object([]).with_index do |(kana, arr), i|
    arr << if i == kanas.size - 1
             [kanji_chars[i..], kana]
           else
             [kanji_chars[i], kana]
           end
  end

  "<ruby>#{pairs.map { |kanji, kana| "#{kanji}<rt>#{kana}</rt>" }.join}</ruby>"
end