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.
@@ -1,7 +1,7 @@
1
1
  module Shokkenki
2
2
  module Support
3
3
  module Version
4
- STRING = '1.0.0'
4
+ STRING = '1.1.0'
5
5
  end
6
6
  end
7
7
  end
@@ -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,9 @@
1
+ require_relative '../date_term'
2
+
3
+ class Date
4
+
5
+ def to_shokkenki_term
6
+ Shokkenki::Term::DateTerm.new self
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../date_time_term'
2
+
3
+ class DateTime
4
+
5
+ def to_shokkenki_term
6
+ Shokkenki::Term::DateTimeTerm.new self
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../string_term'
2
+
3
+ class Object
4
+
5
+ def to_shokkenki_term
6
+ Shokkenki::Term::StringTerm.new self.to_s
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ require_relative '../date_time_term'
2
+
3
+ class Time
4
+
5
+ def to_shokkenki_term
6
+ Shokkenki::Term::DateTimeTerm.new self
7
+ end
8
+
9
+ end
@@ -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
- attr_reader :type, :value
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 => @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
- attr_reader :type, :value
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 => @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
- attr_reader :type, :value
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 => @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
- attr_reader :type, :value
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 => @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
- attr_reader :type, :value
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 => @type,
19
+ :type => type,
21
20
  :value => @value
22
21
  }
23
22
  end
@@ -1,9 +1,20 @@
1
1
  module Shokkenki
2
2
  module Term
3
3
  class Term
4
+
5
+ attr_reader :value
6
+
7
+ def type
8
+ @@type
9
+ end
10
+
4
11
  def to_shokkenki_term
5
12
  self
6
13
  end
14
+
15
+ def type
16
+ self.class.type
17
+ end
7
18
  end
8
19
  end
9
20
  end
@@ -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
- :string => StringTerm,
15
- :hash => HashTerm,
16
- :regexp => RegexpTerm,
17
- :number => NumberTerm,
18
- :json_paths => JsonPathsTerm
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.0.0
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-02-24 00:00:00.000000000 Z
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: -1162778441751763225
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.0.0
153
+ summary: shokkenki-support-1.1.0
148
154
  test_files: []