- primitive values
- string values
- escapes
- bug where does not check for termination properly
- no unescaped control characters
- char to unicode escape
- domain struct JSONChar
- parse unicode escapes
- check rfc
- numbers
- positive/negative (+/-)
- powers (e/E)
- null
- boolean
- string values
- objects
- multi keys
- validate duplicate keys
- what if key and val are both same?
- arrays
- nested object
- arbitrarily nested
- validate whitespace to skip
- formatting
- make uglifier
- make prettifier
- general options
- If object is empty, should be "{}"
- standardize exponents
- minifier should remove + and insignificant exponent 0s
- standardize escapes
- turn u escaped special cases to special case
- use same casing for escapes
- turn printable characters to normal (maybe an option, what if want cyrillic a to be escaped for example)
- error handling
- display implementation for each token
- line/column
- proper handling for multibyte characters
- describe expected token
- line/column of reason why expected (expected closing curly due to umatched open curly at xyz spot)
- Unterminated
- make naming more specific regarding Object and arrays (curly/square braces, open/opening/close/closing)
- point to character like in rust's errors
- patches for each error type
- patch applicability (how confident am I that this is right?)
- fix up From impls for Tokens. From should not be on token, but boolean makes sense
- cli
- stdin
- files
- help screen
- --fix option
- colors (support-color)
- look into insta snapshot docs
- stdin gracefully handle failure to read to buffer
- rebrand
- jjpwrgem crate name
- jjp bin name
- axolotl skateboard
- accessible output (look into annotate snippets issue + miette)
- maybe reparse a step ahead to see if then valid?
- hook to format on commit
- just script to install all tools
- submodule installation
- conformance testing
- JSONTestSuite — Pure JSON
- Tokenizer errors shouldn't report "expected start of JSON value" when parsing may be incomplete
- When the prior token is
{, provide help suggesting the next token should be quoted or flag an unidentified token- Investigate
n_object_emoji - Investigate
n_object_key_with_single_quotes - Investigate
n_object_missing_colon.json
- Investigate
- Handle inappropriately escaped forward slash in
n_object_trailing_comment.json - Provide a hint to insert a value and closing curly when no significant characters remain
- Investigate
n_object_missing_value.json
- Investigate
- Fix error message to state that a quote is expected after the opening quote
- Investigate
n_object_unterminated-value.json
- Investigate
- Add helper messaging explaining that comments aren't allowed
- expected key but found , should add key val beforehand
- n_structure_open_object_comma
- multichar emojis are not properly handled, see n_object_emoji.json
- should recommend changing single quotes and backticks to double
- n_object_single_quote
- error reporting for keywords, for example trbe marks t as error. Should handle casing
- n_incomplete_false
- n_incomplete_null
- n_incomplete_true
- n_structure_capitalized_true
- , at start of obj or arr should recommend delete
- n_array_comma_and_number
- n_array_just_comma
- n_array_missing_value
- recommend delete dup comma?
- n_array_double_comma
- remove multiple trailing commas
- n_object_several_trailing_commas.json
- recommend comma if potential valid next arr val
- n_array_inner_array_no_comma
- add placeholder and closing if no sig chars
- n_array_newlines_unclosed
- n_array_unclosed_trailing_comma
- should recommend adding fraction digit 0 or remove
- n_number_-2.
- n_number_0.e1
- should recommend adding exponent digit or remove
- n_number_0.3e+
- n_number_0.3e
- n_number_0_capital_e+
- n_number_0_capital_e
- should recommend 0 before .
- n_number_.-1
- maybe warn on NaN or Infinity/other js idents?
- n_number_-nan
- general context of token parser? should give more specific if following num
- n_number_0.1.2
- maybe mark hex/octal/binary literals
- n_number_hex_1_digit
- n_number_hex_2_digits
- whitespace in middle of tokens can be slurped for errors
- n_number_minus_space_1
- escape non printing for display or include unicode escape afterwards no matter what if not possible to get exhaustive list https://crates.io/crates/is_printable https://crates.io/crates/unicode-names2
- n_structure_u+2060_word_joined
- control
- format U+2000 to U+206F
- Variation Selectors: U+FE00 to U+FE0F
- Private Use Area: U+E000 to U+F8FF
- Tag Characters: U+E0001 to U+E007F
- expected quote before end of string should suggest adding one
- if capital U escape \U, then recommend lowercasing it if 4 hex digits after
- n_string_unicode_capitalu.json
- validate inappropriate surrogates
- consider context aware quote closing
- n_string_1_surrogate_then_escape adds " at end when in unclosed array may be more appropriate
- json lines
- trailing comma