ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. ???????????????????????????????????? ???????????????????????????????????? U:RDoc::NormalClass[iI"Dir:ET@I" Object;To:RDoc::Markup::Document: @parts[o;;[: @fileI" dir.c;T:0@omit_headings_from_table_of_contents_below0o;;[9o:RDoc::Markup::Paragraph;[I"RAn object of class \Dir represents a directory in the underlying file system.;To:RDoc::Markup::BlankLineo; ;[I"It consists mainly of:;T@o:RDoc::Markup::List: @type: BULLET: @items[o:RDoc::Markup::ListItem: @label0;[o; ;[I"8A string _path_, given when the object is created, ;TI"?that specifies a directory in the underlying file system; ;TI"#method #path returns the path.;To;;0;[o; ;[ I"0A collection of string entry names, ;TI"Ueach of which is the name of a directory or file in the underlying file system; ;TI"&the entry names may be retrieved ;TI"@in an {array-like fashion}[rdoc-ref:Dir@Dir+As+Array-Like] ;TI"Dor in a {stream-like fashion}[rdoc-ref:Dir@Dir+As+Stream-Like].;T@S:RDoc::Markup::Heading: leveli: textI"About the Examples;T@o; ;[I":Some examples on this page use this simple file tree:;T@o:RDoc::Markup::Verbatim;[ I"example/ ;TI"├── config.h ;TI"├── lib/ ;TI"│ ├── song/ ;TI"&│ │ └── karaoke.rb ;TI"│ └── song.rb ;TI"└── main.rb ;T: @format0o; ;[I"&Others use the file tree for the ;TI"9{Ruby project itself}[https://github.com/ruby/ruby].;T@S;;i;I"\Dir As \Array-Like;T@o; ;[I".A \Dir object is in some ways array-like:;T@o; ;;;[o;;0;[o; ;[I"?It has instance methods #children, #each, and #each_child.;To;;0;[o; ;[I"HIt includes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here].;T@S;;i;I"\Dir As Stream-Like;T@o; ;[I"/A \Dir object is in some ways stream-like.;T@o; ;[ I"/The stream is initially open for reading, ;TI"7but may be closed manually (using method #close), ;TI"Rand will be closed on block exit if created by Dir.open called with a block. ;TI"7The closed stream may not be further manipulated, ;TI"and may not be reopened.;T@o; ;[I"RThe stream has a _position_, which is the index of an entry in the directory:;T@o; ;;;[ o;;0;[o; ;[I";The initial position is zero (before the first entry).;To;;0;[o; ;[I":\Method #tell (aliased as #pos) returns the position.;To;;0;[o; ;[I"O\Method #pos= sets the position (but ignores a value outside the stream), ;TI"and returns the position.;To;;0;[o; ;[I"O\Method #seek is like #pos=, but returns +self+ (convenient for chaining).;To;;0;[o; ;[I"Q\Method #read, if not at end-of-stream, reads the next entry and increments ;TI"the position; ;TI":if at end-of-stream, does not increment the position.;To;;0;[o; ;[I"/\Method #rewind sets the position to zero.;T@o; ;[I"NExamples (using the {simple file tree}[rdoc-ref:Dir@About+the+Examples]):;T@o;;[I"2dir = Dir.new('example') # => # ;TI"%dir.pos # => 0 ;TI" ;TI"dir.read # => "." ;TI"dir.read # => ".." ;TI"dir.read # => "config.h" ;TI"dir.read # => "lib" ;TI"dir.read # => "main.rb" ;TI"dir.pos # => 5 ;TI"dir.read # => nil ;TI"dir.pos # => 5 ;TI" ;TI"$dir.rewind # => # ;TI"dir.pos # => 0 ;TI" ;TI"dir.pos = 3 # => 3 ;TI"dir.pos # => 3 ;TI" ;TI"%dir.seek(4) # => # ;TI"dir.pos # => 4 ;TI" ;TI"dir.close # => nil ;TI"!dir.read # Raises IOError. ;T;0S;;i;I"What's Here;T@o; ;[I"*First, what's elsewhere. \Class \Dir:;T@o; ;;;[o;;0;[o; ;[I"AInherits from {class Object}[rdoc-ref:Object@What-27s+Here].;To;;0;[o; ;[I"FIncludes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here], ;TI"1which provides dozens of additional methods.;T@o; ;[I";Here, class \Dir provides methods that are useful for:;T@o; ;;;[ o;;0;[o; ;[I"${Reading}[rdoc-ref:Dir@Reading];To;;0;[o; ;[I"${Setting}[rdoc-ref:Dir@Setting];To;;0;[o; ;[I"&{Querying}[rdoc-ref:Dir@Querying];To;;0;[o; ;[I"({Iterating}[rdoc-ref:Dir@Iterating];To;;0;[o; ;[I" {Other}[rdoc-ref:Dir@Other];T@S;;i;I" Reading;T@o; ;;;[ o;;0;[o; ;[I"4#close: Closes the directory stream for +self+.;To;;0;[o; ;[I"A#pos=: Sets the position in the directory stream for +self+.;To;;0;[o; ;[I"P#read: Reads and returns the next entry in the directory stream for +self+.;To;;0;[o; ;[I"V#rewind: Sets the position in the directory stream for +self+ to the first entry.;To;;0;[o; ;[I"A#seek: Sets the position in the directory stream for +self+ ;TI"#the entry at the given offset.;T@S;;i;I" Setting;T@o; ;;;[o;;0;[o; ;[I"C::chdir: Changes the working directory of the current process ;TI"to the given directory.;To;;0;[o; ;[I"D::chroot: Changes the file-system root for the current process ;TI"to the given directory.;T@S;;i;I" Querying;T@o; ;;;[o;;0;[o; ;[I"<::[]: Same as ::glob without the ability to pass flags.;To;;0;[o; ;[I";::children: Returns an array of names of the children ;TI":(both files and directories) of the given directory, ;TI"1but not including . or ...;To;;0;[o; ;[I"D::empty?: Returns whether the given path is an empty directory.;To;;0;[o; ;[I":::entries: Returns an array of names of the children ;TI":(both files and directories) of the given directory, ;TI"*including . and ...;To;;0;[o; ;[I"=::exist?: Returns whether the given path is a directory.;To;;0;[o; ;[I"R::getwd (aliased as #pwd): Returns the path to the current working directory.;To;;0;[o; ;[I"Q::glob: Returns an array of file paths matching the given pattern and flags.;To;;0;[o; ;[I"R::home: Returns the home directory path for a given user or the current user.;To;;0;[o; ;[I":#children: Returns an array of names of the children ;TI"-(both files and directories) of +self+, ;TI"1but not including . or ...;To;;0;[o; ;[I"=#fileno: Returns the integer file descriptor for +self+.;To;;0;[o; ;[I"I#path (aliased as #to_path): Returns the path used to create +self+.;To;;0;[o; ;[I";#tell (aliased as #pos): Returns the integer position ;TI"(in the directory stream for +self+.;T@S;;i;I"Iterating;T@o; ;;;[ o;;0;[o; ;[I"Q::each_child: Calls the given block with each entry in the given directory, ;TI"1but not including . or ...;To;;0;[o; ;[I"N::foreach: Calls the given block with each entry in the given directory, ;TI"*including . and ...;To;;0;[o; ;[I"=#each: Calls the given block with each entry in +self+, ;TI"*including . and ...;To;;0;[o; ;[I"C#each_child: Calls the given block with each entry in +self+, ;TI"1but not including . or ...;T@S;;i;I" Other;T@o; ;;;[ o;;0;[o; ;[I"O::mkdir: Creates a directory at the given path, with optional permissions.;To;;0;[o; ;[I"J::new: Returns a new \Dir for the given path, with optional encoding.;To;;0;[o; ;[I"S::open: Same as ::new, but if a block is given, yields the \Dir to the block, ;TI" closing it upon block exit.;To;;0;[o; ;[I"M::unlink (aliased as ::delete and ::rmdir): Removes the given directory.;To;;0;[o; ;[I"6#inspect: Returns a string description of +self+.;T; I" dir.rb;T; 0o;;[; I"lib/tmpdir.rb;T; 0; 0; 0[[[[I"Enumerable;To;;[; @ ; 0I" dir.c;T[[I" class;T[[: public[[I"[];TI" dir.rb;T[I" chdir;T@[I" children;T@[I" chroot;T@[I" delete;T@[I"each_child;T@[I" empty?;T@[I" entries;T@[I" exist?;T@[I" fchdir;T@[I" for_fd;T@[I" foreach;T@[I" getwd;T@[I" glob;T@[I" home;T@[I" mkdir;T@[I" mktmpdir;TI"lib/tmpdir.rb;T[I"new;T@[I" open;T@[I"pwd;T@[I" rmdir;T@[I" tmpdir;T@[I" unlink;T@[:protected[[: private[[I" instance;T[[;[[I" chdir;T@[I" children;T@[I" close;T@[I" each;T@[I"each_child;T@[I" fileno;T@[I" inspect;T@[I" path;T@[I"pos;T@[I" pos=;T@[I" read;T@[I" rewind;T@[I" seek;T@[I" tell;T@[I" to_path;T@[;[[;[[[U:RDoc::Context::Section[i0o;;[; 0; 0[ @ @tI"lib/cgi/session.rb;TI"lib/tempfile.rb;T@w@wcRDoc::TopLevel