Skip to content

Latest commit

 

History

History
74 lines (67 loc) · 4.14 KB

todolist.md

File metadata and controls

74 lines (67 loc) · 4.14 KB
  • Everywhere

    • Switch back to using nom now that the new version has been released
    • Logging
    • Add line numbers to errors
    • Add documentation to public enums, structs, functions, methods and macros - In progress
    • Switch names of TOMLValue and Value
    • Rename Parser to TOMLParser
  • primitives.rs

    • Implement get_keychain_key
    • Implement get_full_key
    • Implement get_key_parent
    • Change Key::Str to just hold an &'a str again
    • Fix DateTime to allow only Date, only DateTime (no fractional seconds), only DateTime (with fractional seconds), Full DateTime with offset
    • Change TimeOffset::Z to TimeOffset::Zulu?
    • Change '+'/'-' to enum
    • Inserting a value insert's its key in it's parent's children
    • Re-implement get_array_table_key to take into account implicit tables are always standard tables
    • DateTime validation
  • ast/structs.rs

    • Re-implement HashValue to have a list of children or max index of children
    • Fix DateTime to allow only Date, only DateTime (no fractional seconds), only DateTime (with fractional seconds), Full DateTime with offset
    • Change TimeOffset::Z to TimeOffset::Zulu?
    • Change '+'/'-' to enum
  • objects.rs

    • In array_table when adding to existing table get_key_parent and add the new index as a child in the map, then add full_key to the map with None value
    • Fix add_implicit_tables
    • In array_table if table keys imply subtables that don't exist, add the implied tables as std_tables to the map with None value and add add their subkeys as children (partially done)
    • In std_table if table keys imply subtables that don't exist, add the implied tables as std_tables to the map with None value and add add their subkeys as children
    • In array_table if get_key_parent exists and has no indexed children, then it is an error (see toml-test/invalid/table_array_implicit)
    • In array_table when encountering a new table that isn't a subtable of the last table, rebuild last_array_tables and last_array_tables_index by starting at the first subkey, looking up it's children and so-on, if the array_table already exists
    • In array_table always add new table to map with None value
    • In std_table always add new table to map with None value
    • In array_value insert_key_val_into_map
  • parser.rs

    • Change Key::Str to just hold a Str
    • Implement reconstructing InlineTables and Arrays with different structures than previous values
    • Implement wiping out all keys and values of InlineTables and Arrays with changed structure
    • Implement converting Value Arrays and InlineTables to TOMLValue Arrays and Tables
    • Implement inserting new keys and values into map
    • Implement inserting new Array or InlineTable value into AST
    • Implement get_errors Errors are returned as part of pars result if there are any
    • TOMLValue parsing on set_value (currently set_value accepts whatever you give it). In progress, almost finished
      • Implement get_children
    • Convenience functions
      • For creating Values, especially DateTime
      • Combining a key and a subkey or index to a new key
      • Add unit tests for getting values
      • Add unit tests for getting sub-keys
      • Add unit tests for setting values
      • Add unit tests to check the map to make sure removed keys are gone
    • Have parse return a tuple with the parser and the result
  • tests/assets.rs

    • Add failure/error tests for invalid toml-test's
    • Add toml/examples/example-v0.4.0.toml to success tests
  • tests/parser_tests.rs

    • Add integration tests for parser:
    • load a larger document -> validate
    • do a bunch of gets -> validate
    • do a bunch of get_children -> validate
    • do a bunch of sets, then do a bunch of gets -> validate
    • Add failure tests for the other 3 types of error
  • types.rs

    • Log an error on a return result of Result::Err
    • Add unit tests to convenience functions
    • Add future error types to ParseError
    • Add column number to all error types
    • Add the invalid datetime string to the InvalidDateTime error