UNPKG

catberry

Version:

Catberry is an isomorphic framework for building universal front-end apps using components, Flux architecture and progressive rendering.

1,034 lines 18.1 kB
{ "cases": [ { "description": "should return ILLEGAL on empty string", "html": "", "expected": [ { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL on wrong beginning", "html": "f", "expected": [ { "name": "ILLEGAL", "value": "f" } ] }, { "description": "should return ILLEGAL on wrong tag name", "html": "<>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "ILLEGAL", "value": ">" } ] }, { "description": "should return ILLEGAL on null symbol after tag name", "html": "<tag\u0000>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "ILLEGAL", "value": "\u0000" } ] }, { "description": "should return ILLEGAL if wrong symbol instead attribute name", "html": "<tag <>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ILLEGAL", "value": "<" } ] }, { "description": "should return ILLEGAL if end after attribute name", "html": "<tag attr", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "attr" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL on wrong attribute name", "html": "<name a\"=123>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "ILLEGAL", "value": "\"" } ] }, { "description": "should return ILLEGAL on wrong double-quoted attribute value", "html": "<name a=\"123\u0000\">", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=\"" }, { "name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "value": "123" }, { "name": "ILLEGAL", "value": "\u0000" } ] }, { "description": "should return ILLEGAL on wrong single-quoted attribute value", "html": "<name a='123\u0000'>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "='" }, { "name": "ATTRIBUTE_VALUE_SINGLE_QUOTED", "value": "123" }, { "name": "ILLEGAL", "value": "\u0000" } ] }, { "description": "should return ILLEGAL if end after single-quoted attribute value", "html": "<name a='123", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "='" }, { "name": "ATTRIBUTE_VALUE_SINGLE_QUOTED", "value": "123" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL if end after unquoted attribute value", "html": "<name a=123", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=" }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "123" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL if wrong symbol after unquoted attribute value", "html": "<name a=123\u0000", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=" }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "123" }, { "name": "ILLEGAL", "value": "\u0000" } ] }, { "description": "should return ILLEGAL if tag ends after equals", "html": "<name a=>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=" }, { "name": "ILLEGAL", "value": ">" } ] }, { "description": "should return ILLEGAL if tag end is absent after tag name", "html": "<name", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL if wrong tag end", "html": "<name /", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "SELF_CLOSING_START_TAG_STATE", "value": "/" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL on absent closing quote", "html": "<name a=\"123 b>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=\"" }, { "name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "value": "123 b>" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL on absent tag end after closing quote", "html": "<name a=\"123 b\"", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=\"" }, { "name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "value": "123 b" }, { "name": "AFTER_ATTRIBUTE_VALUE_QUOTED", "value": "\"" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should return ILLEGAL on absent tag end after equal", "html": "<name a=", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "name" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "a" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=" }, { "name": "ILLEGAL", "value": "" } ] }, { "description": "should correctly tokenize tag without attributes", "html": "<tag>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize self-closing tag without attributes", "html": "<tag />", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "SELF_CLOSING_START_TAG_STATE", "value": "/" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize self-closing tag with whitespaces and without attributes", "html": "<tag\t\n />", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": "\t\n " }, { "name": "SELF_CLOSING_START_TAG_STATE", "value": "/" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize tag with quoted attributes", "html": "<tag some1=\"attribute value\" some2='attribute value2'>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=\"" }, { "name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "value": "attribute value" }, { "name": "AFTER_ATTRIBUTE_VALUE_QUOTED", "value": "\"" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some2" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "='" }, { "name": "ATTRIBUTE_VALUE_SINGLE_QUOTED", "value": "attribute value2" }, { "name": "AFTER_ATTRIBUTE_VALUE_QUOTED", "value": "'" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize tag with unquoted attributes", "html": "<tag some1=value some2 = 123 >", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=" }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "value" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some2" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": " " }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "= " }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "123" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize self-closing tag with unquoted attributes and spaces", "html": "<tag some1 = value some2 = 123 />", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": " " }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "= " }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "value" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some2" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": " " }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "= " }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "123" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "SELF_CLOSING_START_TAG_STATE", "value": "/" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize tag with unquoted attributes without whitespace", "html": "<tag some1=value some2=123>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=" }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "value" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some2" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=" }, { "name": "ATTRIBUTE_VALUE_UNQUOTED", "value": "123" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize tag with boolean attributes", "html": "<tag some1 some2 >", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some2" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": " " }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize self-closing tag with boolean attributes", "html": "<tag some1 some2 />", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some2" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": " " }, { "name": "SELF_CLOSING_START_TAG_STATE", "value": "/" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize tag with boolean attributes and whitespaces", "html": "<tag\t\n some1\t\n some2\t\n />", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": "\t\n " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": "\t\n " }, { "name": "ATTRIBUTE_NAME", "value": "some2" }, { "name": "AFTER_ATTRIBUTE_NAME", "value": "\t\n " }, { "name": "SELF_CLOSING_START_TAG_STATE", "value": "/" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize tag with end after boolean attribute", "html": "<tag some1>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize self-closing tag with end after boolean attribute", "html": "<tag some1/>", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "tag" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "some1" }, { "name": "SELF_CLOSING_START_TAG_STATE", "value": "/" }, { "name": "TAG_CLOSE", "value": ">" } ] }, { "description": "should correctly tokenize real tag", "html": "<div id=\"css-stamp\" style=\"position: absolute !important; visibility: hidden !important\" class=\"\">", "expected": [ { "name": "TAG_OPEN", "value": "<" }, { "name": "TAG_NAME", "value": "div" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "id" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=\"" }, { "name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "value": "css-stamp" }, { "name": "AFTER_ATTRIBUTE_VALUE_QUOTED", "value": "\"" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "style" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=\"" }, { "name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "value": "position: absolute !important; visibility: hidden !important" }, { "name": "AFTER_ATTRIBUTE_VALUE_QUOTED", "value": "\"" }, { "name": "BEFORE_ATTRIBUTE_NAME", "value": " " }, { "name": "ATTRIBUTE_NAME", "value": "class" }, { "name": "BEFORE_ATTRIBUTE_VALUE", "value": "=\"" }, { "name": "ATTRIBUTE_VALUE_DOUBLE_QUOTED", "value": "" }, { "name": "AFTER_ATTRIBUTE_VALUE_QUOTED", "value": "\"" }, { "name": "TAG_CLOSE", "value": ">" } ] } ] }