Class: KvgCharacterRecognition::JSONDatastore

Inherits:
Object
  • Object
show all
Defined in:
lib/kvg_character_recognition/datastore.rb

Instance Method Summary collapse

Constructor Details

#initialize(filename = 'characters.json') ⇒ JSONDatastore

Returns a new instance of JSONDatastore.



3
4
5
6
# File 'lib/kvg_character_recognition/datastore.rb', line 3

def initialize filename = 'characters.json'
  @data = load_file(filename)
  @filename = filename
end

Instance Method Details

#characters_in_range(point_range, stroke_range) ⇒ Object



17
18
19
# File 'lib/kvg_character_recognition/datastore.rb', line 17

def characters_in_range point_range, stroke_range
  @data.select { |character| point_range === character[:number_of_points] && stroke_range === character[:number_of_strokes] }
end

#dump(filename) ⇒ Object



29
30
31
# File 'lib/kvg_character_recognition/datastore.rb', line 29

def dump filename
  File.write(filename, @data.to_json)
end

#load_file(filename) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/kvg_character_recognition/datastore.rb', line 8

def load_file filename
  begin
    JSON.parse(File.read(filename, encoding: 'utf-8'), symbolize_names: true)
  rescue
    puts "WARNING: Can't load file, returning empty character collection."
    []
  end
end

#persist!Object



25
26
27
# File 'lib/kvg_character_recognition/datastore.rb', line 25

def persist!
  dump @filename
end

#store(character) ⇒ Object



21
22
23
# File 'lib/kvg_character_recognition/datastore.rb', line 21

def store character
  @data.push character
end