hyogen 0.0.1

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.
data/spec/sample1.csv ADDED
@@ -0,0 +1,4 @@
1
+ {HTABLE},,,
2
+ {L},id1,id2,{N}�⑫
3
+ name,Alice,Bob,���O
4
+ age,10.0,20.0,��
data/spec/sample1.txt ADDED
@@ -0,0 +1,2 @@
1
+ My name is Alice. I'm 10 years old.
2
+ My name is Bob. I'm 20 years old.
@@ -0,0 +1,4 @@
1
+ <%- records = tables.first.records -%>
2
+ <%- for record in records do -%>
3
+ My name is <%= record["name"] %>. I'm <%= record["age"].to_i %> years old.
4
+ <%- end -%>
data/spec/sample1.xls ADDED
Binary file
@@ -0,0 +1,293 @@
1
+ require 'spec'
2
+ require File.dirname(__FILE__) + '/../lib/hyogen'
3
+
4
+ context "deviding csvlines into tables:" do
5
+ specify "empty" do
6
+ csvdata = CSV.parse("")
7
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
8
+ table_list.should_eql []
9
+ end
10
+
11
+ specify "the smallest table" do
12
+ csvdata = CSV.parse("{VTABLE}")
13
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
14
+ table_list.size.should_eql 1
15
+ table_list.first.to_a.should_eql [["{VTABLE}"]]
16
+ end
17
+
18
+ specify "the single table" do
19
+ csvdata = CSV.parse("{HTABLE}\na,b\n1,2")
20
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
21
+ table_list.size.should_eql 1
22
+ table_list.first.to_a.should_eql [["{HTABLE}"],["a","b"],["1","2"]]
23
+ end
24
+
25
+ specify "the multiple table" do
26
+ csvdata = CSV.parse("{VTABLE}\n{L}\na,b\n{HTABLE}\n{L}\n1,2")
27
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
28
+ table_list.size.should_eql 2
29
+ table_list[0].to_a.should_eql [["{VTABLE}"],["{L}"],["a","b"]]
30
+ table_list[1].to_a.should_eql [["{HTABLE}"],["{L}"],["1","2"]]
31
+ end
32
+ end
33
+
34
+ context "parse tables:" do
35
+ specify "empty" do
36
+ csvdata = CSV.parse("")
37
+ tables = Hyogen.parse_tables(csvdata)
38
+ tables.should_eql []
39
+ end
40
+
41
+ specify "single table" do
42
+ csvdata = CSV.parse("{VTABLE}\n")
43
+ tables = Hyogen.parse_tables(csvdata)
44
+ tables.size.should_equal 1
45
+ tables.first.title.should == ""
46
+ end
47
+
48
+ specify "labeled table" do
49
+ csvdata = CSV.parse("test table{VTABLE}\n")
50
+ tables = Hyogen.parse_tables(csvdata)
51
+ tables.size.should == 1
52
+ tables.first.title.should_eql "test table"
53
+ end
54
+
55
+ specify "multiple tables" do
56
+ csvdata = CSV.parse("{VTABLE}\n{L}\n{HTABLE}\n{L}")
57
+ tables = Hyogen.parse_tables(csvdata)
58
+ tables.size.should_equal 2
59
+ end
60
+ end
61
+
62
+ context "parse label:" do
63
+ expect = [{"l1"=>"A"}, {"l2"=>"B"}]
64
+ specify "hlabel" do
65
+ csvdata = CSV.parse("test data{VTABLE}\n{L}l1,l2\n,A\n,B")
66
+ tables = Hyogen.parse_tables(csvdata)
67
+ tables.size.should_equal 1
68
+ table = tables.first
69
+ table.labels.size.should == 2
70
+ table.labels[0].names.should == ["l1"]
71
+ table.labels[1].names.should == ["l2"]
72
+ end
73
+
74
+ specify "vlabel" do
75
+ csvdata = CSV.parse("test data{HTABLE}\n{L}l1,A\nl2,B")
76
+ tables = Hyogen.parse_tables(csvdata)
77
+ tables.size.should_equal 1
78
+ table = tables.first
79
+ table.labels.size.should == 2
80
+ table.labels[0].names.should == ["l1"]
81
+ table.labels[1].names.should == ["l2"]
82
+ end
83
+ end
84
+
85
+
86
+ #�P����(���x����=1)�\
87
+ context "Table has single label:" do
88
+ expect = [{"l"=>"A"}, {"l"=>"B"}]
89
+ specify "vtable label" do
90
+ csvdata = CSV.parse("test data{VTABLE}\n{L}l\nA\nB")
91
+ tables = Hyogen.parse_tables(csvdata)
92
+ tables.size.should_equal 1
93
+ tables.first.records.should == expect
94
+ end
95
+
96
+ specify "htable label" do
97
+ csvdata = CSV.parse("test data{HTABLE},,\nl{L},A,B")
98
+ tables = Hyogen.parse_tables(csvdata)
99
+ tables.size.should_equal 1
100
+ table = tables.first
101
+ table.records.should == expect
102
+ end
103
+ end
104
+
105
+ #�璷�ȃf�[�^���܂ޕ\
106
+ context "redudancy:" do
107
+ specify "table" do
108
+ csvdata = CSV.parse("{VTABLE}\n\n{L}a,b\n\n{HTABLE}\n{L}1,2\n\nhoge")
109
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
110
+ table_list.size.should_eql 2
111
+ table_list[0].to_a.should_eql [["{VTABLE}"],[nil],["{L}a","b"]]
112
+ table_list[1].to_a.should_eql [["{HTABLE}"],["{L}1","2"]]
113
+ end
114
+
115
+ specify "data" do
116
+ expect = [{"l"=>"A"}, {"l"=>"B"}]
117
+ csvdata = CSV.parse("test data {VTABLE} \n\n {L} l \n A \nB \n")
118
+ tables = Hyogen.parse_tables(csvdata)
119
+ tables.size.should_equal 1
120
+ tables.first.title.should == "test data"
121
+ tables.first.records.should == expect
122
+ end
123
+ end
124
+
125
+ #�����̃��R�[�h�ƕ����̃��x�������•\
126
+ context "Table has multiple records and multiple labels:" do
127
+ expect = [{"name"=>"A", "age"=>"10"}, {"name"=>"B", "age"=>"20"}]
128
+ specify "vertical" do
129
+ csvdata = CSV.parse("{VTABLE}\n{L}name,age\nA,10\nB,20")
130
+ table = Hyogen.parse_tables(csvdata).first
131
+ table.records.should == expect
132
+ end
133
+
134
+ specify "horizontal" do
135
+ csvdata = CSV.parse("{HTABLE},,\n{L}name,A,B\nage,10,20")
136
+ table = Hyogen.parse_tables(csvdata).first
137
+ table.records.should == expect
138
+ end
139
+ end
140
+
141
+ #�K�w�̂���\
142
+ context "Table is structured" do
143
+ expect = [{"category"=> {"type" => "C"}}]
144
+ specify "vtable" do
145
+ csvdata = CSV.parse("{VTABLE}\n{L}category\n{L}type\nC")
146
+ table = Hyogen.parse_tables(csvdata).first
147
+ table.records.should == expect
148
+ end
149
+ specify "htable" do
150
+ csvdata = CSV.parse("{HTABLE},,o\n{L}category,{L}type,C")
151
+ table = Hyogen.parse_tables(csvdata).first
152
+ table.records.should == expect
153
+ end
154
+ end
155
+
156
+ #�⑫�^�O
157
+ context "Note Tag" do
158
+ expect_records = [
159
+ {""=>"id1", "name"=> "alice", "age" => "10"},
160
+ {""=>"id2", "name"=> "bob", "age" => "20"},
161
+ ]
162
+ specify "" do
163
+ csvdata = CSV.parse("{HTABLE}\n{L},id1,id2,{N}�⑫\nname,alice,bob,���O\nage,10,20,��")
164
+ table = Hyogen.parse_tables(csvdata).first
165
+ table.records.should == expect_records
166
+
167
+ table.labels[0].note.should == {"�⑫" => "�⑫"}
168
+ table.labels[1].note.should == {"�⑫" => "���O"}
169
+ table.labels[2].note.should == {"�⑫" => "��"}
170
+ end
171
+ end
172
+
173
+
174
+ context "Matrix of Excel Worksheet:" do
175
+ specify "" do
176
+ file = "./spec/sample1.xls"
177
+ workbook = Spreadsheet::ParseExcel.parse(file)
178
+ ws = workbook.worksheet(0)
179
+ matrix = Hyogen::Reader::worksheet_to_matrix(ws)
180
+ matrix.row_size.should == 4
181
+ matrix.column_size(0).should == 1
182
+ matrix.column_size(1).should == 4
183
+
184
+ matrix.value(0,0).should == "{HTABLE}"
185
+ matrix.row(1).should == ["{L}", "id1", "id2", "{N}�⑫"]
186
+ matrix.to_a.should == [
187
+ ["{HTABLE}"],
188
+ ["{L}", "id1", "id2", "{N}�⑫"],
189
+ ["name", "Alice", "Bob", "���O"],
190
+ ["age", "10.0", "20.0", "��"]
191
+ ]
192
+ end
193
+ end
194
+
195
+ #�e��t�@�C���t�H�[�}�b�g
196
+ context "File formats" do
197
+ def check table
198
+ expect_records = [
199
+ {""=>"id1", "name"=> "Alice", "age" => "10.0"},
200
+ {""=>"id2", "name"=> "Bob", "age" => "20.0"},
201
+ ]
202
+ table.records.should == expect_records
203
+ table.labels[0].note.should == {"�⑫" => "�⑫"}
204
+ table.labels[1].note.should == {"�⑫" => "���O"}
205
+ table.labels[2].note.should == {"�⑫" => "��"}
206
+ end
207
+ specify "csv string" do
208
+ input = "{HTABLE}\n{L},id1,id2,{N}�⑫\nname,Alice,Bob,���O\nage,10.0,20.0,��"
209
+ check Hyogen.parse_tables(input).first
210
+ end
211
+ specify "csv array" do
212
+ input = CSV.parse("{HTABLE}\n{L},id1,id2,{N}�⑫\nname,Alice,Bob,���O\nage,10.0,20.0,��")
213
+ check Hyogen.parse_tables(input).first
214
+ end
215
+ specify "csv file" do
216
+ input = "./spec/sample1.csv"
217
+ check Hyogen.parse_tables(input).first
218
+ end
219
+ specify "xls file" do
220
+ input = "./spec/sample1.xls"
221
+ check Hyogen.parse_tables(input).first
222
+ end
223
+ end
224
+
225
+
226
+ #�ȗ�
227
+ context "label syoryaku" do
228
+ specify "vtable" do
229
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t1,t2\n1,2")
230
+ expect = [{"a"=> {"t1" => "1", "t2" => "2"}}]
231
+ table = Hyogen.parse_tables(csvdata).first
232
+ table.records.should == expect
233
+ end
234
+
235
+ specify "overwrite" do
236
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t,\n1,2")
237
+ expect = [{"a"=> {"t" => "2"}}]
238
+ table = Hyogen.parse_tables(csvdata).first
239
+ table.records.should == expect
240
+ end
241
+ end
242
+
243
+ #�u��
244
+ context "alias" do
245
+ specify "label" do
246
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t1,t2<abc>\n1,2")
247
+ expect = [{"a"=> {"t1" => "1", "abc" => "2"}}]
248
+ table = Hyogen.parse_tables(csvdata).first
249
+ table.records.should == expect
250
+ end
251
+
252
+ specify "value" do
253
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t1,t2\n1,2 <2.00>")
254
+ expect = [{"a"=> {"t1" => "1", "t2" => "2.00"}}]
255
+ table = Hyogen.parse_tables(csvdata).first
256
+ table.records.should == expect
257
+ end
258
+ end
259
+
260
+ #����
261
+ context "generate:" do
262
+ def check table
263
+ expect_records = [
264
+ {""=>"id1", "name"=> "alice", "age" => "10.0"},
265
+ {""=>"id2", "name"=> "bob", "age" => "20.0"},
266
+ ]
267
+ table.records.should == expect_records
268
+ table.labels[0].note.should == {"�⑫" => "�⑫"}
269
+ table.labels[1].note.should == {"�⑫" => "���O"}
270
+ table.labels[2].note.should == {"�⑫" => "��"}
271
+ end
272
+ specify "from script" do
273
+ input = "{HTABLE}\n{L},id1,id2,{N}�⑫\nname,Alice,Bob,���O\nage,10.0,20.0,��"
274
+ tables = Hyogen.parse_tables(input)
275
+ begin
276
+ File.delete('./spec/sample1.txt')
277
+ rescue Errno::ENOENT
278
+ end
279
+ Hyogen::Template.generate(tables, './spec/sample1.txt.template', './spec')
280
+ result = File.open('./spec/sample1.txt') {|f| f.read}
281
+ result.should == "My name is Alice. I'm 10 years old.\nMy name is Bob. I'm 20 years old.\n"
282
+ end
283
+ specify "from shell" do
284
+ begin
285
+ File.delete('./spec/sample1.txt')
286
+ rescue Errno::ENOENT
287
+ end
288
+ result = system 'ruby', 'bin/hyogen', '-s', './spec/sample1.xls', './spec/sample1.txt.template', '-o', './spec'
289
+ result.should == true
290
+ result = File.open('./spec/sample1.txt') {|f| f.read}
291
+ result.should == "My name is Alice. I'm 10 years old.\nMy name is Bob. I'm 20 years old.\n"
292
+ end
293
+ end
@@ -0,0 +1,294 @@
1
+ require 'lib/hyogen'
2
+ require 'spec'
3
+
4
+
5
+ context "deviding csvlines into tables:" do
6
+ specify "empty" do
7
+ csvdata = CSV.parse("")
8
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
9
+ table_list.should_eql []
10
+ end
11
+
12
+ specify "the smallest table" do
13
+ csvdata = CSV.parse("{VTABLE}")
14
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
15
+ table_list.size.should_eql 1
16
+ table_list.first.to_a.should_eql [["{VTABLE}"]]
17
+ end
18
+
19
+ specify "the single table" do
20
+ csvdata = CSV.parse("{HTABLE}\na,b\n1,2")
21
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
22
+ table_list.size.should_eql 1
23
+ table_list.first.to_a.should_eql [["{HTABLE}"],["a","b"],["1","2"]]
24
+ end
25
+
26
+ specify "the multiple table" do
27
+ csvdata = CSV.parse("{VTABLE}\n{L}\na,b\n{HTABLE}\n{L}\n1,2")
28
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
29
+ table_list.size.should_eql 2
30
+ table_list[0].to_a.should_eql [["{VTABLE}"],["{L}"],["a","b"]]
31
+ table_list[1].to_a.should_eql [["{HTABLE}"],["{L}"],["1","2"]]
32
+ end
33
+ end
34
+
35
+ context "parse tables:" do
36
+ specify "empty" do
37
+ csvdata = CSV.parse("")
38
+ tables = Hyogen.parse_tables(csvdata)
39
+ tables.should_eql []
40
+ end
41
+
42
+ specify "single table" do
43
+ csvdata = CSV.parse("{VTABLE}\n")
44
+ tables = Hyogen.parse_tables(csvdata)
45
+ tables.size.should_equal 1
46
+ tables.first.title.should == ""
47
+ end
48
+
49
+ specify "labeled table" do
50
+ csvdata = CSV.parse("test table{VTABLE}\n")
51
+ tables = Hyogen.parse_tables(csvdata)
52
+ tables.size.should == 1
53
+ tables.first.title.should_eql "test table"
54
+ end
55
+
56
+ specify "multiple tables" do
57
+ csvdata = CSV.parse("{VTABLE}\n{L}\n{HTABLE}\n{L}")
58
+ tables = Hyogen.parse_tables(csvdata)
59
+ tables.size.should_equal 2
60
+ end
61
+ end
62
+
63
+ context "parse label:" do
64
+ expect = [{"l1"=>"A"}, {"l2"=>"B"}]
65
+ specify "hlabel" do
66
+ csvdata = CSV.parse("test data{VTABLE}\n{L}l1,l2\n,A\n,B")
67
+ tables = Hyogen.parse_tables(csvdata)
68
+ tables.size.should_equal 1
69
+ table = tables.first
70
+ table.labels.size.should == 2
71
+ table.labels[0].names.should == ["l1"]
72
+ table.labels[1].names.should == ["l2"]
73
+ end
74
+
75
+ specify "vlabel" do
76
+ csvdata = CSV.parse("test data{HTABLE}\n{L}l1,A\nl2,B")
77
+ tables = Hyogen.parse_tables(csvdata)
78
+ tables.size.should_equal 1
79
+ table = tables.first
80
+ table.labels.size.should == 2
81
+ table.labels[0].names.should == ["l1"]
82
+ table.labels[1].names.should == ["l2"]
83
+ end
84
+ end
85
+
86
+
87
+ #�P����(���x����=1)�\
88
+ context "Table has single label:" do
89
+ expect = [{"l"=>"A"}, {"l"=>"B"}]
90
+ specify "vtable label" do
91
+ csvdata = CSV.parse("test data{VTABLE}\n{L}l\nA\nB")
92
+ tables = Hyogen.parse_tables(csvdata)
93
+ tables.size.should_equal 1
94
+ tables.first.records.should == expect
95
+ end
96
+
97
+ specify "htable label" do
98
+ csvdata = CSV.parse("test data{HTABLE},,\nl{L},A,B")
99
+ tables = Hyogen.parse_tables(csvdata)
100
+ tables.size.should_equal 1
101
+ table = tables.first
102
+ table.records.should == expect
103
+ end
104
+ end
105
+
106
+ #�璷�ȃf�[�^���܂ޕ\
107
+ context "redudancy:" do
108
+ specify "table" do
109
+ csvdata = CSV.parse("{VTABLE}\n\n{L}a,b\n\n{HTABLE}\n{L}1,2\n\nhoge")
110
+ table_list = Hyogen::Reader.devide_into_table(Hyogen::Reader::Matrix.new(csvdata))
111
+ table_list.size.should_eql 2
112
+ table_list[0].to_a.should_eql [["{VTABLE}"],[nil],["{L}a","b"]]
113
+ table_list[1].to_a.should_eql [["{HTABLE}"],["{L}1","2"]]
114
+ end
115
+
116
+ specify "data" do
117
+ expect = [{"l"=>"A"}, {"l"=>"B"}]
118
+ csvdata = CSV.parse("test data {VTABLE} \n\n {L} l \n A \nB \n")
119
+ tables = Hyogen.parse_tables(csvdata)
120
+ tables.size.should_equal 1
121
+ tables.first.title.should == "test data"
122
+ tables.first.records.should == expect
123
+ end
124
+ end
125
+
126
+ #�����̃��R�[�h�ƕ����̃��x�������•\
127
+ context "Table has multiple records and multiple labels:" do
128
+ expect = [{"name"=>"A", "age"=>"10"}, {"name"=>"B", "age"=>"20"}]
129
+ specify "vertical" do
130
+ csvdata = CSV.parse("{VTABLE}\n{L}name,age\nA,10\nB,20")
131
+ table = Hyogen.parse_tables(csvdata).first
132
+ table.records.should == expect
133
+ end
134
+
135
+ specify "horizontal" do
136
+ csvdata = CSV.parse("{HTABLE},,\n{L}name,A,B\nage,10,20")
137
+ table = Hyogen.parse_tables(csvdata).first
138
+ table.records.should == expect
139
+ end
140
+ end
141
+
142
+ #�K�w�̂���\
143
+ context "Table is structured" do
144
+ expect = [{"category"=> {"type" => "C"}}]
145
+ specify "vtable" do
146
+ csvdata = CSV.parse("{VTABLE}\n{L}category\n{L}type\nC")
147
+ table = Hyogen.parse_tables(csvdata).first
148
+ table.records.should == expect
149
+ end
150
+ specify "htable" do
151
+ csvdata = CSV.parse("{HTABLE},,o\n{L}category,{L}type,C")
152
+ table = Hyogen.parse_tables(csvdata).first
153
+ table.records.should == expect
154
+ end
155
+ end
156
+
157
+ #�⑫�^�O
158
+ context "Note Tag" do
159
+ expect_records = [
160
+ {""=>"id1", "name"=> "alice", "age" => "10"},
161
+ {""=>"id2", "name"=> "bob", "age" => "20"},
162
+ ]
163
+ specify "" do
164
+ csvdata = CSV.parse("{HTABLE}\n{L},id1,id2,{N}�⑫\nname,alice,bob,���O\nage,10,20,��")
165
+ table = Hyogen.parse_tables(csvdata).first
166
+ table.records.should == expect_records
167
+
168
+ table.labels[0].note.should == {"�⑫" => "�⑫"}
169
+ table.labels[1].note.should == {"�⑫" => "���O"}
170
+ table.labels[2].note.should == {"�⑫" => "��"}
171
+ end
172
+ end
173
+
174
+
175
+ context "Matrix of Excel Worksheet:" do
176
+ specify "" do
177
+ file = "./spec/sample1.xls"
178
+ workbook = Spreadsheet::ParseExcel.parse(file)
179
+ ws = workbook.worksheet(0)
180
+ matrix = Hyogen::Reader::worksheet_to_matrix(ws)
181
+ matrix.row_size.should == 4
182
+ matrix.column_size(0).should == 1
183
+ matrix.column_size(1).should == 4
184
+
185
+ matrix.value(0,0).should == "{HTABLE}"
186
+ matrix.row(1).should == ["{L}", "id1", "id2", "{N}�⑫"]
187
+ matrix.to_a.should == [
188
+ ["{HTABLE}"],
189
+ ["{L}", "id1", "id2", "{N}�⑫"],
190
+ ["name", "Alice", "Bob", "���O"],
191
+ ["age", "10.0", "20.0", "��"]
192
+ ]
193
+ end
194
+ end
195
+
196
+ #�e��t�@�C���t�H�[�}�b�g
197
+ context "File formats" do
198
+ def check table
199
+ expect_records = [
200
+ {""=>"id1", "name"=> "Alice", "age" => "10.0"},
201
+ {""=>"id2", "name"=> "Bob", "age" => "20.0"},
202
+ ]
203
+ table.records.should == expect_records
204
+ table.labels[0].note.should == {"�⑫" => "�⑫"}
205
+ table.labels[1].note.should == {"�⑫" => "���O"}
206
+ table.labels[2].note.should == {"�⑫" => "��"}
207
+ end
208
+ specify "csv string" do
209
+ input = "{HTABLE}\n{L},id1,id2,{N}�⑫\nname,Alice,Bob,���O\nage,10.0,20.0,��"
210
+ check Hyogen.parse_tables(input).first
211
+ end
212
+ specify "csv array" do
213
+ input = CSV.parse("{HTABLE}\n{L},id1,id2,{N}�⑫\nname,Alice,Bob,���O\nage,10.0,20.0,��")
214
+ check Hyogen.parse_tables(input).first
215
+ end
216
+ specify "csv file" do
217
+ input = "./spec/sample1.csv"
218
+ check Hyogen.parse_tables(input).first
219
+ end
220
+ specify "xls file" do
221
+ input = "./spec/sample1.xls"
222
+ check Hyogen.parse_tables(input).first
223
+ end
224
+ end
225
+
226
+
227
+ #�ȗ�
228
+ context "label syoryaku" do
229
+ specify "vtable" do
230
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t1,t2\n1,2")
231
+ expect = [{"a"=> {"t1" => "1", "t2" => "2"}}]
232
+ table = Hyogen.parse_tables(csvdata).first
233
+ table.records.should == expect
234
+ end
235
+
236
+ specify "overwrite" do
237
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t,\n1,2")
238
+ expect = [{"a"=> {"t" => "2"}}]
239
+ table = Hyogen.parse_tables(csvdata).first
240
+ table.records.should == expect
241
+ end
242
+ end
243
+
244
+ #�u��
245
+ context "alias" do
246
+ specify "label" do
247
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t1,t2<abc>\n1,2")
248
+ expect = [{"a"=> {"t1" => "1", "abc" => "2"}}]
249
+ table = Hyogen.parse_tables(csvdata).first
250
+ table.records.should == expect
251
+ end
252
+
253
+ specify "value" do
254
+ csvdata = CSV.parse("{VTABLE},\n{L}a,\n{L}t1,t2\n1,2 <2.00>")
255
+ expect = [{"a"=> {"t1" => "1", "t2" => "2.00"}}]
256
+ table = Hyogen.parse_tables(csvdata).first
257
+ table.records.should == expect
258
+ end
259
+ end
260
+
261
+ #����
262
+ context "generate:" do
263
+ def check table
264
+ expect_records = [
265
+ {""=>"id1", "name"=> "alice", "age" => "10.0"},
266
+ {""=>"id2", "name"=> "bob", "age" => "20.0"},
267
+ ]
268
+ table.records.should == expect_records
269
+ table.labels[0].note.should == {"�⑫" => "�⑫"}
270
+ table.labels[1].note.should == {"�⑫" => "���O"}
271
+ table.labels[2].note.should == {"�⑫" => "��"}
272
+ end
273
+ specify "from script" do
274
+ input = "{HTABLE}\n{L},id1,id2,{N}�⑫\nname,Alice,Bob,���O\nage,10.0,20.0,��"
275
+ tables = Hyogen.parse_tables(input)
276
+ begin
277
+ File.delete('./spec/sample1.txt')
278
+ rescue Errno::ENOENT
279
+ end
280
+ Hyogen::Template.generate(tables, './spec/sample1.txt.template', './spec')
281
+ result = File.open('./spec/sample1.txt') {|f| f.read}
282
+ result.should == "My name is Alice. I'm 10 years old.\nMy name is Bob. I'm 20 years old.\n"
283
+ end
284
+ specify "from shell" do
285
+ begin
286
+ File.delete('./spec/sample1.txt')
287
+ rescue Errno::ENOENT
288
+ end
289
+ result = system 'ruby', 'hyogen', '-s', './spec/sample1.xls', './spec/sample1.txt.template', '-o', './spec'
290
+ result.should == true
291
+ result = File.open('./spec/sample1.txt') {|f| f.read}
292
+ result.should == "My name is Alice. I'm 10 years old.\nMy name is Bob. I'm 20 years old.\n"
293
+ end
294
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/hyogen'
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestHyogen < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def test_truth
9
+ assert true
10
+ end
11
+ end