traitorous 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51c87b262becc747a334dce20c4b0f149de698d4
4
- data.tar.gz: 384664790edbfbbcbc95043b7f4cc3fbe78c78e0
3
+ metadata.gz: 147aa556988fc13509f445eb0887d4d943c6384b
4
+ data.tar.gz: 3eeb33815f1a8bd1c9f3ee83aa19961c053b15a1
5
5
  SHA512:
6
- metadata.gz: 27cecb8725cfe6914c81e26ae45cc2e5f9669228e01f3c139d4e02a309af4763918c45a22e75bd9453b9fbd8254c70248ed3f0ed4a0c7eb5e10e9626cedd47ba
7
- data.tar.gz: 052ece595a8928766a34eaede53b690981834db33cbedeb2215f940e3d354d2b165118e7e3a2403ff179ecc7d538103c7edf0aa8f645539269c13825627b841e
6
+ metadata.gz: 0613a5b93cacd2a046d2ae996b606adcbc1051421ddec3e1b3b88906927816e1b0daa3c15618990f74a8f5fe50af7b8fe6cacb9f8048270ea7562f221459932e
7
+ data.tar.gz: 05c16f0da36240e35a124d086f10c0860027d60128b9137c6e09bc1e86fb50985cae32dff2ed937bfcc28ab4bbf03689fc2a392bcc840f1131e6905c8c37e603
data/README.md CHANGED
@@ -86,6 +86,48 @@ puts Area.new(area.export) == area
86
86
  # true
87
87
  ```
88
88
 
89
+ ## Converters
90
+ The purpose of the converters are to facilitate the importation of simple
91
+ JSON or YAML data and import that data into an arbitrarily nested tree
92
+ of objects. And then to take those object and be able to export that data
93
+ in a simple form ready to save.
94
+
95
+ This system should be flexible enough to account for an large variety of data
96
+ structures that can be read in and out of storage easily and in 1 tree.
97
+
98
+ #### Traitorous::Converter::Identity
99
+ This converter is meant as a pass through converter that doesn't alter the
100
+ incoming value on either do_import or do_export.
101
+
102
+ #### Traitorous::Converter::DefaultValueStatic
103
+ THis converter is similar to the Traitorous::Converter::Identity except that
104
+ when doing do_import it will return a default value if the opts are nil or
105
+ false.
106
+
107
+ #### Traitorous::Converter::Model
108
+ This converter takes a model_klass argument and on do_import, will instantiate
109
+ a new object of that class passing in the opts as params. do_export calls
110
+ .export on the object and returns the result.
111
+
112
+ #### Traitorous::Converter::UniformArray
113
+ This converter takes a uniform_klass argument. It expects an array as input for
114
+ .do_import and will instantiate an uniform_klass object for each element of the
115
+ array and return the resulting array.
116
+
117
+ #### Traitorous::Converter::MethodKeyedUniformHash
118
+ This converter takes key_method and uniform_class arguments. It expects an
119
+ array as input for .do_import and will instantiate an uniform_klass object for
120
+ each element of the array, then call key_method on that object and add them
121
+ to a hash as a key instance pair.
122
+
123
+ ### More Converters
124
+
125
+ more intelligent conversions? Expand the model, array and hash converters to
126
+ accept an override to instantiating with ::new to allow for more flexibility in
127
+ usage. This especially would be important if you wanted to import a list of
128
+ object that represents different klasses that are given with a sub_type or
129
+ sub_class attributes that are part of the do_import data.
130
+
89
131
  ## Roadmap
90
132
 
91
133
  1. Add better documentation
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.2
@@ -7,26 +7,26 @@ module Traitorous
7
7
  # Exported data will be converted into an array calling do_export on each
8
8
  # element
9
9
  class MethodKeyedUniformHash
10
- attr_accessor :key_method, :uniform_class
11
- # @param key_method [Symbol] the method to call on the uniform_class instance
10
+ attr_accessor :key_method, :uniform_klass
11
+ # @param key_method [Symbol] the method to call on the uniform_klass instance
12
12
  # to generate the key in the returned hash
13
- # @param uniform_class [Class, #new] the class to instantiate with each
13
+ # @param uniform_klass [Class, #new] the class to instantiate with each
14
14
  # element of the do_import array
15
- def initialize(key_method, uniform_class)
15
+ def initialize(key_method, uniform_klass)
16
16
  @key_method = key_method
17
- @uniform_class = uniform_class
17
+ @uniform_klass = uniform_klass
18
18
  end
19
19
 
20
20
  # The import instantiates each element of the array as an instance of
21
- # the uniform_class, the key is determined by calling key_method on the
21
+ # the uniform_klass, the key is determined by calling key_method on the
22
22
  # instance and then they are joined to the result hash as a key,
23
23
  # instance pair.
24
24
  # @param arr_data [Array] the array of data to instantiate
25
25
  # @return [Hash] hash containing key, instance pairs
26
26
  def do_import(arr_data)
27
27
  out = {}
28
- arr_data.each do |elem_data|
29
- obj = uniform_class.new(elem_data)
28
+ Array(arr_data).each do |elem_data|
29
+ obj = uniform_klass.new(elem_data)
30
30
  out[obj.send(key_method)] = obj
31
31
  end
32
32
  out
@@ -1,15 +1,15 @@
1
1
  module Traitorous
2
2
  module Converter
3
3
  class UniformArray
4
- def initialize(uniform_class)
5
- @uniform_class ||= uniform_class
4
+ def initialize(uniform_klass)
5
+ @uniform_klass ||= uniform_klass
6
6
  end
7
7
  def do_export(data_arr)
8
- data_arr.map(&:export)
8
+ Array(data_arr).map(&:export)
9
9
  end
10
10
 
11
11
  def do_import(opts_arr)
12
- opts_arr.map{|d| @uniform_class.new(d)}
12
+ Array(opts_arr).map{|d| @uniform_klass.new(d)}
13
13
  end
14
14
 
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traitorous
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - scott m parrish