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.
@@ -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: []