hdml v3.0.0
HDML
Table of Contents generated with DocToc
HDML
HDML is a very simplistic HTML tag generation library for NodeJS
escape_text: ( text ) ->
—Escapetext
for use in HTML (by turning all occurrences of<
,>
, and&
into<
,>
, and&
, respectively).escape_atr_text: ( x ) ->
—applyescape_text x
and then replace all occurrences of single quotation mark and newline characters by'
and
, respectively.
V1 API
create_tag: ( sigil, tag, atrs = null ) ->
—Given asigil
to mark the role of the tag, a tagname, and an optional attributes object, return a HTML tag literal.create_opening_tag: ( tag, atrs = null ) ->
—Create an opening tag like<div atr='value'>
.create_selfclosing_tag: ( tag, atrs = null ) ->
—Create an self-closing tag like<path atr='value'/>
(not used in HTML5 but in SVG).create_closing_tag: ( tag ) ->
—Create a closing tag like</div>
.
V2 API
NOTE—preliminary version; API will likely change to account for nesting tags with pair
open: ( tag, atrs ) ->
—create an opening tag.close: ( tag ) ->
—create a closing tag.single: ( tag, atrs ) ->
—create a self-closing tag.text: ( text ) ->
—create a properly escaped text.pair: ( tag, atrs = {}, content = '' ) ->
—create a tag with content.
Compact Tagnames
parse_compact_tagname: ( compact_tagname ) ->
hdml = new Hdml { use_compact_tags: true, strict_compact_tags: true, }
<div#c432.foo.bar>...</div>
=> <div id=c432 class='foo bar'>...</div>
<p.noindent>...</p>
=> <p class=noindent>...</p>
Notes
All tag names will be written as passed-in; this may result in illegal tag names. This may change in the future.
All attributes are always written with single quotes.
all attribute values must be strings, except for
true
,false
,''
,none
andundefined
, which are treated as boolean values with a shortened syntax:- an attribute whose value is
true
or the empty string is rendered with its name only - an attribute whose value is
false
,null
orundefined
is not rendered at all
- an attribute whose value is
To Do
- – parse short tags?
- – return objects not strings?
- – see simpler interface in webscraper
- – add
cfg.default_tag
which allows to get e.g.<div id='c1' class='bar baz'>
from#c1.bar.baz
- – implement recommendations, standard as explained in https://mathiasbynens.be/notes/unquoted-attribute-values
Is Done
- + validate that attribute values are texts, do not implicitly convert non-text attribute values
- + validate that tag names are texts, do not implicitly convert non-text values
- + integrate
dbay-voge/hdml2
- + for practical reasons and in accordance with the HTML standard: 2.3.2 Boolean
attributes, make it
so that
- an attribute whose value is
true
or the empty string is rendered with its name only - an attribute whose value is
false
,null
orundefined
is not rendered at all
- an attribute whose value is