condition 0.0.6 → 0.0.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e3eb00ca6c24ba6ae12cd36c71d7e90c9dcbf1be
4
- data.tar.gz: a610828831e5f8bf184fde0ced8e7ae492684b23
3
+ metadata.gz: 20018aa500c31e9d750a4ea9d905acacf9e64874
4
+ data.tar.gz: 7bf7c6fbe619bab599c31dcf15587346f9e22d2f
5
5
  SHA512:
6
- metadata.gz: 5b956d6a735d1768218b04442dc5a1c247c4019fbf3e817afe3cf5ea228e6d869906e13d11206f197540091168a73176bc3159376b13bce94e3cceec6ce0a29e
7
- data.tar.gz: ba048d48feb07537cdb30bc3f3e351fff2827facaa012938082d49d3cc475e3713219ac05755bf49952e69312bc3f450498e4f3bf378332695bf736926292cd2
6
+ metadata.gz: b6412b0c8180271e8d5abfd02f8a82a285c745a27cacdc1d0808ba355865bf4e09a31348a90a635eb47191a6bb71671bbccc7c11d68b27f555cafdf4ad8e30d3
7
+ data.tar.gz: 8e81f9192aefb66a6af4bdec4ee32ad75a1d67ea9daff558035a9b24e0561870e541fb813e42ded714648909d867c9665c999ec9539c95a22ffbc3c19efd8cf4
data/README.md CHANGED
@@ -30,6 +30,10 @@ TODO: Write usage instructions here
30
30
 
31
31
  ## Changes
32
32
 
33
+ 2013-04-18 0.0.7
34
+ delete json
35
+ add ref param_item
36
+
33
37
  2013-04-17 0.0.6
34
38
  modify symbol or string
35
39
  check hash and ary
data/condition.gemspec CHANGED
@@ -24,6 +24,4 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "pg"
25
25
  spec.add_dependency "roo"
26
26
  spec.add_dependency "sequel"
27
- spec.add_dependency "json"
28
- spec.add_dependency "activesupport"
29
27
  end
@@ -6,9 +6,14 @@ module Condition
6
6
  def initialize(path, sheet_index=0)
7
7
  blocks = read_sheet(path, sheet_index)
8
8
  @item_map = {}
9
+ item_list = []
9
10
  blocks.each do |rows|
10
11
  item = Condition::ParamItem.new(rows)
11
12
  @item_map[item.name] = item
13
+ item_list << item
14
+ end
15
+ item_list.reverse.each do |it|
16
+ it.apply_ref(self)
12
17
  end
13
18
  end
14
19
 
@@ -43,23 +48,18 @@ module Condition
43
48
  end
44
49
 
45
50
  def item(name)
46
- @item_map[name]
47
- end
48
-
49
- def get(name)
50
- item = @item_map[name]
51
- return nil if !item
52
- item.values
51
+ @item_map[name.to_sym]
53
52
  end
54
53
 
55
- def get_one(name)
56
- item = @item_map[name]
54
+ def get(name, index=nil)
55
+ item = item(name)
57
56
  return nil if !item
58
- item.value
57
+ return item.values if !index
58
+ return item.values[index]
59
59
  end
60
60
 
61
61
  def check(name, data)
62
- item = @item_map[name]
62
+ item = item(name)
63
63
  data.each do |line|
64
64
  item.check_line(line)
65
65
  end
@@ -1,31 +1,53 @@
1
1
  # coding: utf-8
2
2
  require 'time'
3
- require 'json'
4
- require 'active_support/all'
5
3
 
6
4
  module Condition
7
5
  class ParamItem
8
6
  def initialize(rows)
9
- @name = rows[0][0]
10
- @keys = rows[0].size > 1 ? rows[0][1..rows.size - 1] : []
7
+ @name = rows[0][0].to_sym
8
+ @options = rows[0].size > 1 ? rows[0][1..rows.size - 1] : []
11
9
  body = rows[1..rows.size - 1]
12
10
  @values = []
11
+ @keys = []
13
12
  @params = {}
13
+ @refs = []
14
14
  body.each do |row|
15
15
  index = 0
16
- name = row[0]
17
- @params[name.to_sym] = ("$" + name).to_sym
16
+ key = row[0].to_sym
17
+ @keys = key
18
+ @params[key] = ("$" + key.to_s).to_sym
18
19
  items = row[1..row.size - 1]
19
20
  value = nil
20
21
  items.each do |item|
21
22
  value = @values[index] ? @values[index] : {}
22
- value[name.to_sym] = '#NULL' == item ? nil : item
23
+ value[key] = calc_item(item, index, key)
23
24
  @values[index] = value
24
25
  index += 1
25
26
  end
26
27
  end
27
28
  end
28
29
 
30
+ def calc_item(item, index, key)
31
+ if '#NULL' == item
32
+ nil
33
+ elsif '#EMPTY' == item
34
+ []
35
+ elsif /^#REF\((.+)\)$/ =~ item
36
+ ary = $1.split(/,/)
37
+ count = ary.size > 1 ? ary[1].strip.to_i : nil
38
+ @refs << {index: index, key: key, name: ary[0].strip.to_sym, count: count}
39
+ item
40
+ else
41
+ item
42
+ end
43
+ end
44
+
45
+ def apply_ref(param)
46
+ @refs.each do |it|
47
+ @values[it[:index]][it[:key]] = param.get(it[:name], it[:count])
48
+ end
49
+ end
50
+
29
51
  def name
30
52
  @name
31
53
  end
@@ -62,7 +84,7 @@ module Condition
62
84
  end
63
85
 
64
86
  def exec_after(db)
65
- @keys.each do |key|
87
+ @options.each do |key|
66
88
  db.run key
67
89
  end
68
90
  end
@@ -71,36 +93,17 @@ module Condition
71
93
  if Time === real
72
94
  real == Time.parse(expected)
73
95
  elsif nil == real
74
- expected == nil || expected == "#NULL"
96
+ expected == nil
75
97
  elsif Hash === real
76
- ex = expected
77
98
  if !(Hash === expected)
78
- ex = JSON.parse(expected)
79
- end
80
- ex = ex.symbolize_keys
81
- result = true
82
- ex.each_pair do |k, v|
83
- res = value_match?(v, real[k])
84
- result = false if !res
99
+ false
85
100
  end
86
- result
101
+ expected == real
87
102
  elsif Array === real
88
- ex = expected
89
103
  if !(Array === expected)
90
- ex = JSON.parse(expected)
91
- end
92
- false if Array === ex
93
- size = ex.size()
94
- true if size == 0 && real.size() == 0
95
- false if size != real.size()
96
- index = 0
97
- while true
98
- break if index >= size
99
- result = value_match?(ex[index], real[index])
100
- return false if !result
101
- index = index + 1
104
+ false
102
105
  end
103
- true
106
+ expected == real
104
107
  else
105
108
  real.to_s == expected
106
109
  end
@@ -110,11 +113,10 @@ module Condition
110
113
  targetFlag = true
111
114
  matchFlag = true
112
115
  unmatch_info = []
113
- real = real.symbolize_keys
114
116
  value.each_pair do |k, v|
115
117
  match = value_match?(v, real[k])
116
118
  unmatch_info << v.to_s + " <> " + real[k].to_s if !match
117
- whereKeyFlag = nil != @keys.index(k.to_s)
119
+ whereKeyFlag = nil != @options.index(k.to_s)
118
120
  matchFlag = false if !match
119
121
  targetFlag = false if whereKeyFlag && !match
120
122
  end
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module Condition
4
- VERSION = "0.0.6"
4
+ VERSION = "0.0.7"
5
5
  end
@@ -23,11 +23,12 @@ describe Condition do
23
23
  param = Condition::Param.new(FILES + '/t_user.ods', 2)
24
24
  item = default.item('t_user')
25
25
  ds = DB[:t_user].prepare(:insert, :insert_with_name, item.params.merge({user_id: :$user_id, user_name: :$user_name}))
26
- ds.call(item.value.merge(param.get_one('ins')))
26
+ ds.call(item.value.merge(param.get('ins', 0)))
27
27
 
28
28
  list = DB["SELECT * FROM t_user"].all
29
+ #p param.get('ary')
29
30
  param.check('list', list)
30
- param.check('list', [{"user_id" => 1, "user_name" => "aaax"}])
31
+ param.check('list', [{user_id: 1, user_name: "aaax"}])
31
32
  param.check('ary', [{name: "a", val1: {a: "b"}, val2: [{a: {c: "d"}}], val3: [], val4: nil}])
32
33
  end
33
34
 
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: condition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - aoyagikouhei
@@ -94,34 +94,6 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: json
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: activesupport
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
97
  description: Condition Test
126
98
  email:
127
99
  - aoyagi.kouhei@gmail.com