CHANGELOG

CHANGELOG
Last Update: Fri Jan 15 12:25:42 +0100 2010

0.1

Bernhard Stoeckner (15):

Add proper struct support, fix some values
Suspected to be fully-working Gff::Reader
Add working rudimentary Gff::Writer
Add substruct support
Add untested support for complex datatypes
add gff_to_yaml.rb
Add COPYING, LICENCE, README, Rakefile, spec/
Update README
add nwn-gff-print.rb binary, update gff lib
rename nwn-gff-print.rb to nwn-gff-print
nwn-gff-print: allow proper printing of sub-structs/lists
Add proper get/set support for Gff, add Element validations
Rakefile/gem: add nwn-gff-print to binary list
Rename project to nwn-lib
Fix Writer method scope

0.2

Bernhard Stoeckner (6):

Fix stupid typo in Rakefile
Add a basic 2da parser
twoda: Read windows-linebreaks as well.
Twoda: add .to_2da
nwn-gff-print/Gff: kivinen_format is now a member of the Gff module and supports printing types
0.2-rel, add CHANGELOG

0.2.1

Bernhard Stoeckner (6):

TwoDA: Update API for new schema
Gff: minor documentation update
Gff/kivinen_print: be more compatible
Gff/kivinen_format: add filetype-override for custom headers, add documentation
Add cheatsheet
Version 0.2.1-rel

0.3.0

Bernhard Stoeckner (16):

Gff::Reader: Fix reading structs with no subvalues
Gff::Reader: void datatype support
add nwn-gff-irb
Gff: raise RuntimeError instead of generic Exceptions
Update CHEATSHEET for gff-irb
0.2.2-rel
TwoDA: Do not parse empty lines
Add global, optional, 2da cache, add NWN::Gff.item_property helper
item_property: resolve unique partial matches
CExoLocString: more comfortable class to manage (API change)
compatibility fixes: allow non-empty-line-2das, be slightly more verbose
Gff::Struct is a delegator to Hash to allow seamless YAML marshalling
nwn-gff-print: -m: add support for native ruby marshalling
Binary: add nwn-gff-import
TwoDA: compatibility fixes (just warn on double ID assignments)
0.3.0-rel

0.3.1

Bernhard Stoeckner (2):

Gff: fix struct delegator bug not passing on blocks (yuk!)
0.3.1-rel

0.3.2

Bernhard Stoeckner (3):

Add NWN::Gff::Struct#set for easy label setting
Gff: fix reading some type fields raising an exception in rare conditions
0.3.2-rel

0.3.3

Bernhard Stoeckner (8):

Gff#get_or_set: fix addressing exolocstr languages (/Description/0)
Helpers.item_property: ? expands the full list
fix private method `select' called while accessing ExoLocStr/Language
add support for sorted and cleaned-up yaml output
writer: void written properly
nwn-gff-print: add support for multiple files
nwn-gff-import: add support for multiple files
0.3.3-rel

0.3.4

Bernhard Stoeckner (7):

nwn-gff-print: -y outputs sorted hash maps
nwn-gff-print: fix --verbose switch
type :cexolocstr: do not lose empty lang ids
README: add encoding warning
struct to yaml: inline small structs
CHEATSHEET: add some hints for nwn-gff-import
0.3.4-rel

0.3.5

Bernhard Stoeckner (6):

NWN::Gff::Gff.get_or_set: remove stray debug puts
add option for fp precision to Gff::Reader, add cli opt to nwn-gff-print
nwn-gff-print: minor speedup when dumping to yaml without prefixes
doc: update BINARIES, CHEATSHEET
nwn-gff-import: fix reading stdin as -
0.3.5-rel

0.3.6

Bernhard Stoeckner (5):

NWN::Gff::Struct: do not sort yaml_properties
kivinen_format: print out structs in sorted order
nwn-gff-irb: support for reading/writing .yml files
NWN::Gff::Gff: do not sort yaml_properties
Rakefile: use gem1.8 instead of gem
0.3.6-rel

Stuart Coyle (1):

TwoDA: use four spaces for field separation instead of tabs, indent columns

0.4.0

Bernhard Stoeckner :

too many to sanely list, see README for migration information

0.4.1

Bernhard Stoeckner (3):

Field#field_value=: unbreak setting a new value
Scripting: add rudimentary ask method
scripts/clean_locstrs.rb: optimise a bit
0.4.1-rel

0.4.2

Bernhard Stoeckner (10):

scripts/fix_facings.rb: removed, results in corruption
bin/nwn-dsl: cleanup exception handling
TwoDA::Table: add support for non-windows newlines
TwoDA::Table: quote cells with whitespaces
TwoDA::Table: a more robust parser handling slightly malformed 2da files
scripts: add reformat_2da for validating and prettyprinting 2da files
Tlk: basic talktable reading
scripts: add a debug script
add *.itp to GuessFormats
Tlk: basic talktable editing and writing
0.4.2-rel

0.4.3

Bernhard Stoeckner (2):

NWN::Erf: basic reading/writing library + tar-like binary
add tlk.rb to nwn/all.rb
0.4.3-rel

0.4.4

Bernhard Stoeckner (7):

bin/nwn-gff: guess outfile format based on extension
erf: do not fail on misaligned strings, print warning instead
bin/nwn-erf: compat mode with tar, options can be without dashes
API: Add some helpers for creating Gff elements
scripting: satisfy: return object as-is when no conditions are given
bin/nwn-erf: -vt: move column type before filename
erf: fix loctable reading breaking on more than one locstr
0.4.4-rel

0.4.5

Bernhard Stoeckner (14):

bin/nwn-irb: fix help scriptname
nwn-dsl: $SCRIPT is the currently-running script
TwoDA: add .get alias
Scripting/log: provide #progress to indicate progress within scripts
guess_file_name: consider non-lowercase extensions
nwn-gff: $SCRIPT fix
nwn-irb: include NWN namespace
Namespace clobbering: Integer provides xp_to_level, level_to_xp
Gff::Struct: add #to_s
scripting: satisfy: return object as-is when no conditions are given (fix)
Scripting: add support to .#save files that were loaded with satisfy/need/want
Scripting: ask: fix return value of hash and arrays
TwoDA: add disclaimer for Cache references
TwoDA: add Table#[], Table#[]=
0.4.5-rel

0.4.6

Bernhard Stoeckner (26):

bin/nwn-dsl: always print backtraces
tests: add rspec stub for later test introduction
Field: complete valid_for?, add checks in readers, add rspec
Field: #path prints proper list indices
ResourceManager: generic implementation as per bioware docs
TwoDA: read 2da header with arbitary spaces between magic and version
TwoDA: make id mismatch parsing more robust
TwoDA: nwn does not fill in missing row IDs
TwoDA: fix typo preventing #to_2da with NWN_LIB_2DA_NEWLINE absent
TwoDA: only print to $stderr when -d/$DEBUG is set
TwoDA: do not raise error on misshaped ID column, add documentation
TwoDA: do not compact multiple nonquoted cells in last column
TwoDA: add specs
Erf: skip over lid and strz to read locstrs correctly
Erf: seek to offsets instead of depending on constants, handle IOErrors
Erf: add specs
Tlk: fix reading last strref in a tlk
Tlk: add specs
Cexolocstr: add specs
Struct: .new accepts a block
Struct: add specs
Gff: add specs
feature kill: remove type/value inferring, NWN_LIB_INFER_*
Revert "add env setting NWN_LIB_FILTER_EMPTY_EXOLOCSTR"
Rakefile/rdoc: use mislav-hanna if available
update all documentation to reflect current situation
0.4.6-rel

This release changes a few features; most prominent of all is the
infer mechanism - it is removed completely for sanity reasons.

Also, quite a few bugfixes found their way into this release, thanks
to the newly-added specs.

Please browse the commit log for a full list of changes.

0.4.7

Bernhard Stoeckner (25):

bin/*: do not require rubygems explicitly
remove obsolete Gff::Helpers module
Erf: add support for ERF V1.1
env var NWN_LIB_DEBUG sends debug messages to stderr when set
add support for Microsoft Windows
R::ContentObject: do not fail on missing io, seek properly
R::ContentObject#filename: "unknown-N" instead of nil for unknown res_types
R::ContentObject: properly raise ENOENT on invalid io and file
G::Reader, Writer: work on io objects instead of strings
G::Writer: fix struct verify exception on reading substructs
specs: move all test stubs into _helper
Erf: improve broken locstr header handling
Erf: raise errors for invalid filenames on add, add_file
Erf: fix misaligned offsets in reslist
nwn-erf: fix parsing erf files where day_of_year = 0
nwn-erf: output non-errors to stdout instead of stderr
nwn-erf: fix packing up files
nwn-erf: add specs
Erf: reproduction spec checks for binary equality with sample
Gff: add specs for each_by_flat_path, to_gff
nwn-gff: fix backup strategy handler missing FileUtils
nwn-gff: add specs
rename spec/wellformed_gff.binary to .bic
nwn-dsl: add specs
0.4.7-rel

A real bugfix-release, this takes care of a whole swad of fixes
in erf and gff handling, and also improves Windows compatibility.

Particularily, erf writing was kind of broken in the previous release,
putting wrong offsets for files created with nwn-erf.

Please browse the commit log for a full list of changes.

0.4.8

Bernhard Stoeckner (6):

IO: add special e_read call to wrap size checks with custom exception msgs
NWN.setting: generic setting get/set mechanism
NWN.log_debug: messages always print unless explicitly turned off
Field :resref validate: warn when too long and not explicitly turned off
nwn-gff: fix reading from stdin throwing an exception
0.4.8-rel

Another bugfix and compatibility release. This adds real NWN2 support
to gff reading, adds a few new SETTINGS, and adds proper IO reading.

0.4.9

Bernhard Stoeckner (10):

Gff::Reader/YAML: do not taint read objects
Scripting: satisfy win32 compatibility
nwn-irb: work on IO object instead of string
nwn-erf: fix typo in -h: -1 saying ERF 1.0 instead of ERF 1.1
Scripting: satisfy: close opened fds after loading GFF data
api.rb: merge into field.rb and struct.rb
Gff::Struct#by_path: print list index in current_path on error
Gff::Struct#by_path: / alias, $ and % mods, substruct & locname paths
TwoDA::Table: fix always printing errors for invalid IDs on table reading
Update documentation, add HOWTO
0.4.9-rel

Some medium rare bugfixes, and a overloaded operator for GFF structs,
which can be used to comfortable walk on trees.

0.4.10

Bernhard Stoeckner (23):

bin/nwn-erf: exit(1) on errors
bin/nwn-erf: support extracting parts of archive with -x
Erf::Erf: set correct internal year on initialize
bin/nwn-gff: fix reading gff data from stdin
Gff::Field: transform type to symbols on extend
Gff::Struct#path: return full data type by walking the tree on the fly
Gff: add :pretty format that prettyprints
Gff::Struct, Gff::Field: add generic box/unbox methods
Gff: JSON support
new ENV NWN_LIB_IN_ENCODING specifies nwn-gff encoding
:pretty-print boxes before printing
Gff: JSON support adheres NWN_LIB_PRETTY_JSON env var
Kivinen-format: refactor into Marshal load/dump interface
Res/ContentObject: minor internal cleanups
Gff::Reader: do not compact exolocstrs on read-in
YAML/JSON support: fix spec, add dep, fix files to not clash with gem names
Rakefile: spec support for >= 1.1.9
NWN::Key: .key, .bif reading support
Resources::DirectoryContainer: do not fail on invalid files in directory
documentation updates
bin/nwn-erf: do not set description str_ref to 0x0
NWN::Gff: refactor API to properly partition different file format handlers
0.4.10-rel

A swath of bugfixes, JSON read/write, and finally .key and .bif reading support.
Also, Resources::Manager got some documentation and a few touches here and there,
as did bin/nwn-erf, which supports partial extraction now.
For our non-ASCII users, there is a ENV variable that can be used to specify the
encoding in which local GFF data is supposed to be in.

0.4.10.1

Bernhard Stoeckner (2):

JSON support: remove hard dep from Rakefile, load if available
Rakefile release target: use new rubyforge binary version API
0.4.10.1-rel

Late night Rakefile fun.

0.4.11

Bernhard Stoeckner (7):

Gff::Struct.add_*: support default values for new fields
Gff::YAML: fix setting proper .element for direct child-structs
specs: run without debug logs, un-breaks bin/* specs
Field.unbox! always takes parent parameter
Gff::Struct: API chg, path w/o data_type, data_type changes
Gff::JSON: specs
Gff::Kivinen: rename kivinen_format -> format, add spec
0.4.11-rel

A mostly-maintenance release with some API changes. The most invasive changes
are some method renames. New are some sane default values for Struct#add_*,
and a few more specs. YAML now sets correct .element references.

0.4.12

Bernhard Stoeckner (18):

Gff read/write API: documentation, Handler#dump always returns bytes written
Settings: iconv: refactor into methods
data_type_spec: refactor to be more concise
Gff::Struct#data_type=: only emit debug message when new type is non-nil
Gff::Handler::JSON: emit terminating newline regardless of :pretty_json
JSON: infer data_version like yaml, omit if DEFAULT
Gff: error if registering format of same name twice, reverse FileFormatRX hash
Gff::Struct: reparenting struct emits debug message only if element != nil
Gff::Reader: allow reading of arbitary Gff version files
Gff::Struct: data_version allow more freedom in inferring, update spec
NWN::Gff: custom xml data format, nwntools.sf.net modpacker read/write support
Rakefile: spec output in spec-style format
Rakefile: remove obsolete rubyforge target
bin/nwn-gff: --out-encoding specified output encoding
NWN.setting: return default values for setting new values too
spec_helper: set $options to unbreak kivinen spec
NWN.log_debug: non-lib frame if available, :debug_trace prints full traces
Gff::Field: fix data ranges for int64, dword64
    0.4.12-rel

A few new features and some bugfixes this release:
- more concise yaml dumps (but backwards-compatible)
- some iconv fixes
- dword64 and int64 data ranges now correct
- support for parsing/dumping modpacker XML
- support for parsing/dumping a custom, cleaner XML format