flyx / emerald

HTML5 templating engine for Nimrod
Do What The F*ck You Want To Public License
95 stars 9 forks source link

Doesn't work with Nim 0.10.2 and newer #1

Closed def- closed 9 years ago

def- commented 9 years ago

For once defer is now a keyword. The rest seems to be macro-related.

jovial commented 9 years ago

Sorry, my compiler was a bit old. There are still a few issues to fix with the latest devel. The first of which seems to be a not nil check. I will investigate...

flyx commented 9 years ago

I don't have a current compiler, does it work with the 0.10.2 release? If so, I don't think it is wise to keep up with Nim devel until there's a new release.

jovial commented 9 years ago

Yeah, I just tested on 0.10.2 and it works. On devel there are some issues with missing keys in the table returned by html5tags (maybe related to the recent tables changes). tagdef generates:

  proc html5tags*(): PTagList {.compileTime.} =
    var html5tagsCache: TTagList
    if true:
      new(result)
      html5tagsCache = initTable[string, PTagDef]()
      html5tagsCache["a"] = newPTagDef((id: TTagId(2), contentCategories: {
          flow_content, phrasing_content, interactive_content},
                                        permittedContent: {transparent},
                                        forbiddenContent: {}, permittedTags: {},
                                        forbiddenTags: {}, tagOmission: false,
                                        requiredAttrs: initSet[string](), optionalAttrs: toSet[
          string](["rel", "href", "hreflang", "ping", "type", "media", "target",
                   "download"])))
      html5tagsCache["abbr"] = newPTagDef((id: TTagId(3),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["b"] = newPTagDef((id: TTagId(4), contentCategories: {
          flow_content, phrasing_content}, permittedContent: {phrasing_content},
                                        forbiddenContent: {}, permittedTags: {},
                                        forbiddenTags: {}, tagOmission: false,
                                        requiredAttrs: initSet[string](),
                                        optionalAttrs: initSet[string]()))
      html5tagsCache["bdi"] = newPTagDef((id: TTagId(5),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["bdo"] = newPTagDef((id: TTagId(6),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["cite"] = newPTagDef((id: TTagId(7),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["code"] = newPTagDef((id: TTagId(8),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["em"] = newPTagDef((id: TTagId(9),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["h1"] = newPTagDef((id: TTagId(10),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["h2"] = newPTagDef((id: TTagId(11),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["h3"] = newPTagDef((id: TTagId(12),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["h4"] = newPTagDef((id: TTagId(13),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["h5"] = newPTagDef((id: TTagId(14),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["h6"] = newPTagDef((id: TTagId(15),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["i"] = newPTagDef((id: TTagId(16), contentCategories: {
          flow_content, phrasing_content}, permittedContent: {phrasing_content},
                                        forbiddenContent: {}, permittedTags: {},
                                        forbiddenTags: {}, tagOmission: false,
                                        requiredAttrs: initSet[string](),
                                        optionalAttrs: initSet[string]()))
      html5tagsCache["kbd"] = newPTagDef((id: TTagId(17),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["mark"] = newPTagDef((id: TTagId(18),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["samp"] = newPTagDef((id: TTagId(19),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["small"] = newPTagDef((id: TTagId(20),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["span"] = newPTagDef((id: TTagId(21),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["strong"] = newPTagDef((id: TTagId(22),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["sub"] = newPTagDef((id: TTagId(23),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["sup"] = newPTagDef((id: TTagId(24),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["u"] = newPTagDef((id: TTagId(25), contentCategories: {
          flow_content, phrasing_content}, permittedContent: {phrasing_content},
                                        forbiddenContent: {}, permittedTags: {},
                                        forbiddenTags: {}, tagOmission: false,
                                        requiredAttrs: initSet[string](),
                                        optionalAttrs: initSet[string]()))
      html5tagsCache["var"] = newPTagDef((id: TTagId(26),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["address"] = newPTagDef((id: TTagId(27),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {heading_content, sectioning_content},
          permittedTags: {},
          forbiddenTags: {TTagId(27), TTagId(28), TTagId(29)},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["area"] = newPTagDef((id: TTagId(30),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string](["rel",
          "coords", "href", "hreflang", "type", "media", "target", "download",
          "alt", "shape"])))
      html5tagsCache["article"] = newPTagDef((id: TTagId(32),
          contentCategories: {flow_content, sectioning_content},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(31)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["aside"] = newPTagDef((id: TTagId(33),
          contentCategories: {flow_content, sectioning_content},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(31)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["nav"] = newPTagDef((id: TTagId(34),
          contentCategories: {flow_content, sectioning_content},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(31)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["section"] = newPTagDef((id: TTagId(35),
          contentCategories: {flow_content, sectioning_content},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(31)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["audio"] = newPTagDef((id: TTagId(38), contentCategories: {
          flow_content, embedded_content, interactive_content},
          permittedContent: {transparent}, forbiddenContent: {},
          permittedTags: {TTagId(36), TTagId(37)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["base"] = newPTagDef((id: TTagId(39),
          contentCategories: {metadata_content}, permittedContent: {},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: true, requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["href", "target"])))
      html5tagsCache["blockquote"] = newPTagDef((id: TTagId(40),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["cite"])))
      html5tagsCache["body"] = newPTagDef((id: TTagId(41),
          contentCategories: {}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](), optionalAttrs: toSet[
          string](["onfocus", "ononline", "onafterprint", "onpopstate",
                   "onerror", "onunload", "onoffline", "onload", "onmessage",
                   "onresize", "onblur", "onstorage", "onhashchange", "onredo",
                   "onbeforeprint", "onundo", "onbeforeunload"])))
      html5tagsCache["br"] = newPTagDef((id: TTagId(42),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["wbr"] = newPTagDef((id: TTagId(43),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["button"] = newPTagDef((id: TTagId(44), contentCategories: {
          flow_content, phrasing_content, interactive_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string]([
          "form", "formnovalidate", "disabled", "autofocus", "name",
          "formtarget", "formenctype", "type", "value", "formmethod",
          "formaction"])))
      html5tagsCache["canvas"] = newPTagDef((id: TTagId(45), contentCategories: {
          flow_content, phrasing_content, embedded_content},
          permittedContent: {transparent},
          forbiddenContent: {interactive_content}, permittedTags: {},
          forbiddenTags: {TTagId(2), TTagId(44)}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["height", "width"])))
      html5tagsCache["caption"] = newPTagDef((id: TTagId(46),
          contentCategories: {}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["col"] = newPTagDef((id: TTagId(47), contentCategories: {},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["span"])))
      html5tagsCache["colgroup"] = newPTagDef((id: TTagId(48),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(47)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["span"])))
      html5tagsCache["content"] = newPTagDef((id: TTagId(49),
          contentCategories: {transparent}, permittedContent: {},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["data"] = newPTagDef((id: TTagId(50),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: toSet[string](["value"]),
          optionalAttrs: initSet[string]()))
      html5tagsCache["datalist"] = newPTagDef((id: TTagId(52),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {TTagId(51)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["dd"] = newPTagDef((id: TTagId(53), contentCategories: {},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["del"] = newPTagDef((id: TTagId(54),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {transparent}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["cite", "datetime"])))
      html5tagsCache["ins"] = newPTagDef((id: TTagId(55),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {transparent}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["cite", "datetime"])))
      html5tagsCache["details"] = newPTagDef((id: TTagId(57),
          contentCategories: {flow_content, interactive_content},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {TTagId(56)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["open"])))
      html5tagsCache["dfn"] = newPTagDef((id: TTagId(58),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(58)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["div"] = newPTagDef((id: TTagId(59),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["dl"] = newPTagDef((id: TTagId(61),
          contentCategories: {flow_content}, permittedContent: {},
          forbiddenContent: {}, permittedTags: {TTagId(53), TTagId(60)},
          forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["dt"] = newPTagDef((id: TTagId(60), contentCategories: {},
          permittedContent: {flow_content},
          forbiddenContent: {heading_content, sectioning_content},
          permittedTags: {}, forbiddenTags: {TTagId(62), TTagId(63)},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["element"] = newPTagDef((id: TTagId(64),
          contentCategories: {transparent}, permittedContent: {},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["embed"] = newPTagDef((id: TTagId(65),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["height", "width", "src", "type"])))
      html5tagsCache["fieldset"] = newPTagDef((id: TTagId(67),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {TTagId(66)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["form", "disabled", "name"])))
      html5tagsCache["figcaption"] = newPTagDef((id: TTagId(68),
          contentCategories: {}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["figure"] = newPTagDef((id: TTagId(69),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {TTagId(68)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["footer"] = newPTagDef((id: TTagId(63),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {TTagId(62), TTagId(63), TTagId(70)},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["header"] = newPTagDef((id: TTagId(62),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {TTagId(62), TTagId(63), TTagId(70)},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["form"] = newPTagDef((id: TTagId(71),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {TTagId(71)},
          tagOmission: false, requiredAttrs: initSet[string](), optionalAttrs: toSet[
          string](["accept_charset", "method", "action", "enctype", "name",
                   "autocomplete", "novalidate", "target"])))
      html5tagsCache["head"] = newPTagDef((id: TTagId(72),
          contentCategories: {}, permittedContent: {metadata_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["hr"] = newPTagDef((id: TTagId(73),
          contentCategories: {flow_content}, permittedContent: {},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: true, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["html"] = newPTagDef((id: TTagId(75),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(72), TTagId(74)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["manifest"])))
      html5tagsCache["iframe"] = newPTagDef((id: TTagId(76),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string]([
          "height", "width", "src", "name", "seamless", "allowfullscreen",
          "srcdoc", "sandbox"])))
      html5tagsCache["img"] = newPTagDef((id: TTagId(77),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: toSet[string](["src"]), optionalAttrs: toSet[string]([
          "height", "width", "ismap", "crossorigin", "usemap", "alt", "srcset"])))
      html5tagsCache["input"] = newPTagDef((id: TTagId(78),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string]([
          "selectionDirection", "form", "height", "max", "width", "step",
          "pattern", "formnovalidate", "inputmode", "list", "autosave",
          "disabled", "accept", "autofocus", "name", "readonly", "formtarget",
          "required", "autocomplete", "src", "formenctype", "type",
          "spellcheck", "placeholder", "multiple", "size", "value", "checked",
          "maxlength", "minlength", "min", "formmethod", "formaction"])))
      html5tagsCache["keygen"] = newPTagDef((id: TTagId(79),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string](
          ["keytype", "form", "challenge", "disabled", "autofocus", "name"])))
      html5tagsCache["label"] = newPTagDef((id: TTagId(80), contentCategories: {
          flow_content, phrasing_content, interactive_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(80)}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["form", "accesskey", "for"])))
      html5tagsCache["legend"] = newPTagDef((id: TTagId(66),
          contentCategories: {}, permittedContent: {phrasing_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["li"] = newPTagDef((id: TTagId(81), contentCategories: {},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["value"])))
      html5tagsCache["link"] = newPTagDef((id: TTagId(82), contentCategories: {
          flow_content, phrasing_content, metadata_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string](
          ["rel", "href", "hreflang", "sizes", "type", "crossorigin", "media"])))
      html5tagsCache["main"] = newPTagDef((id: TTagId(70),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["map"] = newPTagDef((id: TTagId(83),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {transparent}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: toSet[string](["name"]),
          optionalAttrs: initSet[string]()))
      html5tagsCache["menu"] = newPTagDef((id: TTagId(85),
          contentCategories: {flow_content}, permittedContent: {flow_content},
          forbiddenContent: {}, permittedTags: {TTagId(81), TTagId(84)},
          forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["type", "label"])))
      html5tagsCache["menuitem"] = newPTagDef((id: TTagId(84),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string]([
          "command", "disabled", "default", "type", "icon", "label",
          "radiogroup", "checked"])))
      html5tagsCache["meta"] = newPTagDef((id: TTagId(86), contentCategories: {
          flow_content, phrasing_content, metadata_content},
          permittedContent: {}, forbiddenContent: {}, permittedTags: {},
          forbiddenTags: {}, tagOmission: true,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string](
          ["charset", "name", "content", "http_equiv"])))
      html5tagsCache["meter"] = newPTagDef((id: TTagId(87),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(87)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string](
          ["max", "form", "high", "value", "low", "min", "optimum"])))
      html5tagsCache["noscript"] = newPTagDef((id: TTagId(88), contentCategories: {
          flow_content, phrasing_content, metadata_content},
          permittedContent: {transparent}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(88)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["object"] = newPTagDef((id: TTagId(90), contentCategories: {
          flow_content, phrasing_content, embedded_content, interactive_content},
          permittedContent: {transparent}, forbiddenContent: {},
          permittedTags: {TTagId(89)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string](
          ["height", "width", "name", "data", "type", "usemap"])))
      html5tagsCache["ol"] = newPTagDef((id: TTagId(92),
          contentCategories: {flow_content}, permittedContent: {},
          forbiddenContent: {}, permittedTags: {TTagId(91)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["type", "reversed", "start"])))
      html5tagsCache["optgroup"] = newPTagDef((id: TTagId(94),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(93)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: toSet[string](["label"]),
          optionalAttrs: toSet[string](["disabled"])))
      html5tagsCache["option"] = newPTagDef((id: TTagId(93),
          contentCategories: {}, permittedContent: {text_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](), optionalAttrs: toSet[
          string](["disabled", "selected", "label", "value"])))
      html5tagsCache["output"] = newPTagDef((id: TTagId(95),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["form", "for", "name"])))
      html5tagsCache["p"] = newPTagDef((id: TTagId(96),
                                        contentCategories: {flow_content},
                                        permittedContent: {phrasing_content},
                                        forbiddenContent: {}, permittedTags: {},
                                        forbiddenTags: {}, tagOmission: false,
                                        requiredAttrs: initSet[string](),
                                        optionalAttrs: initSet[string]()))
      html5tagsCache["pre"] = newPTagDef((id: TTagId(97),
          contentCategories: {flow_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["param"] = newPTagDef((id: TTagId(89),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: true,
          requiredAttrs: toSet[string](["name", "value"]),
          optionalAttrs: initSet[string]()))
      html5tagsCache["progress"] = newPTagDef((id: TTagId(98),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(98)}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["max", "value"])))
      html5tagsCache["q"] = newPTagDef((id: TTagId(99), contentCategories: {
          flow_content, phrasing_content}, permittedContent: {phrasing_content},
                                        forbiddenContent: {}, permittedTags: {},
                                        forbiddenTags: {}, tagOmission: false,
                                        requiredAttrs: initSet[string](),
                                        optionalAttrs: toSet[string](["cite"])))
      html5tagsCache["rp"] = newPTagDef((id: TTagId(100), contentCategories: {},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["rt"] = newPTagDef((id: TTagId(101), contentCategories: {},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["ruby"] = newPTagDef((id: TTagId(102),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {TTagId(100), TTagId(101)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["s"] = newPTagDef((id: TTagId(103), contentCategories: {
          flow_content, phrasing_content}, permittedContent: {transparent},
                                        forbiddenContent: {}, permittedTags: {},
                                        forbiddenTags: {}, tagOmission: false,
                                        requiredAttrs: initSet[string](),
                                        optionalAttrs: initSet[string]()))
      html5tagsCache["script"] = newPTagDef((id: TTagId(104), contentCategories: {
          flow_content, phrasing_content, metadata_content},
          permittedContent: {text_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["async", "src", "type", "defer"])))
      html5tagsCache["select"] = newPTagDef((id: TTagId(105), contentCategories: {
          flow_content, phrasing_content, interactive_content},
          permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(93), TTagId(94)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](), optionalAttrs: toSet[
          string](["form", "disabled", "required", "autofocus", "name",
                   "multiple", "size"])))
      html5tagsCache["source"] = newPTagDef((id: TTagId(106),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: true,
          requiredAttrs: toSet[string](["src"]),
          optionalAttrs: toSet[string](["type", "media"])))
      html5tagsCache["style"] = newPTagDef((id: TTagId(107),
          contentCategories: {flow_content, metadata_content},
          permittedContent: {text_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string](
          ["disabled", "scoped", "type", "media", "title"])))
      html5tagsCache["summary"] = newPTagDef((id: TTagId(108),
          contentCategories: {}, permittedContent: {phrasing_content},
          forbiddenContent: {}, permittedTags: {}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["table"] = newPTagDef((id: TTagId(115),
          contentCategories: {flow_content}, permittedContent: {},
          forbiddenContent: {}, permittedTags: {TTagId(109), TTagId(110),
          TTagId(111), TTagId(112), TTagId(113), TTagId(114)},
          forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["tbody"] = newPTagDef((id: TTagId(112),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(114)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["tfoot"] = newPTagDef((id: TTagId(113),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(114)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["thead"] = newPTagDef((id: TTagId(116),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(114)}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["td"] = newPTagDef((id: TTagId(117), contentCategories: {},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["colspan", "headers", "rowspan"])))
      html5tagsCache["th"] = newPTagDef((id: TTagId(118), contentCategories: {},
          permittedContent: {flow_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["colspan", "headers", "rowspan"])))
      html5tagsCache["template"] = newPTagDef((id: TTagId(119), contentCategories: {
          flow_content, phrasing_content, metadata_content},
          permittedContent: {any_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["textarea"] = newPTagDef((id: TTagId(120), contentCategories: {
          flow_content, phrasing_content, interactive_content},
          permittedContent: {text_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string]([
          "selectionDirection", "form", "selectionStart", "cols", "wrap",
          "disabled", "readonly", "autofocus", "name", "required",
          "autocomplete", "spellcheck", "placeholder", "selectionEnd", "rows",
          "minlength", "maxlength"])))
      html5tagsCache["time"] = newPTagDef((id: TTagId(121),
          contentCategories: {flow_content, phrasing_content},
          permittedContent: {phrasing_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {TTagId(121)}, tagOmission: false,
          requiredAttrs: initSet[string](),
          optionalAttrs: toSet[string](["datetime"])))
      html5tagsCache["title"] = newPTagDef((id: TTagId(122),
          contentCategories: {metadata_content},
          permittedContent: {text_content}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["tr"] = newPTagDef((id: TTagId(114), contentCategories: {},
          permittedContent: {}, forbiddenContent: {},
          permittedTags: {TTagId(117), TTagId(118)}, forbiddenTags: {},
          tagOmission: false, requiredAttrs: initSet[string](),
          optionalAttrs: initSet[string]()))
      html5tagsCache["track"] = newPTagDef((id: TTagId(123),
          contentCategories: {}, permittedContent: {}, forbiddenContent: {},
          permittedTags: {}, forbiddenTags: {}, tagOmission: true,
          requiredAttrs: toSet[string](["src"]),
          optionalAttrs: toSet[string](["srclang", "default", "label", "kind"])))
      html5tagsCache["ul"] = newPTagDef((id: TTagId(124),
          contentCategories: {flow_content}, permittedContent: {},
          forbiddenContent: {},
          permittedTags: {TTagId(91), TTagId(92), TTagId(124)},
          forbiddenTags: {}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: initSet[string]()))
      html5tagsCache["video"] = newPTagDef((id: TTagId(126), contentCategories: {
          flow_content, phrasing_content, embedded_content, interactive_content},
          permittedContent: {transparent}, forbiddenContent: {},
          permittedTags: {TTagId(123)},
          forbiddenTags: {TTagId(125), TTagId(126)}, tagOmission: false,
          requiredAttrs: initSet[string](), optionalAttrs: toSet[string]([
          "preload", "height", "loop", "width", "controls", "played", "src",
          "crossorigin", "poster", "autoplay", "muted", "buffered"])))
    result[] = html5tagsCache

but only the following keys are present in the table:

tr
rt
summary
template
track
time
tbody
ul
textarea
script
style
s
select
td
video
table
progress
q
rp
source
thead
tfoot
th
title
param
ruby
flyx commented 9 years ago

Well I'd say that's a compiler bug. I don't think it makes much sense to implement workarounds for bleeding edge compiler versions. When a new release comes around and the issue persists, we can have a look at it again, and for the time being, users should use 0.10.2.

jovial commented 9 years ago

Yeah, fair enough. I have reported the issue, see Araq/Nim#2297.