rprogram 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,12 @@
1
+ === 0.1.7 / 2009-09-21
2
+
3
+ * Require Hoe >= 2.3.3.
4
+ * Require YARD >= 0.2.3.5.
5
+ * Require RSpec >= 1.2.8.
6
+ * Use 'hoe/signing' for signed RubyGems.
7
+ * Moved to YARD based documentation.
8
+ * All specs pass on JRuby 1.3.1.
9
+
1
10
  === 0.1.6 / 2009-06-30
2
11
 
3
12
  * Use Hoe 2.2.0.
data/Manifest.txt CHANGED
@@ -19,6 +19,12 @@ lib/rprogram/nameable.rb
19
19
  lib/rprogram/program.rb
20
20
  lib/rprogram/rprogram.rb
21
21
  lib/rprogram/version.rb
22
+ lib/rprogram/yard.rb
23
+ lib/rprogram/yard/handlers.rb
24
+ lib/rprogram/yard/handlers/ruby.rb
25
+ lib/rprogram/yard/handlers/ruby/metaclass_eval_handler.rb
26
+ lib/rprogram/yard/handlers/ruby/legacy.rb
27
+ lib/rprogram/yard/handlers/ruby/legacy/metaclass_eval_handler.rb
22
28
  spec/spec_helper.rb
23
29
  spec/classes/named_program.rb
24
30
  spec/classes/aliased_program.rb
data/README.txt CHANGED
@@ -19,6 +19,10 @@ system.
19
19
  * Supports leading/tailing non-options.
20
20
  * Supports long-options and short-options.
21
21
  * Supports custom formating of options.
22
+
23
+ == REQUIREMENTS:
24
+
25
+ * {YARD}[http://yard.soen.ca/] >= 0.2.3.5
22
26
 
23
27
  == INSTALL:
24
28
 
data/Rakefile CHANGED
@@ -4,11 +4,22 @@ require 'rubygems'
4
4
  require 'hoe'
5
5
  require 'hoe/signing'
6
6
  require './tasks/spec.rb'
7
+ require './tasks/yard.rb'
7
8
 
8
9
  Hoe.spec('rprogram') do
9
10
  self.rubyforge_name = 'rprogram'
10
11
  self.developer('Postmodern', 'postmodern.mod3@gmail.com')
11
12
  self.remote_rdoc_dir = ''
13
+
14
+ self.extra_deps = [
15
+ ['yard', '>=0.2.3.5']
16
+ ]
17
+
18
+ self.extra_dev_deps = [
19
+ ['rspec', '>=1.2.8']
20
+ ]
21
+
22
+ self.spec_extras = {:has_rdoc => 'yard'}
12
23
  end
13
24
 
14
25
  # vim: syntax=Ruby
@@ -1,8 +1,11 @@
1
1
  module RProgram
2
2
  module Compat
3
3
  #
4
- # Returns the native _platform_.
4
+ # Determines the native platform.
5
5
  #
6
+ # @return [String] The native platform.
7
+ #
8
+ # @example
6
9
  # Compat.arch #=> "linux"
7
10
  #
8
11
  def Compat.platform
@@ -10,10 +13,11 @@ module RProgram
10
13
  end
11
14
 
12
15
  #
13
- # Returns an array representing the +PATH+ environment variable.
14
- # If the +PATH+ environment variable is not setup, an empty array will
15
- # be returned.
16
+ # Determines the contents of the +PATH+ environment variable.
17
+ #
18
+ # @return [Array] The contents of the +PATH+ environment variable.
16
19
  #
20
+ # @example
17
21
  # Compat.paths #=> ["/bin", "/usr/bin"]
18
22
  #
19
23
  def Compat.paths
@@ -29,9 +33,13 @@ module RProgram
29
33
  end
30
34
 
31
35
  #
32
- # Finds the program matching _name_ and returns it's full path.
33
- # If the program was not found, +nil+ will be returned.
36
+ # Finds the full-path of the program with the matching name.
37
+ #
38
+ # @param [String] name The name of the program to find.
34
39
  #
40
+ # @return [String, nil] The full-path of the desired program.
41
+ #
42
+ # @example
35
43
  # Compat.find_program('as') #=> "/usr/bin/as"
36
44
  #
37
45
  def Compat.find_program(name)
@@ -45,10 +53,14 @@ module RProgram
45
53
  end
46
54
 
47
55
  #
48
- # Finds the program matching one of the names within _names_ and
49
- # returns it's full path. If no program was found matching any of
50
- # the names, the +nil+ will be returned.
56
+ # Finds the program matching one of the matching names.
57
+ #
58
+ # @param [Array] names The names of the program to use while
59
+ # searching for the program.
60
+ #
61
+ # @return [String, nil] The first full-path for the program.
51
62
  #
63
+ # @example
52
64
  # Compat.find_program_by_names("gas","as") #=> "/usr/bin/as"
53
65
  #
54
66
  def Compat.find_program_by_names(*names)
@@ -3,33 +3,37 @@ require 'rprogram/compat'
3
3
 
4
4
  module RProgram
5
5
  module Nameable
6
- def self.included(base) # :nodoc:
6
+ def self.included(base)
7
7
  base.metaclass_eval do
8
8
  #
9
- # Returns the name of the program.
9
+ # @return [String] The name of the program.
10
10
  #
11
11
  def program_name
12
12
  @program_name ||= nil
13
13
  end
14
14
 
15
15
  #
16
- # Returns an Array of the program's aliases.
16
+ # @return [Array] The program's aliases.
17
17
  #
18
18
  def program_aliases
19
19
  @program_aliases ||= []
20
20
  end
21
21
 
22
22
  #
23
- # Returns an Array of all names the program is known by, combining
24
- # both program_name and program_aliases.
23
+ # Combines program_name with program_aliases.
24
+ #
25
+ # @return [Array] Names the program is known by.
25
26
  #
26
27
  def program_names
27
28
  ([program_name] + program_aliases).compact
28
29
  end
29
30
 
30
31
  #
31
- # Sets the program name for a class to the specified _name_.
32
+ # Sets the program name for the class.
33
+ #
34
+ # @param [String, Symbol] name The new program name.
32
35
  #
36
+ # @example
33
37
  # name_program 'ls'
34
38
  #
35
39
  def name_program(name)
@@ -37,8 +41,11 @@ module RProgram
37
41
  end
38
42
 
39
43
  #
40
- # Sets the program aliases for a class to the specified _aliases_.
44
+ # Sets the program aliases for the class.
45
+ #
46
+ # @param [Array] aliases The new program aliases.
41
47
  #
48
+ # @example
42
49
  # alias_program 'vim', 'vi'
43
50
  #
44
51
  def alias_program(*aliases)
@@ -48,21 +55,21 @@ module RProgram
48
55
  end
49
56
 
50
57
  #
51
- # Returns the program name of a class.
58
+ # @return [String] The program name of the class.
52
59
  #
53
60
  def program_name
54
61
  self.class.program_name
55
62
  end
56
63
 
57
64
  #
58
- # Returns the program aliases.
65
+ # @return [Array] The program aliases of the class.
59
66
  #
60
67
  def program_aliases
61
68
  self.class.program_aliases
62
69
  end
63
70
 
64
71
  #
65
- # Returns the program names.
72
+ # @return [Array] The program names of the class.
66
73
  #
67
74
  def program_names
68
75
  self.class.program_names
@@ -8,16 +8,19 @@ module RProgram
8
8
  attr_reader :multiple
9
9
 
10
10
  #
11
- # Creates a new NonOption object with the specified _options_.
11
+ # Creates a new NonOption object.
12
12
  #
13
- # _options_ may contain the following keys:
14
- # <tt>:name</tt>:: The name of the non-option.
15
- # <tt>:leading</tt>:: Implies the non-option is a leading non-option.
16
- # Defaults to +false+, if not given.
17
- # <tt>:tailing</tt>:: Implies the non-option is a tailing non-option.
18
- # Defaults to +true+, if not given.
19
- # <tt>:multiple</tt>:: Implies the non-option maybe given an Array
20
- # of values. Defaults to +false+, if not given.
13
+ # @param [Hash] options Additional options.
14
+ # @option options [Symbol] :name The name of the non-option.
15
+ # @option options [true, false] :leading (true)
16
+ # Implies the non-option is a
17
+ # leading non-option.
18
+ # @option options [false, true] :tailing (false)
19
+ # Implies the non-option is a
20
+ # tailing non-option.
21
+ # @option options [false, true] :multiple (false)
22
+ # Implies the non-option maybe
23
+ # given an Array of values.
21
24
  #
22
25
  def initialize(options={})
23
26
  @name = options[:name]
@@ -34,24 +37,32 @@ module RProgram
34
37
  end
35
38
 
36
39
  #
37
- # Returns +true+ if the non-options arguments are tailing, returns
38
- # +false+ otherwise.
40
+ # Determines whether the non-option's arguments are tailing.
41
+ #
42
+ # @return [true, false] Specifies whether the non-option's arguments are
43
+ # tailing.
39
44
  #
40
45
  def tailing?
41
46
  @tailing == true
42
47
  end
43
48
 
44
49
  #
45
- # Returns +true+ if the non-options arguments are leading, returns
46
- # +false+ otherwise.
50
+ # Determines whether the non-option's arguments are leading.
51
+ #
52
+ # @return [true, false] Specifies whether the non-option's arguments are
53
+ # leading.
47
54
  #
48
55
  def leading?
49
56
  !(@tailing)
50
57
  end
51
58
 
52
59
  #
53
- # Returns an +Array+ of the arguments for the non-option with the
54
- # specified _value_.
60
+ # Formats the arguments for the non-option.
61
+ #
62
+ # @param [Hash, Array, String, nil] value The value to use for the
63
+ # arguments of the non-option.
64
+ #
65
+ # @return [Array] The arguments for the non-option.
55
66
  #
56
67
  def arguments(value)
57
68
  return [] unless value
@@ -17,26 +17,35 @@ module RProgram
17
17
  attr_reader :sub_options
18
18
 
19
19
  #
20
- # Creates a new Option object with the specified _options_. If a _block_
20
+ # Creates a new Option object with. If a _block_
21
21
  # is given it will be used for the custom formating of the option. If a
22
22
  # _block_ is not given, the option will use the default_format when
23
23
  # generating the arguments.
24
24
  #
25
- # _options_ must contain the following key:
26
- # <tt>:flag</tt>:: The command-line flag to use.
25
+ # @param [Hash] options Additional options.
26
+ # @option options [String] :flag The command-line flag to use.
27
+ # @option options [true, false] :equals (false)
28
+ # Implies the option maybe
29
+ # formated as
30
+ # <tt>"--flag=value"</tt>.
27
31
  #
28
- # _options_ may also contain the following keys:
29
- # <tt>:equals</tt>:: Implies the option maybe formated as
30
- # <tt>"--flag=value"</tt>. Defaults to +falue+, if
31
- # not given.
32
- # <tt>:multuple</tt>:: Specifies the option maybe given an Array of
33
- # values. Defaults to +false+, if not given.
34
- # <tt>:separator</tt>:: The separator to use for formating multiple
35
- # arguments into one +String+. Cannot be used
36
- # with <tt>:multiple</tt>.
37
- # <tt>:sub_options</tt>:: Specifies that the option contains
38
- # sub-options. Defaults to false, if not given.
32
+ # @option options [true, false] :multiple (false)
33
+ # Specifies the option maybe
34
+ # given an Array of values.
35
+ # @option options [String] :separator The separator to use for
36
+ # formating multiple arguments into
37
+ # one +String+. Cannot be used with
38
+ # the +:multiple+ option.
39
+ # @option options [true, false] :sub_options (false)
40
+ # Specifies that the option
41
+ # contains sub-options.
39
42
  #
43
+ # @yield [option, value] If a block is given, it will be used to format
44
+ # each value of the option.
45
+ # @yieldparam [Option] option The option that is being formatted.
46
+ # @yieldparam [String, Array] value The value to format for the
47
+ # option. May be an Array, if multiple
48
+ # values are allowed with the option.
40
49
  #
41
50
  def initialize(options={},&block)
42
51
  @flag = options[:flag]
@@ -64,8 +73,11 @@ module RProgram
64
73
  end
65
74
 
66
75
  #
67
- # Returns an +Array+ of the arguments for the option with the specified
68
- # _value_.
76
+ # Formats the arguments for the option.
77
+ #
78
+ # @param [Hash, Array, String] value The arguments to format.
79
+ #
80
+ # @return [Array] The formatted arguments of the option.
69
81
  #
70
82
  def arguments(value)
71
83
  return [@flag] if value == true
@@ -2,7 +2,9 @@ module RProgram
2
2
  class OptionList < Hash
3
3
 
4
4
  #
5
- # Creates a new OptionList object with the given _options_.
5
+ # Creates a new OptionList object.
6
+ #
7
+ # @param [Hash{Symbol => String}] options The options to start with.
6
8
  #
7
9
  def initialize(options={})
8
10
  super(options)
@@ -13,6 +15,7 @@ module RProgram
13
15
  #
14
16
  # Provides transparent access to the options within the option list.
15
17
  #
18
+ # @example
16
19
  # opt_list = OptionList.new(:name => 'test')
17
20
  # opt_list.name
18
21
  # # => "test"
@@ -4,18 +4,23 @@ require 'rprogram/option'
4
4
 
5
5
  module RProgram
6
6
  module Options
7
- def self.included(base) # :nodoc:
7
+ def self.included(base)
8
8
  base.metaclass_eval do
9
9
  #
10
- # Returns a Hash of all defined non-options.
10
+ # @return [Hash] All defined non-options of the class.
11
11
  #
12
12
  def non_options
13
13
  @non_options ||= {}
14
14
  end
15
15
 
16
16
  #
17
- # Returns +true+ if the non-option with the specified _name_ was
18
- # defined, returns +false+ otherwise.
17
+ # Searches for the non-option with the matching name in the class
18
+ # and it's ancestors.
19
+ #
20
+ # @param [Symbol, String] name The name to search for.
21
+ #
22
+ # @return [true, false] Specifies whether the non-option with the
23
+ # matching name was defined.
19
24
  #
20
25
  def has_non_option?(name)
21
26
  name = name.to_sym
@@ -30,7 +35,12 @@ module RProgram
30
35
  end
31
36
 
32
37
  #
33
- # Returns the non-option known by _name_, returns +nil+ otherwise.
38
+ # Searches for the non-option with the matching name in the class
39
+ # and it's ancestors.
40
+ #
41
+ # @param [Symbol, String] name The name to search for.
42
+ #
43
+ # @return [NonOption] The non-option with the matching name.
34
44
  #
35
45
  def get_non_option(name)
36
46
  name = name.to_sym
@@ -47,15 +57,20 @@ module RProgram
47
57
  end
48
58
 
49
59
  #
50
- # Returns a Hash of all defined options.
60
+ # @return [Hash] All defined options for the class.
51
61
  #
52
62
  def options
53
63
  @options ||= {}
54
64
  end
55
65
 
56
66
  #
57
- # Returns +true+ if an option with the specified _name_ was defined,
58
- # returns +false+ otherwise.
67
+ # Searches for the option with the matching name in the class and
68
+ # it's ancestors.
69
+ #
70
+ # @param [Symbol, String] name The name to search for.
71
+ #
72
+ # @return [true, false] Specifies whether the option with the
73
+ # matching name was defined.
59
74
  #
60
75
  def has_option?(name)
61
76
  name = name.to_sym
@@ -70,8 +85,12 @@ module RProgram
70
85
  end
71
86
 
72
87
  #
73
- # Returns the option with the specified _name_, returns +nil+
74
- # otherwise.
88
+ # Searches for the option with the matching name in the class and
89
+ # it's ancestors.
90
+ #
91
+ # @param [Symbol, String] name The name to search for.
92
+ #
93
+ # @return [Option] The option with the matching name.
75
94
  #
76
95
  def get_option(name)
77
96
  name = name.to_sym
@@ -88,31 +107,28 @@ module RProgram
88
107
  end
89
108
 
90
109
  #
91
- # Returns +true+ if the non-option with the specified _name_ was
92
- # defined, returns +false+ otherwise.
110
+ # @see self.has_non_option?
93
111
  #
94
112
  def has_non_option?(name)
95
113
  self.class.has_non_option?(name)
96
114
  end
97
115
 
98
116
  #
99
- # Returns the non-option known by _name_, returns +nil+ otherwise.
117
+ # @see self.get_non_option
100
118
  #
101
119
  def get_non_option(name)
102
120
  self.class.get_non_option(name)
103
121
  end
104
122
 
105
123
  #
106
- # Returns +true+ if an option with the specified _name_ was defined,
107
- # returns +false+ otherwise.
124
+ # @see self.has_option?
108
125
  #
109
126
  def has_option?(name)
110
127
  self.class.has_option?(name)
111
128
  end
112
129
 
113
130
  #
114
- # Returns the option with the specified _name_, returns +nil+
115
- # otherwise.
131
+ # @see self.get_option
116
132
  #
117
133
  def get_option(name)
118
134
  self.class.get_option(name)
@@ -16,10 +16,18 @@ module RProgram
16
16
  attr_reader :name
17
17
 
18
18
  #
19
- # Creates a new Program object from _path_. If _path_ is not a valid
20
- # file, a ProgramNotFound exception will be thrown. If a _block_ is
21
- # given, it will be passed the newly created Program.
19
+ # Creates a new Program object.
22
20
  #
21
+ # @param [String] path The full-path of the program.
22
+ #
23
+ # @yield [prog] If a block is given, it will be passed the newly
24
+ # created Program object.
25
+ # @yieldparam [Program] prog The newly created program object.
26
+ #
27
+ # @raise [ProgramNotFound] Specifies the given path was not a valid
28
+ # file.
29
+ #
30
+ # @example
23
31
  # Program.new('/usr/bin/ls')
24
32
  #
25
33
  def initialize(path,&block)
@@ -36,13 +44,27 @@ module RProgram
36
44
  end
37
45
 
38
46
  #
39
- # Creates a new program object with the specified _path_, if _path_
40
- # is a valid file. Any given _arguments_ or a given _block_ will be used
41
- # in creating the new program.
47
+ # Creates a new program object.
48
+ #
49
+ # @param [String] path The full-path of the program.
50
+ # @param [Array] arguments Additional arguments to initialize the
51
+ # program with.
52
+ #
53
+ # @yield [prog] If a block is given, it will be passed the newly
54
+ # created Program object.
55
+ # @yieldparam [Program] prog The newly created program object.
42
56
  #
43
- # Program.find_with_path('/bin/cd') # => Program
57
+ # @return [Program, nil] Returns the newly created Program object.
58
+ # If the given path was not a valid file,
59
+ # +nil+ will be returned.
44
60
  #
45
- # Program.find_with_path('/obviously/fake') # => nil
61
+ # @example
62
+ # Program.find_with_path('/bin/cd')
63
+ # # => Program
64
+ #
65
+ # @example
66
+ # Program.find_with_path('/obviously/fake')
67
+ # # => nil
46
68
  #
47
69
  def self.find_with_path(path,*arguments,&block)
48
70
  return self.new(path,*arguments,&block) if File.file?(path)
@@ -53,9 +75,25 @@ module RProgram
53
75
  # if a path within _paths_ is a valid file. Any given _arguments_ or
54
76
  # a given _block_ will be used in creating the new program.
55
77
  #
56
- # Program.find_with_paths(['/bin/cd','/usr/bin/cd']) # => Program
78
+ # @param [Array] paths The Array of paths to search for the program.
79
+ # @param [Array] arguments Additional arguments to initialize
80
+ # the program with.
81
+ #
82
+ # @yield [prog] If a block is given, it will be passed the newly
83
+ # created Program object.
84
+ # @yieldparam [Program] prog The newly created program object.
85
+ #
86
+ # @return [Program, nil] Returns the newly created Program object.
87
+ # If none of the given paths were valid files,
88
+ # +nil+ will be returned.
57
89
  #
58
- # Program.find_with_paths(['/obviously/fake','/bla']) # => nil
90
+ # @example
91
+ # Program.find_with_paths(['/bin/cd','/usr/bin/cd'])
92
+ # # => Program
93
+ #
94
+ # @example
95
+ # Program.find_with_paths(['/obviously/fake','/bla'])
96
+ # # => nil
59
97
  #
60
98
  def self.find_with_paths(paths,*arguments,&block)
61
99
  paths.each do |path|
@@ -64,15 +102,27 @@ module RProgram
64
102
  end
65
103
 
66
104
  #
67
- # Finds and creates the program using it's +program_names+ and returns
68
- # a new Program object. If the program cannot be found by any of it's
69
- # +program_names+, a ProramNotFound exception will be raised. Any given
70
- # _arguments_ or a given _block_ will be used in creating the new program.
105
+ # Finds and creates the program using it's +program_names+.
106
+ #
107
+ # @param [Array] arguments Additional arguments to initialize the
108
+ # program object with.
71
109
  #
72
- # Program.find # => Program
110
+ # @yield [prog] If a block is given, it will be passed the newly
111
+ # created Program object.
112
+ # @yieldparam [Program] prog The newly created program object.
73
113
  #
114
+ # @return [Program] The newly created program object.
115
+ #
116
+ # @raise [ProgramNotFound] Non of the +program_names+ represented
117
+ # valid programs on the system.
118
+ #
119
+ # @example
120
+ # Program.find
121
+ # # => Program
122
+ #
123
+ # @example
74
124
  # MyProgram.find('stuff','here') do |prog|
75
- # ...
125
+ # # ...
76
126
  # end
77
127
  #
78
128
  def self.find(*arguments,&block)
@@ -88,15 +138,20 @@ module RProgram
88
138
  end
89
139
 
90
140
  #
91
- # Runs the program with the specified _arguments_ and returns
92
- # either +true+ or +false+, depending on the exit status of the
93
- # program.
141
+ # Runs the program.
142
+ #
143
+ # @param [Array] args Addition arguments to run the program with.
144
+ #
145
+ # @return [true, false] Specifies the exit status of the program.
94
146
  #
147
+ # @example
95
148
  # echo = Program.find_by_name('echo')
96
149
  # echo.run('hello')
97
150
  # # hello
98
151
  # # => true
99
152
  #
153
+ # @see Kernel.system
154
+ #
100
155
  def run(*args)
101
156
  args = args.map { |arg| arg.to_s }
102
157
 
@@ -108,15 +163,25 @@ module RProgram
108
163
  end
109
164
 
110
165
  #
111
- # Runs the program with the specified _task_ object.
166
+ # Runs the program with the arguments from the given task.
167
+ #
168
+ # @param [Task] task The task who's arguments will be used to run the
169
+ # program.
170
+ #
171
+ # @return [true, false] Specifies the exit status of the program.
172
+ #
173
+ # @see Kernel.system
112
174
  #
113
175
  def run_task(task)
114
176
  run(*(task.arguments))
115
177
  end
116
178
 
117
179
  #
118
- # Returns the path of the program.
180
+ # Converts the program to a String.
181
+ #
182
+ # @return [String] The path of the program.
119
183
  #
184
+ # @example
120
185
  # Program.find_by_name('echo').to_s
121
186
  # # => "/usr/bin/echo"
122
187
  #
@@ -1,15 +1,17 @@
1
1
  module RProgram
2
2
  #
3
- # Returns +true+ if RProgram debugging messages are enabled, returns
4
- # +false+ if they are not enabled.
3
+ # @return [true, false] Specifies whether debugging messages are enabled
4
+ # for RProgram. Defaults to false, if not set.
5
5
  #
6
6
  def RProgram.debug
7
7
  @@rprogram_debug ||= false
8
8
  end
9
9
 
10
10
  #
11
- # Enables or disables RProgram debugging messages depending on the
12
- # specified _value_.
11
+ # Enables or disables debugging messages for RProgram.
12
+ #
13
+ # @param [true, false] value The new value of RProgram.debug.
14
+ # @return [true, false] The new value of RProgram.debug.
13
15
  #
14
16
  def RProgram.debug=(value)
15
17
  @@rprogram_debug = value
data/lib/rprogram/task.rb CHANGED
@@ -7,13 +7,20 @@ module RProgram
7
7
  include Options
8
8
 
9
9
  #
10
- # Creates a new Task object with the given _options_. If a block is
11
- # given, it is passed the newly created Task object.
10
+ # Creates a new Task object.
12
11
  #
12
+ # @param [Hash{Symbol => Object}] options Additional task options.
13
+ #
14
+ # @yield [task] If a block is given, it will be passed the newly
15
+ # created task.
16
+ # @yieldparam [Task] task The newly created Task object.
17
+ #
18
+ # @example
13
19
  # Task.new(:test => 'example', :count => 2, :verbose => true)
14
20
  #
21
+ # @example
15
22
  # Task.new(:help => true) do |task|
16
- # ...
23
+ # # ...
17
24
  # end
18
25
  #
19
26
  def initialize(options={},&block)
@@ -24,23 +31,37 @@ module RProgram
24
31
  end
25
32
 
26
33
  #
27
- # Returns the compiled _arguments_ from a Task object created
28
- # with the given _options_ and _block_.
34
+ # Creates a new Task object, then formats command-line arguments
35
+ # using the Task object.
36
+ #
37
+ # @param [Hash{Symbol => Object}] options Additional task options.
38
+ #
39
+ # @yield [task] If a block is given, it will be passed the newly
40
+ # created task.
41
+ # @yieldparam [Task] task The newly created Task object.
29
42
  #
43
+ # @return [Array] The formatted arguments from a Task object.
44
+ #
45
+ # @example
30
46
  # MyTask.arguments(:verbose => true, :count => 2)
47
+ # # => [...]
31
48
  #
49
+ # @example
32
50
  # MyTask.arguments do |task|
33
51
  # task.verbose = true
34
52
  # task.file = 'output.txt'
35
53
  # end
54
+ # # => [...]
36
55
  #
37
56
  def self.arguments(options={},&block)
38
57
  self.new(options,&block).arguments
39
58
  end
40
59
 
41
60
  #
42
- # Returns an array of _arguments_ generated from all the leading
43
- # non-options of the task and it's sub-tasks.
61
+ # Generates the command-line arguments for all leading non-options.
62
+ #
63
+ # @return [Array] The command-line arguments generated from all the
64
+ # leading non-options of the task and it's sub-tasks.
44
65
  #
45
66
  def leading_non_options
46
67
  args = []
@@ -63,8 +84,10 @@ module RProgram
63
84
  end
64
85
 
65
86
  #
66
- # Returns an array of _arguments_ generated from all the options
67
- # of the task and it's sub-tasks.
87
+ # Generates the command-line arguments from all options.
88
+ #
89
+ # @return [Array] The command-line arguments generated from all the
90
+ # options of the task and it's sub-tasks.
68
91
  #
69
92
  def options
70
93
  args = []
@@ -84,8 +107,10 @@ module RProgram
84
107
  end
85
108
 
86
109
  #
87
- # Returns an array of _arguments_ generated from all the tailing
88
- # non-options of the task and it's sub-tasks.
110
+ # Generates the command-line arguments from all tailing non-options.
111
+ #
112
+ # @return [Array] The command-line arguments generated from all the
113
+ # tailing non-options of the task and it's sub-tasks.
89
114
  #
90
115
  def tailing_non_options
91
116
  args = []
@@ -108,8 +133,11 @@ module RProgram
108
133
  end
109
134
 
110
135
  #
111
- # Returns an array of _arguments_ compiled from the _arguments_ of
112
- # the tasks leading non_options, options and tailing non-options.
136
+ # Generates the command-line arguments from the task.
137
+ #
138
+ # @return [Array] The command-line arguments compiled from the
139
+ # leading non-options, options and tailing non-options
140
+ # of the task and it's sub-tasks.
113
141
  #
114
142
  def arguments
115
143
  leading_non_options + options + tailing_non_options
@@ -118,8 +146,12 @@ module RProgram
118
146
  protected
119
147
 
120
148
  #
121
- # Defines a sub-task of _name_ and class of _task_.
149
+ # Defines a sub-task.
150
+ #
151
+ # @param [String, Symbol] name The name of the sub-task.
152
+ # @param [Task] task The task class of the sub-task.
122
153
  #
154
+ # @example
123
155
  # subtask :extra, ExtraTask
124
156
  #
125
157
  def self.subtask(name,task)
@@ -141,10 +173,24 @@ module RProgram
141
173
  end
142
174
 
143
175
  #
144
- # Defines a non-option with the given _options_.
176
+ # Defines a non-option.
145
177
  #
178
+ # @param [Hash] options Additional options for the non-option.
179
+ # @option options [Symbol] :name The name of the non-option.
180
+ # @option options [true, false] :leading (true)
181
+ # Implies the non-option is a
182
+ # leading non-option.
183
+ # @option options [false, true] :tailing (false)
184
+ # Implies the non-option is a
185
+ # tailing non-option.
186
+ # @option options [false, true] :multiple (false)
187
+ # Implies the non-option maybe
188
+ # given an Array of values.
189
+ #
190
+ # @example
146
191
  # non_option :name => 'input_file', :tailing => true
147
192
  #
193
+ # @example
148
194
  # non_option :name => 'file', :tailing => true, :multiple => true
149
195
  #
150
196
  def self.non_option(options={})
@@ -166,22 +212,26 @@ module RProgram
166
212
  end
167
213
 
168
214
  #
169
- # Defines a long-option with the specified _options_.
170
- #
171
- # _options_ must contain the following keys:
172
- # <tt>:flag</tt>:: The flag to use for the option.
215
+ # Defines a long-option.
173
216
  #
174
- # _options_ may also contain the following keys:
175
- # <tt>:name</tt>:: The name of the option. Defaults to the
176
- # flag_namify'ed form of <tt>options[:flag]</tt>,
177
- # if not given.
178
- # <tt>:multiply</tt>:: Specifies that the option may appear multiple
179
- # times in the arguments.
180
- # <tt>:sub_options</tt>:: Specifies that the option contains multiple
181
- # sub-options.
217
+ # @param [Hash] options Additional options of the long-option.
218
+ # @option options [String] :flag The flag to use for the option.
219
+ # @option options [Symbol] :name The name of the option. Defaults to
220
+ # the flag_namify'ed form of
221
+ # <tt>options[:flag]</tt>, if not given.
222
+ # @option options [true, false] :multiply (false)
223
+ # Specifies that the option may
224
+ # appear multiple times in the
225
+ # arguments.
226
+ # @option options [true, false] :sub_options (false)
227
+ # Specifies that the option
228
+ # contains multiple
229
+ # sub-options.
182
230
  #
231
+ # @example
183
232
  # long_option :flag => '--output'
184
233
  #
234
+ # @example
185
235
  # long_option :flag => '-f', :name => :file
186
236
  #
187
237
  def self.long_option(options={},&block)
@@ -193,18 +243,21 @@ module RProgram
193
243
  end
194
244
 
195
245
  #
196
- # Defines a short_option with the specified _options_.
246
+ # Defines a short_option.
197
247
  #
198
- # _options_ must contain the following keys:
199
- # <tt>:name</tt>:: The name of the option.
200
- # <tt>:flag</tt>:: The flag to use for the option.
201
- #
202
- # _options_ may also contain the following keys:
203
- # <tt>:multiply</tt>:: Specifies that the option may appear multiple
204
- # times in the arguments.
205
- # <tt>:sub_options</tt>:: Specifies that the option contains multiple
206
- # sub-options.
248
+ # @param [Hash] options Additional options for the short-option.
249
+ # @option options [Symbol, String] :name The name of the short-option.
250
+ # @option options [String] :flag The flag to use for the short-option.
251
+ # @option options [true, false] :multiply (false)
252
+ # Specifies that the option may
253
+ # appear multiple times in the
254
+ # arguments.
255
+ # @option options [true, false] :sub_options (false)
256
+ # Specifies that the option
257
+ # contains multiple
258
+ # sub-options.
207
259
  #
260
+ # @example
208
261
  # short_option :flag => '-c', :name => :count
209
262
  #
210
263
  def self.short_option(options,&block)
@@ -212,17 +265,19 @@ module RProgram
212
265
  end
213
266
 
214
267
  #
215
- # Defines an option with the specified _options_ and the given _block_.
216
- #
217
- # _options_ must contain the following keys:
218
- # <tt>:name</tt>:: The name of the option.
219
- # <tt>:flag</tt>:: The flag to use for the option.
268
+ # Defines an option.
220
269
  #
221
- # _options_ may also contain the following keys:
222
- # <tt>:multiply</tt>:: Specifies that the option may appear multiple
223
- # times in the arguments.
224
- # <tt>:sub_options</tt>:: Specifies that the option contains multiple
225
- # sub-options.
270
+ # @param [Hash] options Additional options.
271
+ # @option options [Symbol, String] :name The name of the option.
272
+ # @option options [String] :flag The flag to use for the option.
273
+ # @option options [true, false] :multiple (false)
274
+ # Specifies that the option may
275
+ # appear multiple times in the
276
+ # arguments.
277
+ # @option options [true, false] :sub_options (false)
278
+ # Specifies that the option
279
+ # contains multiple
280
+ # sub-options.
226
281
  #
227
282
  def self.define_option(options,&block)
228
283
  method_name = options[:name].to_sym
@@ -250,8 +305,14 @@ module RProgram
250
305
 
251
306
  #
252
307
  # Converts a long-option flag to a Ruby method name.
308
+ #
309
+ # @param [String] flag The command-line flag to convert.
310
+ #
311
+ # @return [String] A method-name compatible version of the given flag.
253
312
  #
254
- # Task.flag_namify('--output-file') # => "output_file"
313
+ # @example
314
+ # Task.flag_namify('--output-file')
315
+ # # => "output_file"
255
316
  #
256
317
  def Task.flag_namify(flag)
257
318
  flag = flag.to_s.downcase
@@ -1,3 +1,4 @@
1
1
  module RProgram
2
- VERSION = '0.1.6'
2
+ # Version of RProgram
3
+ VERSION = '0.1.7'
3
4
  end
@@ -0,0 +1,21 @@
1
+ require 'yard/handlers/ruby/legacy/base'
2
+
3
+ module YARD
4
+ module Handlers
5
+ module Ruby
6
+ module Legacy
7
+ class MetaclassEvalHandler < Base
8
+
9
+ handles /(\A|\.)metaclass_eval(\s+|\()/
10
+
11
+ def process
12
+ if statement.block
13
+ parse_block(:namespace => namespace, :scope => :class)
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1 @@
1
+ require 'rprogram/yard/handlers/ruby/legacy/metaclass_eval_handler'
@@ -0,0 +1,18 @@
1
+ require 'yard'
2
+
3
+ module YARD
4
+ module Handlers
5
+ module Ruby
6
+ class MetaclassEvalHandler < YARD::Handlers::Ruby::Base
7
+
8
+ handles method_call(:metaclass_eval)
9
+
10
+ def process
11
+ if (block = statement.jump(:brace_block, :do_block).last)
12
+ parse_block(block, :namespace => namespace, :scope => :class)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,2 @@
1
+ require 'rprogram/yard/handlers/ruby/metaclass_eval_handler'
2
+ require 'rprogram/yard/handlers/ruby/legacy'
@@ -0,0 +1 @@
1
+ require 'rprogram/yard/handlers/ruby'
@@ -0,0 +1 @@
1
+ require 'rprogram/yard/handlers'
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'rubygems'
2
- gem 'rspec', '>=1.1.3'
2
+ gem 'rspec', '>=1.2.8'
3
3
  require 'spec'
4
4
 
5
5
  require 'rprogram/version'
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rprogram
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
@@ -30,9 +30,29 @@ cert_chain:
30
30
  pDj+ws7QjtH/Qcrr1l9jfN0ehDs=
31
31
  -----END CERTIFICATE-----
32
32
 
33
- date: 2009-06-30 00:00:00 -07:00
33
+ date: 2009-09-25 00:00:00 -07:00
34
34
  default_executable:
35
35
  dependencies:
36
+ - !ruby/object:Gem::Dependency
37
+ name: yard
38
+ type: :runtime
39
+ version_requirement:
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 0.2.3.5
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ type: :development
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.2.8
55
+ version:
36
56
  - !ruby/object:Gem::Dependency
37
57
  name: hoe
38
58
  type: :development
@@ -41,7 +61,7 @@ dependencies:
41
61
  requirements:
42
62
  - - ">="
43
63
  - !ruby/object:Gem::Version
44
- version: 2.2.0
64
+ version: 2.3.3
45
65
  version:
46
66
  description: |-
47
67
  RProgram is a library for creating wrappers around command-line programs.
@@ -81,6 +101,12 @@ files:
81
101
  - lib/rprogram/program.rb
82
102
  - lib/rprogram/rprogram.rb
83
103
  - lib/rprogram/version.rb
104
+ - lib/rprogram/yard.rb
105
+ - lib/rprogram/yard/handlers.rb
106
+ - lib/rprogram/yard/handlers/ruby.rb
107
+ - lib/rprogram/yard/handlers/ruby/metaclass_eval_handler.rb
108
+ - lib/rprogram/yard/handlers/ruby/legacy.rb
109
+ - lib/rprogram/yard/handlers/ruby/legacy/metaclass_eval_handler.rb
84
110
  - spec/spec_helper.rb
85
111
  - spec/classes/named_program.rb
86
112
  - spec/classes/aliased_program.rb
@@ -96,7 +122,7 @@ files:
96
122
  - spec/nameable_spec.rb
97
123
  - spec/program_spec.rb
98
124
  - spec/task_spec.rb
99
- has_rdoc: true
125
+ has_rdoc: yard
100
126
  homepage: http://rprogram.rubyforge.org/
101
127
  licenses: []
102
128
 
@@ -121,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
147
  requirements: []
122
148
 
123
149
  rubyforge_project: rprogram
124
- rubygems_version: 1.3.4
150
+ rubygems_version: 1.3.5
125
151
  signing_key:
126
152
  specification_version: 3
127
153
  summary: RProgram is a library for creating wrappers around command-line programs
metadata.gz.sig CHANGED
Binary file