class Eiwa::Kanjidic::Doc

Public Class Methods

new(each_entry_block) click to toggle source
# File lib/eiwa/kanjidic/doc.rb, line 11
def initialize(each_entry_block)
  @each_entry_block = each_entry_block
  @current = nil
end

Public Instance Methods

characters(s) click to toggle source
# File lib/eiwa/kanjidic/doc.rb, line 34
def characters(s)
  @current.add_characters(s)
end
end_element(name) click to toggle source
# File lib/eiwa/kanjidic/doc.rb, line 22
def end_element(name)
  raise Eiwa::Error.new("Parsing error. Expected <#{@current.tag_name}> to close before <#{name}>") if @current.tag_name != name
  ending = @current
  ending.end_self
  if ending.is_a?(Tag::Character)
    @each_entry_block&.call(ending)
  end

  @current = ending.parent
  @current&.end_child(ending)
end
error(msg) click to toggle source
# File lib/eiwa/kanjidic/doc.rb, line 38
def error(msg)
  raise Eiwa::Error.new("Parsing error: #{msg}")
end
start_element(name, attrs) click to toggle source
# File lib/eiwa/kanjidic/doc.rb, line 16
def start_element(name, attrs)
  parent = @current
  @current = (TAGS[name] || Tag::Other).new
  @current.start(name, attrs, parent)
end