Class: JDict::Entry
- Inherits:
-
Object
- Object
- JDict::Entry
- Defined in:
- lib/ruby-jdict/models/entry.rb
Instance Attribute Summary collapse
-
#kana ⇒ Object
Returns the value of attribute kana.
-
#kanji ⇒ Object
Returns the value of attribute kanji.
-
#senses ⇒ Object
Returns the value of attribute senses.
-
#sequence_number ⇒ Object
Returns the value of attribute sequence_number.
Class Method Summary collapse
-
.from_sql(row) ⇒ Object
Converts an SQLite row from the index to the Entry format.
Instance Method Summary collapse
-
#initialize(sequence_number, kanji, kana, senses) ⇒ Entry
constructor
Create a new Entry entry = initialize(kanji, kana, senses).
- #kana_to_s ⇒ Object
- #kanji_to_s ⇒ Object
-
#senses_by_language(l) ⇒ Object
Get an array of
Senses
for the specified language. - #senses_to_s(delimiter = "\n") ⇒ Object
- #to_s ⇒ Object
-
#to_sql ⇒ String
Converts an Entry to a string to be indexed into the SQLite database.
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
#kana ⇒ Object
Returns the value of attribute kana.
8 9 10 |
# File 'lib/ruby-jdict/models/entry.rb', line 8 def kana @kana end |
#kanji ⇒ Object
Returns the value of attribute kanji.
8 9 10 |
# File 'lib/ruby-jdict/models/entry.rb', line 8 def kanji @kanji end |
#senses ⇒ Object
Returns the value of attribute senses.
8 9 10 |
# File 'lib/ruby-jdict/models/entry.rb', line 8 def senses @senses end |
#sequence_number ⇒ Object
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_s ⇒ Object
53 54 55 |
# File 'lib/ruby-jdict/models/entry.rb', line 53 def kana_to_s " (#{@kana.join(', ')})" unless @kana.nil? end |
#kanji_to_s ⇒ Object
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_s ⇒ Object
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_sql ⇒ String
Converts an Entry to a string to be indexed into the SQLite database
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 |