Skip to content

Commit 86042f6

Browse files
now parses everything except arrays
1 parent 789b2f8 commit 86042f6

File tree

4 files changed

+233
-156
lines changed

4 files changed

+233
-156
lines changed

Sources/HTMLKitMacros/HTMLElement.swift

Lines changed: 5 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -334,12 +334,12 @@ private extension HTMLElementMacro {
334334
}
335335
// MARK: Parse element
336336
static func parse_element(expr: ExprSyntax) -> String? {
337-
guard let function:FunctionCallExprSyntax = expr.as(FunctionCallExprSyntax.self) else { return nil }
338-
var string:String = "\(function)"
337+
guard expr.is(FunctionCallExprSyntax.self) else { return nil }
338+
var string:String = "\(expr)"
339339
while string.first?.isWhitespace ?? false {
340340
string.removeFirst()
341341
}
342-
guard let element:HTMLElement = parse(rawValue: string) else { return nil }
342+
guard let element:HTMLElement = HTMLElementValueType.parse_element(rawValue: string) else { return nil }
343343
return element.description
344344
}
345345
// MARK: Parse Literal Value
@@ -409,7 +409,7 @@ private extension HTMLElementMacro {
409409
while string.first?.isWhitespace ?? false {
410410
string.removeFirst()
411411
}
412-
if let element:HTMLElement = parse(rawValue: string) {
412+
if let element:HTMLElement = HTMLElementValueType.parse_element(rawValue: string) {
413413
let string:String = element.description
414414
return (string, string.contains("\\(") ? .interpolation : .string)
415415
}
@@ -619,127 +619,4 @@ extension HTMLElementAttribute.Extra {
619619
}
620620
}
621621
}
622-
}
623-
624-
// MARK: Parse from rawValue
625-
extension HTMLElementMacro {
626-
static func parse(rawValue: String) -> HTMLElement? {
627-
guard let key:Substring = rawValue.split(separator: "(").first else { return nil }
628-
switch key {
629-
case "a": return a(rawValue: rawValue)
630-
case "abbr": return abbr(rawValue: rawValue)
631-
case "address": return address(rawValue: rawValue)
632-
case "area": return area(rawValue: rawValue)
633-
case "article": return article(rawValue: rawValue)
634-
case "aside": return aside(rawValue: rawValue)
635-
case "audio": return audio(rawValue: rawValue)
636-
case "b": return b(rawValue: rawValue)
637-
case "base": return base(rawValue: rawValue)
638-
case "bdi": return bdi(rawValue: rawValue)
639-
case "bdo": return bdo(rawValue: rawValue)
640-
case "blockquote": return blockquote(rawValue: rawValue)
641-
case "body": return body(rawValue: rawValue)
642-
case "br": return br(rawValue: rawValue)
643-
case "button": return button(rawValue: rawValue)
644-
case "canvas": return canvas(rawValue: rawValue)
645-
case "caption": return caption(rawValue: rawValue)
646-
case "cite": return cite(rawValue: rawValue)
647-
case "code": return code(rawValue: rawValue)
648-
case "col": return col(rawValue: rawValue)
649-
case "colgroup": return colgroup(rawValue: rawValue)
650-
case "data": return data(rawValue: rawValue)
651-
case "datalist": return datalist(rawValue: rawValue)
652-
case "dd": return dd(rawValue: rawValue)
653-
case "del": return del(rawValue: rawValue)
654-
case "details": return details(rawValue: rawValue)
655-
case "dfn": return dfn(rawValue: rawValue)
656-
case "dialog": return dialog(rawValue: rawValue)
657-
case "div": return div(rawValue: rawValue)
658-
case "dl": return dl(rawValue: rawValue)
659-
case "dt": return dt(rawValue: rawValue)
660-
case "em": return em(rawValue: rawValue)
661-
case "embed": return embed(rawValue: rawValue)
662-
case "fencedframe": return fencedframe(rawValue: rawValue)
663-
case "fieldset": return fieldset(rawValue: rawValue)
664-
case "figcaption": return figcaption(rawValue: rawValue)
665-
case "figure": return figure(rawValue: rawValue)
666-
case "footer": return footer(rawValue: rawValue)
667-
case "form": return form(rawValue: rawValue)
668-
case "h1": return h1(rawValue: rawValue)
669-
case "h2": return h2(rawValue: rawValue)
670-
case "h3": return h3(rawValue: rawValue)
671-
case "h4": return h4(rawValue: rawValue)
672-
case "h5": return h5(rawValue: rawValue)
673-
case "h6": return h6(rawValue: rawValue)
674-
case "head": return head(rawValue: rawValue)
675-
case "header": return header(rawValue: rawValue)
676-
case "hgroup": return hgroup(rawValue: rawValue)
677-
case "hr": return hr(rawValue: rawValue)
678-
case "i": return i(rawValue: rawValue)
679-
case "iframe": return iframe(rawValue: rawValue)
680-
case "img": return img(rawValue: rawValue)
681-
case "input": return input(rawValue: rawValue)
682-
case "ins": return ins(rawValue: rawValue)
683-
case "kbd": return kbd(rawValue: rawValue)
684-
case "label": return label(rawValue: rawValue)
685-
case "legend": return legend(rawValue: rawValue)
686-
case "li": return li(rawValue: rawValue)
687-
case "link": return link(rawValue: rawValue)
688-
case "main": return main(rawValue: rawValue)
689-
case "map": return map(rawValue: rawValue)
690-
case "mark": return mark(rawValue: rawValue)
691-
case "menu": return menu(rawValue: rawValue)
692-
case "meta": return meta(rawValue: rawValue)
693-
case "meter": return meter(rawValue: rawValue)
694-
case "nav": return nav(rawValue: rawValue)
695-
case "noscript": return noscript(rawValue: rawValue)
696-
case "object": return object(rawValue: rawValue)
697-
case "ol": return ol(rawValue: rawValue)
698-
case "optgroup": return optgroup(rawValue: rawValue)
699-
case "option": return option(rawValue: rawValue)
700-
case "output": return output(rawValue: rawValue)
701-
case "p": return p(rawValue: rawValue)
702-
case "picture": return picture(rawValue: rawValue)
703-
case "portal": return portal(rawValue: rawValue)
704-
case "pre": return pre(rawValue: rawValue)
705-
case "progress": return progress(rawValue: rawValue)
706-
case "q": return q(rawValue: rawValue)
707-
case "rp": return rp(rawValue: rawValue)
708-
case "rt": return rt(rawValue: rawValue)
709-
case "ruby": return ruby(rawValue: rawValue)
710-
case "s": return s(rawValue: rawValue)
711-
case "samp": return samp(rawValue: rawValue)
712-
case "script": return script(rawValue: rawValue)
713-
case "search": return search(rawValue: rawValue)
714-
case "section": return section(rawValue: rawValue)
715-
case "select": return select(rawValue: rawValue)
716-
case "slot": return slot(rawValue: rawValue)
717-
case "small": return small(rawValue: rawValue)
718-
case "source": return source(rawValue: rawValue)
719-
case "span": return span(rawValue: rawValue)
720-
case "strong": return strong(rawValue: rawValue)
721-
case "style": return style(rawValue: rawValue)
722-
case "sub": return sub(rawValue: rawValue)
723-
case "summary": return summary(rawValue: rawValue)
724-
case "sup": return sup(rawValue: rawValue)
725-
case "table": return table(rawValue: rawValue)
726-
case "tbody": return tbody(rawValue: rawValue)
727-
case "td": return td(rawValue: rawValue)
728-
case "template": return template(rawValue: rawValue)
729-
case "textarea": return textarea(rawValue: rawValue)
730-
case "tfoot": return tfoot(rawValue: rawValue)
731-
case "th": return th(rawValue: rawValue)
732-
case "thead": return thead(rawValue: rawValue)
733-
case "time": return time(rawValue: rawValue)
734-
case "title": return title(rawValue: rawValue)
735-
case "tr": return tr(rawValue: rawValue)
736-
case "track": return track(rawValue: rawValue)
737-
case "u": return u(rawValue: rawValue)
738-
case "ul": return ul(rawValue: rawValue)
739-
//case "var": return var(rawValue: rawValue)
740-
case "video": return video(rawValue: rawValue)
741-
case "wbr": return wbr(rawValue: rawValue)
742-
default: return nil
743-
}
744-
}
745-
}
622+
}

0 commit comments

Comments
 (0)