rujitsu 0.3.1 → 0.3.3
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/Manifest +2 -1
- data/README.rdoc +14 -3
- data/Rakefile +2 -2
- data/lib/rujitsu/fixnum.rb +19 -2
- data/lib/rujitsu/numeric.rb +3 -1
- data/lib/rujitsu/object.rb +4 -2
- data/lib/rujitsu/range.rb +12 -5
- data/lib/rujitsu/string.rb +3 -1
- data/lib/ujitsu.rb +1 -0
- data/rujitsu.gemspec +7 -7
- data/spec/fixnum_spec.rb +69 -2
- data/spec/range_spec.rb +17 -1
- data/tasks/rspec.rake +0 -6
- metadata +22 -7
data/Manifest
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
CHANGELOG
|
2
|
-
Manifest
|
3
2
|
README.rdoc
|
4
3
|
Rakefile
|
5
4
|
lib/rujitsu.rb
|
@@ -11,6 +10,7 @@ lib/rujitsu/numeric.rb
|
|
11
10
|
lib/rujitsu/object.rb
|
12
11
|
lib/rujitsu/range.rb
|
13
12
|
lib/rujitsu/string.rb
|
13
|
+
lib/ujitsu.rb
|
14
14
|
rujitsu.gemspec
|
15
15
|
spec/fixnum_spec.rb
|
16
16
|
spec/numeric_spec.rb
|
@@ -20,3 +20,4 @@ spec/spec.opts
|
|
20
20
|
spec/spec_helper.rb
|
21
21
|
spec/string_spec.rb
|
22
22
|
tasks/rspec.rake
|
23
|
+
Manifest
|
data/README.rdoc
CHANGED
@@ -11,12 +11,21 @@ A ruby gem with various helper methods to smooth out your Ruby development.
|
|
11
11
|
require "rujitsu"
|
12
12
|
require "rujitsu/grammar"
|
13
13
|
|
14
|
+
For using in irb, there's a nice shortcut for you to use:
|
15
|
+
|
16
|
+
$ irb -rubygems -rujitsu
|
17
|
+
|
18
|
+
(This works because <tt>-r</tt> is the argument to require a file, and both 'ubygems.rb' and 'ujitsu.rb' exist.)
|
19
|
+
|
14
20
|
=== Rails
|
15
21
|
|
16
22
|
To require in rails 2.2, add the following to your <tt>environment.rb</tt> file.
|
17
23
|
|
18
|
-
config.gem "
|
19
|
-
|
24
|
+
config.gem "rujitsu"
|
25
|
+
|
26
|
+
If you use RSpec you might want to add the following to your <tt>environments/test.rb</tt>:
|
27
|
+
|
28
|
+
config.gem "rujitsu", :lib => "rujitsu/grammar"
|
20
29
|
|
21
30
|
== Documentation
|
22
31
|
|
@@ -37,7 +46,9 @@ You can also generate a variable length string.
|
|
37
46
|
(3..5).random_letters
|
38
47
|
|
39
48
|
This generates a string of random letters whose length is 3, 4 or 5 characters.
|
40
|
-
|
49
|
+
|
50
|
+
<em>(All the above methods exist in the singular too. eg, <tt>1.random_letter</tt>)</em>
|
51
|
+
|
41
52
|
=== URL-friendly strings
|
42
53
|
|
43
54
|
The String class has an extension that strips out URL-unfriendly characters.
|
data/Rakefile
CHANGED
@@ -2,9 +2,9 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('rujitsu', '0.3.
|
5
|
+
Echoe.new('rujitsu', '0.3.3') do | config |
|
6
6
|
config.description = 'Various helper methods to smooth over Ruby development'
|
7
|
-
config.url = 'http://github.com/
|
7
|
+
config.url = 'http://github.com/brightbox/rujitsu'
|
8
8
|
config.author = 'Brightbox Systems Ltd'
|
9
9
|
config.email = 'hello@brightbox.co.uk'
|
10
10
|
config.ignore_pattern = ['tmp/*', 'script/*']
|
data/lib/rujitsu/fixnum.rb
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
|
1
|
+
module RujitsuFixnum
|
2
2
|
# produce a string of N random vowels
|
3
3
|
def random_vowels opts={}
|
4
4
|
generate_random_string_using VOWELS, opts
|
5
5
|
end
|
6
|
+
alias_method :random_vowel, :random_vowels
|
7
|
+
|
6
8
|
# produce a string of N random consonants
|
7
9
|
def random_consonants opts={}
|
8
10
|
generate_random_string_using CONSONANTS, opts
|
9
11
|
end
|
12
|
+
alias_method :random_consonant, :random_consonants
|
13
|
+
|
10
14
|
# produce a string of N random letters
|
11
15
|
# 5.random_letters
|
12
16
|
def random_letters opts={}
|
13
17
|
generate_random_string_using LETTERS, opts
|
14
18
|
end
|
19
|
+
alias_method :random_letter, :random_letters
|
20
|
+
|
15
21
|
# produce a string of N random numbers
|
16
22
|
# 5.random_numbers
|
17
23
|
# optionally specific limits on the numbers
|
@@ -32,12 +38,20 @@ class Fixnum
|
|
32
38
|
n << end_number_choices(only).select {|x| (lower <= x) && (x <= upper) }.sort_by { rand }.first.to_s
|
33
39
|
n.join("")
|
34
40
|
end
|
41
|
+
alias_method :random_number, :random_numbers
|
42
|
+
|
35
43
|
# produce a string of N random characters
|
36
44
|
# 5.random_characters
|
37
45
|
def random_characters opts={}
|
38
46
|
generate_random_string_using CHARACTERS, opts
|
39
47
|
end
|
40
|
-
|
48
|
+
alias_method :random_character, :random_characters
|
49
|
+
|
50
|
+
def random_hex_characters opts={}
|
51
|
+
generate_random_string_using HEX_CHARACTERS, opts
|
52
|
+
end
|
53
|
+
alias_method :random_hex_character, :random_hex_characters
|
54
|
+
|
41
55
|
private
|
42
56
|
|
43
57
|
VOWELS = %w(a e i o u)
|
@@ -47,6 +61,7 @@ class Fixnum
|
|
47
61
|
CHARACTERS = LETTERS + NUMBERS
|
48
62
|
EVENS = %w(0 2 4 6 8).map {|x| x.to_i }
|
49
63
|
ODDS = %w(1 3 5 7 9).map {|x| x.to_i }
|
64
|
+
HEX_CHARACTERS = NUMBERS | ('a'..'f').to_a
|
50
65
|
|
51
66
|
def generate_random_string_using(legal_characters, opts={})
|
52
67
|
# Check if we have anything to exclude from the legal_characters
|
@@ -78,3 +93,5 @@ class Fixnum
|
|
78
93
|
end
|
79
94
|
end
|
80
95
|
end
|
96
|
+
|
97
|
+
Fixnum.send(:include, RujitsuFixnum)
|
data/lib/rujitsu/numeric.rb
CHANGED
data/lib/rujitsu/object.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
-
|
1
|
+
module RujitsuObject
|
2
2
|
# return true if this object is within the given container
|
3
3
|
# if the supplied container does not respond to include? then an equality test is used instead
|
4
4
|
def in? container
|
5
5
|
container.respond_to?(:include?) ? container.include?(self) : container == self
|
6
6
|
end
|
7
|
-
end
|
7
|
+
end
|
8
|
+
|
9
|
+
Object.send(:include, RujitsuObject)
|
data/lib/rujitsu/range.rb
CHANGED
@@ -1,26 +1,33 @@
|
|
1
|
-
|
1
|
+
module RujitsuRange
|
2
2
|
# pull a random element out of this range
|
3
3
|
def to_random_i
|
4
4
|
self.to_a.sort_by { rand }.first
|
5
5
|
end
|
6
|
-
|
6
|
+
|
7
7
|
# create a string of random letters whose length is one of the values in your range
|
8
8
|
# (3..4).random_letters # => returns a string or 3 or 4 random letters
|
9
9
|
def random_letters
|
10
10
|
self.to_random_i.random_letters
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
# create a string of random numbers whose length is one of the values in your range
|
14
14
|
# (3..4).random_numbers # => returns a string or 3 or 4 random numbers
|
15
15
|
def random_numbers opts = {}
|
16
16
|
self.to_random_i.random_numbers opts
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
# create a string of random characters whose length is one of the values in your range
|
20
20
|
# (3..4).random_characters # => returns a string or 3 or 4 random characters
|
21
21
|
def random_characters
|
22
22
|
self.to_random_i.random_characters
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
|
+
# create a string of random hex characters whose length is one of the values in your range
|
26
|
+
# (3..4).random_hex_characters # => returns a string of 3 or 4 random hex characters
|
27
|
+
def random_hex_characters
|
28
|
+
self.to_random_i.random_hex_characters
|
29
|
+
end
|
30
|
+
|
25
31
|
end
|
26
32
|
|
33
|
+
Range.send(:include, RujitsuRange)
|
data/lib/rujitsu/string.rb
CHANGED
data/lib/ujitsu.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/rujitsu.rb"
|
data/rujitsu.gemspec
CHANGED
@@ -2,27 +2,27 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{rujitsu}
|
5
|
-
s.version = "0.3.
|
5
|
+
s.version = "0.3.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Brightbox Systems Ltd"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2010-06-03}
|
10
10
|
s.description = %q{Various helper methods to smooth over Ruby development}
|
11
11
|
s.email = %q{hello@brightbox.co.uk}
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/rujitsu.rb", "lib/rujitsu/all.rb", "lib/rujitsu/fixnum.rb", "lib/rujitsu/grammar.rb", "lib/rujitsu/inspect.rb", "lib/rujitsu/numeric.rb", "lib/rujitsu/object.rb", "lib/rujitsu/range.rb", "lib/rujitsu/string.rb", "tasks/rspec.rake"]
|
13
|
-
s.files = ["CHANGELOG", "
|
14
|
-
s.homepage = %q{http://github.com/
|
12
|
+
s.extra_rdoc_files = ["CHANGELOG", "README.rdoc", "lib/rujitsu.rb", "lib/rujitsu/all.rb", "lib/rujitsu/fixnum.rb", "lib/rujitsu/grammar.rb", "lib/rujitsu/inspect.rb", "lib/rujitsu/numeric.rb", "lib/rujitsu/object.rb", "lib/rujitsu/range.rb", "lib/rujitsu/string.rb", "lib/ujitsu.rb", "tasks/rspec.rake"]
|
13
|
+
s.files = ["CHANGELOG", "README.rdoc", "Rakefile", "lib/rujitsu.rb", "lib/rujitsu/all.rb", "lib/rujitsu/fixnum.rb", "lib/rujitsu/grammar.rb", "lib/rujitsu/inspect.rb", "lib/rujitsu/numeric.rb", "lib/rujitsu/object.rb", "lib/rujitsu/range.rb", "lib/rujitsu/string.rb", "lib/ujitsu.rb", "rujitsu.gemspec", "spec/fixnum_spec.rb", "spec/numeric_spec.rb", "spec/object_spec.rb", "spec/range_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "spec/string_spec.rb", "tasks/rspec.rake", "Manifest"]
|
14
|
+
s.homepage = %q{http://github.com/brightbox/rujitsu}
|
15
15
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Rujitsu", "--main", "README.rdoc"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
s.rubyforge_project = %q{rujitsu}
|
18
|
-
s.rubygems_version = %q{1.3.
|
18
|
+
s.rubygems_version = %q{1.3.7}
|
19
19
|
s.summary = %q{Various helper methods to smooth over Ruby development}
|
20
20
|
|
21
21
|
if s.respond_to? :specification_version then
|
22
22
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
23
23
|
s.specification_version = 3
|
24
24
|
|
25
|
-
if Gem::Version.new(Gem::
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
26
|
else
|
27
27
|
end
|
28
28
|
else
|
data/spec/fixnum_spec.rb
CHANGED
@@ -7,7 +7,12 @@ describe Fixnum do
|
|
7
7
|
Fixnum.instance_methods.should include("random_vowels")
|
8
8
|
5.should respond_to(:random_vowels)
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
|
+
it "should be alias'd as random_vowel" do
|
12
|
+
Fixnum.instance_methods.should include("random_vowel")
|
13
|
+
5.should respond_to(:random_vowel)
|
14
|
+
end
|
15
|
+
|
11
16
|
it "should produce a string of random vowels" do
|
12
17
|
[ 5, 10, 15, 25, 29 ].each do |i|
|
13
18
|
str = i.random_vowels
|
@@ -39,7 +44,12 @@ describe Fixnum do
|
|
39
44
|
Fixnum.instance_methods.should include("random_consonants")
|
40
45
|
5.should respond_to(:random_consonants)
|
41
46
|
end
|
42
|
-
|
47
|
+
|
48
|
+
it "should be alias'd as random_consonant" do
|
49
|
+
Fixnum.instance_methods.should include("random_consonant")
|
50
|
+
5.should respond_to(:random_consonant)
|
51
|
+
end
|
52
|
+
|
43
53
|
it "should produce a string of random consonants" do
|
44
54
|
[ 5, 10, 15, 25, 29 ].each do |i|
|
45
55
|
str = i.random_consonants
|
@@ -77,6 +87,11 @@ describe Fixnum do
|
|
77
87
|
5.should respond_to(:random_letters)
|
78
88
|
end
|
79
89
|
|
90
|
+
it "should be alias'd as random_letter" do
|
91
|
+
Fixnum.instance_methods.should include("random_letter")
|
92
|
+
5.should respond_to(:random_letter)
|
93
|
+
end
|
94
|
+
|
80
95
|
it "should produce a string of random letters" do
|
81
96
|
[ 5, 10, 15, 25, 29 ].each do |i|
|
82
97
|
str = i.random_letters
|
@@ -113,6 +128,11 @@ describe Fixnum do
|
|
113
128
|
5.should respond_to(:random_numbers)
|
114
129
|
end
|
115
130
|
|
131
|
+
it "should be alias'd as random_number" do
|
132
|
+
Fixnum.instance_methods.should include("random_number")
|
133
|
+
5.should respond_to(:random_number)
|
134
|
+
end
|
135
|
+
|
116
136
|
it "should produce a string of random numbers" do
|
117
137
|
[ 5, 10, 15, 25, 29 ].each do |i|
|
118
138
|
num = i.random_numbers
|
@@ -187,6 +207,11 @@ describe Fixnum do
|
|
187
207
|
5.should respond_to(:random_numbers)
|
188
208
|
end
|
189
209
|
|
210
|
+
it "should be alias'd as random_character" do
|
211
|
+
Fixnum.instance_methods.should include("random_character")
|
212
|
+
5.should respond_to(:random_character)
|
213
|
+
end
|
214
|
+
|
190
215
|
it "should produce a string of random letters and numbers" do
|
191
216
|
[ 5, 10, 15, 25, 29 ].each do |i|
|
192
217
|
str = i.random_characters
|
@@ -219,4 +244,46 @@ describe Fixnum do
|
|
219
244
|
end
|
220
245
|
end
|
221
246
|
|
247
|
+
|
248
|
+
describe "random_hex_characters" do
|
249
|
+
it "should be a method" do
|
250
|
+
Fixnum.instance_methods.should include("random_hex_characters")
|
251
|
+
5.should respond_to(:random_hex_character)
|
252
|
+
end
|
253
|
+
|
254
|
+
it "should be alias'd as random_hex_character" do
|
255
|
+
Fixnum.instance_methods.should include("random_hex_character")
|
256
|
+
5.should respond_to(:random_hex_character)
|
257
|
+
end
|
258
|
+
|
259
|
+
it "should produce a string of random hex characters" do
|
260
|
+
[ 5, 10, 15, 25, 29, (26**2) ].each do |i|
|
261
|
+
str = i.random_hex_characters
|
262
|
+
str.should be_a_kind_of( String )
|
263
|
+
str.length.should == i
|
264
|
+
str.should match( /^[a-f0-9]+$/ )
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
it "should exclude a character" do
|
269
|
+
# 26^5 should be large enough to get at least one
|
270
|
+
# instance of every character.
|
271
|
+
str = (26**2).random_hex_characters(:except => "c")
|
272
|
+
|
273
|
+
str.should be_a_kind_of( String )
|
274
|
+
str.length.should == (26**2)
|
275
|
+
str.should_not match(/c/)
|
276
|
+
end
|
277
|
+
|
278
|
+
it "should exclude characters" do
|
279
|
+
# 26^5 should be large enough to get at least one
|
280
|
+
# instance of every character.
|
281
|
+
str = (26**2).random_hex_characters(:except => %w(c d f))
|
282
|
+
|
283
|
+
str.should be_a_kind_of( String )
|
284
|
+
str.length.should == (26**2)
|
285
|
+
str.should_not match(/cdf/)
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
222
289
|
end
|
data/spec/range_spec.rb
CHANGED
@@ -127,7 +127,23 @@ describe Range do
|
|
127
127
|
str.should match( /^[a-z0-9]+$/ )
|
128
128
|
end
|
129
129
|
end
|
130
|
-
|
130
|
+
|
131
|
+
describe "#random_hex_characters" do
|
132
|
+
it "should be a method" do
|
133
|
+
Range.instance_methods.should include("random_hex_characters")
|
134
|
+
(0..1).should respond_to("random_hex_characters")
|
135
|
+
end
|
136
|
+
|
137
|
+
it "should generate a string of random hex characters" do
|
138
|
+
setup_range
|
139
|
+
|
140
|
+
str = @range.random_hex_characters
|
141
|
+
str.length.should == 4
|
142
|
+
str.should match(/^[a-f0-9]+$/)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
|
131
147
|
def setup_range
|
132
148
|
@range = (3..5)
|
133
149
|
@range.should_receive(:to_random_i).and_return(4)
|
data/tasks/rspec.rake
CHANGED
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rujitsu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 21
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 3
|
10
|
+
version: 0.3.3
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Brightbox Systems Ltd
|
@@ -9,7 +15,7 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-06-03 00:00:00 +01:00
|
13
19
|
default_executable:
|
14
20
|
dependencies: []
|
15
21
|
|
@@ -31,10 +37,10 @@ extra_rdoc_files:
|
|
31
37
|
- lib/rujitsu/object.rb
|
32
38
|
- lib/rujitsu/range.rb
|
33
39
|
- lib/rujitsu/string.rb
|
40
|
+
- lib/ujitsu.rb
|
34
41
|
- tasks/rspec.rake
|
35
42
|
files:
|
36
43
|
- CHANGELOG
|
37
|
-
- Manifest
|
38
44
|
- README.rdoc
|
39
45
|
- Rakefile
|
40
46
|
- lib/rujitsu.rb
|
@@ -46,6 +52,7 @@ files:
|
|
46
52
|
- lib/rujitsu/object.rb
|
47
53
|
- lib/rujitsu/range.rb
|
48
54
|
- lib/rujitsu/string.rb
|
55
|
+
- lib/ujitsu.rb
|
49
56
|
- rujitsu.gemspec
|
50
57
|
- spec/fixnum_spec.rb
|
51
58
|
- spec/numeric_spec.rb
|
@@ -55,8 +62,9 @@ files:
|
|
55
62
|
- spec/spec_helper.rb
|
56
63
|
- spec/string_spec.rb
|
57
64
|
- tasks/rspec.rake
|
65
|
+
- Manifest
|
58
66
|
has_rdoc: true
|
59
|
-
homepage: http://github.com/
|
67
|
+
homepage: http://github.com/brightbox/rujitsu
|
60
68
|
licenses: []
|
61
69
|
|
62
70
|
post_install_message:
|
@@ -70,21 +78,28 @@ rdoc_options:
|
|
70
78
|
require_paths:
|
71
79
|
- lib
|
72
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
73
82
|
requirements:
|
74
83
|
- - ">="
|
75
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
76
88
|
version: "0"
|
77
|
-
version:
|
78
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
79
91
|
requirements:
|
80
92
|
- - ">="
|
81
93
|
- !ruby/object:Gem::Version
|
94
|
+
hash: 11
|
95
|
+
segments:
|
96
|
+
- 1
|
97
|
+
- 2
|
82
98
|
version: "1.2"
|
83
|
-
version:
|
84
99
|
requirements: []
|
85
100
|
|
86
101
|
rubyforge_project: rujitsu
|
87
|
-
rubygems_version: 1.3.
|
102
|
+
rubygems_version: 1.3.7
|
88
103
|
signing_key:
|
89
104
|
specification_version: 3
|
90
105
|
summary: Various helper methods to smooth over Ruby development
|