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