Class: HanziConverter

Inherits:
Object
  • Object
show all
Defined in:
lib/hanzi-converter.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.dataObject

Returns the value of attribute data.



5
6
7
# File 'lib/hanzi-converter.rb', line 5

def data
  @data
end

Class Method Details

.load_dataObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/hanzi-converter.rb', line 7

def load_data
  return if @data
  @data = []

  File.open('lib/data/cedict_ts.u8').each_line do |line|
    next if line.start_with?('#')
    line = line.force_encoding('utf-8')

    # CC-CEDICT format:
    # Traditional Simplified [pin1 yin1] /English equivalent 1/equivalent 2/
    line_data = {}
    line_data[:traditional] = line[0, line.index(' ')]

    line = line[line.index(' ') + 1, line.length]
    line_data[:simplified] = line[0, line.index(' ')]

    line = line[line.index('['), line.length]
    line_data[:pinyin] = line[1, line.index(']') - 1]

    line = line[line.index('/'), line.rindex('/')]
    line_data[:english] = line[1, line.rindex('/') - 1]

    @data << line_data
  end

end

.to_pinyin(text, options = {}) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/hanzi-converter.rb', line 34

def to_pinyin(text, options={})
  load_data if @data.nil?
  entry = @data.find do |word|
    word[:simplified] == text || word[:traditional] == text
  end
  entry[:pinyin].gsub("\s", '') if entry
end