4 ms·
["div", "The ", ["a", {"href": "https://www.json.org/" https://www.json.org/"}, "JSON format"], " was invented by ", ["em", "Douglas Crockford"], "."]
by m1el 7y ago
["div",
"The ", ["a", {"href": "https://www.json.org/" https://www.json.org/"}, "JSON format"],
" was invented by ", ["em", "Douglas Crockford"], "."]
- ses1984 7y agoInteresting.
- ilogik 7y agothat looks like the JSON documents in AWS's CloudFormation
- sacado2 7y agoQuite readable but it's a hell to parse. The first argument is the name of the element, but what is the second one? If it is a string or an array, it's the first child, but if it's an object, it's the attribute set?
- kgwxd 7y agoWhat if text were quoted?
- 52-6F-62 7y agoMaybe something more like: [ "div", [ "The ", [ "a", { "href": "https://www.json.org/" }, [ "JSON format" ] ], " was invented by ", [ "em", "Douglas Crockford" ], "." ] ] With all children being encapsulated in an array... edit: though it again gets confusing when the 0 index is sometimes the element type and sometimes the straight text... so never mind I guess the problem persists.
- nkrisc 7y agoHow would you ever differentiate "div" from an element or text? Is "The " text or the <The > tag?
- arethuza 7y agoWhy not just: [ "div", "The ", [ "a", { "href": "https://www.json.org/" https://www.json.org/" }, "JSON format" ], " was invented by ", [ "em", "Douglas Crockford" ], "." ] First thing in array is element, if there is an object at the second location then that's the attributes?
- 52-6F-62 7y agoYeah that seems to make the most sense. I had to actually work it out before I saw it. I was looking for some further separation beyond indices but I just ended up over-thinking it.
- fnordsensei 7y agoThat's is roughly how it's done in Reagent[1]/re-frame[2]: [:div "The" [:a {:href "https://www.json.org/"} "JSON format"] " was invented by " [:em "Douglas Crockford"] "."] The fact that EDN[3] supports keywords makes it a bit easier to parse. Representing HTML in EDN this way was first done in a library called Hiccup[4], so it’s usually called “Hiccup” even when encountered outside of the original library. 1: https://holmsand.github.io/reagent/ https://holmsand.github.io/reagent/ 2: https://github.com/Day8/re-frame https://github.com/Day8/re-frame 3: https://github.com/edn-format/edn https://github.com/edn-format/edn 4: https://github.com/weavejester/hiccup https://github.com/weavejester/hiccup
- m1el 7y ago> The first argument is the name of the element, but what is the second one? If the second argument is an object/dictionary, it's attributes. Otherwise, it's the first child. Alternatively, the ambiguity can be resolved by using null/0 instead of empty attributes.
- postalrat 7y ago["div", "The", ["a[href=https://www.json.org/]" https://www.json.org/]", "JSON format"], "was invented by", ["em", "Douglas Crockford"], "."]
- kickopotomus 7y agoBasically hiccup: https://github.com/weavejester/hiccup https://github.com/weavejester/hiccup
- iooi 7y agoOk, now try <div>div</div>
- arethuza 7y ago["div", "div"]