Re: documentation for Shell

Eric Hodel <[email protected]> Sun, 15 Oct 2006 22:24:25 -0700
Newsgroups gmane.comp.lang.ruby.documentation
Message-ID <[email protected]>
On Oct 7, 2006, at 10:54 PM, Konrad Meyer wrote:

> See attached; I tried to make sure there was at least a one line
> explanation of all methods, but I might have made mistakes, done
> something stupid, whatever. Comments *greatly* welcome. In some places
> I fixed whitespace (for consistancy), but mostly left it alone.

Can you leave the whitespace alone? or would it be too much work?

> I believe there were two methods like:
>
>  def foo
>    @foo
>  end
>
> that I changed to attr_reader :foo. That's all, please, feedback!

Keep the $Blah$s for all files.

Index: shell.rb
===================================================================
RCS file: /src/ruby/lib/shell.rb,v
retrieving revision 1.9
diff -p -u -1 -r1.9 shell.rb
--- shell.rb	20 Jul 2006 17:35:26 -0000	1.9
+++ shell.rb	8 Oct 2006 05:47:06 -0000
@@ -1,11 +1,9 @@
#
-#   shell.rb -
-#   	$Release Version: 0.6.0 $
-#   	$Revision: 1.8 $
-#   	$Date: 2001/03/19 09:01:11 $
-#   	by Keiju ISHITSUKA(Nippon Rational Inc.)
+# = shell.rb: Emulate a system shell
#
-# --
+# Author:: Keiju Ishitsuka
+# Documentation:: Konrad Meyer
#
-#
+# Rubifies working with a local shell. See Shell for documentation, and
+# Net::Telnet for working with remote shells.
#
@@ -19,2 +17,15 @@
  require "shell/process-controller"

These requires need to be above the documentation.

+#
+# Shell is the parent class for working with the ruby representation  
of the
+# shell.
+#
+# Directory related methods:
+# Shell#cwd (or #dir, #getwd, or #pwd),
+# Shell#chdir (or #cd),
+# Shell#pushdir (or #pushd),
+# Shell#popdir (or #popd),
+# Shell#mkdir, and
+# Shell#rmdir.
+#
+
class Shell
@@ -40,2 +51,6 @@ class Shell
+    #
+    # If +val+ evaulates to true, turns on verbose. In all cases, sets
+    # @debug to +debug+.
+    #
      def debug=(val)

+debug+ -> +val+

How about "Sets the debug level to +val+ and enables verbose when +val 
+ is a true value."

Can the comments above @debug just below class Shell be moved here too?

@@ -51,2 +70,6 @@ class Shell
+    #
+    # Returns @default_system_path, or if that isn't set, the
+    # environmental variable _PATH_ split into an array.
+    #
      def default_system_path

How about "Returns the default executable search path"?

Do we need "split into an array"?

@@ -59,2 +82,5 @@ class Shell
+    #
+    # Setter for @default_system_path.
+    #
      def default_system_path=(path)

How about "Sets the default executable search path to +path+"?

Should the type of argument be listed here?  I assume only an  
Enumerable is acceptable.

@@ -63,2 +89,5 @@ class Shell
+    #
+    # Returns @default_record_separator, or if that isn't set, $/.
+    #
      def default_record_separator

How about "Returns the default record separator or $/"?

@@ -71,2 +100,5 @@ class Shell
+    #
+    # Sets the value of @default_record_separator.
+    #
      def default_record_separator=(rs)

How about "Sets the default record separator to +rs+"?

@@ -76,2 +108,5 @@ class Shell
+  #
+  # Creates a new Shell object.
+  #
    def initialize
@@ -93,2 +128,5 @@ class Shell
+  #
+  # Sets the system path, and rehashes.
+  #
    def system_path=(path)

"and rehashes" isn't very descriptive.  I don't know of a good way to  
say what it does though...

"and flushes the system command list" ?

@@ -101,2 +139,6 @@ class Shell
+  #
+  # Turns on debugging if +val+ evaluates to true. Also turns on  
verbose if
+  # +val+ evaluates to true.
+  #
    def debug=(val)

If you add the debug level info to Shell::debug= could you add a see  
also here?

@@ -112,2 +154,5 @@ class Shell
+  #
+  # Expands a relative +path+ to a full path, using File.expand_path.
+  #
    def expand_path(path)

How about replacing ", using ..." with "relative to the working  
directory"?

@@ -116,14 +161,2 @@ class Shell
-  # Most Shell commands are defined via CommandProcessor
-
-  #
-  # Dir related methods
-  #
-  # Shell#cwd/dir/getwd/pwd
-  # Shell#chdir/cd
-  # Shell#pushdir/pushd
-  # Shell#popdir/popd
-  # Shell#mkdir
-  # Shell#rmdir
-
    attr :cwd
@@ -136,4 +169,6 @@ class Shell
-  # If called as iterator, it restores the current directory when the
-  # block ends.
+  #
+  # Changes working directory. If passed a block, it restores the
+  # current directory when the block ends.
+  #
    def chdir(path = nil)
@@ -157,2 +192,14 @@ class Shell
+  #
+  # Push current directory on to the directory stack, and change to the
+  # directory +path+. If +path+ isn't given, pop the topmost directory
+  # stack entry, and go there. If a block is given, +self+ is  
yielded to
+  # the block after +path+ is pushed, and once the block finishes,  
popdir
+  # is called.
+  #
+  # Example:
+  #   require 'shell'
+  #
+  #   Shell.new.pushdir("/etc") { |sh| ... }
+  #
    def pushdir(path = nil)

For the last sentence, how about:

If a block is given +path+ is pushed onto the directory stack, +self+  
is yielded to the block, and #popdir is called when the block finishes.

@@ -183,2 +230,5 @@ class Shell
+  #
+  # Pop the top directory off of the directory stack and chdir to it.
+  #
    def popdir
@@ -195,5 +245,6 @@ class Shell
-  #
-  # process management
-  #
+  #
+  # Returns active and waiting jobs in an array. See
+  # ProcessController#jobs.
+  #
    def jobs

I like "Returns an Array of active and waiting jobs."  This sets up  
links properly.

@@ -202,2 +253,5 @@ class Shell
+  #
+  # Kills a job, with signal +sig+ if applicable.
+  #
    def kill(sig, command)

The arguments appear mandatory.  Would "Sends signal +sig+ to +command 
+." be more descriptive?

@@ -207,3 +261,3 @@ class Shell
    #
-  # command definitions
+  # Defines a system command. See CommandProcessor.def_system_command.
    #
@@ -213,2 +267,6 @@ class Shell
+  #
+  # Undefines a system command. Opposite of def_system_command. See
+  # CommandProcessor.undef_system_command.
+  #
    def Shell.undef_system_command(command)
@@ -217,2 +275,5 @@ class Shell
+  #
+  # Creates an alias to a command. See CommandProcessor.alias_command.
+  #
    def Shell.alias_command(ali, command, *opts, &block)
@@ -221,2 +282,6 @@ class Shell
+  #
+  # Removes an alias to a command; opposite of alias_command. See
+  # CommandProcessor.unalias_command.
+  #
    def Shell.unalias_command(ali)

You've got a ; before opposite of here and a new sentence for  
undef_system_command.

@@ -225,2 +290,6 @@ class Shell
+  #
+  # Installs system commands with prefix +pre+. +pre+ defaults to  
"sys_".
+  # See CommandProcessor.install_system_commands.
+  #
    def Shell.install_system_commands(pre = "sys_")

For all five of these can you use :: instead of . for the "See ..."?

@@ -229,2 +298,5 @@ class Shell
+  #
+  # If debugging is on higher than 2, calls super. Otherwise, it just
+  # runs to_s.
    #

I think # :nodoc: is fine for #inspect.

@@ -238,22 +310,25 @@ class Shell
+  #
+  # NOTE: wtf?
+  #

Not sure either, so just leave it undoc'd.  It seems to be part of  
verbose.

I'll get through the rest of the files as I have time.

-- 
Eric Hodel - [email protected] - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com