flowlink_data 0.1.0 → 0.2.0

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: 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.