Skip to content
This repository was archived by the owner on Nov 1, 2024. It is now read-only.

Commit 910f6d7

Browse files
authored
Update lints, require Dart 3.2 (#236)
1 parent aaf7d1a commit 910f6d7

13 files changed

+75
-98
lines changed

.github/workflows/test-package.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
fail-fast: false
3333
matrix:
3434
os: [ubuntu-latest]
35-
sdk: [2.19.0, stable, dev]
35+
sdk: [3.2, stable, dev]
3636
steps:
3737
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
3838
- uses: dart-lang/setup-dart@ca7e6fee45ffbd82b555a7ebfc236d2c86439f5b

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## 0.15.5-wip
22

3+
- Require Dart `3.2`.
34

45
## 0.15.4
56

lib/dom.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ mixin _NonElementParentNode implements _ParentNode {
112112
// common methods from these:
113113
// http://dom.spec.whatwg.org/#interface-document
114114
// http://dom.spec.whatwg.org/#element
115-
abstract class _ElementAndDocument implements _ParentNode {
115+
abstract mixin class _ElementAndDocument implements _ParentNode {
116116
// TODO(jmesserly): could be faster, should throw on invalid tag/class names.
117117

118118
List<Element> getElementsByTagName(String localName) =>

lib/dom_parsing.dart

+10-16
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,16 @@ export 'html_escape.dart';
1212
/// A simple tree visitor for the DOM nodes.
1313
class TreeVisitor {
1414
void visit(Node node) {
15-
switch (node.nodeType) {
16-
case Node.ELEMENT_NODE:
17-
return visitElement(node as Element);
18-
case Node.TEXT_NODE:
19-
return visitText(node as Text);
20-
case Node.COMMENT_NODE:
21-
return visitComment(node as Comment);
22-
case Node.DOCUMENT_FRAGMENT_NODE:
23-
return visitDocumentFragment(node as DocumentFragment);
24-
case Node.DOCUMENT_NODE:
25-
return visitDocument(node as Document);
26-
case Node.DOCUMENT_TYPE_NODE:
27-
return visitDocumentType(node as DocumentType);
28-
default:
29-
throw UnsupportedError('DOM node type ${node.nodeType}');
30-
}
15+
return switch (node.nodeType) {
16+
Node.ELEMENT_NODE => visitElement(node as Element),
17+
Node.TEXT_NODE => visitText(node as Text),
18+
Node.COMMENT_NODE => visitComment(node as Comment),
19+
Node.DOCUMENT_FRAGMENT_NODE =>
20+
visitDocumentFragment(node as DocumentFragment),
21+
Node.DOCUMENT_NODE => visitDocument(node as Document),
22+
Node.DOCUMENT_TYPE_NODE => visitDocumentType(node as DocumentType),
23+
_ => throw UnsupportedError('DOM node type ${node.nodeType}')
24+
};
3125
}
3226

3327
void visitChildren(Node node) {

lib/parser.dart

+22-24
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,7 @@ class Phase {
633633
}
634634

635635
class InitialPhase extends Phase {
636-
InitialPhase(HtmlParser parser) : super(parser);
636+
InitialPhase(super.parser);
637637

638638
@override
639639
Token? processSpaceCharacters(SpaceCharactersToken token) {
@@ -788,7 +788,7 @@ class InitialPhase extends Phase {
788788
}
789789

790790
class BeforeHtmlPhase extends Phase {
791-
BeforeHtmlPhase(HtmlParser parser) : super(parser);
791+
BeforeHtmlPhase(super.parser);
792792

793793
// helper methods
794794
void insertHtmlElement() {
@@ -849,7 +849,7 @@ class BeforeHtmlPhase extends Phase {
849849
}
850850

851851
class BeforeHeadPhase extends Phase {
852-
BeforeHeadPhase(HtmlParser parser) : super(parser);
852+
BeforeHeadPhase(super.parser);
853853

854854
@override
855855
Token? processStartTag(StartTagToken token) {
@@ -923,7 +923,7 @@ class BeforeHeadPhase extends Phase {
923923
}
924924

925925
class InHeadPhase extends Phase {
926-
InHeadPhase(HtmlParser parser) : super(parser);
926+
InHeadPhase(super.parser);
927927

928928
@override
929929
Token? processStartTag(StartTagToken token) {
@@ -1070,7 +1070,7 @@ class InHeadPhase extends Phase {
10701070
// class InHeadNoScriptPhase extends Phase {
10711071

10721072
class AfterHeadPhase extends Phase {
1073-
AfterHeadPhase(HtmlParser parser) : super(parser);
1073+
AfterHeadPhase(super.parser);
10741074

10751075
@override
10761076
Token? processStartTag(StartTagToken token) {
@@ -1189,7 +1189,7 @@ class InBodyPhase extends Phase {
11891189

11901190
// http://www.whatwg.org/specs/web-apps/current-work///parsing-main-inbody
11911191
// the really-really-really-very crazy mode
1192-
InBodyPhase(HtmlParser parser) : super(parser);
1192+
InBodyPhase(super.parser);
11931193

11941194
@override
11951195
Token? processStartTag(StartTagToken token) {
@@ -2227,7 +2227,7 @@ class InBodyPhase extends Phase {
22272227
}
22282228

22292229
class TextPhase extends Phase {
2230-
TextPhase(HtmlParser parser) : super(parser);
2230+
TextPhase(super.parser);
22312231

22322232
// "Tried to process start tag %s in RCDATA/RAWTEXT mode"%token.name
22332233
@override
@@ -2277,7 +2277,7 @@ class TextPhase extends Phase {
22772277

22782278
class InTablePhase extends Phase {
22792279
// http://www.whatwg.org/specs/web-apps/current-work///in-table
2280-
InTablePhase(HtmlParser parser) : super(parser);
2280+
InTablePhase(super.parser);
22812281

22822282
@override
22832283
Token? processStartTag(StartTagToken token) {
@@ -2507,9 +2507,7 @@ class InTableTextPhase extends Phase {
25072507
Phase? originalPhase;
25082508
List<StringToken> characterTokens;
25092509

2510-
InTableTextPhase(HtmlParser parser)
2511-
: characterTokens = <StringToken>[],
2512-
super(parser);
2510+
InTableTextPhase(super.parser) : characterTokens = <StringToken>[];
25132511

25142512
void flushCharacters() {
25152513
if (characterTokens.isEmpty) return;
@@ -2578,7 +2576,7 @@ class InTableTextPhase extends Phase {
25782576

25792577
class InCaptionPhase extends Phase {
25802578
// http://www.whatwg.org/specs/web-apps/current-work///in-caption
2581-
InCaptionPhase(HtmlParser parser) : super(parser);
2579+
InCaptionPhase(super.parser);
25822580

25832581
@override
25842582
Token? processStartTag(StartTagToken token) {
@@ -2700,7 +2698,7 @@ class InCaptionPhase extends Phase {
27002698

27012699
class InColumnGroupPhase extends Phase {
27022700
// http://www.whatwg.org/specs/web-apps/current-work///in-column
2703-
InColumnGroupPhase(HtmlParser parser) : super(parser);
2701+
InColumnGroupPhase(super.parser);
27042702

27052703
@override
27062704
Token? processStartTag(StartTagToken token) {
@@ -2788,7 +2786,7 @@ class InColumnGroupPhase extends Phase {
27882786

27892787
class InTableBodyPhase extends Phase {
27902788
// http://www.whatwg.org/specs/web-apps/current-work///in-table0
2791-
InTableBodyPhase(HtmlParser parser) : super(parser);
2789+
InTableBodyPhase(super.parser);
27922790

27932791
@override
27942792
Token? processStartTag(StartTagToken token) {
@@ -2927,7 +2925,7 @@ class InTableBodyPhase extends Phase {
29272925

29282926
class InRowPhase extends Phase {
29292927
// http://www.whatwg.org/specs/web-apps/current-work///in-row
2930-
InRowPhase(HtmlParser parser) : super(parser);
2928+
InRowPhase(super.parser);
29312929

29322930
@override
29332931
Token? processStartTag(StartTagToken token) {
@@ -3073,7 +3071,7 @@ class InRowPhase extends Phase {
30733071

30743072
class InCellPhase extends Phase {
30753073
// http://www.whatwg.org/specs/web-apps/current-work///in-cell
3076-
InCellPhase(HtmlParser parser) : super(parser);
3074+
InCellPhase(super.parser);
30773075

30783076
@override
30793077
Token? processStartTag(StartTagToken token) {
@@ -3197,7 +3195,7 @@ class InCellPhase extends Phase {
31973195
}
31983196

31993197
class InSelectPhase extends Phase {
3200-
InSelectPhase(HtmlParser parser) : super(parser);
3198+
InSelectPhase(super.parser);
32013199

32023200
@override
32033201
Token? processStartTag(StartTagToken token) {
@@ -3353,7 +3351,7 @@ class InSelectPhase extends Phase {
33533351
}
33543352

33553353
class InSelectInTablePhase extends Phase {
3356-
InSelectInTablePhase(HtmlParser parser) : super(parser);
3354+
InSelectInTablePhase(super.parser);
33573355

33583356
@override
33593357
Token? processStartTag(StartTagToken token) {
@@ -3479,7 +3477,7 @@ class InForeignContentPhase extends Phase {
34793477
'var'
34803478
];
34813479

3482-
InForeignContentPhase(HtmlParser parser) : super(parser);
3480+
InForeignContentPhase(super.parser);
34833481

34843482
void adjustSVGTagNames(StartTagToken token) {
34853483
final replacements = const {
@@ -3609,7 +3607,7 @@ class InForeignContentPhase extends Phase {
36093607
}
36103608

36113609
class AfterBodyPhase extends Phase {
3612-
AfterBodyPhase(HtmlParser parser) : super(parser);
3610+
AfterBodyPhase(super.parser);
36133611

36143612
@override
36153613
Token? processStartTag(StartTagToken token) {
@@ -3681,7 +3679,7 @@ class AfterBodyPhase extends Phase {
36813679

36823680
class InFramesetPhase extends Phase {
36833681
// http://www.whatwg.org/specs/web-apps/current-work///in-frameset
3684-
InFramesetPhase(HtmlParser parser) : super(parser);
3682+
InFramesetPhase(super.parser);
36853683

36863684
@override
36873685
Token? processStartTag(StartTagToken token) {
@@ -3774,7 +3772,7 @@ class InFramesetPhase extends Phase {
37743772

37753773
class AfterFramesetPhase extends Phase {
37763774
// http://www.whatwg.org/specs/web-apps/current-work///after3
3777-
AfterFramesetPhase(HtmlParser parser) : super(parser);
3775+
AfterFramesetPhase(super.parser);
37783776

37793777
@override
37803778
Token? processStartTag(StartTagToken token) {
@@ -3831,7 +3829,7 @@ class AfterFramesetPhase extends Phase {
38313829
}
38323830

38333831
class AfterAfterBodyPhase extends Phase {
3834-
AfterAfterBodyPhase(HtmlParser parser) : super(parser);
3832+
AfterAfterBodyPhase(super.parser);
38353833

38363834
@override
38373835
Token? processStartTag(StartTagToken token) {
@@ -3882,7 +3880,7 @@ class AfterAfterBodyPhase extends Phase {
38823880
}
38833881

38843882
class AfterAfterFramesetPhase extends Phase {
3885-
AfterAfterFramesetPhase(HtmlParser parser) : super(parser);
3883+
AfterAfterFramesetPhase(super.parser);
38863884

38873885
@override
38883886
Token? processStartTag(StartTagToken token) {

lib/src/constants.dart

+9-16
Original file line numberDiff line numberDiff line change
@@ -246,22 +246,15 @@ class Namespaces {
246246
Namespaces._();
247247

248248
static String? getPrefix(String? url) {
249-
switch (url) {
250-
case html:
251-
return 'html';
252-
case mathml:
253-
return 'math';
254-
case svg:
255-
return 'svg';
256-
case xlink:
257-
return 'xlink';
258-
case xml:
259-
return 'xml';
260-
case xmlns:
261-
return 'xmlns';
262-
default:
263-
return null;
264-
}
249+
return switch (url) {
250+
html => 'html',
251+
mathml => 'math',
252+
svg => 'svg',
253+
xlink => 'xlink',
254+
xml => 'xml',
255+
xmlns => 'xmlns',
256+
_ => null
257+
};
265258
}
266259
}
267260

lib/src/css_class_set.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import 'dart:collection';
88

9-
import 'package:html/dom.dart';
9+
import '../dom.dart';
1010

1111
class ElementCssClassSet extends _CssClassSetImpl {
1212
final Element _element;

lib/src/html_input_stream.dart

+6-10
Original file line numberDiff line numberDiff line change
@@ -329,16 +329,12 @@ bool _hasUtf8Bom(List<int> bytes, [int offset = 0, int? length]) {
329329
/// the codepoints. Supports the major unicode encodings as well as ascii and
330330
/// and windows-1252 encodings.
331331
List<int> _decodeBytes(String encoding, List<int> bytes) {
332-
switch (encoding) {
333-
case 'ascii':
334-
return ascii.decode(bytes).codeUnits;
335-
336-
case 'utf-8':
332+
return switch (encoding) {
333+
'ascii' => ascii.decode(bytes).codeUnits,
334+
'utf-8' =>
337335
// NOTE: To match the behavior of the other decode functions, we eat the
338336
// UTF-8 BOM here. This is the default behavior of `utf8.decode`.
339-
return utf8.decode(bytes).codeUnits;
340-
341-
default:
342-
throw ArgumentError('Encoding $encoding not supported');
343-
}
337+
utf8.decode(bytes).codeUnits,
338+
_ => throw ArgumentError('Encoding $encoding not supported')
339+
};
344340
}

lib/src/query_selector.dart

+14-19
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ library html.src.query;
33

44
import 'package:csslib/parser.dart';
55
import 'package:csslib/visitor.dart';
6-
import 'package:html/dom.dart';
7-
import 'package:html/src/constants.dart' show isWhitespaceCC;
6+
7+
import '../dom.dart';
8+
import 'constants.dart' show isWhitespaceCC;
89

910
bool matches(Element node, String selector) =>
1011
SelectorEvaluator().matches(node, _parseSelectorList(selector));
@@ -284,22 +285,16 @@ class SelectorEvaluator extends Visitor {
284285
if (node.operatorKind == TokenKind.NO_MATCH) return true;
285286

286287
final select = '${node.value}';
287-
switch (node.operatorKind) {
288-
case TokenKind.EQUALS:
289-
return value == select;
290-
case TokenKind.INCLUDES:
291-
return value.split(' ').any((v) => v.isNotEmpty && v == select);
292-
case TokenKind.DASH_MATCH:
293-
return value.startsWith(select) &&
294-
(value.length == select.length || value[select.length] == '-');
295-
case TokenKind.PREFIX_MATCH:
296-
return value.startsWith(select);
297-
case TokenKind.SUFFIX_MATCH:
298-
return value.endsWith(select);
299-
case TokenKind.SUBSTRING_MATCH:
300-
return value.contains(select);
301-
default:
302-
throw _unsupported(node);
303-
}
288+
return switch (node.operatorKind) {
289+
TokenKind.EQUALS => value == select,
290+
TokenKind.INCLUDES =>
291+
value.split(' ').any((v) => v.isNotEmpty && v == select),
292+
TokenKind.DASH_MATCH => value.startsWith(select) &&
293+
(value.length == select.length || value[select.length] == '-'),
294+
TokenKind.PREFIX_MATCH => value.startsWith(select),
295+
TokenKind.SUFFIX_MATCH => value.endsWith(select),
296+
TokenKind.SUBSTRING_MATCH => value.contains(select),
297+
_ => throw _unsupported(node)
298+
};
304299
}
305300
}

0 commit comments

Comments
 (0)