Sha256: 8608a9bef5baded41bd8d880a7bec974fad61c537447b0610fbe3b6e97525061

Contents?: true

Size: 881 Bytes

Versions: 9

Compression:

Stored size: 881 Bytes

Contents

# frozen-string-literal: true

module Bioshogi
  module Parser
    extend self

    # 担当するクラス
    def accepted_class(source)
      source = Source.wrap(source)
      support_parsers.find { |e| e.accept?(source) }
    end

    # 棋譜ファイルのコンテンツを読み込む
    def parse(source, options = {})
      source = Source.wrap(source)
      parser = accepted_class(source)
      unless parser
        raise FileFormatError, "棋譜のフォーマットが不明です : #{source}"
      end
      parser.parse(source, options)
    end

    # 棋譜ファイル自体を読み込む
    def file_parse(file, options = {})
      parse(Pathname(file).expand_path.read, options)
    end

    private

    def support_parsers
      [
        SfenParser,
        KifParser,
        CsaParser,
        Ki2Parser,
        BodParser,
      ]
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
bioshogi-0.0.15 lib/bioshogi/parser.rb
bioshogi-0.0.14 lib/bioshogi/parser.rb
bioshogi-0.0.10 lib/bioshogi/parser.rb
bioshogi-0.0.9 lib/bioshogi/parser.rb
bioshogi-0.0.8 lib/bioshogi/parser.rb
bioshogi-0.0.7 lib/bioshogi/parser.rb
bioshogi-0.0.5 lib/bioshogi/parser.rb
bioshogi-0.0.4 lib/bioshogi/parser.rb
bioshogi-0.0.3 lib/bioshogi/parser.rb