kwalify 0.5.1 → 0.6.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 +24 -19
- data/README.txt +51 -51
- data/bin/kwalify +2 -2
- data/contrib/inline-require +151 -0
- data/contrib/kwalify +2850 -0
- data/doc-api/classes/CommandOptionError.html +184 -0
- data/doc-api/classes/CommandOptionParser.html +325 -0
- data/doc-api/classes/Kwalify.html +270 -0
- data/doc-api/classes/Kwalify/AssertionError.html +148 -0
- data/doc-api/classes/Kwalify/BaseError.html +296 -0
- data/doc-api/classes/Kwalify/CommandOptionError.html +168 -0
- data/doc-api/classes/Kwalify/ErrorHelper.html +218 -0
- data/doc-api/classes/Kwalify/HashInterface.html +240 -0
- data/doc-api/classes/Kwalify/KwalifyError.html +111 -0
- data/doc-api/classes/Kwalify/Main.html +336 -0
- data/doc-api/classes/Kwalify/MetaValidator.html +432 -0
- data/doc-api/classes/Kwalify/Parser.html +155 -0
- data/doc-api/classes/Kwalify/PlainYamlParser.html +520 -0
- data/doc-api/classes/Kwalify/PlainYamlParser/Alias.html +165 -0
- data/doc-api/classes/Kwalify/Rule.html +411 -0
- data/doc-api/classes/Kwalify/SchemaError.html +148 -0
- data/doc-api/classes/Kwalify/Types.html +301 -0
- data/doc-api/classes/Kwalify/ValidationError.html +148 -0
- data/doc-api/classes/Kwalify/Validator.html +311 -0
- data/doc-api/classes/Kwalify/YamlParser.html +535 -0
- data/doc-api/classes/Kwalify/YamlSyntaxError.html +168 -0
- data/doc-api/classes/Test.html +107 -0
- data/doc-api/classes/Test/Unit.html +101 -0
- data/doc-api/classes/YamlHelper.html +259 -0
- data/doc-api/created.rid +1 -0
- data/doc-api/files/__/README_txt.html +179 -0
- data/doc-api/files/kwalify/errors_rb.html +114 -0
- data/doc-api/files/kwalify/main_rb.html +117 -0
- data/doc-api/files/kwalify/messages_rb.html +107 -0
- data/doc-api/files/kwalify/meta-validator_rb.html +117 -0
- data/doc-api/files/kwalify/rule_rb.html +116 -0
- data/doc-api/files/kwalify/types_rb.html +114 -0
- data/doc-api/files/kwalify/util/assert-text-equal_rb.html +115 -0
- data/doc-api/files/kwalify/util/hash-interface_rb.html +107 -0
- data/doc-api/files/kwalify/util/option-parser_rb.html +107 -0
- data/doc-api/files/kwalify/util/testcase-helper_rb.html +115 -0
- data/doc-api/files/kwalify/util/yaml-helper_rb.html +114 -0
- data/doc-api/files/kwalify/validator_rb.html +117 -0
- data/doc-api/files/kwalify/yaml-parser_rb.html +117 -0
- data/doc-api/files/kwalify_rb.html +120 -0
- data/doc-api/fr_class_index.html +50 -0
- data/doc-api/fr_file_index.html +41 -0
- data/doc-api/fr_method_index.html +109 -0
- data/doc-api/index.html +24 -0
- data/doc-api/rdoc-style.css +208 -0
- data/doc/users-guide.html +693 -193
- data/examples/address-book/Makefile +5 -0
- data/examples/address-book/address-book.schema.yaml +2 -1
- data/examples/invoice/Makefile +5 -0
- data/examples/invoice/invoice.schema.yaml +3 -2
- data/examples/tapkit/Makefile +5 -0
- data/examples/tapkit/main.rb +7 -0
- data/examples/tapkit/tapkit.schema.yaml +6 -1
- data/lib/kwalify.rb +3 -3
- data/lib/kwalify/errors.rb +2 -2
- data/lib/kwalify/main.rb +161 -84
- data/lib/kwalify/messages.rb +17 -11
- data/lib/kwalify/meta-validator.rb +11 -2
- data/lib/kwalify/rule.rb +13 -3
- data/lib/kwalify/templates/genclass-java.eruby +195 -0
- data/lib/kwalify/templates/genclass-ruby.eruby +84 -0
- data/lib/kwalify/types.rb +18 -18
- data/lib/kwalify/util/assert-text-equal.rb +44 -0
- data/lib/kwalify/util/hash-interface.rb +37 -0
- data/lib/kwalify/util/option-parser.rb +2 -2
- data/lib/kwalify/util/testcase-helper.rb +112 -0
- data/lib/kwalify/util/yaml-helper.rb +2 -2
- data/lib/kwalify/validator.rb +2 -2
- data/lib/kwalify/yaml-parser.rb +12 -9
- data/test/test-main.rb +77 -78
- data/test/test-main.yaml +543 -769
- data/test/test-metavalidator.rb +27 -47
- data/test/test-metavalidator.yaml +21 -2
- data/test/test-rule.rb +6 -39
- data/test/test-rule.yaml +2 -2
- data/test/test-validator.rb +36 -869
- data/test/test-validator.yaml +28 -20
- data/test/test-yamlparser.rb +30 -1248
- data/test/test-yamlparser.yaml +138 -110
- data/test/test.rb +33 -13
- data/test/tmp.dir/Context.java +40 -0
- data/test/tmp.dir/Group.java +33 -0
- data/test/tmp.dir/User.java +43 -0
- data/test/tmp.dir/action1.document +18 -0
- data/test/tmp.dir/action1.schema +32 -0
- data/test/tmp.dir/action2.document +18 -0
- data/test/tmp.dir/action2.schema +32 -0
- data/test/tmp.dir/emacs.document +6 -0
- data/test/tmp.dir/emacs.schema +6 -0
- data/test/tmp.dir/meta1.document +0 -0
- data/test/tmp.dir/meta1.schema +3 -0
- data/test/tmp.dir/meta2.document +0 -0
- data/test/tmp.dir/meta2.schema +3 -0
- data/test/tmp.dir/silent1.document +3 -0
- data/test/tmp.dir/silent1.schema +3 -0
- data/test/tmp.dir/silent2.document +7 -0
- data/test/tmp.dir/silent2.schema +3 -0
- data/test/tmp.dir/stream.invalid +8 -0
- data/test/tmp.dir/stream.schema +3 -0
- data/test/tmp.dir/stream.valid +8 -0
- data/test/tmp.dir/untabify.document +5 -0
- data/test/tmp.dir/untabify.schema +10 -0
- metadata +98 -12
- data/lib/kwalify/util/assert-diff.rb +0 -44
|
@@ -2,4 +2,9 @@
|
|
|
2
2
|
all:
|
|
3
3
|
kwalify -lm address-book.schema.yaml
|
|
4
4
|
kwalify -lf address-book.schema.yaml address-book.yaml
|
|
5
|
+
kwalify -a genclass-ruby -lf address-book.schema.yaml > address-book.rb
|
|
6
|
+
# kwalify -a genclass-java -lf address-book.schema.yaml
|
|
5
7
|
|
|
8
|
+
|
|
9
|
+
clean:
|
|
10
|
+
rm -f address-book.rb
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
##
|
|
2
2
|
## Kwalify schema example for address book
|
|
3
3
|
##
|
|
4
|
-
## $Release: 0.
|
|
4
|
+
## $Release: 0.6.0 $
|
|
5
5
|
## copyright(c) 2005 kuwata-lab all rights reserved.
|
|
6
6
|
##
|
|
7
7
|
##
|
|
@@ -12,6 +12,7 @@ type: seq
|
|
|
12
12
|
required: yes
|
|
13
13
|
sequence:
|
|
14
14
|
- type: map
|
|
15
|
+
classname: Person
|
|
15
16
|
required: yes
|
|
16
17
|
mapping:
|
|
17
18
|
"name":
|
data/examples/invoice/Makefile
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
###
|
|
2
2
|
### Kwalify schema example for invoice
|
|
3
3
|
###
|
|
4
|
-
### $Rev:
|
|
5
|
-
### $Release: 0.
|
|
4
|
+
### $Rev: 51 $
|
|
5
|
+
### $Release: 0.6.0 $
|
|
6
6
|
### copyright(c) 2005 kuwata-lab all rights reserved.
|
|
7
7
|
###
|
|
8
8
|
|
|
9
9
|
type: map
|
|
10
|
+
classname: Invoice
|
|
10
11
|
required: yes
|
|
11
12
|
mapping:
|
|
12
13
|
"invoice": { type: int, required: yes, unique: yes }
|
data/examples/tapkit/Makefile
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
##
|
|
2
2
|
## Kwalify schema example for TapKit
|
|
3
3
|
##
|
|
4
|
-
## $Release: 0.
|
|
4
|
+
## $Release: 0.6.0 $
|
|
5
5
|
## copyright(c) 2005 kuwata-lab all rights reserved.
|
|
6
6
|
##
|
|
7
7
|
|
|
8
8
|
type: map
|
|
9
|
+
classname: Schema
|
|
9
10
|
mapping:
|
|
10
11
|
"adapter_name":
|
|
11
12
|
type: str
|
|
@@ -17,6 +18,7 @@ mapping:
|
|
|
17
18
|
#- OpenBase
|
|
18
19
|
"connection":
|
|
19
20
|
type: map
|
|
21
|
+
classname: Connection
|
|
20
22
|
mapping:
|
|
21
23
|
"url":
|
|
22
24
|
type: str
|
|
@@ -37,6 +39,7 @@ mapping:
|
|
|
37
39
|
type: seq
|
|
38
40
|
sequence:
|
|
39
41
|
- type: map
|
|
42
|
+
classname: Entity
|
|
40
43
|
mapping:
|
|
41
44
|
"name":
|
|
42
45
|
type: str
|
|
@@ -61,6 +64,7 @@ mapping:
|
|
|
61
64
|
required: yes
|
|
62
65
|
sequence:
|
|
63
66
|
- type: map
|
|
67
|
+
classname: Attribute
|
|
64
68
|
mapping:
|
|
65
69
|
"name":
|
|
66
70
|
type: str
|
|
@@ -104,6 +108,7 @@ mapping:
|
|
|
104
108
|
type: seq
|
|
105
109
|
sequence:
|
|
106
110
|
- type: map
|
|
111
|
+
classname: Relationship
|
|
107
112
|
mapping:
|
|
108
113
|
"name":
|
|
109
114
|
type: str
|
data/lib/kwalify.rb
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
###
|
|
2
|
-
### $Rev:
|
|
3
|
-
### $Release: 0.
|
|
2
|
+
### $Rev: 48 $
|
|
3
|
+
### $Release: 0.6.0 $
|
|
4
4
|
### copyright(c) 2005 kuwata-lab all rights reserved.
|
|
5
5
|
###
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
module Kwalify
|
|
9
9
|
|
|
10
|
-
RELEASE = ("$Release: 0.
|
|
10
|
+
RELEASE = ("$Release: 0.6.0 $" =~ /[.\d]+/) && $&
|
|
11
11
|
|
|
12
12
|
end
|
|
13
13
|
|
data/lib/kwalify/errors.rb
CHANGED
data/lib/kwalify/main.rb
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
###
|
|
2
|
-
### $Rev:
|
|
3
|
-
### $Release: 0.
|
|
2
|
+
### $Rev: 51 $
|
|
3
|
+
### $Release: 0.6.0 $
|
|
4
4
|
### copyright(c) 2005 kuwata-lab all rights reserved.
|
|
5
5
|
###
|
|
6
6
|
|
|
7
7
|
require 'yaml'
|
|
8
|
+
require 'erb'
|
|
8
9
|
require 'kwalify'
|
|
9
10
|
require 'kwalify/util/yaml-helper'
|
|
10
11
|
#require 'kwalify/util/option-parser'
|
|
@@ -12,6 +13,7 @@ require 'kwalify/util/yaml-helper'
|
|
|
12
13
|
|
|
13
14
|
module Kwalify
|
|
14
15
|
|
|
16
|
+
|
|
15
17
|
class CommandOptionError < KwalifyError
|
|
16
18
|
def initialize(message, option, error_symbol)
|
|
17
19
|
super(message)
|
|
@@ -39,43 +41,40 @@ module Kwalify
|
|
|
39
41
|
##
|
|
40
42
|
class Main
|
|
41
43
|
|
|
44
|
+
|
|
42
45
|
def initialize(command=nil)
|
|
43
46
|
@command = command || File.basename($0)
|
|
44
|
-
@
|
|
45
|
-
@flag_version = false
|
|
46
|
-
@flag_silent = false
|
|
47
|
-
@flag_meta = false
|
|
48
|
-
@flag_untabify = false
|
|
49
|
-
@flag_emacs = false
|
|
50
|
-
@flag_linenum = false
|
|
51
|
-
@flag_debug = false
|
|
52
|
-
@schema_filename = nil
|
|
47
|
+
@options = {}
|
|
53
48
|
@properties = {}
|
|
49
|
+
@template_path = []
|
|
50
|
+
$:.each do |path|
|
|
51
|
+
tpath = "#{path}/kwalify/templates"
|
|
52
|
+
@template_path << tpath if test(?d, tpath)
|
|
53
|
+
end
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
|
|
57
57
|
def debug?
|
|
58
|
-
@
|
|
58
|
+
@options[:debug]
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
def _inspect()
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
s << "flag_meta : #{@flag_meta}\n"
|
|
69
|
-
s << "flag_untabify : #{@flag_untabify}\n"
|
|
70
|
-
s << "flag_emacs : #{@flag_emacs}\n"
|
|
71
|
-
s << "flag_linenum : #{@flag_linenum}\n"
|
|
72
|
-
s << "flag_debug : #{@flag_debug}\n"
|
|
73
|
-
s << "schema_filename : #{@schema_filename != nil ? @schema_filename : 'null'}\n"
|
|
74
|
-
s << "properties:\n"
|
|
75
|
-
@properties.each do |key, val|
|
|
76
|
-
s << " #{key}: #{val}\n"
|
|
63
|
+
sb = []
|
|
64
|
+
sb << "command: #{@command}\n"
|
|
65
|
+
sb << "options:\n"
|
|
66
|
+
@options.keys.sort {|k1,k2| k1.to_s<=>k2.to_s }.each do |key|
|
|
67
|
+
sb << " - #{key}: #{@options[key]}\n"
|
|
77
68
|
end
|
|
78
|
-
|
|
69
|
+
sb << "properties:\n"
|
|
70
|
+
@properties.keys.sort_by {|k| k.to_s}.each do |key|
|
|
71
|
+
sb << " - #{key}: #{@properties[key]}\n"
|
|
72
|
+
end
|
|
73
|
+
#sb << "template_path:\n"
|
|
74
|
+
#@template_path.each do |path|
|
|
75
|
+
# sb << " - #{path}\n"
|
|
76
|
+
#end
|
|
77
|
+
return sb.join
|
|
79
78
|
end
|
|
80
79
|
|
|
81
80
|
|
|
@@ -84,21 +83,31 @@ module Kwalify
|
|
|
84
83
|
filenames = _parse_argv(argv)
|
|
85
84
|
|
|
86
85
|
# help or version
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
if @options[:help] || @options[:version]
|
|
87
|
+
action = @options[:action]
|
|
88
|
+
s = ''
|
|
89
|
+
s << _version() << "\n" if @options[:version]
|
|
90
|
+
s << _usage() if @options[:help] && !action
|
|
91
|
+
s << _describe_properties(action) if @options[:help] && action
|
|
92
|
+
return s
|
|
93
|
+
end
|
|
91
94
|
|
|
92
95
|
# validation
|
|
93
|
-
if @
|
|
96
|
+
if @options[:meta2]
|
|
94
97
|
s = _quick_meta_validate(filenames)
|
|
95
|
-
elsif @
|
|
98
|
+
elsif @options[:meta]
|
|
96
99
|
s = _meta_validate(filenames)
|
|
97
|
-
elsif @
|
|
98
|
-
if
|
|
99
|
-
|
|
100
|
+
elsif @options[:action]
|
|
101
|
+
if !@options[:schema]
|
|
102
|
+
#* key=:command_option_actionnoschema msg="schema filename is not specified."
|
|
103
|
+
raise option_error(:command_option_actionnoschema, @options[:action])
|
|
104
|
+
end
|
|
105
|
+
s = _perform_action(@options[:action], @options[:schema])
|
|
106
|
+
elsif @options[:schema]
|
|
107
|
+
if @options[:debug]
|
|
108
|
+
s = _inspect_schema(@options[:schema])
|
|
100
109
|
else
|
|
101
|
-
s = _validate(filenames, @
|
|
110
|
+
s = _validate(filenames, @options[:schema])
|
|
102
111
|
end
|
|
103
112
|
else
|
|
104
113
|
#* key=:command_option_noaction msg="command-line option '-f' or '-m' required."
|
|
@@ -111,21 +120,21 @@ module Kwalify
|
|
|
111
120
|
def self.main(command, argv=ARGV)
|
|
112
121
|
begin
|
|
113
122
|
main = Kwalify::Main.new(command)
|
|
114
|
-
s = main.execute(
|
|
123
|
+
s = main.execute(argv)
|
|
115
124
|
print s if s
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
rescue => ex
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
rescue Kwalify::CommandOptionError => ex
|
|
126
|
+
$stderr.puts ex.message
|
|
127
|
+
exit 1
|
|
128
|
+
rescue Kwalify::KwalifyError => ex
|
|
129
|
+
$stderr.puts "ERROR: #{ex.message}"
|
|
130
|
+
exit 1
|
|
131
|
+
#rescue => ex
|
|
132
|
+
# if main.debug?
|
|
133
|
+
# raise ex
|
|
134
|
+
# else
|
|
135
|
+
# $stderr.puts ex.message
|
|
136
|
+
# exit 1
|
|
137
|
+
# end
|
|
129
138
|
end
|
|
130
139
|
end
|
|
131
140
|
|
|
@@ -139,10 +148,51 @@ module Kwalify
|
|
|
139
148
|
end
|
|
140
149
|
|
|
141
150
|
|
|
151
|
+
def _find_template(action)
|
|
152
|
+
template_filename = action + '.eruby'
|
|
153
|
+
unless test(?f, template_filename)
|
|
154
|
+
tpath = @template_path.find { |path| test(?f, "#{path}/#{template_filename}") }
|
|
155
|
+
#* key=:command_option_notemplate msg="%s: invalid action (template not found).\n"
|
|
156
|
+
raise option_error(:command_option_notemplate, action) unless tpath
|
|
157
|
+
template_filename = "#{tpath}/#{action}.eruby"
|
|
158
|
+
end
|
|
159
|
+
return template_filename
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def _apply_template(template_filename, hash)
|
|
164
|
+
template = File.read(template_filename)
|
|
165
|
+
trim_mode = 1
|
|
166
|
+
erb = ERB.new(template, $SAFE, trim_mode)
|
|
167
|
+
context = Object.new
|
|
168
|
+
hash.each do |key, val|
|
|
169
|
+
context.instance_variable_set("@#{key}", val)
|
|
170
|
+
end
|
|
171
|
+
return context.instance_eval(erb.src, template_filename)
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def _describe_properties(action)
|
|
176
|
+
template_filename = _find_template(action)
|
|
177
|
+
s = _apply_template(template_filename, :describe=>true)
|
|
178
|
+
return s
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
def _perform_action(action, schema_filename, describe=false)
|
|
183
|
+
template_filename = _find_template(action)
|
|
184
|
+
schema = _load_schema_file(schema_filename)
|
|
185
|
+
rule = Rule.new(schema)
|
|
186
|
+
@properties[:schema_filename] = schema_filename
|
|
187
|
+
s = _apply_template(template_filename, :rule=>rule, :properties=>@properties)
|
|
188
|
+
return s
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
|
|
142
192
|
def _inspect_schema(schema_filename)
|
|
143
193
|
filename = schema_filename
|
|
144
194
|
str = File.open(schema_filename) { |f| f.read() }
|
|
145
|
-
str = YamlUtil.untabify(str) if @
|
|
195
|
+
str = YamlUtil.untabify(str) if @options[:untabify]
|
|
146
196
|
schema = YAML.load(str)
|
|
147
197
|
return nil if schema == nil
|
|
148
198
|
validator = Kwalify::Validator.new(schema) # error raised when schema is wrong
|
|
@@ -152,6 +202,7 @@ module Kwalify
|
|
|
152
202
|
end
|
|
153
203
|
|
|
154
204
|
|
|
205
|
+
#--
|
|
155
206
|
#class QuickMetaValidator
|
|
156
207
|
# def validate(schema)
|
|
157
208
|
# errors = []
|
|
@@ -163,6 +214,7 @@ module Kwalify
|
|
|
163
214
|
# return errors
|
|
164
215
|
# end
|
|
165
216
|
#end
|
|
217
|
+
#++
|
|
166
218
|
|
|
167
219
|
|
|
168
220
|
def _quick_meta_validate(filenames)
|
|
@@ -181,6 +233,15 @@ module Kwalify
|
|
|
181
233
|
end
|
|
182
234
|
|
|
183
235
|
|
|
236
|
+
def _load_schema_file(schema_filename)
|
|
237
|
+
filename = schema_filename
|
|
238
|
+
str = File.read(filename)
|
|
239
|
+
str = YamlHelper.untabify(str) if @options[:untabify]
|
|
240
|
+
schema = YAML.load(str)
|
|
241
|
+
return schema
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
|
|
184
245
|
def _meta_validate(filenames)
|
|
185
246
|
meta_validator = Kwalify::MetaValidator.instance()
|
|
186
247
|
s = _validate_files(meta_validator, filenames)
|
|
@@ -189,10 +250,7 @@ module Kwalify
|
|
|
189
250
|
|
|
190
251
|
|
|
191
252
|
def _validate(filenames, schema_filename)
|
|
192
|
-
|
|
193
|
-
str = File.open(filename) { |f| f.read() } # or File.read(filename) in ruby1.8
|
|
194
|
-
str = YamlHelper.untabify(str) if @flag_untabify
|
|
195
|
-
schema = YAML.load(str)
|
|
253
|
+
schema = _load_schema_file(schema_filename)
|
|
196
254
|
if schema
|
|
197
255
|
validator = Kwalify::Validator.new(schema)
|
|
198
256
|
s = _validate_files(validator, filenames)
|
|
@@ -214,8 +272,8 @@ module Kwalify
|
|
|
214
272
|
str = $stdin.read()
|
|
215
273
|
filename = '(stdin)'
|
|
216
274
|
end
|
|
217
|
-
str = YamlHelper.untabify(str) if @
|
|
218
|
-
if @
|
|
275
|
+
str = YamlHelper.untabify(str) if @options[:untabify]
|
|
276
|
+
if @options[:linenum]
|
|
219
277
|
parser = Kwalify::YamlParser.new(str)
|
|
220
278
|
i = 0
|
|
221
279
|
while parser.has_next?
|
|
@@ -246,22 +304,22 @@ module Kwalify
|
|
|
246
304
|
errors = validator.validate(doc)
|
|
247
305
|
if errors == nil || errors.empty?
|
|
248
306
|
#* key=:validation_valid msg="%s#%d: valid.\n"
|
|
249
|
-
s << Kwalify.msg(:validation_valid) % [filename, i] unless @
|
|
307
|
+
s << Kwalify.msg(:validation_valid) % [filename, i] unless @options[:silent]
|
|
250
308
|
else
|
|
251
309
|
#* key=:validation_invalid msg="%s#%d: INVALID\n"
|
|
252
310
|
s << Kwalify.msg(:validation_invalid) % [filename, i]
|
|
253
|
-
if @
|
|
311
|
+
if @options[:linenum]
|
|
254
312
|
#assert parser != nil
|
|
255
313
|
raise unless parser != nil
|
|
256
314
|
parser.set_errors_linenum(errors)
|
|
257
315
|
errors.sort!
|
|
258
316
|
end
|
|
259
317
|
errors.each do |error|
|
|
260
|
-
if @
|
|
261
|
-
#assert @
|
|
262
|
-
raise unless @
|
|
318
|
+
if @options[:emacs]
|
|
319
|
+
#assert @options[:linenum]
|
|
320
|
+
raise unless @options[:linenum]
|
|
263
321
|
s << "#{filename}:#{error.linenum}: [#{error.path}] #{error.message}\n"
|
|
264
|
-
elsif @
|
|
322
|
+
elsif @options[:linenum]
|
|
265
323
|
s << " - (line #{error.linenum}) [#{error.path}] #{error.message}\n"
|
|
266
324
|
else
|
|
267
325
|
s << " - [#{error.path}] #{error.message}\n"
|
|
@@ -273,7 +331,8 @@ module Kwalify
|
|
|
273
331
|
|
|
274
332
|
|
|
275
333
|
def _usage()
|
|
276
|
-
msg = Kwalify.msg(:command_help) % [@command, @command]
|
|
334
|
+
#msg = Kwalify.msg(:command_help) % [@command, @command, @command]
|
|
335
|
+
msg = Kwalify.msg(:command_help)
|
|
277
336
|
return msg
|
|
278
337
|
end
|
|
279
338
|
|
|
@@ -298,6 +357,30 @@ module Kwalify
|
|
|
298
357
|
|
|
299
358
|
|
|
300
359
|
def _parse_argv(argv)
|
|
360
|
+
option_table = {
|
|
361
|
+
?h => :help,
|
|
362
|
+
?v => :version,
|
|
363
|
+
?s => :silent,
|
|
364
|
+
?t => :untabify,
|
|
365
|
+
?m => :meta,
|
|
366
|
+
?M => :meta2,
|
|
367
|
+
?E => :emacs,
|
|
368
|
+
?l => :linenum,
|
|
369
|
+
?f => :schema,
|
|
370
|
+
?D => :debug,
|
|
371
|
+
?a => :action,
|
|
372
|
+
?I => :tpath,
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
errcode_table = {
|
|
376
|
+
#* key=:command_option_noschema msg="-%s: schema filename required."
|
|
377
|
+
?f => :command_option_noschema,
|
|
378
|
+
#* key=:command_option_noaction msg="-%s: action required."
|
|
379
|
+
?a => :command_option_noaction,
|
|
380
|
+
#* key=:command_option_notpath msg="-%s: template path required."
|
|
381
|
+
?I => :command_option_notpath,
|
|
382
|
+
}
|
|
383
|
+
|
|
301
384
|
while argv[0] && argv[0][0] == ?-
|
|
302
385
|
optstr = argv.shift
|
|
303
386
|
optstr = optstr[1, optstr.length-1]
|
|
@@ -316,33 +399,27 @@ module Kwalify
|
|
|
316
399
|
while optstr && !optstr.empty?
|
|
317
400
|
optchar = optstr[0]
|
|
318
401
|
optstr[0,1] = ""
|
|
402
|
+
unless option_table.key?(optchar)
|
|
403
|
+
#* key=:command_option_invalid msg="-%s: invalid command option."
|
|
404
|
+
raise option_error(:command_option_invalid, optchar.chr)
|
|
405
|
+
end
|
|
406
|
+
optkey = option_table[optchar]
|
|
319
407
|
case optchar
|
|
320
|
-
when ?
|
|
321
|
-
when ?v ; @flag_version = true
|
|
322
|
-
when ?s ; @flag_silent = true
|
|
323
|
-
when ?t ; @flag_untabify = true
|
|
324
|
-
when ?m ; @flag_meta = true
|
|
325
|
-
when ?M ; @flag_meta2 = true
|
|
326
|
-
when ?E ; @flag_emacs = true ; @flag_linenum = true
|
|
327
|
-
when ?l ; @flag_linenum = true
|
|
328
|
-
when ?D ; @flag_debug = true
|
|
329
|
-
when ?f ;
|
|
408
|
+
when ?f, ?a, ?I
|
|
330
409
|
arg = optstr.empty? ? argv.shift : optstr
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
@schema_filename = arg
|
|
335
|
-
optstr = nil
|
|
410
|
+
raise option_error(errcode_table[optchar], optchar.chr) unless arg
|
|
411
|
+
@options[optkey] = arg
|
|
412
|
+
optstr = ''
|
|
336
413
|
else
|
|
337
|
-
|
|
338
|
-
raise option_error(:command_option_invalid, optchar.chr)
|
|
414
|
+
@options[optkey] = true
|
|
339
415
|
end
|
|
340
416
|
end
|
|
341
417
|
end
|
|
342
418
|
end # end of while
|
|
343
419
|
#
|
|
344
|
-
@
|
|
345
|
-
@
|
|
420
|
+
@options[:linenum] = true if @options[:emacs]
|
|
421
|
+
@options[:help] = true if @properties[:help]
|
|
422
|
+
@options[:version] = true if @properties[:version]
|
|
346
423
|
filenames = argv
|
|
347
424
|
return filenames
|
|
348
425
|
end
|