Module: Jkf

Defined in:
lib/jkf.rb,
lib/jkf/parser.rb,
lib/jkf/version.rb,
lib/jkf/converter.rb,
lib/jkf/parser/csa.rb,
lib/jkf/parser/ki2.rb,
lib/jkf/parser/kif.rb,
lib/jkf/parser/base.rb,
lib/jkf/converter/csa.rb,
lib/jkf/converter/ki2.rb,
lib/jkf/converter/kif.rb,
lib/jkf/converter/base.rb,
lib/jkf/parser/kifuable.rb,
lib/jkf/converter/kifuable.rb

Overview

JSON Kifu Format

Defined Under Namespace

Modules: Converter, Parser Classes: FileTypeError

Constant Summary collapse

VERSION =
'0.5.3'

Class Method Summary collapse

Class Method Details

.parse(str) ⇒ Hash

文字列からパースします。各パーサでパースに試みて成功した場合結果を返します。

Parameters:

  • str (String)

Returns:

  • (Hash)

    JKF

Raises:



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/jkf.rb', line 39

def parse(str)
  parsers = [::Jkf::Parser::Kif.new, ::Jkf::Parser::Ki2.new, ::Jkf::Parser::Csa.new, JSON]

  result = nil
  parsers.each do |parser|
    begin
      result = parser.parse(str)
    rescue StandardError
      next
    end
    break
  end
  raise FileTypeError if result.nil?

  result
end

.parse_file(filename, encoding: 'Shift_JIS') ⇒ String

ファイルからパースします。拡張子でフォーマットの判定をします。

Parameters:

  • filename (String)

Returns:

  • (String)

    KIF, KI2, CSA, JKF(JSON)



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/jkf.rb', line 17

def parse_file(filename, encoding: 'Shift_JIS')
  parser = case ::File.extname(filename)
           when /kif/
             ::Jkf::Parser::Kif.new
           when /ki2/
             ::Jkf::Parser::Ki2.new
           when /csa/
             ::Jkf::Parser::Csa.new
           when /jkf|json/
             JSON
           else
             raise FileTypeError
           end
  str = File.read(File.expand_path(filename), encoding: encoding).toutf8
  parser.parse(str)
end