Class: LibXMLEnumparse::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/libxml_enumparse.rb

Defined Under Namespace

Classes: EnumCallbacks

Instance Method Summary collapse

Constructor Details

#initialize(file_path, tag) ⇒ Parser

コンストラクタ

Parameters:

  • file_path (String)

    XMLファイルのパス

  • tag (String)

    XMLファイルから分割して切り出すタグ

Raises:

  • (ArgumentError)


56
57
58
59
60
61
62
63
64
65
66
# File 'lib/libxml_enumparse.rb', line 56

def initialize(file_path, tag)
  raise ArgumentError, "file_path is not set." unless file_path.is_a?(String)
  raise ArgumentError, "tag is not set." unless tag.is_a?(String)

  @fiber = Fiber.new do
    parser = LibXML::XML::SaxParser.file(file_path)
    parser.callbacks = EnumCallbacks.new(tag)
    parser.parse
    Fiber.yield(nil)
  end
end

Instance Method Details

#enumeratorEnumerator

指定された tag の XMLエレメントを順次処理する Enumerator オブジェクトを返します

Returns:

  • (Enumerator)

    XMLエレメントを順次処理する Enumerator オブジェクト



73
74
75
76
77
78
79
80
81
82
# File 'lib/libxml_enumparse.rb', line 73

def enumerator
  Enumerator.new do |y|
    loop do
      res = @fiber.resume
      break unless res

      y << res
    end
  end
end