Sha256: 19f2ccbcfda5545c994edbbd03d67ce3b90464e7df7e515970d063fc210a879c
Contents?: true
Size: 1.48 KB
Versions: 2
Compression:
Stored size: 1.48 KB
Contents
require 'kconv' require_relative 'jkf/version' require_relative 'jkf/parser' require_relative 'jkf/converter' # JSON Kifu Format module Jkf # raise when unsupport file type class FileTypeError < StandardError; end class << self # ファイルからパースします。拡張子でフォーマットの判定をします。 # # @param [String] filename # # @return [String] KIF, KI2, CSA, JKF(JSON) 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 # 文字列からパースします。各パーサでパースに試みて成功した場合結果を返します。 # # @param [String] str # # @return [Hash] JKF 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jkf-0.5.2 | lib/jkf.rb |
jkf-0.5.1 | lib/jkf.rb |