Skip to content

Commit f01954d

Browse files
committed
remove unused props
1 parent 6342949 commit f01954d

File tree

4 files changed

+36
-73
lines changed

4 files changed

+36
-73
lines changed

packages/spanner/lib/src/parametric/definition.dart

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,7 @@ abstract class ParameterDefinition implements HandlerStore {
3939

4040
bool matches(String route, {bool caseSensitive = false});
4141

42-
void resolveParams(
43-
String pattern,
44-
List<ParamAndValue> collector, {
45-
bool caseSentive = false,
46-
});
42+
void resolveParams(String pattern, List<ParamAndValue> collector);
4743
}
4844

4945
class SingleParameterDefn extends ParameterDefinition with HandlerStoreMixin {
@@ -66,12 +62,7 @@ class SingleParameterDefn extends ParameterDefinition with HandlerStoreMixin {
6662

6763
@override
6864
bool matches(String route, {bool caseSensitive = false}) {
69-
final match = matchPattern(
70-
route,
71-
prefix ?? '',
72-
suffix ?? '',
73-
caseSensitive,
74-
);
65+
final match = matchPattern(route, prefix ?? '', suffix ?? '');
7566
return match != null;
7667
}
7768

@@ -84,15 +75,13 @@ class SingleParameterDefn extends ParameterDefinition with HandlerStoreMixin {
8475
_terminal = false;
8576

8677
@override
87-
void resolveParams(
88-
final String pattern,
89-
List<ParamAndValue> collector, {
90-
bool caseSentive = false,
91-
}) {
92-
collector.add((
93-
name: name,
94-
value: matchPattern(pattern, prefix ?? "", suffix ?? "", caseSentive)
95-
));
78+
void resolveParams(final String pattern, List<ParamAndValue> collector) {
79+
collector.add(
80+
(
81+
name: name,
82+
value: matchPattern(pattern, prefix ?? "", suffix ?? ""),
83+
),
84+
);
9685
}
9786

9887
@override
@@ -128,11 +117,7 @@ class CompositeParameterDefinition extends ParameterDefinition
128117
_template.hasMatch(route);
129118

130119
@override
131-
void resolveParams(
132-
String pattern,
133-
List<ParamAndValue> collector, {
134-
bool caseSentive = false,
135-
}) {
120+
void resolveParams(String pattern, List<ParamAndValue> collector) {
136121
final match = _template.firstMatch(pattern);
137122
if (match == null) return;
138123

packages/spanner/lib/src/parametric/utils.dart

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,12 @@ const _upperA = 65; // 'A'
113113
const _lowerZ = 122; // 'z'
114114
const _upperZ = 90; // 'Z'
115115

116-
int _stringToBitmask(String s, bool caseSensitive) {
116+
int _stringToBitmask(String s) {
117117
int mask = 0;
118118

119119
for (int i = 0; i < s.length; i++) {
120120
int charCode = s.codeUnitAt(i);
121-
if (!caseSensitive && charCode >= _upperA && charCode <= _upperZ) {
121+
if (charCode >= _upperA && charCode <= _upperZ) {
122122
charCode += 32; // Convert to lowercase
123123
}
124124
if (charCode >= _lowerA && charCode <= _lowerZ) {
@@ -128,29 +128,23 @@ int _stringToBitmask(String s, bool caseSensitive) {
128128
return mask;
129129
}
130130

131-
String? matchPattern(
132-
String input,
133-
String prefix,
134-
String suffix,
135-
bool caseSensitive,
136-
) {
131+
String? matchPattern(String input, String prefix, String suffix) {
137132
if (prefix.isEmpty && suffix.isEmpty) return input;
138133

139-
final prefixMask = _stringToBitmask(prefix, caseSensitive);
140-
final suffixMask = _stringToBitmask(suffix, caseSensitive);
134+
final prefixMask = _stringToBitmask(prefix);
135+
final suffixMask = _stringToBitmask(suffix);
141136

142137
int matchStart = 0;
143138
int matchEnd = input.length;
144139

145-
final compareInput = caseSensitive ? input : input.toLowerCase();
146-
final comparePrefix = caseSensitive ? prefix : prefix.toLowerCase();
147-
final compareSuffix = caseSensitive ? suffix : suffix.toLowerCase();
140+
final compareInput = input.toLowerCase();
141+
final comparePrefix = prefix.toLowerCase();
142+
final compareSuffix = suffix.toLowerCase();
148143

149144
if (prefix.isNotEmpty) {
150145
bool prefixFound = false;
151146
for (int i = 0; i <= input.length - prefix.length; i++) {
152-
if (_stringToBitmask(
153-
compareInput.substring(i, i + prefix.length), caseSensitive) ==
147+
if (_stringToBitmask(compareInput.substring(i, i + prefix.length)) ==
154148
prefixMask) {
155149
if (compareInput.substring(i, i + prefix.length) == comparePrefix) {
156150
matchStart = i + prefix.length;
@@ -165,8 +159,7 @@ String? matchPattern(
165159
if (suffix.isNotEmpty) {
166160
bool suffixFound = false;
167161
for (int i = input.length - suffix.length; i >= matchStart; i--) {
168-
if (_stringToBitmask(
169-
compareInput.substring(i, i + suffix.length), caseSensitive) ==
162+
if (_stringToBitmask(compareInput.substring(i, i + suffix.length)) ==
170163
suffixMask) {
171164
if (compareInput.substring(i, i + suffix.length) == compareSuffix) {
172165
matchEnd = i;

packages/spanner/lib/src/tree/node.dart

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import '../parametric/utils.dart';
77

88
part '../route/action.dart';
99

10-
abstract class Node with HandlerStoreMixin {
10+
sealed class Node with HandlerStoreMixin {
1111
final Map<String, Node> _nodesMap;
1212

1313
Node() : _nodesMap = {};
@@ -191,13 +191,10 @@ class ParametricNode extends Node {
191191
HTTPMethod method,
192192
String part, {
193193
bool terminal = false,
194-
bool caseSensitive = false,
195-
String? nextPart,
196194
}) {
197195
return _definitionsMap[method]?.firstWhereOrNull(
198196
(e) =>
199-
(!terminal || (e.terminal && e.hasMethod(method))) &&
200-
e.matches(part, caseSensitive: caseSensitive),
197+
(!terminal || (e.terminal && e.hasMethod(method))) && e.matches(part),
201198
);
202199
}
203200
}

packages/spanner/lib/src/tree/tree.dart

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@ const BASE_PATH = '/';
1111
enum HTTPMethod { GET, HEAD, POST, PUT, DELETE, ALL, PATCH, OPTIONS, TRACE }
1212

1313
class RouterConfig {
14-
final String rootPath;
1514
final bool caseSensitive;
1615
final bool ignoreTrailingSlash;
1716

1817
const RouterConfig({
19-
this.rootPath = BASE_PATH,
2018
this.caseSensitive = true,
2119
this.ignoreTrailingSlash = true,
2220
});
@@ -32,8 +30,7 @@ class Spanner {
3230

3331
int get _nextIndex => _currentIndex + 1;
3432

35-
Spanner({this.config = const RouterConfig()})
36-
: _root = StaticNode(config.rootPath);
33+
Spanner({this.config = const RouterConfig()}) : _root = StaticNode(BASE_PATH);
3734

3835
void addRoute<T>(HTTPMethod method, String path, T handler) {
3936
_on(method, path).addRoute(method, (
@@ -88,29 +85,25 @@ class Spanner {
8885
}
8986

9087
HandlerStore _on(HTTPMethod method, String path) {
91-
final pathSegments = getRoutePathSegments(path);
88+
final parts = getRoutePathSegments(path);
9289
Node rootNode = _root;
9390

94-
if (pathSegments.isEmpty) {
91+
if (parts.isEmpty) {
9592
return rootNode;
9693
}
9794

98-
if (pathSegments[0] == WildcardNode.key) {
95+
if (parts[0] == WildcardNode.key) {
9996
return rootNode.wildcardNode ??
10097
rootNode.addChildAndReturn(WildcardNode.key, WildcardNode());
10198
}
10299

103-
for (int i = 0; i < pathSegments.length; i++) {
104-
final current = pathSegments[i];
105-
final next = i + 1 < pathSegments.length ? pathSegments[i + 1] : null;
106-
100+
for (int index = 0; index < parts.length; index++) {
107101
final result = Spanner._computeNode(
108102
rootNode,
109103
method,
110-
current,
104+
index,
105+
parts: parts,
111106
config: config,
112-
fullPath: path,
113-
nextPart: next,
114107
);
115108

116109
if (result is! Node) return result;
@@ -137,13 +130,13 @@ class Spanner {
137130
static HandlerStore _computeNode(
138131
Node node,
139132
HTTPMethod method,
140-
String routePart, {
133+
int index, {
134+
required List<String> parts,
141135
required RouterConfig config,
142-
required String? nextPart,
143-
required String fullPath,
144136
}) {
137+
final routePart = parts[index];
138+
final nextPart = parts.elementAtOrNull(index + 1);
145139
final part = config.caseSensitive ? routePart : routePart.toLowerCase();
146-
147140
final child = node.maybeChild(part);
148141
if (child != null) {
149142
return node.addChildAndReturn(part, child);
@@ -152,7 +145,7 @@ class Spanner {
152145
} else if (part.isWildCard) {
153146
if (nextPart != null) {
154147
throw ArgumentError.value(
155-
fullPath,
148+
parts.join('/'),
156149
null,
157150
'Route definition is not valid. Wildcard must be the end of the route',
158151
);
@@ -184,6 +177,7 @@ class Spanner {
184177
final resolvedParams = <ParamAndValue>[];
185178
final resolvedHandlers = <IndexedValue>[...root.middlewares];
186179

180+
@pragma('vm:prefer-inline')
187181
getResults(IndexedValue? handler) =>
188182
handler != null ? (resolvedHandlers..add(handler)) : resolvedHandlers;
189183

@@ -230,8 +224,6 @@ class Spanner {
230224
method,
231225
routePart,
232226
terminal: isLastPart,
233-
caseSensitive: config.caseSensitive,
234-
nextPart: isLastPart ? null : pathSegments[i + 1],
235227
);
236228

237229
/// If we don't find a matching path or a matching definition, then
@@ -246,11 +238,7 @@ class Spanner {
246238
continue;
247239
}
248240

249-
definition!.resolveParams(
250-
currPart,
251-
resolvedParams,
252-
caseSentive: config.caseSensitive,
253-
);
241+
definition!.resolveParams(currPart, resolvedParams);
254242

255243
if (isLastPart && definition.terminal) {
256244
return RouteResult(

0 commit comments

Comments
 (0)