kwalify 0.4.1 → 0.5.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.
@@ -1,6 +1,6 @@
1
1
  ###
2
- ### $Rev: 31 $
3
- ### $Release: 0.4.1 $
2
+ ### $Rev: 42 $
3
+ ### $Release: 0.5.0 $
4
4
  ### copyright(c) 2005 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -10,9 +10,11 @@ unless defined?(TESTDIR)
10
10
  $LOAD_PATH << libdir << TESTDIR
11
11
  end
12
12
 
13
+ require 'test-yamlparser.rb'
14
+ require 'test-rule.rb'
13
15
  require 'test-validator.rb'
14
16
  require 'test-metavalidator.rb'
15
- require 'test-parser.rb'
17
+ require 'test-main.rb'
16
18
 
17
19
  #suite = Test::Unit::TestSuite.new()
18
20
  #suite << ValidatorTest.suite()
data/todo.txt CHANGED
@@ -31,3 +31,4 @@
31
31
  .- [_] test for kwalify command
32
32
  .- [_] error message customizatin
33
33
  .- [_] data binding
34
+ .- [_] symbol support
metadata CHANGED
@@ -1,10 +1,10 @@
1
- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: kwalify
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.4.1
7
- date: 2005-10-26 00:00:00 +09:00
6
+ version: 0.5.0
7
+ date: 2005-12-18
8
8
  summary: a tiny schema validator for YAML document.
9
9
  require_paths:
10
10
  - lib
@@ -23,22 +23,20 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
23
23
  version: 0.0.0
24
24
  version:
25
25
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
26
  authors:
29
27
  - kwatch
30
28
  files:
31
- - lib/kwalify
32
29
  - lib/kwalify.rb
30
+ - lib/kwalify
33
31
  - lib/kwalify/errors.rb
34
- - lib/kwalify/main-program.rb
32
+ - lib/kwalify/main.rb
35
33
  - lib/kwalify/messages.rb
36
34
  - lib/kwalify/meta-validator.rb
37
- - lib/kwalify/parser.rb
38
35
  - lib/kwalify/rule.rb
39
36
  - lib/kwalify/types.rb
40
- - lib/kwalify/util
41
37
  - lib/kwalify/validator.rb
38
+ - lib/kwalify/yaml-parser.rb
39
+ - lib/kwalify/util
42
40
  - lib/kwalify/util/assert-diff.rb
43
41
  - lib/kwalify/util/option-parser.rb
44
42
  - lib/kwalify/util/yaml-helper.rb
@@ -56,9 +54,16 @@ files:
56
54
  - examples/tapkit/tapkit.schema.yaml
57
55
  - examples/tapkit/tapkit.yaml
58
56
  - test/test-metavalidator.rb
59
- - test/test-parser.rb
60
57
  - test/test-validator.rb
61
58
  - test/test.rb
59
+ - test/test-main.rb
60
+ - test/test-main.yaml
61
+ - test/test-rule.yaml
62
+ - test/test-validator.yaml
63
+ - test/test-rule.rb
64
+ - test/test-yamlparser.yaml
65
+ - test/test-yamlparser.rb
66
+ - test/test-metavalidator.yaml
62
67
  - doc/users-guide.html
63
68
  - doc/docstyle.css
64
69
  - README.txt
@@ -1,258 +0,0 @@
1
- ###
2
- ### $Rev: 39 $
3
- ### $Release: 0.4.1 $
4
- ### copyright(c) 2005 kuwata-lab all rights reserved.
5
- ###
6
-
7
- require 'yaml'
8
- require 'kwalify'
9
- require 'kwalify/util/yaml-helper'
10
- require 'kwalify/util/option-parser'
11
-
12
-
13
- module Kwalify
14
-
15
- ##
16
- ## ex.
17
- ## command = File.basename($0)
18
- ## begin
19
- ## main = Kwalify::MainProgram.new(ARGV, command)
20
- ## s = main.execute
21
- ## print s if s
22
- ## rescue CommandOptionError => ex
23
- ## $stderr.puts "ERROR: #{ex.message}"
24
- ## exit 1
25
- ## rescue Kwalify::KwalifyError => ex
26
- ## $stderr.puts "ERROR: #{ex.message}"
27
- ## exit 1
28
- ## end
29
- ##
30
- class MainProgram
31
-
32
- def initialize(argv=ARGV, command=nil)
33
- @command = command || File.basename($0)
34
- @options, @proerties = _parse_argv(argv)
35
- @filenames = argv
36
- end
37
-
38
-
39
- def execute(filenames=@filenames)
40
- if @options[:help] || @options[:version]
41
- s = ''
42
- s << _version() if @options[:version]
43
- s << _usage() if @options[:help]
44
- return s
45
- end
46
- if @options[:meta] || @options[:meta2]
47
- s = _meta_validate(filenames)
48
- elsif @options[:schema]
49
- if @options[:debug]
50
- s = _inspect_schema(@options[:schema])
51
- else
52
- s = _validate(filenames)
53
- end
54
- else
55
- #* key=:action_required msg="command-line option '-f' or '-m' required."
56
- raise CommandOptionError.new(nil, nil, Kwalify.msg(:action_required))
57
- end
58
- return s # or return (s == nil || s.empty?) ? nil : s
59
- end
60
-
61
-
62
- private
63
-
64
-
65
- def _load_yaml(str)
66
- str = YamlHelper.untabify(tr) if @options[:untabify]
67
- if @options[:linenum]
68
- @parser = Kwalify::Parser.new(str)
69
- doc = @parser.parse()
70
- else
71
- doc = YAML.load(str)
72
- doc = doc.value if _domain_type?(doc)
73
- end
74
- return doc
75
- end
76
-
77
-
78
- def _meta_validate(filenames)
79
- filenames = [ nil ] if filenames.empty?
80
- meta_validator = @options[:meta2] ? nil : Kwalify.meta_validator()
81
- flag_no_validate = @options[:meta2] == true
82
- s = ''
83
- filenames.each do |filename|
84
- s << __meta_validate(meta_validator, filename)
85
- end
86
- return s
87
- end
88
-
89
-
90
- def __meta_validate(meta_validator, filename=nil)
91
- str = filename ? File.open(filename) { |f| f.read() } : $stdin.read()
92
- schema = _load_yaml(str)
93
- filename ||= "(stdin)"
94
- if !schema || schema.empty?
95
- #* key=:meta_schema_empty msg="%s: empty.\n"
96
- return Kwalify.msg(:meta_schema_emtpy) % filename
97
- end
98
- errors = nil
99
- if meta_validator
100
- errors = meta_validator.validate(schema)
101
- else
102
- begin
103
- validator = Kwalify::Validator.new(schema) # error raised when schema is wrong
104
- rescue Kwalify::SchemaError => ex
105
- errors = [ ex ]
106
- end
107
- end
108
- s = ''
109
- if !errors || errors.empty?
110
- #* key=:meta_validation_valid msg="%s: ok.\n"
111
- s << (Kwalify.msg(:meta_validation_valid) % filename) unless @options[:silent]
112
- else
113
- #* key=:meta_validation_invalid msg="%s: NG!\n"
114
- s << (Kwalify.msg(:meta_validation_invalid) % filename)
115
- s << _errors_to_str(errors)
116
- end
117
- return s
118
- end
119
-
120
-
121
- def _errors_to_str(errors)
122
- s = ''
123
- flag_linenum = @options[:linenum]
124
- if flag_linenum
125
- @parser.set_error_linenums(errors)
126
- errors = errors.sort { |e1, e2| e1.linenum <=> e2.linenum }
127
- end
128
- errors.each do |error|
129
- if flag_linenum
130
- s << " - (line #{error.linenum}) [#{error.path}] #{error.message}\n"
131
- else
132
- s << " - [#{error.path}] #{error.message}\n"
133
- end
134
- end
135
- return s
136
- end
137
-
138
-
139
- def _validate(filenames)
140
- schema_filename = @options[:schema]
141
- str = File.open(schema_filename) { |f| f.read() }
142
- schema = _load_yaml(str)
143
- validator = Kwalify::Validator.new(schema)
144
- #
145
- filenames = [ nil ] if filenames.empty?
146
- s = ''
147
- filenames.each do |filename|
148
- s << __validate(validator, filename)
149
- end
150
- return s
151
- end
152
-
153
-
154
- def __validate(validator, filename=nil)
155
- str = filename ? File.open(filename) { |f| f.read() } : $stdin.read()
156
- filename ||= "(stdin)"
157
- s = ''
158
- i = -1
159
- _each_yaml_documents(str) do |document|
160
- i += 1
161
- if !document || document.empty?
162
- #* key=:schema_empty msg="%s#%d: empty.\n"
163
- s << (Kwalify.msg(:schema_empty) % i)
164
- next
165
- end
166
- errors = validator.validate(document)
167
- if errors.empty?
168
- #* key=:validation_valid msg="%s#%d: valid.\n"
169
- s << (Kwalify.msg(:validation_valid) % [filename, i]) unless @options[:silent]
170
- else
171
- #* key=:validation_invalid msg="%s#%d: INVALID\n"
172
- s << (Kwalify.msg(:validation_invalid) % [filename, i])
173
- s << _errors_to_str(errors)
174
- end
175
- end
176
- return s
177
- end
178
-
179
-
180
- def _each_yaml_documents(str, &block)
181
- str = YamlHelper.untabify(str) if @options[:untabify]
182
- if @options[:linenum]
183
- @parser = Kwalify::Parser.new(str)
184
- doc = @parser.parse()
185
- yield(doc)
186
- else
187
- YAML::load_documents(str) do |doc|
188
- doc = doc.value if _domain_type?(doc)
189
- yield(doc)
190
- end
191
- end
192
- end
193
-
194
-
195
- def _inspect_schema(schema_filename)
196
- filename = schema_filename
197
- str = filename ? File.open(filename) { |f| f.read() } : $stdin.read()
198
- schema = _load_yaml(str)
199
- return nil if !schema || schema.empty?
200
- validator = Kwalify::Validator.new(schema) # error raised when schema is wrong
201
- s = validator._inspect()
202
- s << "\n" unless s[-1] == ?\n
203
- return s
204
- end
205
-
206
-
207
- def _usage()
208
- s = ''
209
- s << "Usage1: #{@command} [-hvstl] -f schema.yaml document.yaml [document2.yaml ...]\n"
210
- s << "Usage2: #{@command} [-hvstl] -m schema.yaml [schema2.yaml ...]\n"
211
- s << " -h, --help : help\n"
212
- s << " -v : version\n"
213
- s << " -s : silent\n"
214
- s << " -f schema.yaml : schema definition file\n"
215
- s << " -m : meta-validation mode\n"
216
- s << " -t : expand tab character automatically\n"
217
- s << " -l : show linenumber when errored (experimental)\n"
218
- return s
219
- end
220
-
221
-
222
- def _version()
223
- return "Kwalify: #{RELEASE}\n"
224
- end
225
-
226
-
227
- def _parse_argv(argv)
228
- opt_parser = CommandOptionParser.new("hvstlmMD", "f")
229
- #opts, props = opt_parser.parse(argv)
230
- #properties = {}
231
- #props.each do |pname, pvalue|
232
- # key = pname.gsub(/-/, '_').intern
233
- # value = value == nil ? true: CommandOptionParser.to_value(pvalue)
234
- # properties[key] = value
235
- #end
236
- auto_convert = true
237
- opts, properties = opt_parser.parse(argv, auto_convert)
238
- options = {}
239
- options[:help] = opts[?h] || properties[:help]
240
- options[:version] = opts[?v] || properties[:version]
241
- options[:silent] = opts[?s]
242
- options[:schema] = opts[?f]
243
- options[:linenum] = opts[?l]
244
- options[:meta] = opts[?m]
245
- options[:meta2] = opts[?M]
246
- options[:untabify] = opts[?t]
247
- options[:debug] = opts[?D]
248
- return options, properties
249
- end
250
-
251
- def _domain_type?(doc)
252
- klass = defined?(YAML::DomainType) ? YAML::DomainType : YAML::Syck::DomainType
253
- return doc.is_a?(klass)
254
- end
255
-
256
- end
257
-
258
- end