[x] Tag.each_attribute should allow to iterate on all namespaces if 'namespace' is nil [x] Tag.get_attributes(namespace) [x] Implementation of attributes= [x] Implementation of Sdl.format() [x] Handle milliseconds in Sdl.format() [x] Handle timezones in Sdl.format() [x] Handle the Time class in Sdl.format() [x] Handle SdlTimeSpan in Sdl.format() ==> via to_s() [x] Review SdlTimeSpan [x] Instead of calling Tag.each_attribute(), we could have another way of calling attributes: with or without given block. Same goes for each_value(), etc. [x] Is Base64 really compatible with the format defined in the Java version ? ==> Seems so after having implemented more of the standard tests. [ ] Support both DateTime and Time in parsing (see Parser#combine()) [x] Use Date instead of DateTime if only day was specified in SDL (parser.rb) [x] Add a remove_all_children() to Tag [x] Rethink the interfaces to access sub-tags, values, attributes, etc (it is currently difficult to retrieve all the values, or the number of sub-tags, etc) ==> to simplify access to values would be ok but attributes or children would be more difficult. [x] See whether there is such a need to shield users from the actual arrays of values (we return a copy for the time being). ==> We don't return copies anymore. [ ] Add more unit tests [x] Attribute tests [x] Date tests [x] Date + time test [x] Time zone tests [x] Number literal tests [x] Strings literals (especially with line continuations) [x] Sub tags tests [x] "null" value test [x] Comment tests [ ] Bad syntax tests [ ] Test write (unit tests) [ ] Dates [ ] Numbers [A] Use YARD in order to generate documentation ? ==> alternatively, I tried to generate some RDoc templates but none worked in Rake... [x] In the documentation, present a table giving the returned Ruby type for each SDL type. [A] Change the interface of SdlTimeSpan to look like the interfaces of Date, DateTime or Time ==> Really? This is a timespan, not a date. [x] Have SdlTimeSpan implement Comparable [ ] BUG: the line number is too high by 1 (the column is correct). [x] PB: binary fields shouldn't be kept as Strings because they would not be saved as binaries but as strings otherwise. ==> We use SdlBinary now. [x] Change the module name to SDL4R? Something else? ==> Changed to SDL4R. [/] Fix the differences between test_basic_types.sdl and what is generated from the parsed structure [x] chars [x] longs [x] doubles [x] decimals [x] booleans [x] null [x] dates [x] times [x] negative times [x] datetimes [/] zone codes ==> Time only works in UTC, which means that the original zone code is lost. ==> DateTime doesn't give the zone code but only the offset. [ ] Use TzTime? Use a custom object that knows whether a time zone was specified? ==> http://tztime.rubyforge.org/ ==> along with TzInfo: http://tzinfo.rubyforge.org/ [x] BUG: Base64 wrapped lines are 64 chars long and not 72 (traditionnal length) ==> Because of a limitation in the regular expressions ==> find another algorithm [x] See whether we can do better for numbers of arbitrary precision (decimals). ==> Ruby BigDecimal ==> Ruby Decimal http://ruby-decimal.rubyforge.org/ ==> Now: http://flt.rubyforge.org/ : use this if the lib is available ==> We use flt if available. [ ] See how Ruby floats relate to Java floats and doubles. [ ] Add tests for the SDL class [ ] Allow unicode characters in identifiers. [ ] FUTURE: It might be useful to allow people to replace the standard types by their own. This could be useful for dates or numbers, for instance. [N] To install a gem in the Netbeans gems repository, it needs to run as an administrator. Otherwise, it fails silently. [x] Make it so that the tests pass (with errors or not), when Ftl (DecNum) is not available. [x] Fix the ParserTest test. [x] SDL 1.1: tag1; tag2 "a value"; tag3 name="foo" [x] Create a Tokenizer class [A] Test attributes with/without namespaces ==> Guess this is done in test_structures... [x] Fix Test.test_strings: support for Unicode ==> Seems to work. [ ] FUTURE: Consider being able to read text files that are not UTF-8(?) [ ] BUG: the report on the line no in errors is off by 1 (at least in some cases) [x] Try to move Reader, Tokenizer, etc to the private part of the SDL module ==> Doesn't seem to make a difference. ==> Moved to the Parser namespace. [x] Factorize "each_child..." methods in Tag and refactor "children(recursive, name)" consequently + invert "name" and "recursive" in "children()" [ ] Return copies or original arrays in Tag? [A] BUG: test_tag_write_parse() does not work from the command line (ruby v1.8.7). ==> This is normal provided that flt was not installed. [ ] Tag.to_string(): break up long lines using the backslash [ ] Tag.hash: the implementation is not very efficient. ==> Difficult to make better and simple [x] Implement reading from a URL(?) Other sources idiomatic in Ruby? ==> Strings, URIs, Pathnames, IOs [x] See the XML and YAML APIs to find enhancements. [x] Check the XML functionalities of Tag. [x] Add tests for Tag [x] Maybe some methods in the SDL module are not so useful to the general user: make them protected? [ ] FUTURE: xpath, ypath ==> sdlpath(?) [ ] FUTURE: evenemential parsing(?) [x] Move Tokenizer, Reader, etc into the Parser module/class or prefix by Sdl ==> moved to sdl4r/parser [ ] FUTURE: add a way to insert a tag after or before another(?) [ ] FUTURE: allow some way of generating YAML(?) [ ] FUTURE: allow to turn a YAML structure into a SDL one(?) [x] Make a Gem [x] Implement the convenience method of SDL (value(), list(), map()) [x] Move the test files to a sdl4r subdir [x] 1.2: Ensure that there is a SDL.read() that returns a Tag [x] 1.2: hasChild(), hasChildren() methods [x] 1.2: getChildMap(), getChildStringMap() methods [x] 1.3: periods in identifiers [A] Create a History.txt file ==> See CHANGELOG [x] Setup the Rubyforge website [A] See how both Subversion repositories can be handled (is it necessary?) ==> No need for the Rubyforge project anymore, it seems (we use Rubygem and gemcutter directly) [x] Add info to README [x] Add LICENSE & CHANGELOG files [x] State in the README that without Flt, all the tests can't run. ==> it's stated explicitely in the test [w] Make it so that each test appears separately in test.rb (if possible) [ ] Have the use of Flt be optional. [ ] Be sure that there is a way to change the precision of Flt outside of SDL4R [ ] Turn Rationals to Floats in coerc_or_fail()? [ ] BUG: "rake package" tries to archive the contents twice: once with the command that I configure in Rakefime, once with a zip command that can't work on my machine (zip is not installed). Why? At least, the first archive is created and seems correct. [x] Add a "Getting Started" chapter to the README [ ] FUTURE: Would we need a "write" method in SDL4R? [ ] Implement coerce_or_fail: it is right now allowed to add any garbage to the SDL tags [x] Fix the doc of Tag.add_value [ ] Add tests and release a RC or beta version [x] Make the parser components disappear from the RDoc [x] Add tests for Tag attributes [x] Add tests for Tag to_child_hash, etc [x] Add tests for Tag eql?, etc [x] Should we interpret arrays in arrays in Tag.<< as a structure specification? Example: tag << [[1, 2], [3, 4]] could mean adding 2 anonymous "content" tags to "tag" with the corresponding values ==> Works fine for matrices [x] Make the methods of Tag that take a block have a better yield doc/completion ==> I added :yields: RDoc directives, which doesn't look like it's helping but I guess that's all I can do for now. [x] See if we can not support the right order for the namespaces attribute("a1") # => just the name attribute("ns1", "a1") # => namespace + name (instead of attribute("a1", "ns1") now) [N] Never call a class "Test" => it can easily conflict with the "Test" module of Test::Unit and then, it becomes quite difficult to understand why. [x] Add tests for to_xml_string [x] Be stricter and more explicit with Tag and attributes name/namespace [x] Fix set_attributes: it was correct before.