monkey-lib 0.3.6 → 0.4.0.a
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/README.rdoc +4 -2
- data/lib/monkey/backend/active_support.rb +4 -4
- data/lib/monkey/backend.rb +3 -3
- data/lib/monkey/ext/string.rb +134 -117
- data/lib/monkey/ext.rb +30 -0
- data/lib/monkey/version.rb +35 -0
- data/spec/monkey/ext/module_spec.rb +3 -2
- data/spec/monkey/ext/string_spec.rb +0 -3
- data/spec/monkey/version_spec.rb +0 -0
- metadata +7 -4
data/README.rdoc
CHANGED
@@ -5,6 +5,8 @@ fancy features).
|
|
5
5
|
TODO: Describe what it actually does. Feel free to have a look at the specs/code, should
|
6
6
|
be pretty easy to understand.
|
7
7
|
|
8
|
+
Version number will soon be synchronized with BigBand.
|
9
|
+
|
8
10
|
== Backends
|
9
11
|
Those libraries are supported as backends out of the box:
|
10
12
|
* ActiveSupport (tested with 2.3.2 to 3.0.pre)
|
@@ -17,9 +19,9 @@ MonkeyLib has been tested and is known to work with the following Ruby implement
|
|
17
19
|
|
18
20
|
* Ruby (MRI) 1.8.6, 1.8.7, 1.9.1, 1.9.2-preview1
|
19
21
|
* Ruby Enterprise Edition 2009.10, 2010.01
|
20
|
-
* Rubinius 1.0.
|
22
|
+
* Rubinius 1.0.0-rc2, 1.0.0-rc3
|
21
23
|
* JRuby 1.3.1, 1.4.0
|
22
|
-
* MagLev 22780 (Backports backend recommended, but all expectations pass on all backends)
|
24
|
+
* MagLev 22780, 2804, 2816 (Backports backend recommended, but all expectations pass on all backends)
|
23
25
|
* IronRuby 0.9.3 (only Extlib and Backports)
|
24
26
|
|
25
27
|
Currently it does *not* run on MacRuby, but I'm working on it.
|
@@ -1,11 +1,11 @@
|
|
1
1
|
Monkey::Backend.new :ActiveSupport, :active_support do
|
2
2
|
def self.setup
|
3
3
|
load_lib :version
|
4
|
-
expects_module "::ActiveSupport::CoreExtensions::String::Inflections" if ActiveSupport::VERSION::MAJOR < 3
|
4
|
+
expects_module "::ActiveSupport::CoreExtensions::String::Inflections" if ::ActiveSupport::VERSION::MAJOR < 3
|
5
5
|
load_libs "core_ext/object" => [:metaclass, :misc], :core_ext => %w[array/extract_options string/inflections module/introspection]
|
6
|
-
if ActiveSupport::VERSION::MAJOR < 3
|
7
|
-
Array.send :include, ActiveSupport::CoreExtensions::Array::ExtractOptions
|
8
|
-
Module.send :include, ActiveSupport::CoreExtensions::Module
|
6
|
+
if ::ActiveSupport::VERSION::MAJOR < 3
|
7
|
+
::Array.send :include, ::ActiveSupport::CoreExtensions::Array::ExtractOptions
|
8
|
+
::Module.send :include, ::ActiveSupport::CoreExtensions::Module
|
9
9
|
end
|
10
10
|
::String.class_eval do
|
11
11
|
alias to_const_string camelcase
|
data/lib/monkey/backend.rb
CHANGED
@@ -11,7 +11,7 @@ module Monkey
|
|
11
11
|
attr_accessor :backend_name, :backend_path
|
12
12
|
|
13
13
|
def available?
|
14
|
-
Object.const_defined? backend_name
|
14
|
+
Object.const_defined? backend_name
|
15
15
|
end
|
16
16
|
|
17
17
|
def setup_complete
|
@@ -68,10 +68,10 @@ module Monkey
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def self.setup!(backend)
|
71
|
+
@setup = true
|
71
72
|
if backend
|
72
73
|
@backend = detect_backend(backend)
|
73
74
|
@backend.setup
|
74
|
-
@setup = true
|
75
75
|
@backend
|
76
76
|
else
|
77
77
|
available_backends.each do |backend|
|
@@ -109,4 +109,4 @@ module Monkey
|
|
109
109
|
end
|
110
110
|
|
111
111
|
end
|
112
|
-
end
|
112
|
+
end
|
data/lib/monkey/ext/string.rb
CHANGED
@@ -6,160 +6,177 @@ module Monkey
|
|
6
6
|
# Defined by backend.
|
7
7
|
expects :constantize, :to_const_string, :to_const_path, :underscore, :camelcase
|
8
8
|
|
9
|
-
|
10
|
-
Pathname(self).atime
|
11
|
-
end
|
9
|
+
feature :version do
|
12
10
|
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
def to_version
|
12
|
+
dup.to_version!
|
13
|
+
end
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
def to_version!
|
16
|
+
extend Monkey::Version
|
17
|
+
self
|
18
|
+
end
|
20
19
|
|
21
|
-
def blockdev?
|
22
|
-
Pathname(self).blockdev?
|
23
20
|
end
|
24
21
|
|
25
|
-
|
26
|
-
Pathname(self).chardev?
|
27
|
-
end
|
22
|
+
feature :pathname do
|
28
23
|
|
29
|
-
|
30
|
-
|
31
|
-
|
24
|
+
def atime
|
25
|
+
Pathname(self).atime
|
26
|
+
end
|
32
27
|
|
33
|
-
|
34
|
-
|
35
|
-
|
28
|
+
def absolute_path?
|
29
|
+
Pathname(self).absolute?
|
30
|
+
end
|
36
31
|
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
def basename
|
33
|
+
Pathname(self).basename.to_s
|
34
|
+
end
|
40
35
|
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
def blockdev?
|
37
|
+
Pathname(self).blockdev?
|
38
|
+
end
|
44
39
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
def cased_path
|
50
|
-
Pathname(self).cased_path.to_s
|
51
|
-
end
|
52
|
-
|
53
|
-
def chdir(&block)
|
54
|
-
Pathname(self).chdir(&block)
|
55
|
-
end
|
40
|
+
def chardev?
|
41
|
+
Pathname(self).chardev?
|
42
|
+
end
|
56
43
|
|
57
|
-
|
58
|
-
|
59
|
-
|
44
|
+
def cleanpath
|
45
|
+
Pathname(self).cleanpath.to_s
|
46
|
+
end
|
60
47
|
|
61
|
-
|
62
|
-
|
63
|
-
|
48
|
+
def ctime
|
49
|
+
Pathname(self).ctime
|
50
|
+
end
|
64
51
|
|
65
|
-
|
66
|
-
|
67
|
-
|
52
|
+
def directory_children
|
53
|
+
Pathname(self).children
|
54
|
+
end
|
68
55
|
|
69
|
-
|
70
|
-
|
71
|
-
|
56
|
+
def directory?
|
57
|
+
Pathname(self).directory?
|
58
|
+
end
|
72
59
|
|
73
|
-
|
60
|
+
def dirname
|
61
|
+
Pathname(self).dirname.to_s
|
62
|
+
end
|
74
63
|
|
75
|
-
|
76
|
-
|
77
|
-
|
64
|
+
def cased_path
|
65
|
+
Pathname(self).cased_path.to_s
|
66
|
+
end
|
78
67
|
|
79
|
-
|
80
|
-
|
81
|
-
|
68
|
+
def chdir(&block)
|
69
|
+
Pathname(self).chdir(&block)
|
70
|
+
end
|
82
71
|
|
83
|
-
|
84
|
-
|
85
|
-
|
72
|
+
def expand_path
|
73
|
+
Pathname(self).expand_path.to_s
|
74
|
+
end
|
86
75
|
|
87
|
-
|
88
|
-
|
89
|
-
|
76
|
+
def extname
|
77
|
+
Pathname(self).extname.to_s
|
78
|
+
end
|
90
79
|
|
91
|
-
|
92
|
-
|
93
|
-
|
80
|
+
def file?
|
81
|
+
Pathname(self).file?
|
82
|
+
end
|
94
83
|
|
95
|
-
|
96
|
-
|
97
|
-
|
84
|
+
def file_exist?
|
85
|
+
Pathname(self).exist?
|
86
|
+
end
|
98
87
|
|
99
|
-
|
100
|
-
Pathname(self).join(other.to_s).to_s
|
101
|
-
end
|
88
|
+
alias file_exists? file_exist?
|
102
89
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
Pathname(self).open(mode = 'r', &block)
|
107
|
-
end
|
90
|
+
def file_grpowned?
|
91
|
+
Pathname(self).grpowned?
|
92
|
+
end
|
108
93
|
|
109
|
-
|
110
|
-
|
111
|
-
|
94
|
+
def file_owned?
|
95
|
+
Pathname(self).owned?
|
96
|
+
end
|
112
97
|
|
113
|
-
|
114
|
-
|
115
|
-
|
98
|
+
def file_size?
|
99
|
+
Pathname(self).size?
|
100
|
+
end
|
116
101
|
|
117
|
-
|
118
|
-
|
119
|
-
|
102
|
+
def file_sticky?
|
103
|
+
Pathname(self).sticky?
|
104
|
+
end
|
120
105
|
|
121
|
-
|
122
|
-
|
123
|
-
|
106
|
+
def file_executable?
|
107
|
+
Pathname(self).executable?
|
108
|
+
end
|
124
109
|
|
125
|
-
|
126
|
-
|
127
|
-
|
110
|
+
def file_executable_real?
|
111
|
+
Pathname(self).executable_real?
|
112
|
+
end
|
128
113
|
|
129
|
-
|
130
|
-
|
131
|
-
|
114
|
+
def file_join(other)
|
115
|
+
Pathname(self).join(other.to_s).to_s
|
116
|
+
end
|
132
117
|
|
133
|
-
|
134
|
-
Pathname(self).ftype.to_s
|
135
|
-
end
|
118
|
+
alias / file_join
|
136
119
|
|
137
|
-
|
138
|
-
|
139
|
-
|
120
|
+
def file_open(mode = 'r', &block)
|
121
|
+
Pathname(self).open(mode = 'r', &block)
|
122
|
+
end
|
140
123
|
|
141
|
-
|
142
|
-
|
143
|
-
|
124
|
+
def file_readable?
|
125
|
+
Pathname(self).readable?
|
126
|
+
end
|
144
127
|
|
145
|
-
|
146
|
-
|
147
|
-
|
128
|
+
def file_readable_real?
|
129
|
+
Pathname(self).readable_real?
|
130
|
+
end
|
148
131
|
|
149
|
-
|
150
|
-
|
151
|
-
|
132
|
+
def file_relative?
|
133
|
+
Pathname(self).relative?
|
134
|
+
end
|
152
135
|
|
153
|
-
|
154
|
-
|
155
|
-
|
136
|
+
def file_writable?
|
137
|
+
Pathname(self).writable?
|
138
|
+
end
|
156
139
|
|
157
|
-
|
158
|
-
|
159
|
-
|
140
|
+
def file_writable_real?
|
141
|
+
Pathname(self).writable_real?
|
142
|
+
end
|
143
|
+
|
144
|
+
def file_zero?
|
145
|
+
Pathname(self).zero?
|
146
|
+
end
|
147
|
+
|
148
|
+
def ftype
|
149
|
+
Pathname(self).ftype.to_s
|
150
|
+
end
|
151
|
+
|
152
|
+
def mountpoint?
|
153
|
+
Pathname(self).mountpoint?
|
154
|
+
end
|
155
|
+
|
156
|
+
def mtime
|
157
|
+
Pathname(self).mtime
|
158
|
+
end
|
159
|
+
|
160
|
+
def pipe?
|
161
|
+
Pathname(self).pipe?
|
162
|
+
end
|
163
|
+
|
164
|
+
def realpath
|
165
|
+
Pathname(self).realpath.to_s
|
166
|
+
end
|
167
|
+
|
168
|
+
def root?
|
169
|
+
Pathname(self).root?
|
170
|
+
end
|
171
|
+
|
172
|
+
def socket?
|
173
|
+
Pathname(self).socket?
|
174
|
+
end
|
175
|
+
|
176
|
+
def symlink?
|
177
|
+
Pathname(self).symlink?
|
178
|
+
end
|
160
179
|
|
161
|
-
def symlink?
|
162
|
-
Pathname(self).symlink?
|
163
180
|
end
|
164
181
|
|
165
182
|
end
|
data/lib/monkey/ext.rb
CHANGED
@@ -20,6 +20,36 @@ module Monkey
|
|
20
20
|
end
|
21
21
|
return @core_class
|
22
22
|
end
|
23
|
+
|
24
|
+
def rename_core_method(old_name, new_name)
|
25
|
+
new_name = new_name % old_name if new_name.is_a? String
|
26
|
+
core_class.class_eval do
|
27
|
+
alias_method new_name, old_name
|
28
|
+
undef_method old_name
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def wrap_core_methods(list = {})
|
33
|
+
list.each do |old_name, new_name|
|
34
|
+
rename_core_method old_name, new_name
|
35
|
+
define_method(old_name) { |*args| send(new_name, old_name, *args) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def feature(name, mode = :instance, &block)
|
40
|
+
case mode
|
41
|
+
when :instance then block.call
|
42
|
+
when :class then class_methods(&block)
|
43
|
+
when :shared
|
44
|
+
feature(name, :instance, &block)
|
45
|
+
feature(name, :class, &block)
|
46
|
+
else raise ArgumentError, "unkown mode #{mode.inspect}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def class_methods(&block)
|
51
|
+
raise NotImplementedError
|
52
|
+
end
|
23
53
|
|
24
54
|
def expects(*list)
|
25
55
|
list.each do |name|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Monkey
|
2
|
+
module Version
|
3
|
+
def self.new(value = "")
|
4
|
+
super.to_version!
|
5
|
+
end
|
6
|
+
|
7
|
+
def to_version
|
8
|
+
self.dup
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_version!
|
12
|
+
self
|
13
|
+
end
|
14
|
+
|
15
|
+
def major; fields[0]; end
|
16
|
+
def minor; fields[1]; end
|
17
|
+
def tiny; fields[2]; end
|
18
|
+
|
19
|
+
def <=>(other)
|
20
|
+
return super unless other.respond_to? :to_version
|
21
|
+
mine, others = fields.dup, other.to_version.fields
|
22
|
+
loop do
|
23
|
+
a, b = mine.unshift, others.unshift
|
24
|
+
return 0 if a.nil? and b.nil?
|
25
|
+
return 1 if b.nil? or (a.is_a? Integer and b.is_a? String)
|
26
|
+
return -1 if a.nil? or (b.is_a? Integer and a.is_a? String)
|
27
|
+
return comp unless (comp = (a <=> b)) == 0
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def fields
|
32
|
+
split(".").map { |f| f =~ /^\d+$/ ? f.to_i : f }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -8,8 +8,9 @@ describe Monkey::Ext::Module do
|
|
8
8
|
Monkey::Ext.parent.should == Monkey
|
9
9
|
Monkey.parent.should == Object
|
10
10
|
Object.parent.should == Object
|
11
|
-
|
12
|
-
|
11
|
+
Object.send :remove_const, :ExtFoo if Object.const_defined? :ExtFoo
|
12
|
+
ExtFoo = Monkey::Ext::Module
|
13
|
+
ExtFoo.parent.should == Monkey::Ext
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -38,9 +38,6 @@ describe Monkey::Ext::String do
|
|
38
38
|
|
39
39
|
before do
|
40
40
|
@strings = ["/usr/bin/ruby", ".", "..", ENV["HOME"]]
|
41
|
-
@methods = Pathname.instance_methods(false).reject do |m|
|
42
|
-
String.methods.include? m or m.to_s == "to_path"
|
43
|
-
end
|
44
41
|
end
|
45
42
|
|
46
43
|
it "imports Pathname's cleanpath to String" do
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: monkey-lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0.a
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Haase
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-15 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -40,6 +40,7 @@ extra_rdoc_files:
|
|
40
40
|
- lib/monkey/ext/pathname.rb
|
41
41
|
- lib/monkey/ext/string.rb
|
42
42
|
- lib/monkey/ext.rb
|
43
|
+
- lib/monkey/version.rb
|
43
44
|
- lib/monkey-lib.rb
|
44
45
|
- lib/monkey.rb
|
45
46
|
files:
|
@@ -64,6 +65,7 @@ files:
|
|
64
65
|
- lib/monkey/ext/pathname.rb
|
65
66
|
- lib/monkey/ext/string.rb
|
66
67
|
- lib/monkey/ext.rb
|
68
|
+
- lib/monkey/version.rb
|
67
69
|
- lib/monkey-lib.rb
|
68
70
|
- lib/monkey.rb
|
69
71
|
- spec/monkey/engine_spec.rb
|
@@ -72,6 +74,7 @@ files:
|
|
72
74
|
- spec/monkey/ext/object_spec.rb
|
73
75
|
- spec/monkey/ext/pathname_spec.rb
|
74
76
|
- spec/monkey/ext/string_spec.rb
|
77
|
+
- spec/monkey/version_spec.rb
|
75
78
|
- spec/spec_helper.rb
|
76
79
|
has_rdoc: true
|
77
80
|
homepage: http://github.com/rkh/monkey-lib
|
@@ -90,9 +93,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
93
|
version:
|
91
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
95
|
requirements:
|
93
|
-
- - "
|
96
|
+
- - ">"
|
94
97
|
- !ruby/object:Gem::Version
|
95
|
-
version:
|
98
|
+
version: 1.3.1
|
96
99
|
version:
|
97
100
|
requirements: []
|
98
101
|
|