Revision history for Sah
0.9.18 2012-11-20 (SHARYANTO)
No spec changes. Fix some typos in POD and spectest.
0.9.17 2012-11-13 (SHARYANTO)
- Add hash's keys.create_default attribute.
- Add array's elems.create_default attribute.
- Add more spectests.
0.9.16 2012-10-26 (SHARYANTO)
- normalize_schema(): Extras are now always normalized to {} so before
"int" => ["int", {}] and now => ["int", {}, {}]. (I think it's more
proper, normalized form doesn't change when extras {} exist, and more
clearly make the normalized form stand out visually).
- bool: Add clause 'is_true' (I think it'll be more portable than using
'is').
- array and hash no longer assume the Sortable role (actually it was a
typo, it never was).
- spectest: Add more tests (str, hash, bool, any, all).
0.9.15 2012-10-25 (SHARYANTO)
No spec changes.
- spectest: Add tests for type 'array' (incomplete).
0.9.14 2012-10-25 (SHARYANTO)
No spec changes.
- spectest: Add tests for type 'float'.
- build: Move spectest to share/ so it gets installed.
0.9.13 2012-10-25 (SHARYANTO)
No spec changes.
- spectest: reenable "clause|" tests, add {min,max}_{ok,nok}
and .err_level=warn tests.
0.9.12 2012-10-18 (SHARYANTO)
[ENHANCEMENTS]
- Add 'c.COMPILER' attribute namespace to store compiler-specific
options.
- float: Add clauses 'is_pos_inf' and 'is_neg_inf'.
- Add type spectest. Preliminary version, now only available for 'int'.
0.9.11 2012-10-16 (SHARYANTO)
[ENHANCEMENTS]
- Add .ok_err_msg to set error message when clause succeeds (existing
.err_msg is for when clause fails). Succeeding clause is regarded as
a validation failure under the presence of .max_ok or .min_ok
attributes.
- Introduce another error level (.err_level => 'fatal').
0.9.10 2012-10-16 (SHARYANTO)
[INCOMPATIBLE CHANGES]
- Simplify syntax for 'if' clause. Argument back to 3-element array
[COND, THEN, ELSE]. Whether COND/THEN/ELSE is an expression, schema,
clause set, or simple true/false is determined by its type (str,
array, str, hash, bool). This improves readability.
- Replace '.input' attribute with 'prop' and 'check_prop' clauses (and
possibly others in the future). '.input' does not provide a clean
switch between types (e.g. to express string which has an even
length, we used ["str", "div_by.input", ["prop", "len"], "div_by",
2], but 'div_by' is not a clause for str. Now we simply use: ["str",
"prop", ["len", ["int", "div_by": 2]]] or ["str", "check_prop", "$_ %
2 == 0"].
0.9.9 2012-10-05 (SHARYANTO)
[INCOMPATIBLE CHANGES]
- Change attribute for 'prefilters' clause, from 'perm' to 'temp' (to
make it consistent with the new default.temp).
[NEW FEATURES]
- Add attribute for 'default' clause: 'temp'.
0.9.8 2012-10-03 (SHARYANTO)
No functional changes. Fix examples and misplaced clauses.
0.9.7 2012-10-03 (SHARYANTO)
[INCOMPATIBLE CHANGES]
- Rename HasElems' clause: 'each' to 'each_elem' to avoid ambiguity
with 'each_index'. Also rename 'check_each' to 'check_each_elem'.
[NEW FEATURES]
- Add hash clauses: 'check_each_key', 'check_each_value'.
0.9.6 2012-10-03 (SHARYANTO)
[INCOMPATIBLE CHANGES]
- Remove hash clause 'allow_extra_keys' and replace it with '.restrict'
attribute for 'keys' clause.
[NEW FEATURES]
- Add property: 'prio'.
- Add HasElems properties: 'elems', 'indices'.
- Add hash properties: 'keys', 'values'.
- Add hash clauses: 're_keys', 'allowed_keys', 'allowed_keys_re'.
[ENHANCEMENTS]
- Specification for 'req_keys' (previously forgotten to be written).
- Reorganize FAQ and add some items.
0.9.5 2012-09-26 (SHARYANTO)
[INCOMPATIBLE CHANGES]
- Change merge prefix from "[merge]", "[merge+]", etc to
"merge.normal.", "merge.add.", etc (to be compliant with DefHash)
0.9.4 2012-09-21 (SHARYANTO)
- Rewrite some parts.
- Specify types 'all', 'any', 'obj', 'date' (moved from Data::Sah).
Type 'date' still doesn't have clauses specified yet.
- Specify clauses for 'hash' and 'array' (moved from Data::Sah)
- Change examples to use JSON instead of Perl notation.
- Add FAQ item: comparison to JSON schema.
- Add FAQ item: advice on writing schemas (preliminary).
[NEW]
- Add type: 'undef'.
- Add attribute: 'input'.
- Add clauses: 'check_each', 'exists', 'check_exists', 'each_index',
'check_each_index'.
[INCOMPATIBLE CHANGES]
- Rename 'vals' attribute to 'is_multi' (a bool) and store the multiple
values in the clause value itself. This is to avoid having both
'CLAUSE' and 'CLAUSE.vals'.
- Rename 'expr' clause attribute to 'is_expr' (a bool). The expression
is now contained in the original clause value/attribute. This is to
be consistent with 'is_multi'.
- Tweak the 'if' clause (change 'then_ok' or 'else_nok' to 'then' and
'else').
- Rename clause 'noop' to 'ok' (consistency with min_ok/max_nok/etc).
Remove clause 'fail' (can be replaced with '!ok').
- Rename clause 'check' to 'expr' (consistency with 'prop' as well as
the 'prop' and 'expr' keys in the 'if' clause).
[REMOVED]
- HasElems: remove 'num_of' clause (not generic enough, might be split
to a custom clause distribution later).
0.9.3 2012-09-20 (SHARYANTO)
[INCOMPATIBLE CHANGES]
- BaseType: Rename old 'if' clause to 'if_clause' (the new 'if' clause
is now a generic condition clause which accepts a hash).
- HasElems: Rename clause 'all_elems' to 'each_elem'.
[NEW]
- Introduce 'result_var' attribute.
- Introduce 'type property'.
- BaseType: add clauses 'schema_v' & 'base_v'. Also mention 'defhash_v'
(from DefHash specification).
- BaseType: add generic condition clause 'if' (this is different from
the old 'if', which has been renamed to 'if_clause').
- BaseType: add generic looping clauses 'each' and 'exists'.
[FIXED]
- Move 'elems' clause to array (POD mistake).
[OTHER]
- Specify behavior when CLAUSE value and CLAUSE.vals both exist.
0.9.2 2012-09-19 (SHARYANTO)
- Clause set now uses DefHash.
- '=' is now a shortcut for '.expr' attribute.
- Add FAQ and overview (moved from Data::Sah's POD).
[REMOVED]
- '.val' removed, now use clause value (DefHash).
[FIXES]
- Update some examples.
0.9.1 2012-09-13 (SHARYANTO)
- Move type documentation from Data::Sah.
- BaseType: remove clauses 'comment' and add clauses 'v' (DefHash);
remove implementation clauses (SANITY, PREPROCESS, POSTPROCESS).
- HasElems: rename clause 'elem_deps' to 'if_elems_re', add clause
'if_elems'.
- str: rename clause 'is_regex' to 'is_re'.
0.9.0 2012-07-21 (SHARYANTO)
First release, split specification from Data-Sah.