core_ex 0.4.0 → 0.5.1.1
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/ChangeLog +251 -0
- data/NEWS +29 -0
- data/README +1 -1
- data/SPEC.yml +10 -10
- data/lib/core_ex/dependencies_ext/constant_load_path.rb +1 -1
- data/lib/core_ex/embedded_tests.rb +1 -1
- data/lib/core_ex/enumerable.rb +87 -5
- data/lib/core_ex/exception.rb +1 -1
- data/lib/core_ex/file_utils.rb +1 -1
- data/lib/core_ex/lazy_loading.rb +159 -0
- data/lib/core_ex/module/attr_once.rb +1 -1
- data/lib/core_ex/module/import.rb +4 -6
- data/lib/core_ex/module/in_place.rb +1 -1
- data/lib/core_ex/module/mix_in_with_args.rb +1 -1
- data/lib/core_ex/numeric.rb +46 -0
- data/lib/core_ex/object/instance_eval_with_args.rb +1 -1
- data/lib/core_ex/object/singleton_class.rb +1 -1
- data/lib/core_ex/object/the_first_time.rb +1 -1
- data/lib/core_ex/pathname.rb +17 -11
- data/lib/core_ex/proc.rb +80 -1
- data/lib/core_ex/rakefile_base.rf +192 -296
- data/lib/core_ex/require.rb +1 -1
- data/lib/core_ex/string.rb +11 -2
- data/lib/core_ex/time.rb +1 -1
- data/lib/core_ex/try_dup.rb +1 -1
- data/lib/core_ex/yaml.rb +101 -79
- data/lib/core_ex.rb +129 -128
- data/lib/d_time.rb +225 -53
- data/lib/dumpable_proc.rb +1 -10
- data/lib/path_list.rb +18 -7
- data/lib/temp_path.rb +3 -3
- data/lib/test/unit/u_i/yaml/test_runner.rb +1 -1
- data/lib/version.rb +309 -69
- data/lib/yaml_extension.rb +1 -1
- data/test/fixtures/lazy_loading/a_b/a/c.rb +6 -0
- data/test/fixtures/lazy_loading/a_b/a.rb +2 -0
- data/test/fixtures/lazy_loading/a_b/b/c.rb +4 -0
- data/test/fixtures/lazy_loading/a_b/b.rb +2 -0
- data/test/fixtures/lazy_loading/double/a/bouhou.rb +2 -0
- data/test/fixtures/lazy_loading/double/a/foo_bar.rb +5 -0
- data/test/fixtures/lazy_loading/double/a/sub/a/suba.rb +7 -0
- data/test/fixtures/lazy_loading/double/b/root/sub/b.rb +6 -0
- data/test/fixtures/lazy_loading/double/b/root/sub.rb +4 -0
- data/test/fixtures/lazy_loading/double/b/root.rb +2 -0
- data/test/fixtures/lazy_loading/foo_bars/foo_bar.rb +4 -0
- data/test/fixtures/lazy_loading/foo_bars/mods/mod.rb +6 -0
- data/test/fixtures/lazy_loading/foo_bars/mods/sub_mod.rb +6 -0
- data/test/fixtures/lazy_loading/foo_bars/mods/sub_sub_mod.rb +7 -0
- data/test/fixtures/lazy_loading/foo_bars/mods.rb +4 -0
- data/test/fixtures/lazy_loading/foo_bars/sub_foo_bar.rb +5 -0
- data/test/fixtures/lazy_loading/foo_bars/titis/tutu.rb +6 -0
- data/test/fixtures/lazy_loading/foo_bars/totos.rb +6 -0
- data/test/fixtures/lazy_loading/foo_bars.rb +4 -0
- data/test/lazy_loading/test_already_present_name_absolute.rb +6 -0
- data/test/lazy_loading/test_already_present_name_relative.rb +11 -0
- data/test/lazy_loading/test_inside_another_module.rb +5 -0
- data/test/lazy_loading/test_lazy_loading.rb +179 -0
- data/test/sanity/multiple-requires.yml +22 -4
- data/test/unit-suite.yml +5 -4
- metadata +119 -80
- data/SPEC.dyn.yml +0 -10
- data/SPEC.gemspec +0 -13
- data/test/test-unit-setup.rb +0 -19
- /data/test/{resources → fixtures}/require/test_require +0 -0
- /data/test/{resources → fixtures}/require/test_require_rb.rb +0 -0
- /data/test/{resources → fixtures}/require/test_require_so.so +0 -0
- /data/test/{resources → fixtures}/use-from-gems.rb +0 -0
- /data/test/{resources → fixtures}/yaml_testrunner/unit_test.rb +0 -0
data/lib/core_ex/require.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
2
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
3
|
# License:: Gnu General Public License.
|
4
|
-
# Revision:: $Id: require.rb
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/core_ex/lib/core_ex/require.rb 7939 2005-09-04T14:29:40.923141Z ertai $
|
5
5
|
|
6
6
|
# FIXME This autoload didn't work for these reasons:
|
7
7
|
# - |
|
data/lib/core_ex/string.rb
CHANGED
@@ -26,14 +26,23 @@ module CoreEx
|
|
26
26
|
self
|
27
27
|
end
|
28
28
|
|
29
|
-
def import
|
30
|
-
to_path.import
|
29
|
+
def import!
|
30
|
+
to_path.import!
|
31
31
|
end
|
32
32
|
|
33
33
|
def to_path
|
34
34
|
::Pathname.new(self)
|
35
35
|
end
|
36
36
|
|
37
|
+
def to_uri
|
38
|
+
URI.parse(self)
|
39
|
+
end
|
40
|
+
alias_method :to_url, :to_uri
|
41
|
+
|
42
|
+
def to_proc
|
43
|
+
DumpableProc.new(self)
|
44
|
+
end
|
45
|
+
|
37
46
|
def rec_fold ( init, &block )
|
38
47
|
if include? "\n"
|
39
48
|
super
|
data/lib/core_ex/time.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
2
2
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
3
3
|
# License:: GNU General Public License (GPL).
|
4
|
-
# Revision:: $Id: time.rb
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/core_ex/lib/core_ex/time.rb 7941 2005-09-06T20:32:49.915023Z ertai $
|
5
5
|
|
6
6
|
|
7
7
|
module CoreEx
|
data/lib/core_ex/try_dup.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
2
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
3
|
# License:: Gnu General Public License.
|
4
|
-
# Revision:: $Id: try_dup.rb
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/core_ex/lib/core_ex/try_dup.rb 7939 2005-09-04T14:29:40.923141Z ertai $
|
5
5
|
|
6
6
|
|
7
7
|
module CoreEx
|
data/lib/core_ex/yaml.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
2
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
3
|
# License:: Gnu General Public License.
|
4
|
-
# Revision:: $Id: yaml.rb
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/core_ex/lib/core_ex/yaml.rb 21944 2006-02-19T17:32:33.171560Z pouillar $
|
5
5
|
|
6
6
|
|
7
7
|
module CoreEx
|
@@ -11,6 +11,75 @@ module CoreEx
|
|
11
11
|
|
12
12
|
end # module CoreEx
|
13
13
|
|
14
|
+
|
15
|
+
module YAML
|
16
|
+
|
17
|
+
module_function
|
18
|
+
|
19
|
+
def load_from_io ( io, &block )
|
20
|
+
buffer = ''
|
21
|
+
io.each_line do |line|
|
22
|
+
if not buffer.empty? and line =~ /^---/
|
23
|
+
block[YAML.load(buffer)]
|
24
|
+
buffer = ''
|
25
|
+
else
|
26
|
+
buffer += line
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def have_option? ( opts, opt_name )
|
32
|
+
if opts.respond_to? :[]
|
33
|
+
opts[opt_name] || have_option?(opts[:Emitter], opt_name)
|
34
|
+
elsif opts.respond_to? :options
|
35
|
+
have_option? opts.options, opt_name
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
module BaseNode
|
41
|
+
|
42
|
+
def symbol_safe_key_transform ( t, k, v )
|
43
|
+
k = k.symbol_safe_transform if k.is_a? BaseNode
|
44
|
+
case k
|
45
|
+
when /^:"(.*)"/ then k = $1.to_sym
|
46
|
+
when /^:(.*)/ then k = $1.to_sym
|
47
|
+
end
|
48
|
+
if v.is_a? BaseNode
|
49
|
+
t[k] = v.symbol_safe_transform
|
50
|
+
else
|
51
|
+
t[k] = v
|
52
|
+
end
|
53
|
+
end
|
54
|
+
private :symbol_safe_key_transform
|
55
|
+
|
56
|
+
def symbol_safe_transform
|
57
|
+
@type_id = nil unless defined? @type_id
|
58
|
+
t = nil
|
59
|
+
case @value
|
60
|
+
when Hash
|
61
|
+
t = {}
|
62
|
+
@value.each do |k, v|
|
63
|
+
symbol_safe_key_transform(t, k, v)
|
64
|
+
end
|
65
|
+
when Array
|
66
|
+
t = []
|
67
|
+
@value.each do |v|
|
68
|
+
t.push v.symbol_safe_transform
|
69
|
+
end
|
70
|
+
when /^:"(.*)"/, /^:(.*)/
|
71
|
+
return $1.to_sym
|
72
|
+
else
|
73
|
+
return transform
|
74
|
+
end
|
75
|
+
YAML.transfer(@type_id, t)
|
76
|
+
end
|
77
|
+
|
78
|
+
end # module BaseNode
|
79
|
+
|
80
|
+
end # module YAML
|
81
|
+
|
82
|
+
|
14
83
|
class Regexp
|
15
84
|
have YamlExtension, :re
|
16
85
|
|
@@ -41,17 +110,20 @@ end # class Regexp
|
|
41
110
|
|
42
111
|
|
43
112
|
|
44
|
-
class Range
|
45
|
-
|
46
|
-
|
47
|
-
def to_yaml_string
|
48
|
-
to_s
|
49
|
-
end
|
113
|
+
class Range # FIXME
|
114
|
+
yaml_as 'tag:yaml.org,2002:range'
|
50
115
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
116
|
+
class << self
|
117
|
+
alias_method :yaml_new_no_eval, :yaml_new
|
118
|
+
def yaml_new( klass, tag, val )
|
119
|
+
begin
|
120
|
+
yaml_new_no_eval klass, tag, val
|
121
|
+
rescue YAML::TypeError
|
122
|
+
range = eval val.to_s
|
123
|
+
raise unless range.is_a? Range
|
124
|
+
range
|
125
|
+
end
|
126
|
+
end
|
55
127
|
end
|
56
128
|
|
57
129
|
end # class Range
|
@@ -62,42 +134,18 @@ class Array
|
|
62
134
|
|
63
135
|
alias_method :old_to_yaml, :to_yaml
|
64
136
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
inline = :inline
|
70
|
-
end
|
71
|
-
YAML::quick_emit(object_id, opts) do |out|
|
72
|
-
out.seq( taguri, to_yaml_style || inline ) do |seq|
|
73
|
-
each { |x| seq.add x }
|
74
|
-
end
|
75
|
-
end
|
137
|
+
def to_yaml ( opts={} )
|
138
|
+
inline = nil
|
139
|
+
if YAML.have_option? opts, :Inline and not is_complex_yaml?
|
140
|
+
inline = :inline
|
76
141
|
end
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
if (opts[:Inline] or (em and em.options[:Inline])) and not is_complex_yaml?
|
81
|
-
YAML::quick_emit(self.object_id, opts) do |out|
|
82
|
-
out << '['
|
83
|
-
first = true
|
84
|
-
each do |x|
|
85
|
-
if first
|
86
|
-
first = false
|
87
|
-
else
|
88
|
-
out << ', '
|
89
|
-
end
|
90
|
-
x.to_yaml(:Emitter => out)
|
91
|
-
end
|
92
|
-
out << ']'
|
93
|
-
end
|
94
|
-
else
|
95
|
-
old_to_yaml(opts)
|
142
|
+
YAML::quick_emit(object_id, opts) do |out|
|
143
|
+
out.seq( taguri, to_yaml_style || inline ) do |seq|
|
144
|
+
each { |x| seq.add x }
|
96
145
|
end
|
97
146
|
end
|
98
147
|
end
|
99
148
|
|
100
|
-
|
101
149
|
suppress(NoMethodError, NameError) { undef_method :is_complex_yaml? }
|
102
150
|
|
103
151
|
def is_complex_yaml?
|
@@ -112,44 +160,18 @@ class Hash
|
|
112
160
|
|
113
161
|
alias_method :old_to_yaml, :to_yaml
|
114
162
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
inline = :inline
|
120
|
-
end
|
121
|
-
YAML::quick_emit(object_id, opts) do |out|
|
122
|
-
out.map(taguri, to_yaml_style || inline) do |map|
|
123
|
-
each { |k, v| map.add k, v }
|
124
|
-
end
|
125
|
-
end
|
163
|
+
def to_yaml ( opts={} )
|
164
|
+
inline = nil
|
165
|
+
if YAML.have_option? opts, :Inline and not is_complex_yaml?
|
166
|
+
inline = :inline
|
126
167
|
end
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
if (opts[:Inline] or (em and em.options[:Inline])) and not is_complex_yaml?
|
131
|
-
YAML::quick_emit(self.object_id, opts) do |out|
|
132
|
-
out << '{'
|
133
|
-
first = true
|
134
|
-
each do |k, v|
|
135
|
-
if first
|
136
|
-
first = false
|
137
|
-
else
|
138
|
-
out << ', '
|
139
|
-
end
|
140
|
-
k.to_yaml(:Emitter => out)
|
141
|
-
out << ': '
|
142
|
-
v.to_yaml(:Emitter => out)
|
143
|
-
end
|
144
|
-
out << '}'
|
145
|
-
end
|
146
|
-
else
|
147
|
-
old_to_yaml(opts)
|
168
|
+
YAML::quick_emit(object_id, opts) do |out|
|
169
|
+
out.map(taguri, to_yaml_style || inline) do |map|
|
170
|
+
each { |k, v| map.add k, v }
|
148
171
|
end
|
149
172
|
end
|
150
173
|
end
|
151
174
|
|
152
|
-
|
153
175
|
suppress(NoMethodError, NameError) { undef_method :is_complex_yaml? }
|
154
176
|
|
155
177
|
def is_complex_yaml?
|
@@ -189,10 +211,10 @@ test_section __FILE__ do
|
|
189
211
|
end
|
190
212
|
|
191
213
|
def test_range
|
192
|
-
assert_yaml_load
|
193
|
-
assert_yaml_dump @val,
|
194
|
-
assert_yaml_load
|
195
|
-
assert_yaml_dump @val,
|
214
|
+
assert_yaml_load '!range "0..10"', Range, 0..10
|
215
|
+
assert_yaml_dump @val, "!range \nbegin: 0\nend: 10\nexcl: false"
|
216
|
+
assert_yaml_load '!range "0...10"', Range, 0...10
|
217
|
+
assert_yaml_dump @val, "!range \nbegin: 0\nend: 10\nexcl: true"
|
196
218
|
end
|
197
219
|
|
198
220
|
def test_ruby
|
data/lib/core_ex.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
# Copyright:: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
|
2
2
|
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
3
3
|
# License:: Gnu General Public License.
|
4
|
-
# Revision:: $Id: core_ex.rb
|
4
|
+
# Revision:: $Id: /w/fey/ruby_ex/trunk/core_ex/lib/core_ex.rb 22188 2006-02-23T16:26:24.490864Z pouillar $
|
5
5
|
|
6
6
|
unless defined? CORE_EX_LOADED and CORE_EX_LOADED
|
7
7
|
CORE_EX_LOADED = true
|
8
|
+
|
9
|
+
# Nothing before me !!!
|
10
|
+
class Module
|
11
|
+
alias_method :original_core_ex_const_missing, :const_missing
|
12
|
+
alias_method :the_standard_name, :name
|
13
|
+
end # module Module
|
14
|
+
|
8
15
|
require 'English'
|
9
16
|
$LOADED_FEATURES << 'core_ex.rb' unless $LOADED_FEATURES.include? 'core_ex.rb'
|
10
17
|
|
@@ -46,7 +53,7 @@ unless defined? CORE_EX_LOADED and CORE_EX_LOADED
|
|
46
53
|
end
|
47
54
|
|
48
55
|
begin
|
49
|
-
require 'rubygems'
|
56
|
+
require 'rubygems' unless ENV['NO_GEM']
|
50
57
|
raise LoadError, 'RubyGems not loaded' unless defined? RubyGems
|
51
58
|
def core_ex_gem_require ( gem_name, gem_version='> 0' )
|
52
59
|
require_gem gem_name, gem_version
|
@@ -73,45 +80,123 @@ unless defined? CORE_EX_LOADED and CORE_EX_LOADED
|
|
73
80
|
verbose = $VERBOSE
|
74
81
|
$VERBOSE = false
|
75
82
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
83
|
+
core_ex_require 'active_support', 'activesupport', 'activesupport', '~> 1.2.5'
|
84
|
+
|
85
|
+
$VERBOSE = verbose
|
86
|
+
|
87
|
+
# <<< little active_support patch
|
88
|
+
silence_warnings do
|
89
|
+
module Inflector
|
90
|
+
class Inflections
|
91
|
+
# <<<
|
92
|
+
attr_reader :underscore_rules, :camelize_rules
|
93
|
+
# >>>
|
94
|
+
def initialize
|
95
|
+
# <<<
|
96
|
+
clear_all
|
97
|
+
# >>>
|
98
|
+
end
|
99
|
+
# <<<
|
100
|
+
def clear_all
|
101
|
+
@plurals, @singulars, @uncountables, @underscore_rules, @camelize_rules = [], [], [], [], []
|
102
|
+
end
|
103
|
+
# >>>
|
104
|
+
def clear ( scope=:all )
|
105
|
+
case scope
|
106
|
+
when :all
|
107
|
+
# <<<
|
108
|
+
clear_all
|
109
|
+
# >>>
|
110
|
+
else
|
111
|
+
instance_variable_set "@#{scope}", []
|
112
|
+
end
|
113
|
+
end
|
114
|
+
def mk_regexp ( anObject )
|
115
|
+
case anObject
|
116
|
+
when Regexp then anObject
|
117
|
+
else
|
118
|
+
str = Regexp.quote anObject.to_s
|
119
|
+
/\b#{str}\b/
|
120
|
+
end
|
121
|
+
end
|
122
|
+
private :mk_regexp
|
123
|
+
def underscore(rule, replacement)
|
124
|
+
@underscore_rules.unshift [mk_regexp(rule), replacement]
|
125
|
+
end
|
126
|
+
def camelize(rule, replacement)
|
127
|
+
@camelize_rules.unshift [mk_regexp(rule), replacement]
|
128
|
+
end
|
129
|
+
def fixed_case ( camel_cased_word,
|
130
|
+
lower_case_and_underscored_word=camel_cased_word.downcase )
|
131
|
+
camelize(lower_case_and_underscored_word, camel_cased_word)
|
132
|
+
underscore(camel_cased_word, lower_case_and_underscored_word)
|
133
|
+
end
|
134
|
+
def fixed_cases ( *words )
|
135
|
+
for word in words
|
136
|
+
if word.is_a? Array
|
137
|
+
fixed_case(*word)
|
138
|
+
else
|
139
|
+
fixed_case word
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
# Since Inflections is already loaded and is a Singleton we need to initialize
|
145
|
+
# our variables by hand:
|
146
|
+
Inflections.instance.instance_eval { @underscore_rules, @camelize_rules = [], [] }
|
147
|
+
|
148
|
+
def underscore(camel_cased_word)
|
149
|
+
# <<<
|
150
|
+
result = camel_cased_word.to_s.split '::'
|
151
|
+
result.map! do |word|
|
152
|
+
inflections.underscore_rules.each { |(rule, replacement)| break if word.gsub!(rule, replacement) }
|
153
|
+
word.gsub!(/([A-Z])/, '_\1')
|
154
|
+
word.gsub!(/^_/, '')
|
155
|
+
word.downcase!
|
156
|
+
word
|
157
|
+
end
|
158
|
+
result.join '/'
|
159
|
+
# >>>
|
160
|
+
end
|
161
|
+
def camelize(lower_case_and_underscored_word)
|
162
|
+
# <<<
|
163
|
+
result = lower_case_and_underscored_word.to_s.split '/'
|
164
|
+
result.map! do |word|
|
165
|
+
inflections.camelize_rules.each { |(rule, replacement)| break if word.gsub!(rule, replacement) }
|
166
|
+
word.gsub!(/(^|_)(.)/) { $2.upcase }
|
167
|
+
word
|
168
|
+
end
|
169
|
+
result.join '::'
|
170
|
+
# >>>
|
171
|
+
end
|
172
|
+
end # module Inflector
|
80
173
|
end
|
174
|
+
module Dependencies
|
175
|
+
def self.change_mechanism ( arg, &block )
|
176
|
+
save = mechanism
|
177
|
+
begin
|
178
|
+
self.mechanism = arg
|
179
|
+
block[]
|
180
|
+
ensure
|
181
|
+
self.mechanism = save
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end # module Dependencies
|
81
185
|
# >>>
|
82
186
|
|
83
|
-
core_ex_require 'active_support', 'activesupport', 'activesupport', '~> 1.1.1'
|
84
|
-
|
85
187
|
# <<< Dynamic patch: Yaml warnings in ruby 1.8.3
|
86
188
|
begin
|
87
|
-
silence_warnings {
|
189
|
+
Dependencies.change_mechanism(:require) { silence_warnings { require_dependency 'yaml' } }
|
88
190
|
class Module
|
89
|
-
|
191
|
+
alias_method :yaml_as_bugged, :yaml_as
|
90
192
|
def yaml_as( tag, sc = true )
|
91
|
-
|
92
|
-
attr_writer :taguri
|
93
|
-
def taguri
|
94
|
-
if respond_to? :to_yaml_type
|
95
|
-
YAML::tagurize( to_yaml_type[1..-1] )
|
96
|
-
else
|
97
|
-
return @taguri if defined? @taguri
|
98
|
-
tag = #{ tag.dump }
|
99
|
-
if self.class.yaml_tag_subclasses? and self.class != YAML::tagged_classes[tag]
|
100
|
-
tag = "\#{ tag }:\#{ self.class.yaml_tag_class_name }"
|
101
|
-
end
|
102
|
-
tag
|
103
|
-
end
|
104
|
-
end
|
105
|
-
def self.yaml_tag_subclasses?; #{ sc ? 'true' : 'false' }; end
|
106
|
-
end;
|
107
|
-
YAML::tag_class tag, self
|
193
|
+
silence_warnings { yaml_as_bugged(tag, sc) }
|
108
194
|
end
|
109
195
|
end
|
110
|
-
silence_warnings { require 'yaml' }
|
111
196
|
module YAML
|
112
197
|
module Syck
|
113
198
|
class Parser
|
114
|
-
|
199
|
+
alias_method :initialize_bugged, :initialize
|
115
200
|
def initialize ( *a, &b )
|
116
201
|
@input = nil
|
117
202
|
initialize_bugged(*a, &b)
|
@@ -131,74 +216,6 @@ unless defined? CORE_EX_LOADED and CORE_EX_LOADED
|
|
131
216
|
# >>>
|
132
217
|
|
133
218
|
|
134
|
-
# <<< little active_support patch
|
135
|
-
module Inflector
|
136
|
-
def underscore(camel_cased_word)
|
137
|
-
camel_cased_word.to_s.gsub(/::/, '/').gsub(/([A-Z])/,'_\1').gsub(/(^|\/)_/, '\1').downcase
|
138
|
-
end
|
139
|
-
def constantize(camel_cased_word, start=Object)
|
140
|
-
camel_cased_word.split("::").inject(start) do |final_type, part|
|
141
|
-
return nil unless final_type.const_defined? part
|
142
|
-
final_type.const_get(part)
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end # module Inflector
|
146
|
-
module Dependencies
|
147
|
-
class LoadingModule
|
148
|
-
def const_load!(name, file_name = nil)
|
149
|
-
file_name ||= 'application' if root? && name.to_s == 'ApplicationController'
|
150
|
-
path = self.path + [file_name || name]
|
151
|
-
|
152
|
-
load_paths.each do |load_path|
|
153
|
-
fs_path = load_path.filesystem_path(path)
|
154
|
-
next unless fs_path
|
155
|
-
|
156
|
-
case
|
157
|
-
when File.directory?(fs_path)
|
158
|
-
new_module = LoadingModule.new(self.root, self.path + [name])
|
159
|
-
self.const_set name, new_module
|
160
|
-
if self.root?
|
161
|
-
if Object.const_defined?(name)
|
162
|
-
msg = "Cannot load module #{name}: Object::#{name} is set to #{Object.const_get(name).inspect}"
|
163
|
-
raise NameError, msg
|
164
|
-
end
|
165
|
-
Object.const_set(name, new_module)
|
166
|
-
end
|
167
|
-
# <<<
|
168
|
-
module_fs_path = fs_path + '.rb'
|
169
|
-
self.root.load_file!(module_fs_path) if File.exist?(module_fs_path)
|
170
|
-
# >>>
|
171
|
-
break
|
172
|
-
when File.file?(fs_path)
|
173
|
-
self.root.load_file!(fs_path)
|
174
|
-
|
175
|
-
# Import the loaded constant from Object provided we are the root node.
|
176
|
-
self.const_set(name, Object.const_get(name)) if self.root? && Object.const_defined?(name)
|
177
|
-
break
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
self.const_defined?(name)
|
182
|
-
end
|
183
|
-
end # class LoadingModule
|
184
|
-
end # module Dependencies
|
185
|
-
# >>>
|
186
|
-
|
187
|
-
$VERBOSE = verbose
|
188
|
-
|
189
|
-
DEPENDENCIES_MECHANISM = :require unless defined? DEPENDENCIES_MECHANISM
|
190
|
-
Dependencies.mechanism = DEPENDENCIES_MECHANISM
|
191
|
-
|
192
|
-
if Object.const_defined? :Controllers
|
193
|
-
# Perhaps a rails environement
|
194
|
-
raise 'bad Controllers' unless Controllers.is_a? Dependencies::RootLoadingModule
|
195
|
-
Controllers.load_paths << Dependencies::ConstantLoadPath.new(CORE_EX_DIR.to_s)
|
196
|
-
else
|
197
|
-
Controllers = Dependencies::LoadingModule.root(CORE_EX_DIR.to_s)
|
198
|
-
end
|
199
|
-
Controllers::CoreEx.name # .import! is not yet defined
|
200
|
-
Controllers::Test::Unit::UI::Yaml.name
|
201
|
-
|
202
219
|
module CoreEx
|
203
220
|
|
204
221
|
module_function
|
@@ -211,8 +228,20 @@ module CoreEx
|
|
211
228
|
dir + 'core_ex'
|
212
229
|
end
|
213
230
|
|
231
|
+
def test_dir
|
232
|
+
dir.parent + 'test'
|
233
|
+
end
|
234
|
+
|
235
|
+
def fixtures_dir
|
236
|
+
test_dir + 'fixtures'
|
237
|
+
end
|
238
|
+
|
214
239
|
end # module CoreEx
|
215
240
|
|
241
|
+
$LOAD_PATH << CoreEx.dir
|
242
|
+
|
243
|
+
require 'core_ex/embedded_tests'
|
244
|
+
|
216
245
|
class Object
|
217
246
|
include CoreEx::EmbeddedTests
|
218
247
|
end # class Object
|
@@ -220,6 +249,8 @@ if defined? EMBEDDED_TEST_MODE
|
|
220
249
|
embedded_test_mode EMBEDDED_TEST_MODE
|
221
250
|
end
|
222
251
|
|
252
|
+
require 'core_ex/lazy_loading'
|
253
|
+
|
223
254
|
class String
|
224
255
|
include CoreEx::String
|
225
256
|
end # class String
|
@@ -251,34 +282,6 @@ class Pathname
|
|
251
282
|
include CoreEx::Pathname
|
252
283
|
end # class Pathname
|
253
284
|
|
254
|
-
$LOADED_FEATURES.dup.each do |feature|
|
255
|
-
if (path = Pathname.new(feature)).absolute?
|
256
|
-
load_path, base_path = path.split_with_load_path($LOAD_PATH)
|
257
|
-
unless load_path.nil?
|
258
|
-
new_feature = base_path.to_s
|
259
|
-
next if $LOADED_FEATURES.include? new_feature
|
260
|
-
$LOADED_FEATURES << new_feature
|
261
|
-
end
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
module Kernel
|
266
|
-
|
267
|
-
alias_method :require_without_unification, :require
|
268
|
-
def require ( file, *a )
|
269
|
-
if (path = Pathname.new(file)).absolute?
|
270
|
-
load_path, base_path = path.split_with_load_path
|
271
|
-
unless load_path.nil?
|
272
|
-
feature = base_path.to_s
|
273
|
-
return false if $LOADED_FEATURES.include? feature
|
274
|
-
$LOADED_FEATURES << feature
|
275
|
-
end
|
276
|
-
end
|
277
|
-
require_without_unification(file, *a)
|
278
|
-
end
|
279
|
-
|
280
|
-
end # module Kernel
|
281
|
-
|
282
285
|
module Enumerable
|
283
286
|
include CoreEx::Enumerable
|
284
287
|
end # module Enumerable
|
@@ -303,9 +306,7 @@ CoreEx.dir.load_path!
|
|
303
306
|
CoreEx::Yaml.import!
|
304
307
|
CoreEx::TryDup.import!
|
305
308
|
|
306
|
-
|
307
309
|
require 'pp'
|
308
|
-
silence_warnings { require 'active_support/breakpoint' }
|
309
310
|
|
310
311
|
test_section __FILE__ do
|
311
312
|
|
@@ -318,7 +319,7 @@ test_section __FILE__ do
|
|
318
319
|
end
|
319
320
|
|
320
321
|
def test_simple
|
321
|
-
assert_kind_of
|
322
|
+
assert_kind_of Module, CoreEx
|
322
323
|
assert_raise(NameError) { EmbeddedTests }
|
323
324
|
assert_kind_of Module, CoreEx::EmbeddedTests
|
324
325
|
end
|