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 +4 -4
- data/lib/flowlink_data/objectbase.rb +38 -7
- data/lib/flowlink_data/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b4f2228c63313d94a865f9b59b697b997bbe231
|
4
|
+
data.tar.gz: 247387f89bd7ee20e4e27bd1c4554201d03948b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
8
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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.
|
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-
|
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.
|
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.
|