Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(126)

Unified Diff: pkg/path/lib/src/internal_style.dart

Issue 309803003: Avoid using RegExps in path to work around issue 19090. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code review Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/path/lib/src/context.dart ('k') | pkg/path/lib/src/parsed_path.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/path/lib/src/internal_style.dart
diff --git a/pkg/path/lib/src/internal_style.dart b/pkg/path/lib/src/internal_style.dart
index 13fb57e1454dac40877690cdf456f24e2aeda630..67b5d343eb748a40f868c4536df7d27b3262b6df 100644
--- a/pkg/path/lib/src/internal_style.dart
+++ b/pkg/path/lib/src/internal_style.dart
@@ -13,55 +13,34 @@ import 'style.dart';
/// the members that [Context] uses should be hidden from them. Those members
/// are defined on this class instead.
abstract class InternalStyle extends Style {
- /// The path separator for this style. On POSIX, this is `/`. On Windows,
- /// it's `\`.
+ /// The default path separator for this style.
+ ///
+ /// On POSIX, this is `/`. On Windows, it's `\`.
String get separator;
- /// The [Pattern] that can be used to match a separator for a path in this
- /// style. Windows allows both "/" and "\" as path separators even though "\"
- /// is the canonical one.
- Pattern get separatorPattern;
+ /// Returns whether [path] contains a separator.
+ bool containsSeparator(String path);
+
+ /// Returns whether [codeUnit] is the character code of a separator.
+ bool isSeparator(int codeUnit);
- /// The [Pattern] that matches path components that need a separator after
- /// them.
+ /// Returns whether this path component needs a separator after it.
///
/// Windows and POSIX styles just need separators when the previous component
/// doesn't already end in a separator, but the URL always needs to place a
/// separator between the root and the first component, even if the root
/// already ends in a separator character. For example, to join "file://" and
/// "usr", an additional "/" is needed (making "file:///usr").
- Pattern get needsSeparatorPattern;
-
- /// The [Pattern] that can be used to match the root prefix of an absolute
- /// path in this style.
- Pattern get rootPattern;
-
- /// The [Pattern] that can be used to match the root prefix of a root-relative
- /// path in this style.
- ///
- /// This can be null to indicate that this style doesn't support root-relative
- /// paths.
- final Pattern relativeRootPattern = null;
+ bool needsSeparator(String path);
/// Gets the root prefix of [path] if path is absolute. If [path] is relative,
/// returns `null`.
- String getRoot(String path) {
- // TODO(rnystrom): Use firstMatch() when #7080 is fixed.
- var matches = rootPattern.allMatches(path);
- if (matches.isNotEmpty) return matches.first[0];
- return getRelativeRoot(path);
- }
+ String getRoot(String path);
/// Gets the root prefix of [path] if it's root-relative.
///
/// If [path] is relative or absolute and not root-relative, returns `null`.
- String getRelativeRoot(String path) {
- if (relativeRootPattern == null) return null;
- // TODO(rnystrom): Use firstMatch() when #7080 is fixed.
- var matches = relativeRootPattern.allMatches(path);
- if (matches.isEmpty) return null;
- return matches.first[0];
- }
+ String getRelativeRoot(String path);
/// Returns the path represented by [uri] in this style.
String pathFromUri(Uri uri);
« no previous file with comments | « pkg/path/lib/src/context.dart ('k') | pkg/path/lib/src/parsed_path.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698