Class: FujiMarkdown::Preprocessors::Ruby

Inherits:
Object
  • Object
show all
Defined in:
lib/fuji_markdown/preprocessors/ruby.rb

Constant Summary collapse

RUBY_PATTERN =
%r({(?<kanji>[^{}|]*)\|(?<kana>[^{}]*)})

Instance Method Summary collapse

Instance Method Details

#call(text) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/fuji_markdown/preprocessors/ruby.rb', line 6

def call(text)
  text.gsub!(RUBY_PATTERN) do |match|
    kanji, *kanas = match.slice(1...-1).split('|')
    return "<ruby>#{kanji}<rt></rt></ruby>" if kanas.empty?

    pairs = []
    kanas.each_with_index do |kana, i|
      if i == kanas.size - 1
        pairs << [kanji.slice(i..-1), kana]
      else
        pairs << [kanji.slice(i), kana]
      end
    end

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