shokkenki-support 1.0.0 → 1.1.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.
- data/lib/shokkenki/support/version.rb +1 -1
- data/lib/shokkenki/term/core_ext.rb +5 -1
- data/lib/shokkenki/term/core_ext/date.rb +9 -0
- data/lib/shokkenki/term/core_ext/date_time.rb +9 -0
- data/lib/shokkenki/term/core_ext/object.rb +9 -0
- data/lib/shokkenki/term/core_ext/time.rb +9 -0
- data/lib/shokkenki/term/date_term.rb +36 -0
- data/lib/shokkenki/term/date_time_term.rb +35 -0
- data/lib/shokkenki/term/hash_term.rb +2 -4
- data/lib/shokkenki/term/json_paths_term.rb +2 -4
- data/lib/shokkenki/term/number_term.rb +2 -3
- data/lib/shokkenki/term/regexp_term.rb +2 -3
- data/lib/shokkenki/term/string_term.rb +2 -3
- data/lib/shokkenki/term/term.rb +11 -0
- data/lib/shokkenki/term/term_factory.rb +8 -7
- metadata +10 -4
@@ -2,4 +2,8 @@ require_relative 'core_ext/string'
|
|
2
2
|
require_relative 'core_ext/hash'
|
3
3
|
require_relative 'core_ext/regexp'
|
4
4
|
require_relative 'core_ext/symbol'
|
5
|
-
require_relative 'core_ext/numeric'
|
5
|
+
require_relative 'core_ext/numeric'
|
6
|
+
require_relative 'core_ext/date'
|
7
|
+
require_relative 'core_ext/date_time'
|
8
|
+
require_relative 'core_ext/time'
|
9
|
+
require_relative 'core_ext/object'
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative 'term'
|
2
|
+
require 'date'
|
3
|
+
|
4
|
+
module Shokkenki
|
5
|
+
module Term
|
6
|
+
class DateTerm < Term
|
7
|
+
|
8
|
+
def self.type; :date; end
|
9
|
+
|
10
|
+
def self.from_json json
|
11
|
+
new Date.parse(json[:value])
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize value
|
15
|
+
@value = value.to_date
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_hash
|
19
|
+
{
|
20
|
+
:type => type,
|
21
|
+
:value => @value.iso8601
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def example
|
26
|
+
@value
|
27
|
+
end
|
28
|
+
|
29
|
+
def match? compare
|
30
|
+
return false unless compare
|
31
|
+
datecompare = compare.respond_to?(:to_date) ? compare.to_date : Date.parse(compare.to_s)
|
32
|
+
datecompare == @value
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative 'term'
|
2
|
+
|
3
|
+
module Shokkenki
|
4
|
+
module Term
|
5
|
+
class DateTimeTerm < Term
|
6
|
+
|
7
|
+
def self.type; :date_time; end
|
8
|
+
|
9
|
+
def self.from_json json
|
10
|
+
new DateTime.parse(json[:value])
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize value
|
14
|
+
@value = value.to_datetime
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_hash
|
18
|
+
{
|
19
|
+
:type => type,
|
20
|
+
:value => @value.iso8601
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def example
|
25
|
+
@value
|
26
|
+
end
|
27
|
+
|
28
|
+
def match? compare
|
29
|
+
return false unless compare
|
30
|
+
datecompare = compare.respond_to?(:to_datetime) ? compare.to_datetime : DateTime.parse(compare.to_s)
|
31
|
+
datecompare == @value
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -5,7 +5,7 @@ module Shokkenki
|
|
5
5
|
module Term
|
6
6
|
class HashTerm < Term
|
7
7
|
|
8
|
-
|
8
|
+
def self.type; :hash; end
|
9
9
|
|
10
10
|
def self.from_json json
|
11
11
|
values = json[:value].inject({}) do |hash, kv|
|
@@ -23,8 +23,6 @@ module Shokkenki
|
|
23
23
|
mapped[k] = v.to_shokkenki_term
|
24
24
|
mapped
|
25
25
|
end
|
26
|
-
|
27
|
-
@type = :hash
|
28
26
|
end
|
29
27
|
|
30
28
|
def to_hash
|
@@ -35,7 +33,7 @@ module Shokkenki
|
|
35
33
|
end
|
36
34
|
|
37
35
|
{
|
38
|
-
:type =>
|
36
|
+
:type => type,
|
39
37
|
:value => mapped_values
|
40
38
|
}
|
41
39
|
end
|
@@ -9,7 +9,7 @@ module Shokkenki
|
|
9
9
|
module Term
|
10
10
|
class JsonPathsTerm < Term
|
11
11
|
|
12
|
-
|
12
|
+
def self.type; :json_paths; end
|
13
13
|
|
14
14
|
def self.from_json json
|
15
15
|
values = json[:value].inject({}) do |hash, kv|
|
@@ -27,8 +27,6 @@ module Shokkenki
|
|
27
27
|
mapped[k] = v.to_shokkenki_term
|
28
28
|
mapped
|
29
29
|
end
|
30
|
-
|
31
|
-
@type = :json_paths
|
32
30
|
end
|
33
31
|
|
34
32
|
def match? compare
|
@@ -54,7 +52,7 @@ module Shokkenki
|
|
54
52
|
end
|
55
53
|
|
56
54
|
{
|
57
|
-
:type =>
|
55
|
+
:type => type,
|
58
56
|
:value => mapped_values
|
59
57
|
}
|
60
58
|
end
|
@@ -4,7 +4,7 @@ module Shokkenki
|
|
4
4
|
module Term
|
5
5
|
class NumberTerm < Term
|
6
6
|
|
7
|
-
|
7
|
+
def self.type; :number; end
|
8
8
|
|
9
9
|
def self.from_json json
|
10
10
|
new json[:value]
|
@@ -12,12 +12,11 @@ module Shokkenki
|
|
12
12
|
|
13
13
|
def initialize value
|
14
14
|
@value = value
|
15
|
-
@type = :number
|
16
15
|
end
|
17
16
|
|
18
17
|
def to_hash
|
19
18
|
{
|
20
|
-
:type =>
|
19
|
+
:type => type,
|
21
20
|
:value => @value
|
22
21
|
}
|
23
22
|
end
|
@@ -5,7 +5,7 @@ module Shokkenki
|
|
5
5
|
module Term
|
6
6
|
class RegexpTerm < Term
|
7
7
|
|
8
|
-
|
8
|
+
def self.type; :regexp; end
|
9
9
|
|
10
10
|
def self.from_json json
|
11
11
|
new json[:value]
|
@@ -13,12 +13,11 @@ module Shokkenki
|
|
13
13
|
|
14
14
|
def initialize value
|
15
15
|
@value = Regexp.new value
|
16
|
-
@type = :regexp
|
17
16
|
end
|
18
17
|
|
19
18
|
def to_hash
|
20
19
|
{
|
21
|
-
:type =>
|
20
|
+
:type => type,
|
22
21
|
:value => value_string
|
23
22
|
}
|
24
23
|
end
|
@@ -4,7 +4,7 @@ module Shokkenki
|
|
4
4
|
module Term
|
5
5
|
class StringTerm < Term
|
6
6
|
|
7
|
-
|
7
|
+
def self.type; :string; end
|
8
8
|
|
9
9
|
def self.from_json json
|
10
10
|
new json[:value]
|
@@ -12,12 +12,11 @@ module Shokkenki
|
|
12
12
|
|
13
13
|
def initialize value
|
14
14
|
@value = value.to_s
|
15
|
-
@type = :string
|
16
15
|
end
|
17
16
|
|
18
17
|
def to_hash
|
19
18
|
{
|
20
|
-
:type =>
|
19
|
+
:type => type,
|
21
20
|
:value => @value
|
22
21
|
}
|
23
22
|
end
|
data/lib/shokkenki/term/term.rb
CHANGED
@@ -3,6 +3,8 @@ require_relative 'hash_term'
|
|
3
3
|
require_relative 'regexp_term'
|
4
4
|
require_relative 'number_term'
|
5
5
|
require_relative 'json_paths_term'
|
6
|
+
require_relative 'date_term'
|
7
|
+
require_relative 'date_time_term'
|
6
8
|
require 'active_support/core_ext/hash/keys'
|
7
9
|
|
8
10
|
module Shokkenki
|
@@ -10,13 +12,12 @@ module Shokkenki
|
|
10
12
|
class TermFactory
|
11
13
|
|
12
14
|
def self.factories
|
13
|
-
@factories ||=
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
}
|
15
|
+
@factories ||= [
|
16
|
+
StringTerm, HashTerm, RegexpTerm, NumberTerm, JsonPathsTerm, DateTerm, DateTimeTerm
|
17
|
+
].inject({}) do |h, term|
|
18
|
+
h[term.type] = term
|
19
|
+
h
|
20
|
+
end
|
20
21
|
end
|
21
22
|
|
22
23
|
def self.factory_for type
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shokkenki-support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
@@ -100,11 +100,17 @@ files:
|
|
100
100
|
- lib/shokkenki/support.rb
|
101
101
|
- lib/shokkenki/support/version.rb
|
102
102
|
- lib/shokkenki/term/core_ext.rb
|
103
|
+
- lib/shokkenki/term/core_ext/date.rb
|
104
|
+
- lib/shokkenki/term/core_ext/date_time.rb
|
103
105
|
- lib/shokkenki/term/core_ext/hash.rb
|
104
106
|
- lib/shokkenki/term/core_ext/numeric.rb
|
107
|
+
- lib/shokkenki/term/core_ext/object.rb
|
105
108
|
- lib/shokkenki/term/core_ext/regexp.rb
|
106
109
|
- lib/shokkenki/term/core_ext/string.rb
|
107
110
|
- lib/shokkenki/term/core_ext/symbol.rb
|
111
|
+
- lib/shokkenki/term/core_ext/time.rb
|
112
|
+
- lib/shokkenki/term/date_term.rb
|
113
|
+
- lib/shokkenki/term/date_time_term.rb
|
108
114
|
- lib/shokkenki/term/hash_term.rb
|
109
115
|
- lib/shokkenki/term/json_path_example.rb
|
110
116
|
- lib/shokkenki/term/json_paths_term.rb
|
@@ -138,11 +144,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
144
|
version: '0'
|
139
145
|
segments:
|
140
146
|
- 0
|
141
|
-
hash: -
|
147
|
+
hash: -631270901951395763
|
142
148
|
requirements: []
|
143
149
|
rubyforge_project:
|
144
150
|
rubygems_version: 1.8.23
|
145
151
|
signing_key:
|
146
152
|
specification_version: 3
|
147
|
-
summary: shokkenki-support-1.
|
153
|
+
summary: shokkenki-support-1.1.0
|
148
154
|
test_files: []
|