Module: Nimono::OptionParse::ClassMethods

Defined in:
lib/nimono/option_parse.rb

Instance Method Summary collapse

Instance Method Details

#build_options_str(options = {}) ⇒ String

Returns a string representation of the options to be passed in the construction of the CaboCha Paser.

Parameters:

  • options (Hash) (defaults to: {})

    options for CaboCha

Returns:

  • (String)

    representation of the options to the CaboCha Parser



94
95
96
97
98
99
100
101
102
103
# File 'lib/nimono/option_parse.rb', line 94

def build_options_str(options={})
  opt = []
  SUPPORT_OPTS.values.each do |k|
    if options.has_key? k
      key = k.to_s.gsub('_', '-')
      opt << "--#{key}=#{options[k]}"
    end
  end
  opt.empty? ? '' : opt.join(" ")
end

#parse_options(options = {}) ⇒ Object

Preparesand returns a hash mapping symbols for the specified, recognized CaboCha options, and their values. Will parse and convert string (short or long argument styles) or hash.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/nimono/option_parse.rb', line 40

def parse_options(options={})
  opts = {}
  if options.is_a? String
    opt = OptionParser.new
    opt.on('-f', '--output-format=VAL') {|v| opts[:output_format] = v.strip }
    opt.on('-I', '--input-layer=VAL') {|v| opts[:input_layer] = v.strip }
    opt.on('-O', '--output-layer=VAL') {|v| opts[:output_layer] = v.strip }
    opt.on('-n', '--ne=VAL') {|v| opts[:ne] = v.strip }
    opt.on('-m', '--parser-model=VAL') {|v| opts[:parser_model] = v.strip }
    opt.on('-M', '--chunker-model=VAL') {|v| opts[:chunker_model] = v.strip }
    opt.on('-N', '--ne-model=VAL') {|v| opts[:ne_model] = v.strip }
    opt.on('-P', '--posset=VAL') {|v| opts[:posset] = v.strip }
    opt.on('-t', '--charset=VAL') {|v| opts[:charset] = v.strip }
    opt.on('-T', '--charset-file=VAL') {|v| opts[:posset] = v.strip }
    opt.on('-r', '--rcfile=VAL') {|v| opts[:rcfile] = v.strip }
    opt.on('-b', '--mecabrc=VAL') {|v| opts[:mecabrc] = v.strip }
    opt.on('-d', '--mecab-dicdir=VAL') {|v| opts[:posset] = v.strip }
    opt.on('-u', '--mecab-userdic=VAL') {|v| opts[:posset] = v.strip }
    opt.on('-o', '--output=VAL') {|v| opts[:output] = v.strip }
    opt.parse!(options.split)
  else
    SUPPORT_OPTS.values.each do |k|
      if options.has_key?(k)
        opts[k] = options[k]
      end
    end
  end

  # validation
  validate_numeric = ->(name, pattern) {
    if opts.has_key?(name)
      if opts[name].is_a?(String) && opts[name] =~ pattern
        opts[name] = opts[name].to_i
      elsif opts[name].is_a?(Fixnum) && opts[name].to_s =~ pattern
      else
        v = opts[name]
        name_str = name.id2name.gsub('_', '-')
        raise CabochaError.new("Invalid option: --#{name_str}=#{v}")
      end
    end
  }

  validate_numeric.(:output_format, /^[0-4]$/)
  validate_numeric.(:input_layer,   /^[0-3]$/)
  validate_numeric.(:output_layer,  /^[1-4]$/)
  validate_numeric.(:ne,            /^[0-2]$/)

  opts
end