shokkenki-support 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|