webget_ruby_ramp 1.8.0 → 1.8.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,16 +6,17 @@ class Integer
6
6
 
7
7
  # Syntactic sugar to yield n times to a block.
8
8
  #
9
- # Return an array of any results.
10
- #
11
- # ==Example
12
- # 3.maps{rand} => [0.0248131784304143, 0.814666170190905, 0.15812816258206]
13
- #
14
- # ==Parallel to Integer#times
15
- #
9
+ # Comparison to Integer#times:
16
10
  # Integer#maps is similar to Integer#times except that the output from each
17
11
  # call to the block is captured in an array element and that array is
18
12
  # returned to the calling code.
13
+ #
14
+ # @return an array of any results
15
+ #
16
+ # @example Generate an array of three random numbers
17
+ # 3.maps{rand}
18
+ # => [0.0248131784304143, 0.814666170190905, 0.15812816258206]
19
+ #
19
20
 
20
21
  def maps
21
22
  return (0...self).map{|item| yield item}
@@ -8,55 +8,59 @@ class IO
8
8
  # Reads the entire file specified by name as individual lines as with IO#readlines,
9
9
  # and returns those lines in an array of rows, where each row is an array of fields.
10
10
  #
11
- # ==Example
11
+ # @return [Array<Array<String>>] an array of rows, where each row is an array of fields.
12
+ #
13
+ # @example
12
14
  # IO.readrows("my.tsv")
13
15
  # => [["A1","B1","C1"],["A2","B2","C2"],["A3","B3","C3"]]
14
16
  #
15
- # ==Options
16
- # - Rows are separated by _row_ option, which defaults to Ruby's record separator $/ or "\n"
17
- # - Cols are separated by _col_ option, which defaults to Ruby's string split separator $; or "\t"
17
+ # @param [String] filename
18
+ # @param [Hash] options
19
+ # - Rows are separated by _row_ option, which defaults to Ruby's record separator $/ or "\n"
20
+ # - Cols are separated by _col_ option, which defaults to Ruby's string split separator $; or "\t"
18
21
  #
19
- # ==Example with options suitable for a file using TSV (Tab Separated Values)
22
+ # @example with options suitable for a file using TSV (Tab Separated Values)
20
23
  # IO.readrows("my.tsv", :row=>"\n", :col=>"\t")
21
24
  #
22
25
  # Note: the col option is sent along to String#split, so can be a string or a regexp.
23
26
  #
24
- # See:
27
+ # @see
25
28
  # - File#readline
26
29
  # - File#readlines
27
30
  # - File#readrow
28
31
 
29
- def IO.readrows(name, options={})
32
+ def IO.readrows(filename, options={})
30
33
  row_sep||=options[:row]||$/||"\n"
31
34
  col_sep||=options[:col]||$;||"\t"
32
- return IO.readlines(name, row_sep).map{|line| line.chomp(row_sep).split(col_sep)}
35
+ return IO.readlines(filename, row_sep).map{|line| line.chomp(row_sep).split(col_sep)}
33
36
  end
34
37
 
35
38
 
36
39
  # Read a line as with IO#readline and return the line as a row of fields.
37
40
  #
38
- # ==Example
41
+ # Note: the col option is sent along to String#split, so can be a string or a regexp.
42
+ #
43
+ # @return [Array<String>] fields
44
+ #
45
+ # @param [Hash] options
46
+ # - Rows are separated by _row_ option, which defaults to Ruby's record separator $/ or "\n"
47
+ # - Cols are separated by _col_ option, which defaults to Ruby's string split separator $; or "\t"
48
+ #
49
+ # @example
39
50
  # file = File.new("my.tsv")
40
51
  # file.readrow() => ["A1","B1","C1"]
41
52
  # file.readrow() => ["A2","B2","C2"]
42
53
  # file.readrow() => ["A3","B3","C3"]]
43
54
  #
44
- # ==Options
45
- # - Rows are separated by _row_ option, which defaults to Ruby's record separator $/ or "\n"
46
- # - Cols are separated by _col_ option, which defaults to Ruby's string split separator $; or "\t"
47
- #
48
- # ==Example with options suitable for a file using TSV (Tab Separated Values)
55
+ # @example with options suitable for a file using TSV (Tab Separated Values)
49
56
  # file = File.new("my.tsv")
50
57
  # file.readrow(:row=>"\n", :col=>"\t") => ["A1","B1","C1"]
51
58
  # file.readrow(:row=>"\n", :col=>"\t") => ["A2","B2","C2"]
52
59
  # file.readrow(:row=>"\n", :col=>"\t") => ["A3","B3","C3"]
53
60
  #
54
- # Note: the col option is sent along to String#split, so can be a string or a regexp.
55
- #
56
- # See:
57
- # - File#readline
58
- # - File#readlines
59
- # - File#readrows
61
+ # @see File#readline
62
+ # @see File#readlines
63
+ # @see File#readrows
60
64
 
61
65
  def readrow(options={})
62
66
  row_sep||=options[:row]||$/||"\n"
@@ -14,6 +14,18 @@ module Kernel
14
14
  #-
15
15
  # Make this fast because its often doing logging & reporting.
16
16
  # Inline this and use $1 because it's empirically faster than /1
17
+ #
18
+ # These two methods are always equal:
19
+ # caller_method_name(0) === my_method_name
20
+ #
21
+ # @example
22
+ # def foo
23
+ # puts my_method_name
24
+ # end
25
+ # foo
26
+ # => "foo"
27
+ #
28
+ # @return [String] my method name
17
29
 
18
30
  def my_method_name
19
31
  caller[0] =~ /`([^']*)'/ and $1
@@ -27,6 +39,20 @@ module Kernel
27
39
  #-
28
40
  # Make this fast because its often doing logging & reporting.
29
41
  # Inline this and use $1 because it's empirically faster than /1
42
+ #
43
+ # These two methods are always equal:
44
+ # caller_method_name(0) === my_method_name
45
+ #
46
+ # @example
47
+ # def foo
48
+ # puts caller_method_name(0)
49
+ # puts caller_method_name(1)
50
+ # end
51
+ # =>
52
+ # "foo"
53
+ # "irb_binding"
54
+ #
55
+ # @return [String] the method name of the caller at the index
30
56
 
31
57
  def caller_method_name(caller_index=0)
32
58
  caller[caller_index] =~ /`([^']*)'/ and $1
@@ -38,6 +64,12 @@ module Kernel
38
64
  # Created by Graeme Mathieson.
39
65
  #
40
66
  # See http://rha7dotcom.blogspot.com/2008/07/ruby-and-rails-how-to-get-pp-pretty.html
67
+ #
68
+ # @example
69
+ # pp_s(["foo","goo"])
70
+ # => "[\"foo\", \"goo\"]\n"
71
+ #
72
+ # @return [String] a pretty print string of the params
41
73
 
42
74
  def pp_s(*objs)
43
75
  str = StringIO.new
@@ -5,14 +5,22 @@
5
5
  module Math
6
6
 
7
7
 
8
- # Return the natural log of _num_
8
+ # @return [Float] the natural log of _num_
9
+ #
10
+ # @example
11
+ # Math.ln(2.719)
12
+ # => 1.00
9
13
 
10
14
  def Math.ln(num)
11
15
  Math.log(num)
12
16
  end
13
17
 
14
18
 
15
- # Return the log of _num_ in base _base_
19
+ # @return [Float] the log of _num_ in base _base_
20
+ #
21
+ # @example
22
+ # Math.logn(10000,10)
23
+ # => 4.00
16
24
 
17
25
  def Math.logn(num,base)
18
26
  Math.ln(num)/Math.ln(base)
@@ -5,12 +5,15 @@
5
5
 
6
6
  class NilClass
7
7
 
8
- # Same as Rails
8
+ # @return [true]
9
+
9
10
  def blank?
10
11
  return true
11
12
  end
12
13
 
13
- # Return false
14
+
15
+ # @return [false]
16
+
14
17
  def size?
15
18
  return false
16
19
  end
@@ -4,9 +4,10 @@
4
4
 
5
5
  class Numeric
6
6
 
7
- # Return 0 if the given flag is any of: nil, false, 0, [], {}
7
+
8
+ # @return 0 if the given flag is any of: nil, false, 0, [], {}
8
9
  #
9
- # ==Example
10
+ # @example
10
11
  # 3.if(true) => 3
11
12
  # 3.if(false) => 0
12
13
  #
@@ -16,9 +17,9 @@ class Numeric
16
17
  end
17
18
 
18
19
 
19
- # Return self if flag is nil, false, 0, [], {}; otherwise return 0.
20
+ # @return self if flag is nil, false, 0, [], {}; otherwise return 0.
20
21
  #
21
- # ==Example
22
+ # @example
22
23
  # 3.unless(true) => 0
23
24
  # 3.unless(false) => 3
24
25
 
@@ -27,71 +28,4 @@ class Numeric
27
28
  end
28
29
 
29
30
 
30
- ###
31
- #
32
- # Metric conversions
33
- #
34
- ###
35
-
36
- # Return self / 10^15
37
- def peta
38
- self/1000000000000000
39
- end
40
-
41
- # Return self / 10^12
42
- def tera
43
- self/1000000000000
44
- end
45
-
46
- # Return self / 10^9
47
- def giga
48
- self/1000000000
49
- end
50
-
51
- # Return self / 10^6
52
- def mega
53
- self/1000000
54
- end
55
-
56
- # Return self / 10^3
57
- def kilo
58
- self/1000
59
- end
60
-
61
- # Return self / 10^2
62
- def hecto
63
- self/100
64
- end
65
-
66
- # Return self / 10
67
- def deka
68
- self/10
69
- end
70
-
71
- # Return self * 10
72
- def deci
73
- self*10
74
- end
75
-
76
- # Return self * 10^2
77
- def centi
78
- self*100
79
- end
80
-
81
- # Return self * 10^3
82
- def milli
83
- self*1000
84
- end
85
-
86
- # Return self * 10^6
87
- def micro
88
- self*1000000
89
- end
90
-
91
- # Return self * 10^9
92
- def nano
93
- self*1000000000
94
- end
95
-
96
-
97
31
  end
@@ -6,15 +6,16 @@ class Object
6
6
 
7
7
  # Syntactic sugar for arrays.
8
8
  #
9
- # ==Definition
9
+ # Definition:
10
10
  # object.in? array === array.include? object
11
11
  #
12
- # ==Example
12
+ # @example
13
13
  # array=['a','b','c']
14
14
  # object='b'
15
15
  # object.in? array
16
16
  # => true
17
-
17
+ #
18
+ # @return [Boolean] true iff this object is included in the array.
18
19
  def in?(array)
19
20
  array.include?(self)
20
21
  end
@@ -23,6 +23,13 @@ module Process
23
23
  # Get the 'ps' command as one long text string.
24
24
  #
25
25
  # This is typically useful for logging to a text file.
26
+ #
27
+ # @example
28
+ # pid = 100
29
+ # Process.ps(pid)
30
+ # => "0.0 bfd86194 21:14:51 ..."
31
+ #
32
+ # @return [String] lots of data about the process
26
33
 
27
34
  def self.ps(pid=Process.pid)
28
35
  `#{self.ps_command} #{pid.to_i}`
@@ -30,6 +37,13 @@ module Process
30
37
 
31
38
 
32
39
  # Get the 'ps' command as a hash of keys and values.
40
+ #
41
+ # @return [Hash<String,String>] the ps command options as keys and values
42
+ #
43
+ # @example
44
+ # pid = 100
45
+ # Process.pss(pid)
46
+ # => {"cp"=>0.0, "esp"=>"bfd86194", "etime"=>"21:14:51", ... }
33
47
  # -
34
48
  # OPTIMIZE: add dates, times
35
49
 
@@ -60,9 +74,16 @@ module Process
60
74
  return h
61
75
  end
62
76
 
77
+
63
78
  # Get the list of process alias keywords as typically defined by the shell.
64
79
  #
65
80
  # For example, a shell may consider "%cpu" and "pcpu" to be identical.
81
+ #
82
+ # @example
83
+ # Process::PS_ALIASES_DEFAULT
84
+ # => {"%cpu"=>"pcpu", "sigmask"=>"blocked", "cls"=>"policy", ... }
85
+ #
86
+ # @return [Hash<String,String>] process keyword aliases
66
87
 
67
88
  PS_ALIASES_DEFAULT={
68
89
  '%cpu'=>'pcpu',
@@ -106,6 +127,12 @@ module Process
106
127
  # Get the list of process alias keywords as typically defined by the shell.
107
128
  #
108
129
  # For example, a shell may consider "%cpu" and "pcpu" to be identical.
130
+ #
131
+ # @example
132
+ # Process.ps_aliases
133
+ # => {"%cpu"=>"pcpu", "sigmask"=>"blocked", "cls"=>"policy", ... }
134
+ #
135
+ # @return [Hash<String,String>] process keyword aliases
109
136
 
110
137
  def self.ps_aliases
111
138
  @@ps_aliases||=PS_ALIASES_DEFAULT
@@ -115,6 +142,13 @@ module Process
115
142
  # Set the list of process alias keywords.
116
143
  #
117
144
  # For example, a shell may consider "%cpu" and "pcpu" to be identical.
145
+ #
146
+ # @example
147
+ # Process::ps_aliases={ {"%cpu"=>"pcpu", "sigmask"=>"blocked", "cls"=>"policy" }
148
+ # => {"%cpu"=>"pcpu", "sigmask"=>"blocked", "cls"=>"policy"}
149
+ #
150
+ # @param [Hash<String,String>] aliases
151
+ # @return [Hash<String,String>] aliases
118
152
 
119
153
  def self.ps_aliases=(aliases)
120
154
  @@ps_aliases=aliases
@@ -128,8 +162,12 @@ module Process
128
162
 
129
163
  # Get the list of process keywords.
130
164
  #
131
- # ==Example
132
- # Process.ps_keys => ["blocked","group","pending","size"]
165
+ # @example
166
+ # Process.ps_keys
167
+ # => ["blocked","group","pending","size"]
168
+ #
169
+ # @return [Array<String>] the list of process keywords.
170
+
133
171
 
134
172
  def self.ps_keys
135
173
  @@ps_keys||=PS_KEYS_DEFAULT
@@ -138,8 +176,11 @@ module Process
138
176
 
139
177
  # Set the list of process keywords.
140
178
  #
141
- # ==Example
179
+ # @example
142
180
  # Process.ps_keys = ["blocked","group","pending","size"]
181
+ #
182
+ # @param [Array<String>] keywords
183
+ # @return [Array<String>] keywords
143
184
 
144
185
  def self.ps_keys=(keys)
145
186
  @@ps_keys=keys
@@ -153,8 +194,11 @@ module Process
153
194
 
154
195
  # Get the process command, i.e. what the sytem will call for the "ps" command.
155
196
  #
156
- # ==Example
157
- # Process.ps_command => "ps h ww -o blocked,group,pending,size"
197
+ # @example
198
+ # Process.ps_command
199
+ # => "ps h ww -o blocked,group,pending,size"
200
+ #
201
+ # @return [String] the process command
158
202
 
159
203
  def self.ps_command
160
204
  @@ps_command||=PS_COMMAND_DEFAULT
@@ -163,9 +207,12 @@ module Process
163
207
 
164
208
  # Set the process command, i.e. what the sytem will call for the "ps" command.
165
209
  #
166
- # ==Example
210
+ # @example
167
211
  # Process.ps_command = "ps h ww -o blocked,group,pending,size"
168
-
212
+ #
213
+ # @param [String] the process command
214
+ # @return [String] the process command
215
+
169
216
  def self.ps_command=(command)
170
217
  @@ps_command=command
171
218
  end
@@ -4,44 +4,56 @@
4
4
 
5
5
  class String
6
6
 
7
- ACCENTS = Hash[*'à a á a â a ã a ä a å a ā a ă a æ ae ď d đ d ç c ć c č c ĉ c ċ c è e é e ê e ë e ē e ę e ě e ĕ e ė e ƒ f ĝ g ğ g ġ g ģ g ĥ h ħ h ì i ì i í i î i ï i ī i ĩ i ĭ i į j ı j ij j ĵ j ķ k ĸ k ł l ľ l ĺ l ļ l ŀ l
8
- ñ n ń n ň n ņ n ʼn n ŋ n ò o ó o ô o õ o ö o ø o ō o ő o ŏ o ŏ o œ oek ą q ŕ r ř r ŗ r ś s š s ş s ŝ s ș s ť t ţ t ŧ t ț t ù u ú u û u ü u ū u ů u ű u ŭ u ũ u ų u ŵ w ý y ÿ y ŷ y ž z ż z ź z'.split]
9
7
 
10
-
11
- # Return the string with words capitalized
8
+ # @return [String] self, with words capitalized
9
+ # @example
10
+ # "foo goo hoo".capitalize_words
11
+ # => "Foo Goo Hoo"
12
12
 
13
13
  def capitalize_words
14
14
  split(/\b/).map{|word| word.capitalize }.join
15
15
  end
16
16
 
17
17
 
18
- # Return an array that is the string split into words, i.e. split(\W*\b\*)
18
+ # @return [Array<String>] an array that is the string split into words, i.e. split(\W*\b\*)
19
+ # @example
20
+ # "foo goo hoo".words
21
+ # => ["foo", "goo", "hoo"]
19
22
 
20
23
  def words
21
24
  split(/\W*\b\W*/)
22
25
  end
23
26
 
24
27
 
25
- # Return an array that is the string split at tabs, i.e. split(/\t/)
28
+ # @return [Array<String>] an array that is the string split at tabs, i.e. split(/\t/)
29
+ # @example
30
+ # "foo\tgoo\thoo".split_tab
31
+ # => ["foo", "goo", "hoo"]
26
32
 
27
33
  def split_tab
28
34
  split(/\t/)
29
35
  end
30
36
 
31
37
 
32
- # Return an array that is the string split at newlines, then tabs.
33
38
  # This is useful to split a TSV (Tab Separated Values) string
34
39
  # into an array of rows, and each row into an array of fields.
40
+ #
41
+ # @return [Array<String>] an array that is the string split at newlines, then tabs.
42
+ #
43
+ # @example
44
+ # "foo\tgoo\thoo\n"ioo\tjoo\tkoo\nloo\tmoo\tnoo".split_tsv
45
+ # => [["foo", "goo", "hoo"], ["ioo", "joo", "koo"], ["loo", "moo", "noo"]]
35
46
 
36
47
  def split_tsv
37
48
  split(/\n/).map{|line| line.split(/\t/)}
38
49
  end
39
50
 
40
51
 
41
- # Return the string in lowercase, with any non-word-characters
42
- # replaced with single underscores (aka low dashes).
52
+ # @return [String] self in lowercase,
53
+ # with any non-word-characters
54
+ # replaced with single underscores (aka low dashes).
43
55
  #
44
- # ==Example
56
+ # @example
45
57
  # 'Foo Goo Hoo' => 'foo_goo_hoo'
46
58
  # 'Foo***Goo***Hoo' => 'foo_goo_hoo'
47
59
 
@@ -50,9 +62,9 @@ class String
50
62
  end
51
63
 
52
64
 
53
- # Return the string as an XML id, which is the same as #lowcase
65
+ # @return [String] the string as an XML id, which is the same as #lowcase
54
66
  #
55
- # ==Example
67
+ # @example
56
68
  # "Foo Hoo Goo" => 'foo_goo_hoo'
57
69
  # "Foo***Goo***Hoo" => 'foo_goo_hoo'
58
70
 
@@ -63,6 +75,8 @@ class String
63
75
  # Ruby String#to_class method to convert from a String to a class
64
76
  #
65
77
  # From Mirage at http://infovore.org/archives/2006/08/02/getting-a-class-object-in-ruby-from-a-string-containing-that-classes-name/
78
+ #
79
+ # @return [Class] the string converted to a class
66
80
 
67
81
  def to_class
68
82
  split('::').inject(Kernel) {|scope, const_name| scope.const_get(const_name)}
@@ -71,12 +85,14 @@ class String
71
85
 
72
86
  # Increment the rightmost natural number
73
87
  #
74
- # ==Example
88
+ # @return [String] the string with an incremented rightmost number
89
+ #
90
+ # @example
75
91
  # 'foo5bar'.increment => 'foo4bar'
76
92
  # 'foo5bar'.increment(3) => 'foo8bar'
77
93
  # 'foo9bar'.increment => 'foo10bar'
78
94
  #
79
- # - see String#decrement
95
+ # @see String#decrement
80
96
 
81
97
  def increment(step=1)
82
98
  self=~/\d+/ ? $`+($&.to_i+step).to_s+$' : self
@@ -85,21 +101,23 @@ class String
85
101
 
86
102
  # Decrement the rightmost natural number
87
103
  #
88
- # ==Example
104
+ # @return [String] the string with a decremented rightmost number
105
+ #
106
+ # @example
89
107
  # 'foo5bar'.decrement => 'foo4bar'
90
108
  # 'foo5bar'.decrement(3) => 'foo2bar'
91
109
  # 'foo10bar'.derement => 'foo9bar'
92
110
  #
93
- # - see String#increment
111
+ # @see String#increment
94
112
 
95
113
  def decrement(step=1)
96
114
  self=~/\d+/ ? $`+($&.to_i-step).to_s+$' : self
97
115
  end
98
116
 
99
117
 
100
- # Return the previous character, with a changed flag and carry flag
118
+ # @return [String] the previous character, with a changed flag and carry flag
101
119
  #
102
- # ==Examples
120
+ # @example
103
121
  # String.prev_char('n') => 'm', true, false # change
104
122
  # String.prev_char('a') => 'z', true, true # change & carry
105
123
  # String.prev_char('6') => '5', true, false # change
@@ -122,16 +140,16 @@ class String
122
140
  end
123
141
  end
124
142
 
125
- # Return the previous string
143
+ # @return [String] the previous string
126
144
  #
127
- # c.f. String#next
145
+ # @see String#next
128
146
  #
129
- # ==Examples
147
+ # @example
130
148
  # '888'.prev => '887'
131
149
  # 'n'.prev => 'm'
132
150
  # 'N'.prev => 'M'
133
151
  #
134
- # ==Examples with carry
152
+ # @example with carry
135
153
  # '880'.prev => '879'
136
154
  # 'nna'.prev => 'nmz'
137
155
  # 'NNA'.prev => 'NMZ'
@@ -143,6 +161,8 @@ class String
143
161
 
144
162
 
145
163
  # Do String#prev in place
164
+ #
165
+ # @return [String] self
146
166
 
147
167
  def prev!
148
168
  return self if length==0
@@ -156,6 +176,7 @@ class String
156
176
  index-=1
157
177
  return nil if index<0
158
178
  end
179
+ return self
159
180
  end
160
181
 
161
182
  alias pred prev # String#pred : predecessor :: String#succ : successor
@@ -177,15 +198,24 @@ class String
177
198
  #
178
199
  ##
179
200
 
180
- # Return a random length suitable for a "lorem ipsum" string.
201
+ # @return [Integer[ a random length suitable for a "lorem ipsum" string.
181
202
  #
182
203
  # This method uses 1+rand(10)
204
+ #
205
+ # @example
206
+ # String.lorem_length => 3
207
+ # String.lorem_length => 9
208
+ # String.lorem_length => 5
183
209
 
184
210
  def self.lorem_length
185
211
  1+rand(10)
186
212
  end
187
213
 
188
- # Return a random string suitable for "lorem ipsum" text.
214
+ # @return [String] a random string suitable for "lorem ipsum" text.
215
+ #
216
+ # @example
217
+ # String.lorem => "galkjadscals"
218
+ # String.lorem(4) => "qtgf"
189
219
  #
190
220
  # This method chooses from lowercase letters a-z.
191
221
  #