@@ -577,22 +577,17 @@ class _ZulipContentParser {
577
577
578
578
final dom.Element katexElement;
579
579
if (! block) {
580
- assert (element.localName == 'span'
581
- && element.classes.length == 1
582
- && element.classes.contains ('katex' ));
580
+ assert (element.localName == 'span' && element.className == 'katex' );
583
581
584
582
katexElement = element;
585
583
} else {
586
- assert (element.localName == 'span'
587
- && element.classes.length == 1
588
- && element.classes.contains ('katex-display' ));
584
+ assert (element.localName == 'span' && element.className == 'katex-display' );
589
585
590
586
if (element.nodes.length != 1 ) return null ;
591
587
final child = element.nodes.single;
592
588
if (child is ! dom.Element ) return null ;
593
589
if (child.localName != 'span' ) return null ;
594
- if (child.classes.length != 1 ) return null ;
595
- if (! child.classes.contains ('katex' )) return null ;
590
+ if (child.className != 'katex' ) return null ;
596
591
katexElement = child;
597
592
}
598
593
@@ -602,8 +597,7 @@ class _ZulipContentParser {
602
597
final child = katexElement.nodes.first;
603
598
if (child is ! dom.Element ) return null ;
604
599
if (child.localName != 'span' ) return null ;
605
- if (child.classes.length != 1 ) return null ;
606
- if (! child.classes.contains ('katex-mathml' )) return null ;
600
+ if (child.className != 'katex-mathml' ) return null ;
607
601
608
602
if (child.nodes.length != 1 ) return null ;
609
603
final grandchild = child.nodes.single;
@@ -655,6 +649,7 @@ class _ZulipContentParser {
655
649
final element = node;
656
650
final localName = element.localName;
657
651
final classes = element.classes;
652
+ final className = element.className;
658
653
List <InlineContentNode > nodes () => parseInlineContentList (element.nodes);
659
654
660
655
if (localName == 'br' && classes.isEmpty) {
@@ -672,9 +667,7 @@ class _ZulipContentParser {
672
667
673
668
if (localName == 'a'
674
669
&& (classes.isEmpty
675
- || (classes.length == 1
676
- && (classes.contains ('stream-topic' )
677
- || classes.contains ('stream' ))))) {
670
+ || (className == 'stream-topic' || className == 'stream' ))) {
678
671
final href = element.attributes['href' ];
679
672
if (href == null ) return unimplemented ();
680
673
final link = LinkNode (nodes: nodes (), url: href, debugHtmlNode: debugHtmlNode);
@@ -707,19 +700,15 @@ class _ZulipContentParser {
707
700
return UnicodeEmojiNode (emojiUnicode: unicode, debugHtmlNode: debugHtmlNode);
708
701
}
709
702
710
- if (localName == 'img'
711
- && classes.contains ('emoji' )
712
- && classes.length == 1 ) {
703
+ if (localName == 'img' && className == 'emoji' ) {
713
704
final alt = element.attributes['alt' ];
714
705
if (alt == null ) return unimplemented ();
715
706
final src = element.attributes['src' ];
716
707
if (src == null ) return unimplemented ();
717
708
return ImageEmojiNode (src: src, alt: alt, debugHtmlNode: debugHtmlNode);
718
709
}
719
710
720
- if (localName == 'span'
721
- && classes.length == 1
722
- && classes.contains ('katex' )) {
711
+ if (localName == 'span' && className == 'katex' ) {
723
712
final texSource = parseMath (element, block: false );
724
713
if (texSource == null ) return unimplemented ();
725
714
return MathInlineNode (texSource: texSource, debugHtmlNode: debugHtmlNode);
@@ -775,8 +764,7 @@ class _ZulipContentParser {
775
764
assert (_debugParserContext == _ParserContext .block);
776
765
final mainElement = () {
777
766
assert (divElement.localName == 'div'
778
- && divElement.classes.length == 1
779
- && divElement.classes.contains ("codehilite" ));
767
+ && divElement.className == "codehilite" );
780
768
781
769
if (divElement.nodes.length != 1 ) return null ;
782
770
final child = divElement.nodes[0 ];
@@ -848,8 +836,7 @@ class _ZulipContentParser {
848
836
assert (_debugParserContext == _ParserContext .block);
849
837
final imgElement = () {
850
838
assert (divElement.localName == 'div'
851
- && divElement.classes.length == 1
852
- && divElement.classes.contains ('message_inline_image' ));
839
+ && divElement.className == 'message_inline_image' );
853
840
854
841
if (divElement.nodes.length != 1 ) return null ;
855
842
final child = divElement.nodes[0 ];
@@ -886,6 +873,7 @@ class _ZulipContentParser {
886
873
}
887
874
final element = node;
888
875
final localName = element.localName;
876
+ final className = element.className;
889
877
final classes = element.classes;
890
878
891
879
if (localName == 'br' && classes.isEmpty) {
@@ -895,8 +883,7 @@ class _ZulipContentParser {
895
883
if (localName == 'p' && classes.isEmpty) {
896
884
// Oddly, the way a math block gets encoded in Zulip HTML is inside a <p>.
897
885
if (element.nodes case [dom.Element (localName: 'span' ) && var child, ...]) {
898
- if (child.classes.length == 1
899
- && child.classes.contains ('katex-display' )) {
886
+ if (child.className == 'katex-display' ) {
900
887
if (element.nodes case [_]
901
888
|| [_, dom.Element (localName: 'br' ),
902
889
dom.Text (text: "\n " )]) {
@@ -943,13 +930,11 @@ class _ZulipContentParser {
943
930
parseBlockContentList (element.nodes));
944
931
}
945
932
946
- if (localName == 'div'
947
- && classes.length == 1 && classes.contains ('codehilite' )) {
933
+ if (localName == 'div' && className == 'codehilite' ) {
948
934
return parseCodeBlock (element);
949
935
}
950
936
951
- if (localName == 'div'
952
- && classes.length == 1 && classes.contains ('message_inline_image' )) {
937
+ if (localName == 'div' && className == 'message_inline_image' ) {
953
938
return parseImageNode (element);
954
939
}
955
940
0 commit comments