@@ -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