kwatable 0.0.1 → 0.1.0
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/ChangeLog.txt +28 -2
- data/README.txt +1 -1
- data/bin/kwatable +2 -2
- data/examples/ex1/Makefile +1 -1
- data/examples/ex1/example1.yaml +18 -7
- data/examples/ex2/Makefile +1 -1
- data/kwatable.gemspec +2 -2
- data/lib/kwatable/error-msg.rb +15 -14
- data/lib/kwatable/kwatable.schema.yaml +34 -81
- data/lib/kwatable/main-program.rb +49 -41
- data/lib/kwatable/manipulator.rb +222 -0
- data/lib/kwatable/templates/ddl-mysql.eruby +15 -12
- data/lib/kwatable/templates/ddl-postgresql.eruby +14 -10
- data/lib/kwatable/templates/defaults.yaml +4 -4
- data/lib/kwatable/templates/dto-java.eruby +49 -59
- data/lib/kwatable/templates/dto-ruby.eruby +47 -54
- data/lib/kwatable.rb +3 -4
- data/test/assert-diff.rb +1 -1
- data/test/test.rb +24 -17
- data/test/test1/test1.ddl-mysql.expected +3 -2
- data/test/test1/test1.ddl-postgresql.expected +2 -1
- data/test/test1/test1.dto-java.Group.expected +12 -9
- data/test/test1/test1.dto-java.User.expected +12 -14
- data/test/test1/test1.dto-ruby.Group.expected +9 -10
- data/test/test1/test1.dto-ruby.User.expected +12 -15
- data/test/test1/test1.yaml +18 -7
- data/test/test2/test2.ddl-mysql.expected +4 -4
- data/test/test2/test2.dto-java.Address.expected +6 -8
- data/test/test2/test2.dto-java.Customer.expected +6 -8
- data/test/test2/test2.dto-java.Item.expected +5 -7
- data/test/test2/test2.dto-java.SalesOrder.expected +6 -8
- data/test/test2/test2.dto-java.SalesOrderLine.expected +6 -8
- data/test/test2/test2.dto-ruby.Address.expected +6 -9
- data/test/test2/test2.dto-ruby.Customer.expected +6 -9
- data/test/test2/test2.dto-ruby.Item.expected +5 -8
- data/test/test2/test2.dto-ruby.SalesOrder.expected +6 -9
- data/test/test2/test2.dto-ruby.SalesOrderLine.expected +6 -9
- data/test/test2/test2.yaml +3 -3
- metadata +65 -64
- data/lib/kwatable/manufactory.rb +0 -213
data/ChangeLog.txt
CHANGED
@@ -1,7 +1,33 @@
|
|
1
1
|
.=title: ChangeLog
|
2
2
|
.?copyright: copyright(c) 2005 kuwata-lab.com all rights reserved.
|
3
|
-
.?release: $Release: 0.0
|
4
|
-
.?version: $Rev:
|
3
|
+
.?release: $Release: 0.1.0 $
|
4
|
+
.?version: $Rev: 15 $
|
5
|
+
|
6
|
+
.: 2005-10-13 rev.16
|
7
|
+
.- [release] 0.1.0
|
8
|
+
|
9
|
+
.: 2005-10-13 rev.15
|
10
|
+
.- [change] rename class 'Manufactory' to 'Manipulator'
|
11
|
+
.- [change] delete column['ref-table'] and column['ref-column']
|
12
|
+
.- [change] add column['table']
|
13
|
+
.- [change] change column['ref'] to refer a column
|
14
|
+
.- [change] delete Manipulator#parse()
|
15
|
+
.- [change] delete constructor from dto-{java,ruby}.eruby
|
16
|
+
.- [enhance] add populator to dto-{java,ruby}.eruby
|
17
|
+
.- [refactor] use singleton method and instance variabe in template files
|
18
|
+
|
19
|
+
.: 2005-09-17 rev.14
|
20
|
+
.- add table name and column name on error message
|
21
|
+
.- add '_' prefix on private method
|
22
|
+
.- new method Manufacture#_error() added
|
23
|
+
.- new method MainProgram#_option_error() added
|
24
|
+
|
25
|
+
.: 2005-09-15 rev.13
|
26
|
+
.- change 'values:' to 'enum:' to adopt same keyword of kwalify
|
27
|
+
.- change to use 'str', 'int', and 'bool' rather than 'string', 'integer', and 'boolean'
|
28
|
+
.- change to use 'enum' instead of 'values'
|
29
|
+
.- modiy kwatable.schema.yaml
|
30
|
+
.- add java keyword 'assert' and 'enum' to dto-java.eruby
|
5
31
|
|
6
32
|
.: 2005-09-12 rev.12 (release 0.0.1)
|
7
33
|
.- change ERB trim_mode from '%' to '>'
|
data/README.txt
CHANGED
data/bin/kwatable
CHANGED
data/examples/ex1/Makefile
CHANGED
data/examples/ex1/example1.yaml
CHANGED
@@ -2,19 +2,19 @@
|
|
2
2
|
## example data file for kwatable
|
3
3
|
##
|
4
4
|
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
5
|
-
## $Release: 0.0
|
6
|
-
## $Rev:
|
5
|
+
## $Release: 0.1.0 $
|
6
|
+
## $Rev: 15 $
|
7
7
|
##
|
8
8
|
|
9
9
|
columns:
|
10
10
|
- name: id
|
11
11
|
type: integer
|
12
|
-
|
12
|
+
ident: yes
|
13
13
|
serial: yes
|
14
14
|
|
15
15
|
- name: name
|
16
16
|
type: string
|
17
|
-
|
17
|
+
required: yes
|
18
18
|
width: 63
|
19
19
|
|
20
20
|
- name: desc
|
@@ -53,7 +53,7 @@ columns:
|
|
53
53
|
|
54
54
|
- name: gender
|
55
55
|
type: string
|
56
|
-
|
56
|
+
enum:
|
57
57
|
- M
|
58
58
|
- F
|
59
59
|
|
@@ -63,23 +63,34 @@ tables:
|
|
63
63
|
desc: Group master table
|
64
64
|
columns:
|
65
65
|
- name: id
|
66
|
+
desc: group id
|
66
67
|
- name: name
|
68
|
+
desc: group name
|
67
69
|
- name: desc
|
70
|
+
desc: group description
|
71
|
+
- name: class
|
72
|
+
desc: group class
|
73
|
+
type: string
|
74
|
+
enum: [ ADMIN, SYSTEM, USER, UNUSED ]
|
68
75
|
|
69
76
|
- name: users
|
70
77
|
class: User
|
71
78
|
desc: User master table
|
72
79
|
columns:
|
73
80
|
- name: id
|
81
|
+
desc: user id
|
74
82
|
- name: name
|
83
|
+
desc: user name
|
75
84
|
- name: desc
|
85
|
+
desc: description about user
|
76
86
|
- name: email
|
77
87
|
- name: group_id
|
78
88
|
ref: groups.id
|
89
|
+
desc: group id to which user belongs
|
79
90
|
- name: account
|
80
91
|
type: string
|
81
92
|
width: 31
|
82
|
-
|
93
|
+
required: yes
|
83
94
|
- name: password
|
84
|
-
|
95
|
+
required: yes
|
85
96
|
|
data/examples/ex2/Makefile
CHANGED
data/kwatable.gemspec
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
### RubyGems Specification file for kwatable
|
5
5
|
###
|
6
6
|
### copyright(c) 2005 kuwata-lab.com all rights reserved.
|
7
|
-
### $Release: 0.0
|
7
|
+
### $Release: 0.1.0 $
|
8
8
|
### $Rev: 10 $
|
9
9
|
###
|
10
10
|
|
@@ -14,7 +14,7 @@ spec = Gem::Specification.new do |s|
|
|
14
14
|
## package information
|
15
15
|
s.name = 'kwatable'
|
16
16
|
s.author = 'makoto kuwata'
|
17
|
-
s.version = ("$Release: 0.0
|
17
|
+
s.version = ("$Release: 0.1.0 $" =~ /Release: ([\.\d]+)/) && $1
|
18
18
|
s.platform = Gem::Platform::RUBY
|
19
19
|
s.homepage = 'http://www.kuwata-lab.com/kwatable'
|
20
20
|
s.summary = "SQL and DTO generator from table definition"
|
data/lib/kwatable/error-msg.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
###
|
2
2
|
### copyright(c) 2005 kuwata-lab.com all rights reserved.
|
3
|
-
### $Release: 0.0
|
4
|
-
### $Rev:
|
3
|
+
### $Release: 0.1.0 $
|
4
|
+
### $Rev: 15 $
|
5
5
|
###
|
6
6
|
|
7
7
|
module Kwatable
|
@@ -13,6 +13,8 @@ module Kwatable
|
|
13
13
|
end
|
14
14
|
|
15
15
|
#----- begin auto generate
|
16
|
+
@@messages[:tabledef_empty] = "table definition file is empty."
|
17
|
+
@@messages[:tabledef_notmap] = "table definition is not a mapping."
|
16
18
|
@@messages[:template_required] = "template is not specified."
|
17
19
|
@@messages[:template_notfound] = "`%s': template file not found."
|
18
20
|
@@messages[:file_generated] = "generated: %s"
|
@@ -20,18 +22,17 @@ module Kwatable
|
|
20
22
|
@@messages[:outdir_required] = "-%s: output directory required."
|
21
23
|
@@messages[:directory_required] = "-%s: directory required."
|
22
24
|
@@messages[:option_invalid] = "-%s: invalid option."
|
23
|
-
@@messages[:colname_required] = "
|
24
|
-
@@messages[:regexp_invalid] = "column %s: %s"
|
25
|
-
@@messages[:coldef_duplicated] = "column
|
26
|
-
@@messages[:
|
27
|
-
@@messages[:
|
28
|
-
@@messages[:
|
29
|
-
@@messages[:
|
30
|
-
@@messages[:
|
31
|
-
@@messages[:
|
32
|
-
@@messages[:
|
33
|
-
@@messages[:
|
34
|
-
@@messages[:refcolumn_notfound] = "`ref: %s': column not found in the table."
|
25
|
+
@@messages[:colname_required] = "table '%s': column name required (index=%d)."
|
26
|
+
@@messages[:regexp_invalid] = "table '%s': column '%s': pattern %s: %s"
|
27
|
+
@@messages[:coldef_duplicated] = "table '%s': column '%s': column name is duplicated."
|
28
|
+
@@messages[:tablename_required] = "table definition doesn't have a name (index=%d)."
|
29
|
+
@@messages[:tabledef_duplicated] = "table '%s': table name is duplicated."
|
30
|
+
@@messages[:tablecolumn_required] = "table '%s': column name requried (index=%d)."
|
31
|
+
@@messages[:tablecolumn_duplicated] = "table '%s': column '%s': column name is duplicated."
|
32
|
+
@@messages[:tabletype_required] = "table `%s': column `%s': type is not determined."
|
33
|
+
@@messages[:alias_conflict] = "table '%s', column '%s': alias key '%1:' and '%2:' are not allowed to use in the same time."
|
34
|
+
@@messages[:reftable_notfound] = "`table '%s': column '%s': 'ref: %s': reference table not found."
|
35
|
+
@@messages[:refcolumn_notfound] = "`table '%s': column '%s': ref: %s': reference column not found in the table."
|
35
36
|
#----- end auto generate
|
36
37
|
|
37
38
|
end
|
@@ -2,8 +2,8 @@
|
|
2
2
|
### schema definition of kwalify for kwatable
|
3
3
|
###
|
4
4
|
### copyright(c) 2005 kuwata-lab.com all rights reserved.
|
5
|
-
### $Release: 0.0
|
6
|
-
### $Rev$
|
5
|
+
### $Release: 0.1.0 $
|
6
|
+
### $Rev: 15 $
|
7
7
|
###
|
8
8
|
|
9
9
|
|
@@ -13,121 +13,74 @@ mapping:
|
|
13
13
|
type: seq
|
14
14
|
sequence:
|
15
15
|
- type: map
|
16
|
-
mapping:
|
16
|
+
mapping: &columrule
|
17
17
|
"name":
|
18
|
-
type:
|
19
|
-
"namepattern":
|
20
|
-
type: string
|
21
|
-
pattern: /^\/.*\/$/
|
18
|
+
type: str
|
22
19
|
"desc":
|
23
20
|
type: text
|
24
21
|
"type":
|
25
|
-
type:
|
26
|
-
|
22
|
+
type: str
|
23
|
+
enum:
|
27
24
|
- char
|
28
25
|
- short
|
29
|
-
- integer
|
30
26
|
- int
|
31
|
-
-
|
27
|
+
- integer
|
32
28
|
- str
|
29
|
+
- string
|
33
30
|
- text
|
34
31
|
- float
|
35
32
|
- double
|
36
|
-
- boolean
|
37
33
|
- bool
|
34
|
+
- boolean
|
38
35
|
- date
|
36
|
+
- time
|
39
37
|
- timestamp
|
40
38
|
- money
|
41
39
|
"width":
|
42
|
-
type:
|
40
|
+
type: int
|
41
|
+
#"identifier":
|
42
|
+
"ident":
|
43
|
+
type: bool
|
43
44
|
"primary-key":
|
44
|
-
type:
|
45
|
-
|
46
|
-
type: boolean
|
47
|
-
"not-null":
|
48
|
-
type: boolean
|
45
|
+
type: bool
|
46
|
+
desc: alias of 'ident'
|
49
47
|
"required":
|
50
|
-
type:
|
48
|
+
type: bool
|
49
|
+
"not-null":
|
50
|
+
type: bool
|
51
|
+
desc: alias of 'required'
|
51
52
|
"unique":
|
52
|
-
type:
|
53
|
-
"sequence":
|
54
|
-
type: boolean
|
53
|
+
type: bool
|
55
54
|
"serial":
|
56
|
-
type:
|
57
|
-
"
|
55
|
+
type: bool
|
56
|
+
"enum":
|
58
57
|
type: seq
|
59
58
|
sequence:
|
60
|
-
- type:
|
59
|
+
- type: text
|
61
60
|
"ref":
|
62
|
-
type:
|
63
|
-
pattern: /^\w
|
61
|
+
type: str
|
62
|
+
pattern: /^\w+(\.\w+|\(\w+\))$/
|
64
63
|
"ref-name":
|
65
|
-
type:
|
64
|
+
type: str
|
66
65
|
"pattern":
|
67
|
-
type:
|
68
|
-
pattern:
|
66
|
+
type: str
|
67
|
+
pattern: /^\/.*\/$/
|
68
|
+
|
69
69
|
|
70
70
|
"tables":
|
71
|
-
type:
|
71
|
+
type: seq
|
72
72
|
sequence:
|
73
73
|
- type: map
|
74
74
|
mapping:
|
75
75
|
"name":
|
76
|
-
type:
|
76
|
+
type: str
|
77
77
|
required: yes
|
78
78
|
"desc":
|
79
79
|
type: text
|
80
80
|
"class":
|
81
|
-
type:
|
81
|
+
type: str
|
82
82
|
"columns":
|
83
83
|
type: seq
|
84
84
|
sequence:
|
85
85
|
- type: map
|
86
|
-
mapping:
|
87
|
-
"name":
|
88
|
-
type: string
|
89
|
-
"desc":
|
90
|
-
type: text
|
91
|
-
"type":
|
92
|
-
type: string
|
93
|
-
values:
|
94
|
-
- char
|
95
|
-
- short
|
96
|
-
- integer
|
97
|
-
- int
|
98
|
-
- string
|
99
|
-
- str
|
100
|
-
- text
|
101
|
-
- float
|
102
|
-
- double
|
103
|
-
- boolean
|
104
|
-
- bool
|
105
|
-
- money
|
106
|
-
"width":
|
107
|
-
type: integer
|
108
|
-
"primary-key":
|
109
|
-
type: boolean
|
110
|
-
"identifier":
|
111
|
-
type: boolean
|
112
|
-
"not-null":
|
113
|
-
type: boolean
|
114
|
-
"required":
|
115
|
-
type: boolean
|
116
|
-
"unique":
|
117
|
-
type: boolean
|
118
|
-
"sequence":
|
119
|
-
type: boolean
|
120
|
-
"serial":
|
121
|
-
type: boolean
|
122
|
-
"values":
|
123
|
-
type: seq
|
124
|
-
sequence:
|
125
|
-
- type: string
|
126
|
-
"ref":
|
127
|
-
type: string
|
128
|
-
pattern: /^\w+\.\w+$/
|
129
|
-
"ref-name":
|
130
|
-
type: string
|
131
|
-
"pattern":
|
132
|
-
type: string
|
133
|
-
pattern: /^\/.*\/$/
|
86
|
+
mapping: *columrule
|
@@ -1,9 +1,10 @@
|
|
1
1
|
###
|
2
2
|
### copyright(c) 2005 kuwata-lab.com all rights reserved.
|
3
|
-
### $Release: 0.0
|
4
|
-
### $Rev:
|
3
|
+
### $Release: 0.1.0 $
|
4
|
+
### $Rev: 15 $
|
5
5
|
###
|
6
6
|
|
7
|
+
require 'yaml'
|
7
8
|
require 'erb'
|
8
9
|
|
9
10
|
module Kwatable
|
@@ -17,12 +18,12 @@ module Kwatable
|
|
17
18
|
end
|
18
19
|
|
19
20
|
def execute()
|
20
|
-
options, properties =
|
21
|
+
options, properties = _parse_options(@argv)
|
21
22
|
|
22
23
|
## help or version
|
23
24
|
if options[?h] || options[?v]
|
24
|
-
puts
|
25
|
-
puts
|
25
|
+
puts _version() if options[?v]
|
26
|
+
puts _usage() if options[?h]
|
26
27
|
return
|
27
28
|
end
|
28
29
|
|
@@ -36,44 +37,51 @@ module Kwatable
|
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
39
|
-
|
40
|
+
tabledef = YAML.load(s)
|
41
|
+
unless tabledef
|
42
|
+
#* key=:tabledef_empty msg="table definition file is empty."
|
43
|
+
raise _option_error(:tabledef_empty)
|
44
|
+
end
|
45
|
+
unless tabledef.is_a?(Hash)
|
46
|
+
#* key=:tabledef_notmap msg="table definition is not a mapping."
|
47
|
+
raise _option_error(:tabledef_notmap)
|
48
|
+
end
|
40
49
|
|
41
|
-
##
|
42
|
-
|
43
|
-
|
44
|
-
$stderr.print
|
50
|
+
## manipulation
|
51
|
+
manipulator = Manipulator.new()
|
52
|
+
manipulator.manipulate(tabledef)
|
53
|
+
$stderr.print tabledef.to_yaml if options[?D]
|
45
54
|
|
46
55
|
## template filename
|
47
56
|
template = options[?f]
|
48
57
|
unless template
|
49
58
|
return nil if options[?D]
|
50
59
|
#* key=:template_required msg="template is not specified."
|
51
|
-
raise
|
60
|
+
raise _option_error(:template_required)
|
52
61
|
end
|
53
62
|
|
54
63
|
## template filepath
|
55
64
|
template_filepath = nil
|
56
65
|
if test(?f, template)
|
57
66
|
template_filepath = template
|
58
|
-
elsif options[?I] && t =
|
67
|
+
elsif options[?I] && t = _find_template(template, options[?I])
|
59
68
|
template_filepath = t
|
60
69
|
else
|
61
|
-
template_filepath =
|
70
|
+
template_filepath = _find_template(template, Kwatable.template_path)
|
62
71
|
end
|
63
72
|
unless template_filepath
|
64
73
|
#* key=:template_notfound msg="`%s': template file not found."
|
65
|
-
raise
|
74
|
+
raise _option_error(:template_notfound, template)
|
66
75
|
end
|
67
76
|
|
68
77
|
## apply template
|
69
78
|
if !options[?m]
|
70
|
-
context = { 'tables' =>
|
71
|
-
output =
|
72
|
-
return output
|
79
|
+
context = { 'tables' => tabledef['tables'], 'properties' => properties, }
|
80
|
+
output = _apply_template(template_filepath, context)
|
73
81
|
else
|
74
|
-
|
82
|
+
tabledef['tables'].each do |table|
|
75
83
|
context = { 'table' => table, 'properties' => properties, }
|
76
|
-
output =
|
84
|
+
output = _apply_template(template_filepath, context)
|
77
85
|
output_filename = context[:output_filename]
|
78
86
|
output_filename = "#{options[?d]}/#{output_filename}" if options[?d]
|
79
87
|
File.open(output_filename, 'w') { |f| f.write(output) }
|
@@ -82,13 +90,19 @@ module Kwatable
|
|
82
90
|
$stderr.puts(Kwatable.msg(:file_generated) % output_filename)
|
83
91
|
end
|
84
92
|
end
|
85
|
-
|
93
|
+
output = nil
|
86
94
|
end
|
95
|
+
return output
|
87
96
|
end
|
88
97
|
|
89
98
|
private
|
99
|
+
|
100
|
+
def _option_error(message_key, *args)
|
101
|
+
msg = Kwatable.msg(message_key) % args
|
102
|
+
return CommandOptionError.new(msg)
|
103
|
+
end
|
90
104
|
|
91
|
-
def
|
105
|
+
def _parse_options(argv)
|
92
106
|
options = {}
|
93
107
|
properties = {}
|
94
108
|
while argv[0] && argv[0][0] == ?-
|
@@ -122,31 +136,25 @@ module Kwatable
|
|
122
136
|
when ?f, ?t
|
123
137
|
arg = optstr.empty? ? argv.shift : optstr
|
124
138
|
optstr = nil
|
125
|
-
|
126
|
-
|
127
|
-
raise CommandOptionError.new(Kwatable.msg(:template_required) % optchar.chr)
|
128
|
-
end
|
139
|
+
#* key=:template_required msg="-%s: template filename required."
|
140
|
+
raise _option_error(:template_required, optchar.chr) unless arg
|
129
141
|
options[?f] = arg
|
130
142
|
#options[optchar] = arg
|
131
143
|
when ?d
|
132
144
|
arg = optstr.empty? ? argv.shift : optstr
|
133
145
|
optstr = nil
|
134
|
-
|
135
|
-
|
136
|
-
raise CommandOptionError.new(Kwatable.msg(:outdir_required) % optchar.chr)
|
137
|
-
end
|
146
|
+
#* key=:outdir_required msg="-%s: output directory required."
|
147
|
+
raise _option_error(:outdir_required, optchar.chr) unless arg
|
138
148
|
options[optchar] = arg
|
139
149
|
when ?I
|
140
150
|
arg = optstr.empty? ? argv.shift : optstr
|
141
151
|
optstr = nil
|
142
|
-
|
143
|
-
|
144
|
-
raise CommandOptionError.new(Kwatable.msg(:directory_required) % optchar.chr)
|
145
|
-
end
|
152
|
+
#* key=:directory_required msg="-%s: directory required."
|
153
|
+
raise _option_error(:directory_required, optchar.chr) unless arg
|
146
154
|
(options[optchar] ||= []).concat(arg.split(/,/))
|
147
155
|
else
|
148
156
|
#* key=:option_invalid msg="-%s: invalid option."
|
149
|
-
raise
|
157
|
+
raise _option_error(:option_invalid, optchar.chr)
|
150
158
|
end
|
151
159
|
end # end while
|
152
160
|
end # end if
|
@@ -154,7 +162,7 @@ module Kwatable
|
|
154
162
|
return options, properties
|
155
163
|
end
|
156
164
|
|
157
|
-
def
|
165
|
+
def _find_template(template, path_list)
|
158
166
|
path_list.each do |path|
|
159
167
|
t = "#{path}/#{template}"
|
160
168
|
return t if test(?f, t)
|
@@ -162,19 +170,19 @@ module Kwatable
|
|
162
170
|
return nil
|
163
171
|
end
|
164
172
|
|
165
|
-
def
|
173
|
+
def _apply_template(filename, context)
|
166
174
|
str = File.open(filename) { |f| f.read() }
|
167
175
|
trim_mode = '>' # or '%'
|
168
176
|
erb = ERB.new(str, $SAFE, trim_mode)
|
169
|
-
result =
|
177
|
+
result = _eval_erb(erb, context)
|
170
178
|
return result
|
171
179
|
end
|
172
180
|
|
173
|
-
def
|
181
|
+
def _eval_erb(__erb, context)
|
174
182
|
return __erb.result(binding())
|
175
183
|
end
|
176
184
|
|
177
|
-
def
|
185
|
+
def _usage()
|
178
186
|
command = File::basename($0)
|
179
187
|
s = ""
|
180
188
|
s << "Usage: #{command} [-hvm] [-I path] [-d dir] -f template datafile [datafile2 ...]\n"
|
@@ -188,8 +196,8 @@ module Kwatable
|
|
188
196
|
return s
|
189
197
|
end
|
190
198
|
|
191
|
-
def
|
192
|
-
return ("$Release: 0.0
|
199
|
+
def _version()
|
200
|
+
return ("$Release: 0.1.0 $" =~ /[\.\d]+/ && $&)
|
193
201
|
end
|
194
202
|
|
195
203
|
end
|