Class: Mastermind::Datastore::YmlStore

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/mastermind/datastore/ymlstore.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object



46
47
48
49
50
51
52
53
54
55
# File 'lib/mastermind/datastore/ymlstore.rb', line 46

def method_missing(method, *args)
  missing_method = method.to_s
  if missing_method.match(/save_([a-z]+)/)
    self.save(*args, 'w+', $1)
  elsif missing_method.match(/fetch_([a-z]+)/)
    self.fetch(*args, $1)
  else
    raise NoMethodError
  end
end

Instance Attribute Details

#filenameObject

Returns the value of attribute filename.



6
7
8
# File 'lib/mastermind/datastore/ymlstore.rb', line 6

def filename
  @filename
end

Instance Method Details

#add_file_extension_if_not_present(file_name, file_type = 'yml') ⇒ Object



57
58
59
60
# File 'lib/mastermind/datastore/ymlstore.rb', line 57

def add_file_extension_if_not_present(file_name, file_type = 'yml')
  file_name += '.' + file_type unless file_name.match(/\w+\.[a-z]+/)
  file_name
end

#create_file_if_not_exist(file_name, file_type = 'yml', mode = 'w') ⇒ Object



7
8
9
10
# File 'lib/mastermind/datastore/ymlstore.rb', line 7

def create_file_if_not_exist file_name, file_type= 'yml', mode = 'w'
  file_name = add_file_extension_if_not_present(file_name, file_type)
  ::File.open(file_name, mode) unless File.exists? file_name
end

#fetch(file_name) ⇒ Object



23
24
25
26
27
# File 'lib/mastermind/datastore/ymlstore.rb', line 23

def fetch file_name
  create_file_if_not_exist unless File.exists? file_name
  data = ::File.read(file_name)
  data
end

#fetch_multiple_records(file_name) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/mastermind/datastore/ymlstore.rb', line 34

def fetch_multiple_records file_name
  list = []
  ::YAML.load_stream(File.read(file_name)){ |record|
    list << record
  }
  list
end

#fetch_yml(file_name) ⇒ Object



29
30
31
32
# File 'lib/mastermind/datastore/ymlstore.rb', line 29

def fetch_yml file_name
  create_file_if_not_exist file_name
  ::YAML::load_file(file_name)
end

#save(file_name, data, mode = 'w', file_type = 'yml') ⇒ Object



12
13
14
15
16
17
# File 'lib/mastermind/datastore/ymlstore.rb', line 12

def save file_name, data, mode = 'w', file_type='yml'
  create_file_if_not_exist file_name
  ::File.open(file_name, mode) do |yml_data|
    ::YAML.dump data, yml_data
  end
end

#save_top_ten(file_name = 'topten.yaml', data) ⇒ Object



19
20
21
# File 'lib/mastermind/datastore/ymlstore.rb', line 19

def save_top_ten file_name='topten.yaml', data
  save(file_name, data, 'w')
end