Skip to content

alizain/markex

Repository files navigation

Markex

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

Syntax Overview

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 {}

Implementation Overview

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.

Syntax Reference

This is regular text

This is also bold text.

This is italicized text.

[section] [title] This is a section title

This is also a section title

This is regular text inside a section.

This is

About

a new abstract markup language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published