condition 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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