[armedbear-cvs] r12613 - trunk/abcl/doc/design/pathnames
Mark Evenson
mevenson at common-lisp.net
Thu Apr 15 14:51:19 UTC 2010
Author: mevenson
Date: Thu Apr 15 10:51:18 2010
New Revision: 12613
Log:
Document URL and jar pathname design changes.
Modified:
trunk/abcl/doc/design/pathnames/jar-pathnames.markdown
trunk/abcl/doc/design/pathnames/url-pathnames.markdown
Modified: trunk/abcl/doc/design/pathnames/jar-pathnames.markdown
==============================================================================
--- trunk/abcl/doc/design/pathnames/jar-pathnames.markdown (original)
+++ trunk/abcl/doc/design/pathnames/jar-pathnames.markdown Thu Apr 15 10:51:18 2010
@@ -3,7 +3,7 @@
Mark Evenson
Created: 09 JAN 2010
- Modified: 25 MAR 2010
+ Modified: 10 APR 2010
Notes towards an implementation of "jar:" references to be contained
in Common Lisp `PATHNAME`s within ABCL.
@@ -82,16 +82,12 @@
The DEVICE of a JAR PATHNAME will be a list with either one or two
elements. The first element of the JAR PATHNAME can be either a
-PATHNAME representing a JAR on the filesystem, or a SimpleString
-representing a URL.
+PATHNAME representing a JAR on the filesystem, or a URL PATHNAME.
A PATHNAME occuring in the list in the DEVICE of a JAR PATHNAME is
known as a DEVICE PATHNAME.
-If the DEVICE is a String it must be a String that successfully
-references a URL via the java.net.URL(String) constructor
-
-Only the first entry in the the DEVICE list may be a String.
+Only the first entry in the the DEVICE list may be a URL PATHNAME.
Otherwise the the DEVICE PATHAME denotes the PATHNAME of the JAR file.
@@ -101,11 +97,12 @@
The DIRECTORY component of a JAR PATHNAME should be a list starting
with the :ABSOLUTE keyword. Even though hierarchial entries in jar
files are stored in the form "foo/bar/a.lisp" not "/foo/bar/a.lisp",
-the meaning of DIRECTORY component better represented as an absolute
-path.
+the meaning of DIRECTORY component is better represented as an
+absolute path.
A jar Pathname has type JAR-PATHNAME, derived from PATHNAME.
+
BNF
---
@@ -221,7 +218,9 @@
pathname: {
namestring: "jar:http://example.org/abcl.jar!/org/armedbear/lisp/Version.class",
device: (
- "http://example.org/abcl.jar"
+ pathname: {
+ namestring: "http://example.org/abcl.jar"
+ }
pathname: {
directory: (:RELATIVE "org" "armedbear" "lisp")
name: "Version"
@@ -233,7 +232,9 @@
pathname: {
namestring "jar:jar:http://example.org/abcl.jar!/foo.abcl!/foo-1.cls"
device: (
- "http://example.org/abcl.jar"
+ pathname: {
+ namestring: "http://example.org/abcl.jar"
+ }
pathname: {
name: "foo"
type: "abcl"
@@ -306,9 +307,15 @@
name: "foo"
type: "abcl"
}
+ )
}
Although there is a fair amount of special logic inside `Pathname.java`
itself in the resulting implementation, the logic in `Load.java` seems
to have been considerably simplified.
+When we implemented URL Pathnames, the special syntax for URL as an
+abstract string in the first position of the device list was naturally
+replaced with a URL pathname.
+
+
Modified: trunk/abcl/doc/design/pathnames/url-pathnames.markdown
==============================================================================
--- trunk/abcl/doc/design/pathnames/url-pathnames.markdown (original)
+++ trunk/abcl/doc/design/pathnames/url-pathnames.markdown Thu Apr 15 10:51:18 2010
@@ -3,7 +3,7 @@
Mark Evenson
Created: 25 MAR 2010
- Modified: 26 MAR 2010
+ Modified: 11 APR 2010
Notes towards an implementation of URL references to be contained in
Common Lisp `PATHNAME` objects within ABCL.
@@ -89,13 +89,17 @@
:AUTHORITY
Valid authority according to the URI scheme. For "http" this
could be "example.org:8080".
+ :QUERY
+ The query of the URI
+ :FRAGMENT
+ The fragment portion of the URI
The DIRECTORY, NAME and TYPE fields of the PATHNAME are used to form
the URI `path` according to the conventions of the UNIX filesystem
-(i.e. '/' is the directory separator). If needed, `query` and `fragment`
-portions of a URL are to be included in the URL pathname NAME
-component. In a sense the HOST contains the base URL, to which the
-`path` is a relative URL.
+(i.e. '/' is the directory separator). In a sense the HOST contains
+the base URL, to which the `path` is a relative URL (although this
+abstraction is violated somwhat by the storing of the QUERY and
+FRAGMENT portions of the URI in the HOST component).
For the purposes of PATHNAME-MATCH-P, two URL pathnames may be said to
match if their HOST compoments are EQUAL, and all other components are
More information about the armedbear-cvs
mailing list