|
 |
TemlCode Overview
Note:
| |
TemlCode is a brand new data storage specification of our own production.
This product is not for sale. By this, we offer you an insight under
the hood so you can make a picture about technologies we created and
used in our other products.
|
The Tilde Escape Markup Logic Code (TemlCode)
is a general-purpose specification for creating custom markup languages and protocols.
It's main purpose is storing plain or structured data in human-readable form, which in
combination with tilde escape code markup syntax guarantees data serialization and interchange functionality
on any target platform. TemlCode data files can be stored using any encoding assuming
individual code points conforms to the ISO/IEC 10646 international standard.
It is usable for wide variety of application tasks like simple to complex rich text attributing, configuration files,
data structures content and definition storage, binary data storage (eg. images), storage of international
text, complex documents storage and many more.
TemlCode can be considered (in functional way) to be an alternative to XML.
The reason, why we choosed to develop TemlCode over the use of existing XML
was to achieve a better readability, more flexibility and smaller footprint.
We also needed an unobtrusive markup code for providing complex text formatting
capabilities. The use and support of existing html (or xml based) protocols for this
task is itself of a size of a web browser project, it forces to abide standards
and thus limits potential creativity. Another negative aspect of XML itself is it's
very simple markup escape sequence (< ... >) by using which it is very
easy for human to quickly get lost in nested structures not to mention the
obtrusiveness of necessity of closing each structure element. In TemlCode, user
also needs to indicate the end of a structure, but it can be done in quicker
and more direct manner.
Main Features
•
| |
Good readability for humans
Escape markup sequences can adapt to the layout of the natural human
text segmentation. Indentation & end of lines are not important for
TemlCode parser to retrieve the appropriate data structures. Good
readability is amplified by distinctive markup tags semantics with
more types of syntax differentiation.
|
•
| |
Unobtrusive escape sequences design
By using a rare combination of two common ascii characters
to start a markup tag, it is possible to use all code points for
plain text. In HTML or XML for example, you cannot use "<" character in
text part of the document directly, but instead you have to use
an appropriate entity reference - <.
|
•
| |
Lower footprint
The amount of overhead data, by which the TemlCode markup tags increase the size
of plain text document, are lower that comparable similar markups like HTML or XML.
This is due to fact, that closing of structural elements is done with very short
sequences while in other markups the whole names of closing elements must be
mentioned. In TemlCode, there is also a possibility to close some structural
element by mentioning it's name. For clarity, it is even possible to label opening
tag with temporary name and then close appropriate structure with close tag mentioning
that particular label name. But to act like this, is not necessity in TemlCode, and when
all structure nesting is well-formed, it is sufficient to use just the short
form of closing tags without mentioning the elements names.
|
•
| |
Data definitions
TemlCode support data definitions inside markup tags with syntax similar to common programming
languages. Besides data serialization, this is most useful when TemlCode parser reads the
data in and it already knows their type and interpretes it that way. User then doesn't have to
explicitely convert element data to eg. integers, but directly grabs eg. integer values from
the parser tree structures.
|
•
| |
Integrability
Due to it's unobtrusive markup sequence design, TemlCode can be seamlessly incorporated into the
source code of existing programming languages and also into the HTML or XML based documents.
Of course, when integrating, TemlCode blocks cannot be placed anywhere. It seamlessly integrates,
when put inside a comment block of a particular language (eg. // ..., { ... }, (* ... *), /* ... */,
<!-- ... -->, etc.).
|
•
| |
Embeddability
TemlCode offers a great inclusion capabilities. Any programming or markup language, as well as any
binary data can be a part of TemlCode data stream. Even if there would be a potential possibility,
that for example a binary block of data will contain TemlCode syntax elements, which would break
the TemlCode parsing logic, it is possible to localy override the initiating escape
sequence (called delimiter) as a part of immediate markup tag definition.
|
•
| |
Extensibility
TemlCode specification doesn't defines a single name of any markup tag, to be used with it.
To use it, the user must extend TemlCode by specifying names of markup tags, by which a
dialect is created. TemlCode dialects in combination with rules of when use a which kind of
markup tag, creates protocols.
|
•
| |
Inlining
TemlCode markup tags can be individually labeled with custom names. This allows for functionality,
where blocks of data are referenced for the purposes of multiple reuse. It is possible for instance,
label some piece of text (also a very complex one) and reference it many times with meaning of
inserting that text in place, where that reference occured. On top of that, references can pass custom
parameters on occurence, just like a function call with parameters in programming languages.
|
•
| |
Functional Languages
TemlCode is suitable as a content carrier for implementing some Functional Language in it.
In functional languages, it is not important how you make to get things done, but the definition
of what you want to be done. And this is a kind of stuff, TemlCode is also good for.
|
•
| |
Freeware & Royalty Free
TemlCode is free for commercial or non commercial use. There are also no royalty fees for it's
use. Please refer to the Licence page for full legal information.
|
The Basic Principle
The most basic principle of TemlCode markup is in use of a rare combination of two
common ascii characters - a Tilde "~" immediately followed by one of parenthesis type
characters "(", ")", "<", ">", "{", "}", "[", "]" - or backslash "\".
The data space occupied by TemlCode is then divided in two categories:
•
| |
Plain Text
Anything outside TemlCode markup. This space can serve as document text area
or just as space for comments about meaning of enclosing markups.
|
•
| |
Markup Tags
Anything inside (or part of) sequences described in the table below.
This space serves for user definition of higher structures and markup language itself.
|
The valid TemlCode Markup Tags are summarized in following table:
TemlCode Markup Tag
|
Classification
|
~\ ... \
|
Section
|
~< ... >
|
Property
|
~>
|
~[ ... ]
|
Structure
|
~]
|
~{ ... }
|
Metadata
|
~}
|
Break
|
~( ... )
|
Insertable
|
~)
|
CRLF
|
The " ... " part inside Markup Tags summary above,
is subject to internal syntax definition described in subsequent chapters of this specification.
In short, internal syntax consists of basic buildings parts, which we will call for the purposes of
this specification - elements. TemlCode Markup Tags can span across as many source file lines, as
needed.
Nothing else except combinations in table above is considered to be a valid
markup escape sequence. For example Tilde character "~" immediately followed
by anything than "(", ")", "<", ">", "{", "}", "[", "]", "\",
is considered to be a Plain Text.
For clarity, here is a table of character code points used for TemlCode markup
escape sequences according to ISO/IEC 10646 UCS international standard.
We will introduce a table like this everytime from now on, a new characters
emerge in further syntax definitions.
Character
|
Name
|
Code Point
|
~
|
TILDE
|
U+007E
|
\
|
REVERSE SOLIDUS
|
U+005C
|
<
|
LESS-THAN SIGN
|
U+003C
|
>
|
GREATER-THAN SIGN
|
U+003E
|
[
|
LEFT SQUARE BRACKET
|
U+005B
|
]
|
RIGHT SQUARE BRACKET
|
U+005D
|
{
|
LEFT CURLY BRACKET
|
U+007B
|
}
|
RIGHT CURLY BRACKET
|
U+007D
|
(
|
LEFT PARENTHESIS
|
U+0028
|
)
|
RIGHT PARENTHESIS
|
U+0029
|
Specification Status
Document version: 1.00
The definition of TemlCode is declared by this specification, and we consider it to be stable.
However, we reserve the right for change anytime if necessary.
Proper TemlCode Parser & Processing Application implementations must be conformant
to functionality described in this specification.
Please read the licence conditions first before proceeding any further.
Tell Us What You Think
|
|
|