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 +4 -4
- data/README.md +4 -0
- data/condition.gemspec +0 -2
- data/lib/condition/param.rb +11 -11
- data/lib/condition/param_item.rb +36 -34
- data/lib/condition/version.rb +1 -1
- data/spec/condition_spec.rb +3 -2
- data/spec/files/t_user.ods +0 -0
- metadata +1 -29
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 20018aa500c31e9d750a4ea9d905acacf9e64874
|
|
4
|
+
data.tar.gz: 7bf7c6fbe619bab599c31dcf15587346f9e22d2f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b6412b0c8180271e8d5abfd02f8a82a285c745a27cacdc1d0808ba355865bf4e09a31348a90a635eb47191a6bb71671bbccc7c11d68b27f555cafdf4ad8e30d3
|
|
7
|
+
data.tar.gz: 8e81f9192aefb66a6af4bdec4ee32ad75a1d67ea9daff558035a9b24e0561870e541fb813e42ded714648909d867c9665c999ec9539c95a22ffbc3c19efd8cf4
|
data/README.md
CHANGED
data/condition.gemspec
CHANGED
data/lib/condition/param.rb
CHANGED
|
@@ -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
|
|
56
|
-
item =
|
|
54
|
+
def get(name, index=nil)
|
|
55
|
+
item = item(name)
|
|
57
56
|
return nil if !item
|
|
58
|
-
item.
|
|
57
|
+
return item.values if !index
|
|
58
|
+
return item.values[index]
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def check(name, data)
|
|
62
|
-
item =
|
|
62
|
+
item = item(name)
|
|
63
63
|
data.each do |line|
|
|
64
64
|
item.check_line(line)
|
|
65
65
|
end
|
data/lib/condition/param_item.rb
CHANGED
|
@@ -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
|
-
@
|
|
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
|
-
|
|
17
|
-
@
|
|
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[
|
|
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
|
-
@
|
|
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
|
|
96
|
+
expected == nil
|
|
75
97
|
elsif Hash === real
|
|
76
|
-
ex = expected
|
|
77
98
|
if !(Hash === expected)
|
|
78
|
-
|
|
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
|
-
|
|
101
|
+
expected == real
|
|
87
102
|
elsif Array === real
|
|
88
|
-
ex = expected
|
|
89
103
|
if !(Array === expected)
|
|
90
|
-
|
|
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
|
-
|
|
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 != @
|
|
119
|
+
whereKeyFlag = nil != @options.index(k.to_s)
|
|
118
120
|
matchFlag = false if !match
|
|
119
121
|
targetFlag = false if whereKeyFlag && !match
|
|
120
122
|
end
|
data/lib/condition/version.rb
CHANGED
data/spec/condition_spec.rb
CHANGED
|
@@ -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.
|
|
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', [{
|
|
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
|
|
data/spec/files/t_user.ods
CHANGED
|
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.
|
|
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
|