Blocks of text in this application are mainly plain text. That means that newline characters will be faithfully represented when rendered into an output format. There are also several tags supported that allow you to build commonly used constructions, like ordered and unordered lists, pre-formatted blocks, quoted blocks and more.
These tags look like HTML and often share a name with a similar HTML element, but are not actually HTML tags. The content you write is transformed to HTML when displayed in a web page, but can also be transformed to plain-text—e.g. when generating a plain-text email.
Text
Single-line vs. Multi-line
Some fields, like object titles, are explicitly single-line and support only a limited number of nested tags. If block or image tags are included, they are instead inserted as if they were just text. Only the <b>, <i> and <c> tags are supported in single-line mode.
Newline handling
If you are just writing unformatted text, you may treat newlines as you normally would; both the HTML and plain-text formatter will honor the vertical spacing you've chosen. In some cases, HTML forces extra spacing that cannot be avoided—e.g. if you separate a normal text run from a pre-formatted text run with a single newline, HTML will render this with a double newline because the blocks are separated by a margin. In these cases, it makes no difference if you use zero, one or two newlines -- there are always two newlines rendered. The plain-text formatter has been written to emulate this behavior, so that the plain-text representation is as close as possible to the 'main' HTML output format.
Special Characters
Certain characters will be automatically replaced if they appear anywhere in regular text. You can disable this replacement for whole regions by using the <macro> tag.
Input | Output |
---|---|
--- | — |
-- | – |
1/2 | ½ |
1/4 | ¼ |
3/4 | ¾ |
... | … |
(tm) | ™ |
(c) | © |
(r) | ® |
x | × |
- | − |
(C,) | Ç |
(c,) | ç |
(C-) | Č |
(c-) | č |
(C') | Ć |
(c') | ć |
(g-) | ğ |
(i-) | ı |
(I.) | İ |
(S,) | Ş |
(s,) | ş |
(S-) | Š |
(s-) | š |
(Z-) | Ž |
(z-) | ž |
(-cmd) | ⌘ |
(-del) | ⌫ |
(-eject) | ⏏ |
(-enter) | ⏎ |
(-opt) | ⌥ |
(-shift) | ⇧ |
(-tab) | ⇥ |
Additionally, the following character pairs are automatically converted to their ligature equivalents. Most browsers don't especially like these characters[1], so this conversion is off, by default. You can enable this replacement for whole regions using the <macro> tag.
Input | Output |
---|---|
ffi | ffi |
ffl | ffl |
ff | ff |
fi | fi |
fl | fl |
Literal characters
In this version, you may type anything you like; there is no longer a need to specifically escape characters as HTML. The input language is no longer HTML, so escaping characters has been limited to the single case of the < character, discussed next.
Tags
Tags are the same format as HTML tags (e.g. <tag attr="value">). The tokenizer recognizes as a tag any grouping of text that starts with <, has a letter or number as the next letter, then ends with >. This is discussed in more detail in Using < as text. If a tag is not recognized, it will be rendered as text. The list of recognized tags follow and are recognized by both the HTML and plain-text formatters. When a tag is recognized, that means that it will not be rendered as text by the formatter, but will either be used directly, transformed to another tag or construct or discarded, depending on the output format.
Unknown tags are rendered as text, by default.
Using < as text
Since the content can be delimited by tags, the < character must be escaped in certain circumstances. These situations have been limited so that you will only very rarely have to use the escaped character. The only time you may need to escape the < character is if the character immediately following it is a letter or number. To escape the <, use <<.
If you want to write:
x < y and 5 < 8
you do not need to escape anything. Simply write it as shown above and the formatter detects that the < characters in the text cannot be parts of tags.
If you want to write:
If the text in the input box is still <default>, then you have to...
you still don't have to escape the bracket, since the formatter simply renders unknown tags as text anyway. In the next example, we see where we must include an escaped < character.
If you want to write:
<pre> to specify a backlink, use <linkname. </pre>
The problem here is that the tokenizer will recognize '<linkname. </pre>' as a tag, which will cause the </pre> end tag to be ignored, with unpredictable results. The text will still be output, but the -matted region will not be properly rendered. To avoid this, use the escaped version of the < character:
<pre> to specify a backlink, use <<linkname. </pre>
Basic
Standard attributes
All other attributes, unless otherwise specified below, are discarded.
All tags
The following attributes are recognized for all tags:
Name | Comments |
---|---|
id | Can be used with the anchor tag |
class | References classes defined in CSS |
style | CSS directives |
title | Generally shown as a tooltip when hovered |
All blocks
The following attributes apply to all blocks:
align |
The default value is 'none'. This parameter is ignored in the plain-text renderer.
|
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
clear |
The default value is 'none'. This parameter is ignored in the plain-text renderer.
|
||||||||||||
width | If you specify a left or right alignment, you will probably want to specify a width as well. This attribute accepts all CSS values. |
Block captions
These attributes also apply to all blocks and are used to construct the caption for a block.
author | Included in the caption by appending "by AUTHOR" | ||||
---|---|---|---|---|---|
date | Included in the caption by appending "on DATE" | ||||
href | Wrapped as a link around the caption, if both are given | ||||
source | Included in the caption by appending "(SOURCE)" wrapped in a link that goes to the root domain of the href value. | ||||
caption | If specified, it will be included with the block (top or bottom, depending on caption-position). | ||||
caption-position |
The default value is 'top'. This parameter is ignored in the plain-text renderer.
|
Example
<bq href="http://earthli.com/news" source="Earthli News" author="Marco" date="Feb 2014" caption="Some article">This is the content of the quote</bq> | → |
|
Generic formatting
You may also use <span> and <div> tags. In the HTML formatter, they are copied in as tags and will have whatever functionality the browser gives them. They are stripped by the plain-text formatter.
Character formatting
There are several character-formatting tags, aligned more or less with the common HTML tags. These are all stripped by the plain-text formatter.
Tag | Input | Output | Description |
---|---|---|---|
b | <b>strong</b> | strong | Strongly formatted text |
i | <i>emphasized</i> | emphasized | Emphasized text |
u | <u>underlined</u> | underlined | Underlined text |
s | <s>strike-through</s> | Strike-through text | |
n | <n>notes</n> | notes | Notes/comments |
c | <c>code</c> | code |
Inline code |
hl | <hl>highlighted</hl> | highlighted | Highlighted text |
del | <del>deleted</del> | Deleted text | |
var | <var>variableOne</var> | variableOne | Variable names |
kbd | <kbd>(-cmd)</kbd> + <kbd>B</kbd> | ⌘ + B | Keyboard characters |
dfn | <dfn>definition</dfn> | definition | Definitions |
abbr | <abbr title="Computer-aided Design">CAD</abbr> | CAD | Abbreviations |
cite | <cite>citation</cite> | citation | Citations |
sub | 10<sub>n</sub> | 10n | Subscripts |
sup | 2<sup>16</sup> | 216 | Superscripts |
Headings
Headings are written with the <h> tag. Use headings to delineate new sections in longer text flows. The default heading is slightly larger than regular text and bold. Plain-text mode will maintain proper spacing for headings even if you don't specify it.
The following additional attributes are allowed.
level | Heading level, analogous to the HTML heading level. The default is 2. Since headings are usually just used to distinguish between sections, you shouldn't often need to control the heading level. |
---|
Example
<h>Products</h> <h level="3">earthli WebCore</h> |
→ |
Productsearthli WebCore |
Lists
Unordered, ordered and definition lists are supported. Use a <ul> tag to wrap text in an unordered list, an <ol> tag to create an ordered one and a <dl> tag to create a definition list. A new list item is created for each newline encountered in the list. The first and last newlines in a list are always ignored and are assumed to be for tag formatting. Lists and other tags can be freely mixed and nested. Plain-text formatting will maintain vertical margins even if none are specified in the source text.
Tag attributes, if specified, are retained.
Examples
This is the way you would normally write lists, with indenting and newlines handled as expected. The indenting is not necessary here, but is used to make the source text clearer.
Example 1
<ul> One <ol> 1.25 1.50 1.75 </ol> Two Three </ul> |
→ |
|
It is possible to fully nest a list within an item, so that the item's text can continue after the list. The first item in the outer list is now formatted that way, so that 'Two' is no longer it's own list item. The only difference here is that there is no new line after 'One' in the text; this indicates that the item should continue after the embedded list.
Example 2
<ul> One<ol> 1.25 1.50 1.75 </ol> Two Three </ul> |
→ |
|
Inserting blank lines will generate blank list items.
Example 3
<ul> One <ol> 1.25 1.50 1.75 </ol> Two Three More... </ul> |
→ |
|
Definition lists generate alternating terms and definitions for each newline between the start and end tags. Two attributes are supported: dt_class and dd_class, which define the CSS class for definition terms and definitions, respectively. Use a <div> tag to include more complex formatting in the definition, as shown in the example below, which has multiple paragraphs.
Example 4
<dl dt_class="field" dd_class="notes"> First Term Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Second Term <div> Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque.</div> </dl> |
→ |
|
Links
Links
Links are written with the <a> tag. The following attributes are allowed.
title | The title of the link. Can be a longer description of the resource to which the link goes. | ||||||
---|---|---|---|---|---|---|---|
class | This will assign the specified CSS class to the link itself. | ||||||
href | The url to which the link goes. | ||||||
format | This is used only in the plain-text renderer. The default value is 'all'.
|
Example
<a href="http://www.earthli.com/software/webcore/" title="Try out the earthli WebCore!">earthli WebCore</a> | → | earthli WebCore |
Images
Images are inserted with the <img> tag. The following list of tags are supported.
The image must already exist as a URL. Inserting an image link does not magically upload a file for you.
src | The url for the image itself. Use path/resource syntax or an absolute URL. | ||||||||
---|---|---|---|---|---|---|---|---|---|
href | If this is non-empty, a link is automatically wrapped around the image with this url. Use path/resource syntax or an absolute URL. | ||||||||
attachment | If this is non-empty, both "src" and "href" are ignored. Instead, both properties are automatically generated from the attachment file name given. It's up to the user to make sure the attachment is exists and is accessible. | ||||||||
scale | A percentage value, generally between 10% and 100% | ||||||||
alt | Alternate description of the image. Should be concise. Put longer description in 'title', if needed. If this is not given, then the value for 'title' is used. | ||||||||
format |
This is used only in the plain-text renderer. The default value is 'all'. If 'alt' is not specified, 'title' is used for the text. If a url is included, 'href' is always used before 'src'.
|
Example
<img src="{icons}/file_types/file_50px" align="right" alt="WebCore File Icon" format="basic"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. <img href="http://data.earthli.com/albums/oz/images/im000185.jpg" src="http://www.earthli.com/users/oz/images/IM000185_tn.jpg" align="center" title="Ozzie in the garden"> |
→ |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. |
Videos
Videos can be embedded just as easily as images with the <media> tag. All of the properties documented for image handling work exactly the same for videos. You can reference local videos using the "attachment" property or remote videos using a full url in the "src" property. The "href" property for videos refers to the page from which the video is being retrieved and is used to format the caption, as described in standard attributes for all blocks.
src | The url for the video itself. Use path/resource syntax or an absolute URL. It won't always be easy to find out the source URL for videos you want to embed, depending on the site. For YouTube, though, it's as easy as taking the URL for the video's page and replacing "watch?v=" with "v/". |
---|---|
height | Sets the height of the video using CSS units. |
args | Arguments that are passed to the plugin. Needed by some non-standard video pages (e.g. Comedy Central). |
Example
<media author="mvonballmo" src="http://www.youtube.com/v/7ryCiS3RxQY" caption="A rainy day in Züri Oberland" href="http://www.youtube.com/watch?v=7ryCiS3RxQY" source="YouTube" width="280px" height="165px"> | → |
Paths/resources
As you'll see below, you can add images and links to your text really easily. You don't have to use absolute urls though. You can base your url on a path defined in the WebCore application by specifying a base 'location' at the start of your url, like this:
{icons}file_types/file_32px
If you leave off the extension when referring to an icon file, the default application icon extension is applied, so you get:
If, at some point, you move your icons, your reference to the icons folder won't be broken. This works for other stuff as well, like attachments. You can refer to an attachment file like this:
{att_link}my_file.zip
The path to the attachments folder for the current object will be prepended for
you. If the attachment is an image, you can use that path as the 'src' attribute
of an image and it will show up in the page. Or you can use {att_thumb}
to show only the thumbnail for it.
Supported locations (you can also add your own) are:
Alias | Description |
---|---|
application | Root url for the current application |
icons | Location of the application icons folder |
styles | Location of the application styles folder |
scripts | Location of the application scripts folder |
att_link | Location of attachments for the current object |
att_thumb | Converts the given attachment file to thumbnail name |
pic_image | Location of images for the current album. Accepts a picture ID or file name. Only available in earthli Albums |
pic_thumb | Same as "pic_image", but converts to the thumbnail name. Only available in earthli Albums |
Special
Pre-formatted text
Whitespace is interpreted differently by different output formats, so the <pre> tag can be used to force the formatter to use the exact whitespace you have specified.
Example
<pre>Some text just needs to be formatted just... ...so.</pre> |
→ |
Some text just needs to be formatted just... ...so. |
Source code
Use the <code> tag to highlight source code. This tag acts much like the pre tag but applies other styles. For inline code examples, use the <c> tag. Text is still generally formatted the same as with the code tag, except that it doesn't force block formatting.
Example 1
<code> function _process($input, $tokenizer) { $tokenizer->set_input($input); while ($tokenizer->available()) { $tokenizer->read_next(); $token = $tokenizer->current(); $this->_process($token); } }</code> |
→ |
|
Example 2
This example highlights the <c>RunProcess()</c> method. | → |
This example highlights the RunProcess() method.
|
Quoting
Often, you pull information from other sites. You can indicate this with the <iq> (inline quote) and <bq> (block quote) tags. The inline quote just applies formatting and coloring. The block quote will put the text in a separate block and indent it slightly, while also providing theme-specific coloring and formatting.
The following attributes apply to <bq> tags.
quote-style |
The default value is 'default'. This parameter applies to both the HTML and the plain-text renderer.
|
---|
Example 1
As Mark Twain once said, <iq>A banker is a fellow who lends you his umbrella when the sun is shining, but wants it back the minute it begins to rain.</iq>. | → | As Mark Twain once said, "A banker is a fellow who lends you his umbrella when the sun is shining, but wants it back the minute it begins to rain." |
Example 2
As Mark Twain once said, <bq>A banker is a fellow who lends you his umbrella when the sun is shining, but wants it back the minute it begins to rain.</bq> | → |
As Mark Twain once said, "A banker is a fellow who lends you his umbrella when the sun is shining, but wants it back the minute it begins to rain." |
Example 3
As Mark Twain once said, <bq quote-style="multiple">A banker is a fellow who lends you his umbrella when the sun is shining, but wants it back the minute it begins to rain.</bq> |
→ |
As Mark Twain once said, "A banker is a fellow who "lends you his umbrella when the sun is shining, "but wants it back the minute it begins to rain." |
Notes
The <n> tag uses a smaller font and is generally in italics to indicate that the text is supplemental or tangential. In the HTML formatter, this translates to the 'notes' CSS style. It is ignored in the plain-text formatter.
Example
<n>N.B. The following text is of draft quality.</n> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. |
→ |
N.B. The following text is of draft quality. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. |
Abstract
Use the <abstract> tag at the beginning of longer articles to provide a synopsis or a tl;dr. In the HTML formatter, this translates to the 'abstract' CSS style. It is ignored in the plain-text formatter.
The <quote-style> attribute (see quoting above) applies this tag as well, but the default value is none.
Example
<abstract>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque.</abstract> | → |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. |
Pull quotes
Use the <pullquote> tag throughout longer articles to highlight . In the HTML formatter, this translates to the 'abstract' CSS style. It is ignored in the plain-text formatter.
The <quote-style> attribute (see quoting above) applies to this tag as well, but the default value is none.
Example
<pullquote width="150px" align="right">Mauris dictum adipiscing metus sed accumsan</pullquote> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. |
→ |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. |
Boxes
When formatting code or larger quoted samples, it's nice to be able box the content out. Use the <box> tag for this, with the following (optional) attributes:
title | Float the image to the left, with text wrapped around to the right. | ||||||||
---|---|---|---|---|---|---|---|---|---|
align |
The default value is 'none'. This parameter is ignored in the plain-text renderer.
|
||||||||
width | If you specify a left or right alignment, you will probably want to specify a width as well. This attribute accepts all CSS values. | ||||||||
class | This will assign the specified CSS class to the innermost generated container (affecting the box's content). |
Example 1
<box title="Listing One"><code> function _process($input, $tokenizer) { $tokenizer->set_input($input); while ($tokenizer->available()) { $tokenizer->read_next(); $token = $tokenizer->current(); $this->_process($token); } }</code><box> |
→ |
Listing One
|
Messages
Use the <info>, <warning> or <error> tag to show a message box with some content.
Example
<info>This is an info message.</info> <warning>This is a warning message.</warning> <error>This is an error message.</error> |
→ |
|
Footnotes
Longer texts can include footnotes and end-notes by placing markers with the <fn> tag. These are replaced with integer markers (e.g. 1, 2, 3, etc.). Use the <ft> tag to create a block that forms the body of the footnote. These are also numbered incrementally. Footnotes can be placed anywhere in the text, but are commonly included at the end, separated by a horizontal rule, as shown in the example below.
Example
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus<fn>, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. <hr> <ft>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan.</ft> |
→ |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus [1], et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. [1]Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac
leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus
sed accumsan.↩
|
Clearing floats
Use a <clear> tag to clear any floating element in the preceding text. You can also use the attribute clear="both" on any block to do the same thing, but this tag lets you avoid surrounding a paragraph with <div> tags, as shown in the example below.
Example
<box align="right" width="100px">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in...</box> Lorem ipsum dolor sit amet, consectetur adipiscing elit. <clear>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in... |
→ |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in... Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in... |
Anchors
Use an <anchor> tag to provide an invisible anchor in the text to which you can link with an <a> tag. You can also use the attribute id on any other tag to do the same thing, but this tag lets you avoid adding unnecessary begin/end tags, as shown in the example below.
Example
<a href="#anchor1">Jump to the anchor</a> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque.<anchor id="anchor1"> |
→ |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in, consectetur metus. Mauris dictum adipiscing metus sed accumsan. Aenean facilisis justo lacus, et fringilla arcu luctus id. Nulla at tortor at erat sagittis pellentesque. |
Rules
Use an <hr> tag to introduce a break in the text.
Example
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in... <hr> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in... |
→ |
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in... Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ac leo accumsan, semper magna in... |
Advanced
Controlling the formatter
As discussed in special characters, you can control which types of character replacement occur within a block of text. The <macro> tag applies options, which apply for the rest of the text or until they are changed by a subsequent macro.
The following properties are supported:
convert
Pass in a comma-delimited list of converters, which should be active. Use a plus (+) sign to enable a converter and a minus (-) sign to disable it. If no sign is present, it is assumed to be enabling the converter. The converters in the list are applied in order and can overwrite one another. Choose from the following converters:
punctuation | If enabled, punctuation marks are replaced with their fancier HTML equivalents. enabled by default |
---|---|
ligature | If enabled, ligatures are replaced with their fancier HTML equivalents. disabled by default |
tags | If enabled, special html characters are converted to avoid being interpreted as HTML. The keyword "all" does not apply to this converter; you must explicitly toggle it if you want to change the setting. enabled by default |
highlight | If enabled, keywords from a search are highlighted within the text. enabled by default |
all | Applies to all converters except for "tags" |
The following examples enable ligatures:
Example 1
<macro convert="ligature"> or <macro convert="+ligature">The following examples turn off everything but highlighting:
Example 2
<macro convert="-ligature,-punctuation">or
<macro convert="-all;+highlight">The following example makes sure that all converters are turned on: