rkwalify 1.4.0.pre.beta → 1.4.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.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
  3. data/.github/workflows/ruby.yml +2 -2
  4. data/.rubocop.yml +24 -2
  5. data/.ruby-version +1 -1
  6. data/Attic/spec/rspec-ex_spec.rb +1 -1
  7. data/CHANGELOG.md +60 -22
  8. data/CODE_OF_CONDUCT.md +147 -0
  9. data/Gemfile.lock +5 -4
  10. data/README.md +9 -12
  11. data/ROLL-OUT-STRATEGY.md +5 -4
  12. data/SECURITY.md +19 -0
  13. data/bin/kwalify +26 -31
  14. data/bin/kwalify.rb +26 -31
  15. data/devbin/README.md +6 -2
  16. data/{contrib → devbin}/inline-require +1 -1
  17. data/devbin/mkbig-rkwalify.sh +1 -3
  18. data/devbin/mktag +2 -2
  19. data/devbin/rubycheck.sh +39 -0
  20. data/devbin/run-smoketest.sh +17 -0
  21. data/devbin/smoke-tests.golden +67 -73
  22. data/devbin/smoke-tests.sh +23 -20
  23. data/devbin/update-rel-numbers.sh +3 -3
  24. data/doc-api/classes/CommandOptionError.html +1 -1
  25. data/doc-api/classes/Kwalify/Util.html +2 -2
  26. data/doc-api/classes/Kwalify.html +1 -1
  27. data/doc-api/files/__/README_txt.html +1 -1
  28. data/doc-api/files/kwalify/errors_rb.html +1 -1
  29. data/doc-api/files/kwalify/main_rb.html +1 -1
  30. data/doc-api/files/kwalify/messages_rb.html +1 -1
  31. data/doc-api/files/kwalify/meta-validator_rb.html +1 -1
  32. data/doc-api/files/kwalify/parser/base_rb.html +1 -1
  33. data/doc-api/files/kwalify/parser/yaml_rb.html +1 -1
  34. data/doc-api/files/kwalify/rule_rb.html +1 -1
  35. data/doc-api/files/kwalify/types_rb.html +1 -1
  36. data/doc-api/files/kwalify/util/assert-text-equal_rb.html +1 -1
  37. data/doc-api/files/kwalify/util/hash-interface_rb.html +1 -1
  38. data/doc-api/files/kwalify/util/hashlike_rb.html +1 -1
  39. data/doc-api/files/kwalify/util/option-parser_rb.html +1 -1
  40. data/doc-api/files/kwalify/util/ordered-hash_rb.html +1 -1
  41. data/doc-api/files/kwalify/util/testcase-helper_rb.html +1 -1
  42. data/doc-api/files/kwalify/util_rb.html +1 -1
  43. data/doc-api/files/kwalify/validator_rb.html +1 -1
  44. data/doc-api/files/kwalify/yaml-parser_rb.html +1 -1
  45. data/doc-api/files/kwalify_rb.html +1 -1
  46. data/examples/address-book/address-book.schema.yaml +1 -1
  47. data/examples/invoice/invoice.schema.yaml +1 -1
  48. data/examples/tapkit/tapkit.schema.yaml +1 -1
  49. data/lib/kwalify/errors.rb +2 -2
  50. data/lib/kwalify/main.rb +3 -5
  51. data/lib/kwalify/messages.rb +1 -1
  52. data/lib/kwalify/meta-validator.rb +4 -5
  53. data/lib/kwalify/parser/base.rb +2 -3
  54. data/lib/kwalify/parser/yaml.rb +5 -5
  55. data/lib/kwalify/rule.rb +13 -14
  56. data/lib/kwalify/templates/genclass-java.eruby +1 -1
  57. data/lib/kwalify/templates/genclass-php.eruby +1 -1
  58. data/lib/kwalify/templates/genclass-ruby.eruby +1 -1
  59. data/lib/kwalify/types.rb +1 -1
  60. data/lib/kwalify/util/assert-text-equal.rb +2 -2
  61. data/lib/kwalify/util/hash-interface.rb +1 -1
  62. data/lib/kwalify/util/hashlike.rb +5 -4
  63. data/lib/kwalify/util/option-parser.rb +1 -1
  64. data/lib/kwalify/util/ordered-hash.rb +1 -1
  65. data/lib/kwalify/util/testcase-helper.rb +1 -1
  66. data/lib/kwalify/util.rb +8 -7
  67. data/lib/kwalify/validator.rb +38 -13
  68. data/lib/kwalify/version.rb +1 -1
  69. data/lib/kwalify/yaml-parser.rb +17 -14
  70. data/lib/kwalify.rb +26 -1
  71. data/test/Rookbook.yaml +1 -1
  72. data/test/data/users-guide/answers-validator.rb +0 -0
  73. data/test/data/users-guide/validate08.rb +0 -0
  74. data/test/test-action.rb +1 -1
  75. data/test/test-action.yaml +1 -1
  76. data/test/test-databinding.rb +3 -5
  77. data/test/test-databinding.yaml +1 -1
  78. data/test/test-hashlike.rb +29 -0
  79. data/test/test-main.rb +1 -1
  80. data/test/test-main.yaml +1 -1
  81. data/test/test-metavalidator.rb +5 -5
  82. data/test/test-metavalidator.yaml +1 -1
  83. data/test/test-parser-yaml.rb +5 -5
  84. data/test/test-parser-yaml.yaml +1 -2
  85. data/test/test-rule.rb +1 -1
  86. data/test/test-rule.yaml +1 -2
  87. data/test/test-users-guide.rb +1 -1
  88. data/test/test-util.rb +1 -1
  89. data/test/test-validator.rb +4 -4
  90. data/test/test-validator.yaml +1 -1
  91. data/test/test-yaml-parser.rb +3 -3
  92. data/test/test-yaml-parser.yaml +47 -48
  93. data/test/test.rb +40 -25
  94. data/test/test_logger.rb +37 -0
  95. metadata +11 -6
  96. data/.rubocop_todo.yml +0 -1369
  97. data/contrib/kwalify +0 -4167
  98. /data/{contrib → Attic}/kwalify-0.7.2 +0 -0
  99. /data/{MIT-LICENSE → MIT-LICENSE.txt} +0 -0
data/lib/kwalify/main.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
- # frozen_string_literal: false
7
6
 
8
7
  require 'yaml'
9
8
  require 'erb'
@@ -81,11 +80,10 @@ module Kwalify
81
80
  def execute(argv=ARGV)
82
81
  ## parse command-line options
83
82
  filenames = _parse_argv(argv)
84
-
85
83
  ## help or version
86
84
  if @options[:help] || @options[:version]
87
85
  action = @options[:action]
88
- s = ''
86
+ s = String.new
89
87
  s << _version() << "\n" if @options[:version]
90
88
  s << _usage() if @options[:help] && !action
91
89
  s << _describe_properties(action) if @options[:help] && action
@@ -129,7 +127,7 @@ module Kwalify
129
127
  exit 1
130
128
  rescue Kwalify::KwalifyError => ex
131
129
  raise ex if main.debug?
132
- $stderr.puts "ERROR: #{ex.to_s}"
130
+ $stderr.puts "ERROR: #{ex}"
133
131
  exit 1
134
132
  #rescue => ex
135
133
  # if main.debug?
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -65,7 +65,7 @@ module Kwalify
65
65
  pat = (val =~ /\A\/(.*)\/([mi]?[mi]?)\z/ ? $1 : val)
66
66
  begin
67
67
  Regexp.compile(pat)
68
- rescue RegexpError => ex
68
+ rescue RegexpError => _ex
69
69
  errors << validate_error(:pattern_syntaxerr, rule, "#{path}/pattern", val)
70
70
  end
71
71
  end
@@ -91,9 +91,8 @@ module Kwalify
91
91
  val = hash['assert']
92
92
  #val =~ /\bval\b/ or errors << validate_error(:assert_noval, rule, "#{path}/assert", val)
93
93
  begin
94
- # WAS: eval "proc { |val| #{val} }"
95
- eval "proc { |val| #{val} }" # proc { |val| val > 10 }
96
- rescue ::SyntaxError => ex
94
+ RubyVM::InstructionSequence.compile("proc { |val| #{val} }")
95
+ rescue SyntaxError
97
96
  errors << validate_error(:assert_syntaxerr, rule, "#{path}/assert", val)
98
97
  end
99
98
  end
@@ -1,9 +1,8 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
- # frozen_string_literal: false
7
6
 
8
7
  require 'strscan'
9
8
  require 'kwalify/errors'
@@ -83,7 +82,7 @@ class Kwalify::BaseParser
83
82
  ch = _getch()
84
83
  ch == '"' || ch == "'" or raise "assertion error"
85
84
  endch = ch
86
- s = ''
85
+ s = String.new
87
86
  while !(ch = _getch()).nil? && ch != endch
88
87
  if ch != '\\'
89
88
  s << ch
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -521,7 +521,7 @@ class Kwalify::Yaml::Parser < Kwalify::BaseParser
521
521
  else # indicator == '>'
522
522
  if !text.empty? && spaces.length == indent
523
523
  if s.sub!(/\r?\n((\r?\n)+)\z/, '\1')
524
- nil
524
+ # Ruby will return "nil"
525
525
  elsif is_folded
526
526
  s.sub!(/\r?\n\z/, ' ')
527
527
  end
@@ -536,7 +536,7 @@ class Kwalify::Yaml::Parser < Kwalify::BaseParser
536
536
  end
537
537
  ## chomping
538
538
  if chomping == '+'
539
- nil
539
+ # Ruby will return "nil"
540
540
  elsif chomping == '-'
541
541
  s.sub!(/(\r?\n)+\z/, '')
542
542
  else
@@ -599,7 +599,7 @@ class Kwalify::Yaml::Parser < Kwalify::BaseParser
599
599
  scan('[')
600
600
  skip_spaces_and_comments()
601
601
  if scan(']')
602
- nil
602
+ # Ruby will return "nil"
603
603
  else
604
604
  rule = seq_rule ? seq_rule.sequence[0] : nil #*V
605
605
  uniq_table = rule ? rule._uniqueness_check_table() : nil #*V
@@ -638,7 +638,7 @@ class Kwalify::Yaml::Parser < Kwalify::BaseParser
638
638
  scan('{')
639
639
  skip_spaces_and_comments()
640
640
  if scan('}')
641
- nil
641
+ # Ruby will return "nil"
642
642
  else
643
643
  path.push(nil)
644
644
  is_merged = false
data/lib/kwalify/rule.rb CHANGED
@@ -1,9 +1,8 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
- # frozen_string_literal: false
7
6
 
8
7
  require 'kwalify/messages'
9
8
  require 'kwalify/errors'
@@ -74,12 +73,13 @@ module Kwalify
74
73
  end
75
74
 
76
75
 
77
- keys = %w[type name desc required pattern enum assert range length
78
- ident unique default sequence mapping class]
79
- #table = keys.inject({}) {|h, k| h[k.intern] = "_init_#{k}_value".intern; h }
80
- table = {}; keys.each {|k| table[k.intern] = :"_init_#{k}_value" }
81
- @@dispatch_table = table
82
-
76
+ # Dispatch table maps schema keys to their initialization methods.
77
+ # This allows dynamic method lookup for _init_<key>_value methods.
78
+ SCHEMA_KEYS = %w[type name desc required pattern enum assert range length
79
+ ident unique default sequence mapping class].freeze
80
+ @@dispatch_table = SCHEMA_KEYS.each_with_object({}) do |key, table|
81
+ table[key.intern] = :"_init_#{key}_value"
82
+ end.freeze
83
83
 
84
84
  protected
85
85
 
@@ -163,7 +163,7 @@ module Kwalify
163
163
  flag += Regexp::MULTILINE if opt.include?("m")
164
164
  begin
165
165
  @regexp = Regexp.compile(pat, flag)
166
- rescue RegexpError => ex
166
+ rescue RegexpError => _ex
167
167
  #* key=:pattern_syntaxerr msg="has regexp error."
168
168
  raise schema_error(:pattern_syntaxerr, rule, path, val)
169
169
  end
@@ -206,10 +206,9 @@ module Kwalify
206
206
  raise schema_error(:assert_noval, rule, path, val)
207
207
  end
208
208
  begin
209
- # WAS: @assert_proc = eval "proc { |val| #{val} }"
210
- @assert_proc = ->(val, expr) { binding.local_variable_set(:val, val); eval(expr) }
211
- # OR: @assert_proc = ->(val, &block) { block.call(val) }
212
- rescue ::SyntaxError => ex
209
+ # Store expression as string, evaluate at validation time
210
+ @assert_expr = val
211
+ rescue ::SyntaxError => _ex
213
212
  #* key=:assert_syntaxerr msg="expression syntax error."
214
213
  raise schema_error(:assert_syntaxerr, rule, path, val)
215
214
  end
@@ -473,7 +472,7 @@ module Kwalify
473
472
  protected
474
473
 
475
474
 
476
- def _inspect(str="", level=0, done={})
475
+ def _inspect(str = String.new, level = 0, done = {})
477
476
  done[self.__id__] = true
478
477
  str << (" " * level) << "name: #{@name}\n" unless @name.nil?
479
478
  str << (" " * level) << "desc: #{@desc}\n" unless @desc.nil?
@@ -2,7 +2,7 @@
2
2
 
3
3
  ###
4
4
  ### $Rev$
5
- ### $Release 1.4.0-beta $
5
+ ### $Release 1.4.0 $
6
6
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
7
7
  ###
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ###
4
4
  ### $Rev$
5
- ### $Release 1.4.0-beta $
5
+ ### $Release 1.4.0 $
6
6
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
7
7
  ###
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ###
4
4
  ### $Rev$
5
- ### $Release 1.4.0-beta $
5
+ ### $Release 1.4.0 $
6
6
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
7
7
  ###
8
8
 
data/lib/kwalify/types.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -29,7 +29,7 @@ class Test::Unit::TestCase # :nodoc:
29
29
  expfile.write(expected); expfile.flush()
30
30
  actfile = Tempfile.new(".actual.")
31
31
  actfile.write(actual); actfile.flush()
32
- diff = `diff #{diffopt} #{expfile.path} #{actfile.path}`
32
+ diff = system("diff", *diffopt, expfile.path, actfile.path)
33
33
  ensure
34
34
  expfile.close(true) if expfile
35
35
  actfile.close(true) if actfile
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -27,13 +27,14 @@ module Kwalify
27
27
  #end
28
28
  #++
29
29
 
30
- def key?(key)
31
- instance_variables().include?("@#{key}")
32
- end
33
30
  if Object.method_defined?('instance_variable_defined?')
34
31
  def key?(key)
35
32
  instance_variable_defined?("@#{key}")
36
33
  end
34
+ else
35
+ def key?(key)
36
+ instance_variables().include?("@#{key}")
37
+ end
37
38
  end
38
39
 
39
40
  def each # not necessary
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### Release 1.4.0-beta
3
+ ### Release 1.4.0
4
4
  ### $COPYRIGHT$
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
data/lib/kwalify/util.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
- # frozen_string_literal: false
6
+ # frozen_string_literal: true
7
7
 
8
8
  module Kwalify
9
9
 
@@ -17,18 +17,19 @@ module Kwalify
17
17
  ## ex.
18
18
  ## untabified_str = YamlHelper.untabify(tabbed_str)
19
19
  ##
20
- def untabify(str, width=8)
20
+
21
+ def untabify(str, width = 8)
21
22
  return str if str.nil?
22
- list = str.split("\t", -1) # if 2nd arg is negative then split() doesn't remove tailing empty strings
23
+ list = str.split("\t", -1)
23
24
  last = list.pop
24
- sb = ''
25
+ sb = String.new
25
26
  list.each do |s|
26
27
  column = (n = s.rindex(?\n)) ? s.length - n - 1 : s.length
27
28
  n = width - (column % width)
28
29
  sb << s << (' ' * n)
29
30
  end
30
31
  sb << last if last
31
- return sb
32
+ sb
32
33
  end
33
34
 
34
35
 
@@ -121,7 +122,7 @@ module Kwalify
121
122
  hashlist.each do |hash|
122
123
  key = hash[primarykey]
123
124
  unless key
124
- riase "primary key '#{key}' not found."
125
+ raise "primary key '#{key}' not found."
125
126
  end
126
127
  if flag_duplicate_check && hashtable.key?(key)
127
128
  raise "primary key '#{key}' duplicated (value '#{hashtable[key]}')"
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -37,16 +37,23 @@ module Kwalify
37
37
  ## end
38
38
  ## end
39
39
  ##
40
+
41
+ def self.logger
42
+ @logger ||= Object.new.tap do |obj|
43
+ def obj.method_missing(*); end
44
+ end
45
+ end
46
+
40
47
  class Validator
41
48
  include Kwalify::ErrorHelper
42
49
 
43
-
44
- def initialize(hash_or_rule, &block)
50
+ def initialize(hash_or_rule, logger: nil, &block)
45
51
  obj = hash_or_rule
46
52
  @rule = (obj.nil? || obj.is_a?(Rule)) ? obj : Rule.new(obj)
53
+ @logger = logger || Kwalify.logger
47
54
  @block = block
48
55
  end
49
- attr_reader :rule
56
+ attr_reader :rule, :logger
50
57
 
51
58
 
52
59
  def _inspect
@@ -55,8 +62,10 @@ module Kwalify
55
62
 
56
63
 
57
64
  def validate(value)
65
+ @logger.debug("Starting validation") if @logger
58
66
  path = ''; errors = []; done = {}; uniq_table = nil
59
67
  _validate(value, @rule, path, errors, done, uniq_table)
68
+ @logger.debug("Validation complete: #{errors.length} errors") if @logger
60
69
  return errors
61
70
  end
62
71
 
@@ -199,15 +208,6 @@ module Kwalify
199
208
  public :_validate_unique
200
209
 
201
210
 
202
- def _validate_assert(value, rule, path, errors)
203
- assert_error("rule=#{rule._inspect}") unless rule.assert_proc
204
- unless rule.assert_proc.call(value)
205
- #* key=:assert_failed msg="assertion expression failed (%s)."
206
- errors << validate_error(:assert_failed, rule, path, value, [rule.assert])
207
- end
208
- end
209
-
210
-
211
211
  def _validate_enum(value, rule, path, errors)
212
212
  assert_error("rule=#{rule._inspect}") unless rule.enum
213
213
  unless rule.enum.include?(value)
@@ -277,6 +277,31 @@ module Kwalify
277
277
  end
278
278
 
279
279
 
280
+ # DUP def
281
+ # def _validate_assert(value, rule, path, errors)
282
+ # assert_error("rule=#{rule._inspect}") unless rule.assert_proc
283
+ # unless rule.assert_proc.call(value)
284
+ # #* key=:assert_failed msg="assertion expression failed (%s)."
285
+ # errors << validate_error(:assert_failed, rule, path, value, [rule.assert])
286
+ # end
287
+ # end
288
+
289
+
290
+ def _validate_assert(value, rule, path, errors)
291
+ assert_error("rule=#{rule._inspect}") unless rule.assert
292
+ local_val = value
293
+ begin
294
+ result = eval(rule.assert, binding)
295
+ unless result
296
+ #* key=:assert_failed msg="assertion expression failed (%s)."
297
+ errors << validate_error(:assert_failed, rule, path,
298
+ value, [rule.assert])
299
+ end
300
+ rescue StandardError => ex
301
+ errors << validate_error(:assert_failed, rule, path, value, [rule.assert])
302
+ end
303
+ end
304
+
280
305
  end
281
306
 
282
307
  end
@@ -1,5 +1,5 @@
1
1
  ### copyright(c) 2006 kuwata-lab.com all rights reserved.
2
2
 
3
3
  module Kwalify
4
- RELEASE = '1.4.0-beta' # Same as in the gemspec file.
4
+ RELEASE = '1.4.0' # Same as in the gemspec file.
5
5
  end
@@ -1,9 +1,8 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
- # frozen_string_literal: false
7
6
 
8
7
  require 'kwalify/messages'
9
8
  require 'kwalify/errors'
@@ -391,7 +390,7 @@ module Kwalify
391
390
  case ch = current_char()
392
391
  when ?", ?' #"
393
392
  endch = ch
394
- s = ''
393
+ s = String.new
395
394
  while (ch = _getchar()) != nil && ch != endch
396
395
  if ch == ?\\
397
396
  ch = _getchar()
@@ -479,7 +478,7 @@ module Kwalify
479
478
  def parse_alias(column, value)
480
479
  assert value =~ /^\*([-\w]+)(( *)(.*))?$/
481
480
  label = $1
482
- space = $3
481
+ _space = $3
483
482
  value2 = $4
484
483
  if value2 && !value2.empty? && value2[0] != ?\#
485
484
  #* key=:alias_extradata msg="alias cannot take any data."
@@ -545,20 +544,22 @@ module Kwalify
545
544
 
546
545
 
547
546
  def parse_block_text(column, value)
548
- assert value =~ /^[>|\|]/
549
- value =~ /^([>|\|])([-+]?)(\d+)?\s*(.*)$/
547
+ assert value =~ /^[>|]/
548
+ value =~ /^([>|])([-+]?)(\d+)?\s*(.*)$/
550
549
  char = $1
551
550
  indicator = $2
552
- sep = char == "|" ? "\n" : " "
551
+ _sep = char == "|" ? "\n" : " "
553
552
  margin = $3 && !$3.empty? ? $3.to_i : nil
554
553
  #text = $4.empty? ? '' : $4 + sep
555
554
  text = $4
556
- s = ''
557
- empty = ''
555
+ s = String.new
556
+ empty = String.new
558
557
  min_indent = -1
559
- while line = _getline()
558
+
559
+ while (line = _getline())
560
560
  line =~ /^( *)(.*)/
561
561
  indent = $1.length
562
+
562
563
  if $2.empty?
563
564
  empty << "\n"
564
565
  elsif indent < column
@@ -566,7 +567,7 @@ module Kwalify
566
567
  else
567
568
  min_indent = indent if min_indent < 0 || min_indent > indent
568
569
  s << empty << line
569
- empty = ''
570
+ empty = String.new
570
571
  end
571
572
  end
572
573
  s << empty if indicator == '+' && char != '>'
@@ -697,7 +698,7 @@ module Kwalify
697
698
  year, month, day = $1.to_i, $2.to_i, $3.to_i
698
699
  return Date.new(year, month, day)
699
700
  when /^(\d\d\d\d)-(\d\d)-(\d\d)(?:[Tt]|[ \t]+)(\d\d?):(\d\d):(\d\d)(\.\d*)?(?:Z|[ \t]*([-+]\d\d?)(?::(\d\d))?)?$/
700
- year, mon, mday, hour, min, sec, usec, tzone_h, tzone_m = $1, $2, $3, $4, $5, $6, $7, $8, $9
701
+ year, mon, _mday, hour, min, sec, usec, tzone_h, tzone_m = $1, $2, $3, $4, $5, $6, $7, $8, $9
701
702
  #Time.utc(sec, min, hour, mday, mon, year, wday, yday, isdst, zone)
702
703
  #t = Time.utc(sec, min, hour, mday, mon, year, nil, nil, nil, nil)
703
704
  #Time.utc(year[, mon[, day[, hour[, min[, sec[, usec]]]]]])
@@ -705,8 +706,10 @@ module Kwalify
705
706
  if tzone_h
706
707
  diff_sec = tzone_h.to_i * 60 * 60
707
708
  if tzone_m
708
- if diff_sec > 0 ; diff_sec += tzone_m.to_i * 60
709
- else ; diff_sec -= tzone_m.to_i * 60
709
+ if diff_sec > 0
710
+ diff_sec += tzone_m.to_i * 60
711
+ else
712
+ diff_sec -= tzone_m.to_i * 60
710
713
  end
711
714
  end
712
715
  p diff_sec
data/lib/kwalify.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2006 kuwata-lab.com all rights reserved.
5
5
  ###
6
6
 
@@ -15,9 +15,34 @@ require 'kwalify/yaml-parser'
15
15
  #require 'kwalify/parser/base'
16
16
  #require 'kwalify/parser/yaml'
17
17
 
18
+ # Ruby 4.0 Compatibility Patch: StringScanner#peep was renamed to #peek in Ruby 4.0.
19
+ require 'strscan'
20
+ class StringScanner
21
+ alias_method :peep, :peek unless method_defined?(:peep)
22
+ end
18
23
 
19
24
  module Kwalify
20
25
 
26
+ require 'logger'
27
+
28
+ # Logger singleton - can be configured per application
29
+ @@logger = Logger.new($stderr, level: Logger::WARN)
30
+ @@logger.formatter = proc do |severity, datetime, progname, msg|
31
+ "#{severity}: #{msg}\n"
32
+ end
33
+
34
+ def self.logger
35
+ @@logger
36
+ end
37
+
38
+ def self.logger=(logger)
39
+ @@logger = logger
40
+ end
41
+
42
+ def self.log(level, message)
43
+ @@logger.send(level, message)
44
+ end
45
+
21
46
  module Util
22
47
 
23
48
  autoload :HashLike, 'kwalify/util/hashlike'
data/test/Rookbook.yaml CHANGED
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
File without changes
File without changes
data/test/test-action.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
6
 
@@ -1,6 +1,6 @@
1
1
  ##
2
2
  ## $Rev$
3
- ## $Release 1.4.0-beta $
3
+ ## $Release 1.4.0 $
4
4
  ## copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ##
6
6
  ---
@@ -1,9 +1,8 @@
1
1
  ###
2
2
  ### $Rev$
3
- ### $Release 1.4.0-beta $
3
+ ### $Release 1.4.0 $
4
4
  ### copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ###
6
- # frozen_string_literal: false
7
6
 
8
7
  require File.dirname(__FILE__) + '/test.rb'
9
8
 
@@ -25,7 +24,7 @@ class DataBindingTest < Test::Unit::TestCase
25
24
  TESTDATA1.key?(name) and raise "name '#{name}' is dupilcated."
26
25
  TESTDATA1[name] = hash
27
26
  #
28
- s = ''
27
+ s = String.new
29
28
  s << "def test_#{name}\n"
30
29
  s << " @name = '#{name}'\n"
31
30
  for key, val in hash
@@ -36,7 +35,6 @@ class DataBindingTest < Test::Unit::TestCase
36
35
  eval s
37
36
  end
38
37
  end
39
- load_yaml_testdata(filename, :lang=>'ruby')
40
38
 
41
39
 
42
40
  def _test
@@ -57,7 +55,7 @@ class DataBindingTest < Test::Unit::TestCase
57
55
  ydoc = parser.parse(@data)
58
56
  assert_equal(parser.errors, [])
59
57
  ## pp
60
- result = ''
58
+ result = String.new
61
59
  def result.write(arg); self << arg.to_s; end
62
60
  PP.pp(ydoc, result)
63
61
  ## convert object-id to portable number
@@ -1,6 +1,6 @@
1
1
  ##
2
2
  ## $Rev: 63 $
3
- ## $Release 1.4.0-beta $
3
+ ## $Release 1.4.0 $
4
4
  ## copyright(c) 2005-2010 kuwata-lab all rights reserved.
5
5
  ##
6
6
  ---