[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