Class: JDict::Entry

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-jdict/models/entry.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sequence_number, kanji, kana, senses) ⇒ Entry

Create a new Entry

entry = initialize(kanji, kana, senses)


11
12
13
# File 'lib/ruby-jdict/models/entry.rb', line 11

def initialize(sequence_number, kanji, kana, senses)
  @sequence_number, @kanji, @kana, @senses = sequence_number, kanji, kana, senses
end

Instance Attribute Details

#kanaObject

Returns the value of attribute kana.



8
9
10
# File 'lib/ruby-jdict/models/entry.rb', line 8

def kana
  @kana
end

#kanjiObject

Returns the value of attribute kanji.



8
9
10
# File 'lib/ruby-jdict/models/entry.rb', line 8

def kanji
  @kanji
end

#sensesObject

Returns the value of attribute senses.



8
9
10
# File 'lib/ruby-jdict/models/entry.rb', line 8

def senses
  @senses
end

#sequence_numberObject

Returns the value of attribute sequence_number.



8
9
10
# File 'lib/ruby-jdict/models/entry.rb', line 8

def sequence_number
  @sequence_number
end

Class Method Details

.from_sql(row) ⇒ Object

Converts an SQLite row from the index to the Entry format



16
17
18
19
20
21
22
23
24
# File 'lib/ruby-jdict/models/entry.rb', line 16

def self.from_sql(row)
  sequence_number = row["sequence_number"].to_i
  kanji = row["kanji"].split(", ").map { |k| k = k.force_encoding("UTF-8") }
  kana = row["kana"].split(", ").map { |k| k = k.force_encoding("UTF-8") }
  senses = row["senses"].split(SerialConstants::SENSE_SENTINEL).sort.reduce([]) do |arr, txt|
    arr << Sense.from_sql(txt)
  end
  self.new(sequence_number, kanji, kana, senses)
end

Instance Method Details

#kana_to_sObject



53
54
55
# File 'lib/ruby-jdict/models/entry.rb', line 53

def kana_to_s
  " (#{@kana.join(', ')})" unless @kana.nil?
end

#kanji_to_sObject



49
50
51
# File 'lib/ruby-jdict/models/entry.rb', line 49

def kanji_to_s
  @kanji.join(', ')
end

#senses_by_language(l) ⇒ Object

Get an array of Senses for the specified language



38
39
40
# File 'lib/ruby-jdict/models/entry.rb', line 38

def senses_by_language(l)
  senses.select { |s| s.language == l }
end

#senses_to_s(delimiter = "\n") ⇒ Object



57
58
59
60
61
62
# File 'lib/ruby-jdict/models/entry.rb', line 57

def senses_to_s(delimiter = "\n")
  list = @senses.map.with_index(1) do |sense, i|
    "#{i}. #{sense.to_s}"
  end
  list.join(delimiter)
end

#to_sObject



42
43
44
45
46
47
# File 'lib/ruby-jdict/models/entry.rb', line 42

def to_s
  str = ""
  str << "#{kanji_to_s}#{kana_to_s}\n"
  str << "#{senses_to_s}\n"
  str
end

#to_sqlString

Converts an Entry to a string to be indexed into the SQLite database

Returns:

  • (String)

    the serialized string for this Entry



28
29
30
31
32
33
34
35
# File 'lib/ruby-jdict/models/entry.rb', line 28

def to_sql
  sense_strings = senses.map(&:to_sql).join(SerialConstants::SENSE_SENTINEL)

  { ':sequence_number' => sequence_number.to_s,
    ':kanji' => kanji.join(", "),
    ':kana' => kana.join(", "),
    ':senses' => sense_strings }
end