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

Unified Diff: packages/path/README.md

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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 | « packages/path/LICENSE ('k') | packages/path/benchmark/benchmark.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: packages/path/README.md
diff --git a/packages/path/README.md b/packages/path/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..5a172cdf26320c70e5713766bd8ede385ec9eaa4
--- /dev/null
+++ b/packages/path/README.md
@@ -0,0 +1,93 @@
+A comprehensive, cross-platform path manipulation library for Dart.
+
+The path package provides common operations for manipulating paths:
+joining, splitting, normalizing, etc.
+
+We've tried very hard to make this library do the "right" thing on whatever
+platform you run it on, including in the browser. When you use the top-level
+functions, it will assume the current platform's path style and work with
+that. If you want to explicitly work with paths of a specific style, you can
+construct a `path.Context` for that style.
+
+## Using
+
+The path library was designed to be imported with a prefix, though you don't
+have to if you don't want to:
+
+```dart
+import 'package:path/path.dart' as path;
+```
+
+The most common way to use the library is through the top-level functions.
+These manipulate path strings based on your current working directory and
+the path style (POSIX, Windows, or URLs) of the host platform. For example:
+
+```dart
+path.join("directory", "file.txt");
+```
+
+This calls the top-level [join] function to join "directory" and
+"file.txt" using the current platform's directory separator.
+
+If you want to work with paths for a specific platform regardless of the
+underlying platform that the program is running on, you can create a
+[Context] and give it an explicit [Style]:
+
+```dart
+var context = new path.Context(style: Style.windows);
+context.join("directory", "file.txt");
+```
+
+This will join "directory" and "file.txt" using the Windows path separator,
+even when the program is run on a POSIX machine.
+
+## FAQ
+
+### Where can I use this?
+
+Pathos runs on the Dart VM and in the browser under both dart2js and Dartium.
+Under dart2js, it currently returns "." as the current working directory, while
+under Dartium it returns the current URL.
+
+### Why doesn't this make paths first-class objects?
+
+When you have path *objects*, then every API that takes a path has to decide if
+it accepts strings, path objects, or both.
+
+ * Accepting strings is the most convenient, but then it seems weird to have
+ these path objects that aren't actually accepted by anything that needs a
+ path. Once you've created a path, you have to always call `.toString()` on
+ it before you can do anything useful with it.
+
+ * Requiring objects forces users to wrap path strings in these objects, which
+ is tedious. It also means coupling that API to whatever library defines this
+ path class. If there are multiple "path" libraries that each define their
+ own path types, then any library that works with paths has to pick which one
+ it uses.
+
+ * Taking both means you can't type your API. That defeats the purpose of
+ having a path type: why have a type if your APIs can't annotate that they
+ expect it?
+
+Given that, we've decided this library should simply treat paths as strings.
+
+### How cross-platform is this?
+
+We believe this library handles most of the corner cases of Windows paths
+(POSIX paths are generally pretty straightforward):
+
+ * It understands that *both* "/" and "\" are valid path separators, not just
+ "\".
+
+ * It can accurately tell if a path is absolute based on drive-letters or UNC
+ prefix.
+
+ * It understands that "/foo" is not an absolute path on Windows.
+
+ * It knows that "C:\foo\one.txt" and "c:/foo\two.txt" are two files in the
+ same directory.
+
+### What is a "path" in the browser?
+
+If you use this package in a browser, then it considers the "platform" to be
+the browser itself and uses URL strings to represent "browser paths".
« no previous file with comments | « packages/path/LICENSE ('k') | packages/path/benchmark/benchmark.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698