Class: Shioconv::Condiment

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/shioconv/condiment.rb

Class Method Summary collapse

Class Method Details

.data_fileObject



23
24
25
# File 'lib/shioconv/condiment.rb', line 23

def self.data_file
  File.join(File.dirname(File.expand_path(__FILE__)), %w(.. .. config condiments.yaml))
end

.find_by(condiment) ⇒ Object

Raises:

  • (ArgumentError)


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/shioconv/condiment.rb', line 2

def self.find_by(condiment)
  # find by key
  if condiment.is_a?(Symbol)
    result = raw_data.find { |data| data[:key] == condiment }
    return self.new(result) if result
  end

  # find by name
  condiment = condiment.to_s.downcase
  [:japanese_name, :english_name].each do |key|
    result = raw_data.find { |data| data[key] == condiment }
    return self.new(result) if result
  end

  # find by synonyms
  result = raw_data.find { |data| data[:synonyms].include?(condiment) }
  return self.new(result) if result

  raise ArgumentError.new("condiment '#{condiment}' does not found.")
end

.listObject



31
32
33
34
35
# File 'lib/shioconv/condiment.rb', line 31

def self.list
  raw_data.map do |datum|
    "#{sprintf('%-16s', datum[:key])} : 「#{datum[:japanese_name]}(#{datum[:english_name]})」"
  end
end

.raw_dataObject



27
28
29
# File 'lib/shioconv/condiment.rb', line 27

def self.raw_data
  @@raw_data ||= YAML.parse(File.read(data_file)).to_ruby
end