dwww Home | Show directory contents | Find package

.=title:          ChangeLog
.?release:        $Release: 0.7.2 $
.?lastupdate:     $Date$
.?version:        $Rev$


.: Release 0.7.2 (2010-07-18)

   .* bugfix:

      .- Fix a bug that kwalify command raised error when YAML document is empty (thanks to Nuttall).

      .- Fix a bug that Kwalify::Util.untabify() removed tailing empty strings.
         

.: Release 0.7.1 (2008-01-28)

   .* bugfix:

      .- 'Duplicated key' error is now not raised if corresponding rule
         has 'default:' constraint.

      .- Path is now copied in Kwalify::ValidationError#initialize()


.: Release 0.7.0 (2008-01-27)

   .* enhancements:

      .- YAML parser is rewrited from scratch.
         The new parser class Kwalify::Yaml::Parser is available.
         The old parser class Kwalify::YamlParser is stil available,
         but it is not recommended to use.

      .- Validator is integrated with yaml parser.
         It is able to parse and validate at once.
           .--------------------
           ## create validator
           require 'kwalify'
           schema = Kwalify::Yaml.load_file('schema.yaml')
           validator = Kwalify::Validator.new(schema)
           ## parse with validation
           parser = Kwalify::Yaml::Parser.new(validator)
           ydoc = parser.parse(File.read('data.yaml'))
           ## show validation errors if exist
           errors = parser.errors()
           if errors && !errors.empty?
             for e in errors
               puts "** %d:%d [%s] %s" % [e.linenum, e.column, e.path, e.message] 
             end
           end
           .--------------------

      .- Data binding is integrated into Kwalify::Yaml::Parser.
         If you set Kwalify::Yaml::Parser#data_binding to true
         and you specified class names in schema file,
         parser creates instance objects instead of Hash objects.
         It means that you don't need to add '!ruby/Classname'
         for each data.
           .? schema file (config.schema.yaml)
           .--------------------
           type:  map
           class: Config
           mapping:
            "host": { type: str, required: true }
            "port": { type: int }
            "user": { type: str, required: true }
            "pass": { type: str, required: true }
           .--------------------
           .? configuration file (config.yaml)
           .--------------------
           host:  localhost
           port:  8080
           user:  user1
           pass:  password1
           .--------------------
           .? ruby program (ex1.rb)
           .--------------------
           ## class definition
           require 'kwalify/util/hashlike'
           class Config
             include Kwalify::Util::HashLike  # defines [], []=, ...
             attr_accessor :host, :posrt, :user, :pass
           end
           ## create validator object
           require 'kwalify'
           schema = Kwalify::Yaml.load_file('config.schema.yaml')
           validator = Kwalify::Validator.new(schema)
           ## parse configuration file with data binding
           parser = Kwalify::Yaml::Parser.new(validator)
           parser.data_binding = true    # enable data binding
           config = parser.parse_file('config.yaml')
           p config  #=> #<Config:0x542590 @user="user1", @port=8080,
                     #        @pass="password1", @host="localhost">
           .--------------------

      .- Preceding alias supported.
         If you set Kwalify::Yaml::Parser#preceding_alias to true,
         parser allows aliases to apprear before corresponding anchor
         appears.
         This is very useful when node graph is complex.
           .--------------------
           - name: Foo
             parent: *bar          # preceding alias
           - &bar
             name: Bar
             parent: *baz          # preceding alias
           - &baz
             name: Baz
           .--------------------

      .- New command-line option '-P' enables preceding alias.

      .- Kwalify::Yaml.load() and Kwalify::Yaml.load_file() are added.
         They are similar to YAML.load() and YAML.load_file() but they
         use Kwalify::Yaml::Parser object.

      .- New utilify method Kwalify::Util.traverse_schema() provided.
           .--------------------
           require 'kwalify'
           require 'kwalify/util'
           schema = Kwalify::Yaml.load('schema.yaml')
           Kwalify::Util.traverse_schema(schema) do |rulehash|
             if classname = rulehash['class']
               ## add namespace to class name
               rulehash['class'] = "Foo::Bar::#{classname}"
             end
           end
           .--------------------

      .- Add 'kwalify/util/hashlike.rb' which contains definition of
         Kwalify::Util::HashLike module.
         This module defines [], []=, keys(), key?(), and each() methods,
         and these are required for data-binding.

      .- Action 'genclass-ruby' supports '--hashlike' property.

      .- Action 'genclass-ruby' supports '--initialize=false' property.

      .- Add action 'geclass-php'

      .- '\xXX' and '\uXXXX' are supported in Kwalify::Yaml::Parser.

      .- New constrant 'default:' is added to kwalify.schema.yaml.
         This constrant have no effect to validation and parsing,
         and it is used only in 'genclass-xxx' action.


   .* changes:

      .- Action 'genclass-ruby' and 'genclass-java' are changed to
         generate boolean accessors.
         For example, attribute 'active' is specified as 'type: bool'
         in schema file, action 'genclass-ruby' generates
           "def active? ; @active; end"
         and action 'genclass-java' generates
           "public boolean isActive() { return _active; }".

      .- Command-line option '-s' (silent) is obsolete and replaced with
         '-q' (quiet). Option '-s' is still available but it is recommended
         to use '-q'.

      .- License is changed from LGPL to MIT-LICENSE.


.: Release 0.6.0 (2006-05-30)

   .* enhancements:

      .- Class definition generation support.
         New command-line option '-a genclass-ruby' or '-a genclass-java' generates
         class definitions in Ruby or Java from schema file.


.: Release 0.5.1 (2005-12-20)

   .* enhances:

      .- add new command-line option '-E' which show errors in emacs-compatible style.


.: Release 0.5.0 (2005-12-17)

   .* enhancements:

      .- Meta-validation check for 'max < min', 'max-ex <= min-ex', and so on.
      .- Many test-cases are added

   .* changes:

      .- 'Parser' class is renamed to 'YamlParser'
      .- 'PlainParser' class is renamed to 'PlainYamlParser'
      .- YamlParser#set_error_linenums() is renamed to set_errors_linenum()
      .- ValidatorError#<=> added
      .- ParseError class is renamed to YamlSyntaxError


.: Release 0.4.1 (2005-10-26)

   .* bugfix:

      .- Support Ruby 1.8.3 (around YAML::Syck::DomainType)
      .- Show correct error line number when key is undefined or unknown.


.: Release 0.4.0 (2005-10-25)

   .* enhancements:

      .- New command-line option '-l' prints error line numbers.
      .- Supports default rule of mapping.


.: Release 0.3.0 (2005-09-30)

   .* enhancements:

      .- Support 'max-ex' and 'min-ex' (max/min exclusive) support with 'range:'
      .- Support 'max-ex' and 'min-ex' (max/min exclusive) support with 'length:'
      .- Support 'unique' constraint


.: Release 0.2.0 (2005-09-25)

   .* enhancements:

      .- New type 'scalar' and 'timestamp' added
      .- Add new rule 'range:' which validates value range.
         See users' guide for details.
      .- Add new rule 'length:' which validate length of string value.
         See users' guide for details.
      .- Add experimental rule 'assert:' which validates value with an
         expression. See users' guide for details.
      .- New method 'Kwalify::Validator#validate_hook()' is added.
         This method is called by Kwalify::Validator#validate().
         See users' guide for details.
      .- New class 'MetaValidator' added.
      .- New test script 'test/test-metavalidator.rb' added.

   .* changes:

      .- Type name changed to suite YAML data type:
         .= string -> str
         .= integer -> int
         .= boolean -> bool
      .- Error index starts with 0 (before starts with 1).
      .- Class 'Schema' is renamed to 'Rule'.


.: Release 0.1.0 (2005-08-01)

    .- beta release

Generated by dwww version 1.15 on Fri Aug 29 20:04:56 CEST 2025.