flowlink_data 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f30e9032e58c11bbe78ab0f7affc92e13856132e
4
- data.tar.gz: 2b1f6525c5558b91ceca3d029511ae15b18a5da8
3
+ metadata.gz: 0b4f2228c63313d94a865f9b59b697b997bbe231
4
+ data.tar.gz: 247387f89bd7ee20e4e27bd1c4554201d03948b4
5
5
  SHA512:
6
- metadata.gz: ddadf3388738b8ffc79611bc063ddfefeba4167ea3aefb2805fc6440116601e309baa4eace7d12ab0ab01b450113f89fb71ca4588c4f9337302237221db1467c
7
- data.tar.gz: b6239e0bb6c06f440ed238ad331a452dc01f9bf674b765bd41773459eab99ec491f8df7ad3b0ce371e09445d8edc0e64bcd4cc60c4f66eec21deec0637c2d5a4
6
+ metadata.gz: 10f48424f1c7972a78c12ca2e88f3aaff0dd3338cbe1c251b64e5cb0ebc7cc61c60bf3d8ea6e42cc05bd7a87d6e67619f759e6e938ed0653d58b5a0688e6954d
7
+ data.tar.gz: 03d6808506494b0297744c4094283f1f67fcee6508287bec63b9da14e7b4cab6cd675ee99b7b83b27ce6a84253eeb5612d7682d1e51f2ade717b98e293985d72
@@ -1,24 +1,55 @@
1
+ class FieldMethod
2
+ attr_accessor :method_name, :args
3
+
4
+ def self.multi_new(methods)
5
+ methods.map do |m|
6
+ m = [m].flatten
7
+ FieldMethod.new(m.shift, m)
8
+ end
9
+ end
10
+
11
+ def self.merge(overrides, original)
12
+ overrides.inject(original) { |a, e| e.merge(a) }
13
+ end
14
+
15
+ def initialize(method_name, *args)
16
+ @method_name = method_name.to_sym
17
+ @args = args.to_a.flatten
18
+ end
19
+
20
+ def merge(list)
21
+ list.delete_if { |o_fm| o_fm.method_name == method_name }
22
+ list << self
23
+ end
24
+
25
+ def to_a
26
+ [method_name] + args
27
+ end
28
+ end
29
+
1
30
  module Flowlink
2
31
  class ObjectBase
3
32
  # Base class for any Flowlink objects. Child classes should implement
4
33
  # self.fields internally.
5
34
 
6
- def to_hash
7
- # Put values of calling field methods on self into a hash
8
- Hash[fields.map { |f| [f.to_s, send(f)] }]
35
+ def to_hash(*overrides)
36
+ overrides = FieldMethod.multi_new(overrides)
37
+ defaults = FieldMethod.multi_new(fields)
38
+ f_methods = FieldMethod.merge(overrides, defaults)
39
+
40
+ Hash[f_methods.map { |f| [f.method_name.to_s, send(*f.to_a)] }]
9
41
  end
10
42
 
11
- alias to_message to_hash
43
+ alias_method to_message to_hash
12
44
 
13
45
  def self.fields
14
46
  # A list of fields that the object should have.
15
- raise NotImplementedError
47
+ fail NotImplementedError
16
48
  end
17
49
 
18
50
  def fields
51
+ # TODO: @fields ||= self.class.fields ???
19
52
  self.class.fields
20
53
  end
21
54
  end
22
55
  end
23
-
24
-
@@ -1,3 +1,3 @@
1
1
  module Flowlink
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flowlink_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cooper LeBrun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-12 00:00:00.000000000 Z
11
+ date: 2016-06-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
14
  A framework for getting Flowlink objects from other sources. For example:
@@ -48,7 +48,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
48
  version: '0'
49
49
  requirements: []
50
50
  rubyforge_project:
51
- rubygems_version: 2.5.1
51
+ rubygems_version: 2.6.4
52
52
  signing_key:
53
53
  specification_version: 4
54
54
  summary: A simple framework for getting Flowlink objects from other sources.