The idea behind Markex is to provide a process/language to write/read, structure, and format content. It is vital to provide adequate separation of concerns so that Markex documents can be progressively enhanced. Markex draws elements from Markdown, LaTeX, Jade, JSX, YAML, HAML, ODF, SCSS, Wordpress Shortcodes, and HTML. Extra consideration is made to allow Markex documents to be created using a full WYSIWYG editor. The underlying rendering engine HTML for now, but the language and implementation allow for this to be easily customizable. Finally, Markex is designed to be clean, beautiful, and appealing to the eye. There are places where it is has been deliberately limited in it's expressiveness to put the content first. Due to Markdown's popularity, Markex attempts to maintain 90% compatibility with Markdown.
!!! Thing to Note: Finding the right space between the simplicity of Markdown and the flexibility of HTML is key. Markex is designed to fit that niche. Too many features will defeat the purpose. The use-case must exist where the full power of HTML is overload but the simplicity of Markdown is a hinderance. This must especially be true when abstracting certain things for the end user.
!!! Philosophy: Always remember, Markex is less about the language/implementation and more about process. The absolute key to Markex is that it enables powerful, simple, and flexible processes. The language/implementation is simply the most logical way to live by that philosophy.
WRITE/READ-ABILITY
- easy to read/write
- raw format is plaintext files
- .mu extension
STRUCTURE
- easy to structure hierarchy
- operations
- if/else
- loop
- variables
- templating
- include
- extend
FORMAT
- CSS
- Constraints based layout
The core syntax is very small and highly extendable. Syntactic sugar is provided on top to make writing and structuring simpler documents lightning fast whilst preserving the power of the full syntax. Everything in Markex is a component. Each component is defined as: [component]. To preserve the cleanliness of the document, hierarchy comes in with tabs (2 or 4 space). The space after component declaration is optional. Components can be name-spaced, and some have short declarations (syntactic sugar). A component can have a name, which must be unique. Components can also have classes, which do not need to be unique.
The full definition of a component: [COMP_TYPE COMP_NAME .COMP_CLASS]
Variables are a first class part of the syntax. They are defined using curly braces {}
Markex's implementation draws heavily from React/JSX in that each component has a corresponding renderer which is responsible for displaying that part of the document. This allows for easy extensibility for custom components to be used.
This is regular text
This is also bold text.
This is italicized text.
[section] [title] This is a section title
This is regular text inside a section.
This is