nestedtextto
json5-spec
nestedtextto | json5-spec | |
---|---|---|
5 | 7 | |
16 | 49 | |
- | - | |
9.6 | 2.2 | |
5 days ago | 12 months ago | |
Python | HTML | |
Do What The F*ck You Want To Public License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
nestedtextto
-
The yaml document from hell
I used the official reference implementation to make a CLI converter between NestedText and TOML, JSON, and YAML. When generating one of these formats, you can use yamlpath queries to concisely but explicitly apply supported types to data elements.
-
The YAML Document from Hell
I'm a huge fan of NestedText, especially as there is no escaping needed ever.
If you ever want to use it as a pre-format to generate either TOML, JSON, or YAML, I used the official reference implementation to make a CLI converter between them and NestedText.
When generating one of these formats, you can use yamlpath queries to concisely but explicitly apply supported types to data elements.
- My CLI converter: https://github.com/AndydeCleyre/nestedtextto
- yamlpath info: https://github.com/wwkimball/yamlpath/wiki/Search-Expression...
-
A practical issue with YAML: your schema is not documentation
In case you're interested and haven't seen it, I've become a big fan of NestedText, which is similar to YAML but without the complicated parts, and without types (just strings, lists, and dicts). The idea is that any meaningful validation and coercion belongs in code anyway. An extra cool part is that nothing ever needs to be escaped, so the content is super clean and unambiguous.
If you want to play around with it, I made NestedTextTo (nt2 on PyPI), for CLI conversion between NestedText and YAML, TOML, or JSON, with a pretty cool (IMO) way to cast value types along the way.
https://nestedtext.org/en/stable/ (not my project)
https://github.com/AndydeCleyre/nestedtextto (my project)
-
How do you yaml
I recently fell in love with the NestedText format, and whipped up a CLI for conversions between it and YAML (and JSON and TOML), so now whenever manually viewing those other formats I pipe it through into readable NestedText. In this example, the result is identical to format A.
-
nt2: a CLI converter between NestedText and JSON, YAML, or TOML
So I made nt2 (NestedTextTo) (install from PyPI as nt2[toml] for TOML support).
json5-spec
- Building a high performance JSON parser
-
TySON: a native go library that lets you use TypeScript as an embedded configuration language without depending on Node or V8
One of the larger issues I've run into is duplicates. Douglas Crockford, JSON's inventor, tried to fix the duplicate issue but it was decided it was too late. Although Douglas Crockford couldn't change the spec forcing all implementations to error on duplicate, his Java JSON implementation errors on duplicates. Others use last-value-wins, support duplicate keys, or other non-standard behavior. The JSON RFC states that implementations should not allow duplicate keys, notes the varying behavior of existing implementations, and states that when names are not unique, "the behavior of software that receives such an object is unpredictable." Duplicate fields are a security issue, a source of bugs, and a surprising behavior to users. See the article, "An Exploration of JSON Interoperability Vulnerabilities" Disallowing duplicates conforms to the small I-JSON RFC, which is a stricter JSON. The author of I-JSON, Tim Bray, is also the author of JSON RFC 8259. See also the JSON5 duplicate issue.
- JavaScript Gom Jabbar
-
SQLite Release 3.42.0
Virtually any sequence is not the same as adopting a specification five years after it’s been published and adopted by industry: https://spec.json5.org/
I appreciate that SQLite can’t write the format, because those changes are human afordances
-
The yaml document from hell
That's why you pick a superset of JSON that already has some adoption, like JSON5: https://spec.json5.org/
-
Don't Pickle Your Data
The "dual" standard RFC 8259 [1] (both are normative standards under their respective bodies, ECMA and IETF) is also a useful comparison here. It's wording is a bit stronger than ECMA's, though not by much. ("Good interoperability" is its specific call out.)
It's also interesting that the proposed JSON 5 (standalone) specification [2] doesn't seem to address it at all (but does add back in the other IEEE 754 numbers that ECMA 404 and RFC 8259 exclude from JSON; +/-Infinity and +/-NaN). It both maintains that its numbers are "arbitrary precision" but also requires these few IEEE 754 features, which may be even more confusing than either ECMA 404 or RFC 8259.
[1] https://datatracker.ietf.org/doc/html/rfc8259#section-6
[2] https://spec.json5.org/#numbers
-
JSON Creator Douglas Crockford Interview
For anyone coming back to this, I just wrote a small proposal to define JSON5 duplicate object name behavior. I'd love any support on the issue:
https://github.com/json5/json5-spec/issues/38
What are some alternatives?
sexplib - Automated S-expression conversion
aqua - Declarative CLI Version manager written in Go. Support Lazy Install, Registry, and continuous update with Renovate. CLI version is switched seamlessly
lua-sandbox - A lua sandbox for executing non-trusted code
tyson - 🥊 TypeScript as a Configuration Language. TySON stands for TypeScript Object Notation
sexp - S-expression swiss knife
jsb - Fast json <=> binary serializer library for C
cels - Command line tool to patch your YAML, JSON and TOML files.
strictyaml - Type-safe YAML parser and validator.
parcel - The zero configuration build tool for the web. 📦🚀
sxpyr - Parse s-expressions, edn, and a variety of lisp dialects.
go-jsonschema - A tool to generate Go data types from JSON Schema definitions.