Author: wayland
Date: 2009-08-18 11:47:04 +0200 (Tue, 18 Aug 2009)
New Revision: 28018

Modified:
   docs/Perl6/Spec/S02-bits.pod
   docs/Perl6/Spec/S32-setting-library/IO.pod
Log:
[S32/IO] A few changes, including:
* Revived .chdir() due to popular demand
* IO::FileNode merged into Path


Modified: docs/Perl6/Spec/S02-bits.pod
===================================================================
--- docs/Perl6/Spec/S02-bits.pod        2009-08-18 07:24:07 UTC (rev 28017)
+++ docs/Perl6/Spec/S02-bits.pod        2009-08-18 09:47:04 UTC (rev 28018)
@@ -2834,7 +2834,7 @@
                 :subst          Parse as substitution
                 :trans          Parse as transliteration
                 :code           Quasiquoting
-    :p          :path           Return a Path object
+    :p          :path           Return a Path object (see S16 for more options)
 
 You may omit the first colon by joining an initial C<Q>, C<q>, or C<qq> with
 a single short form adverb, which produces forms like:

Modified: docs/Perl6/Spec/S32-setting-library/IO.pod
===================================================================
--- docs/Perl6/Spec/S32-setting-library/IO.pod  2009-08-18 07:24:07 UTC (rev 
28017)
+++ docs/Perl6/Spec/S32-setting-library/IO.pod  2009-08-18 09:47:04 UTC (rev 
28018)
@@ -653,14 +653,23 @@
 
 =over 4
 
-=item glob
+=item chdir FILENAME
+X<chdir> X<cd>
 
-Returns C<Path> objects.
+=item chdir
 
+Changes the current working directory to the one specified by FILENAME.
+If it succeeds it returns true, otherwise it returns C<Failure> and
+sets C<$!> (errno).
+
 =item find
 
 Returns C<Path> objects.
 
+=item glob
+
+Returns C<Path> objects.
+
 =item rename
 
 =back
@@ -674,7 +683,7 @@
     role Path {
         has Str $.Type;
         has Array of Str @.Elements;
-        has Array of IO::FSNodeACL @.ACLs;
+        has Array of IO::ACL @.ACLs;
         has Hash of %.times;
     ...
     }
@@ -686,7 +695,8 @@
 C<Access> (and maybe others on other operating systems), and the values are 
 all C<Temporal::Instant> objects.
 
-C<$.Type> can be C<File>, C<Directory>, or C<Link>.  
+C<$.Type> can be C<File>, C<Directory>, C<Link>, or C<Other>.  See 
+C<.create()> method documentation for how it is set.  
 
 =head3 Methods
 
@@ -704,7 +714,7 @@
         Array of Str @:PathElements,
 
         Array of Str $:Constraints, 
-        Str $:Type,
+        Str $:Protocol,
 
         Str $:Target,
         Str $:LinkType,
@@ -715,9 +725,19 @@
 $:Constraints determines whether the $:Path and $:Target strings should be
 assumed to be Unix-style, Windows-style, or something else.  
 
-$:Type defaults to "File", unless the $:Target parameter is passed, in which
-case it is assumed to be "Link".  
+The Path.Type attribute is initialised as follows:
 
+    Value        Condition
+    =====        =========
+    Directory    $:Path ends in a separator (ie. /)
+    Link         $:Target is specified
+    Other        $:Protocol is specified
+    Undefined    All other cases
+
+If the $.Type attribute is read, but is still undefined, then an attempt is 
+made to determine what its type should be from the filesystem.  If no 
+answers are found using this method, then it defaults to "File".  
+
 The C<Target> and C<LinkType> options are only relevant for links that have
 not been created yet, or are to be overwritten; in all other cases, 
 they will be determined from the filesystem.  If Target is not specified,
@@ -795,6 +815,68 @@
 throws an error unless the C<Recursive> option is specified.  It returns the 
 number of nodes deleted, and may throw an exception.  
 
+=item lines
+
+    method lines ($handle:
+        Any  $limit = *,
+        Bool $:bin = False,
+        Str  $:enc = "Unicode",
+        Any  $:nl = "\n",
+        Bool $:chomp = True,
+        --> List
+    ) is export
+
+    multi lines (Str $filename,
+        Any  $limit = *,
+        Bool $:bin = False,
+        Str  $:enc = "Unicode",
+        Any  $:nl = "\n",
+        Bool $:chomp = True,
+        --> List
+    )
+
+Returns some or all the lines of a file or entries in a directory
+as a C<List> regardless of context.
+See also C<slurp>.  Note that lists are lazy by default, but you
+can always ask for C<eager lines>.  Note that the limit semantics cannot be
+duplicated by subscripting, since
+
+    $fh.lines[^5]
+
+reads all the lines before the subscript gives you the first five,
+whereas
+
+    $fh.lines(5)
+
+reads only five lines from the handle.  Note that
+
+    $fh.lines(1)
+
+is equivalent to
+
+    $fh.get
+
+If fewer lines are available than the limit, it is not an error;
+you just get the number of lines available.
+
+=item slurp
+
+    method slurp ($handle:
+        Bool $:bin = False,
+        Str  $:enc = "Unicode",
+        --> Str|Buf
+    ) is export
+    multi slurp (Str $filename,
+        Bool $:bin = False,
+        Str  $:enc = "Unicode",
+        --> Str|Buf
+    )
+
+Slurps the entire file into a C<Str> (or C<Buf> if C<:bin>) regardless of 
context.
+(See also C<lines>.)
+
+In the case of a directory, it uses "\n" to separate entries.  
+
 =back
 
 =head3 Other things
@@ -894,12 +976,12 @@
 
 =back
 
-=head2 IO::FSNodeACL
+=head2 IO::ACL
 
 This is a basic abstraction; for better control, use the operating-system 
specific
 interfaces, over which this is a thin veneer.
 
-    class IO::FSNodeACL {
+    class IO::ACL {
         has Str $.type; # "User", "Group", "Everyone", ???
         has Str $.id; # username or groupname; unused for $type eq "Everyone"
         has %.permissions;
@@ -935,78 +1017,9 @@
 
 =back
 
-The C<$.owningObject> attribute of C<FSNodeACL> shows what the ACL is set on.  
On a
+The C<$.owningObject> attribute of C<ACL> shows what the ACL is set on.  On a
 Windows system, this can be a parent directory, as permissions are inherited.
 
-=head2 IO::FileNode
-
-    role IO::FileNode does Path {
-        ...
-    }
-
-=over
-
-=item lines
-
-    method lines ($handle:
-        Any  $limit = *,
-        Bool $:bin = False,
-        Str  $:enc = "Unicode",
-        Any  $:nl = "\n",
-        Bool $:chomp = True,
-        --> List
-    ) is export
-
-    multi lines (Str $filename,
-        Any  $limit = *,
-        Bool $:bin = False,
-        Str  $:enc = "Unicode",
-        Any  $:nl = "\n",
-        Bool $:chomp = True,
-        --> List
-    )
-
-Returns some or all the lines of a file as a C<List> regardless of context.
-See also C<slurp>.  Note that lists are lazy by default, but you
-can always ask for C<eager lines>.  Note that the limit semantics cannot be
-duplicated by subscripting, since
-
-    $fh.lines[^5]
-
-reads all the lines before the subscript gives you the first five,
-whereas
-
-    $fh.lines(5)
-
-reads only five lines from the handle.  Note that
-
-    $fh.lines(1)
-
-is equivalent to
-
-    $fh.get
-
-If fewer lines are available than the limit, it is not an error;
-you just get the number of lines available.
-
-=item slurp
-
-    method slurp ($handle:
-        Bool $:bin = False,
-        Str  $:enc = "Unicode",
-        --> Str|Buf
-    ) is export
-    multi slurp (Str $filename,
-        Bool $:bin = False,
-        Str  $:enc = "Unicode",
-        --> Str|Buf
-    )
-
-Slurps the entire file into a C<Str> (or C<Buf> if C<:bin>) regardless of 
context.
-(See also C<lines>.)
-
-=back
-
 =head2 IO::Socket::INET
 
     class IO::Socket::INET does IO::Socket {
@@ -1252,13 +1265,6 @@
 
 =over
 
-=item chdir FILENAME
-X<chdir> X<cd>
-
-=item chdir
-
-Gone, just set $*CWD (which throws an exception if it fails).  
-
 =item IO.eof
 
 Gone, see eoi C<IO::Seekable>.

Reply via email to