Show HN: Mark 1.0, a notation that unifies JSON, HTML, JSX, XML, YAML, and more

8 pointsposted 7 months ago
by henryluo

12 Comments

gao_xing

7 months ago

Dear author,

kudos! It's impressive to see so many rich scalar types supported under Mark, including: symbol, decimal number, datetime, binary, and even Element as a new container type. Excited to try this notation out!

Thank you.

henryluo

7 months ago

Glad you like it. I have bigger plan for what's currently released. My next goal is to unify the schema of all those data formats, like JSON, XML, HTML, etc. And make the new Mark Schema able to validate all those data formats.

gao_xing

7 months ago

Wow, looking forward to the full-fledged version with unified support of features from JSON, XML, and HTML!

user

7 months ago

[deleted]

FerkiHN

7 months ago

The idea is cool, but in my opinion, the downside of many types of notation is the markup symbols, which are essentially useless, like they complicate the syntax with symbols, although everything worked without them anyway, I wanted them to solve this.

henryluo

7 months ago

Glad to see your comment. Not sure I get you right. I also do not like many data notations and formats floating around. I hope there's one notation that can unify all the data that I'm concerned with. That's why I created Mark.

FerkiHN

7 months ago

Sorry for writing in a strange way, in short, your Mark is wonderful, but I don't like the symbols in the markup like "<" before each command, because without them, in fact, you can also make a working markup, maybe they use it for beauty?

henryluo

6 months ago

As for the '<' and '>' to open and close an element, there are two potential kinds of syntax design. Option 1 is to use some explicit delimiters. Mark 1.0 has settled on '<' and '>'. Mark 0.11 was using '{' and '}', which I felt confusing with map. So I changed to '<' and '>', to make it consistent with HTML/JSX and XML, which most developers are already used to. Option 2 is to use indentation to delimit the enclosed child content, like in Python and YAML.

Option 2 looks cleaner for configuration kind of usage. However, Mark is designed to be embedded in a scripting language, and used beyond just configuration files. Unless the scripting language uses indentation as delimiter, like Python, option 2 will not work.

Personally, I prefer C/Java/JS family of languages that has insignificant whitespace. So Mark is designed to use explicit delimiters '<' and '>' to enclose an element.

Hope that explains one of the most important syntax designs of Mark.

GOTO95

7 months ago

henryluo

7 months ago

A new notation by itself won't be useful. It's the tool stack, the eco system around it that matters. That's why I'm building beyond that the format itself. I'm building the schema, the validator, the scripting and query language around it.

henryluo

7 months ago

Yes, it's a must! Have that posted in the 0.11 beta release as well. :-)