rprogram 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
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