autoload 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,16 @@
1
+ # Autoload
2
+
3
+ Autoload is a very simple library. The programmer specifies the files to be required
4
+ when an unknown constant is first used, and Autoload will automatically load it
5
+ and return the newly found constant.
6
+
7
+ autoload 'TryMe', 'tryme'
8
+
9
+ Even though we haven't yet required "tryme", we should have no problem
10
+ access the the TryMe constant which is defined in this file.
11
+
12
+ TryMe #=> true
13
+
14
+ That's pretty much it. The other point is that this autload can be used within
15
+ a module for constants relative to its namespace.
16
+
@@ -0,0 +1,2 @@
1
+ require 'ae'
2
+
@@ -0,0 +1,6 @@
1
+ require 'autoload'
2
+
3
+ dir = File.expand_path('../fixture', File.dirname(__FILE__))
4
+
5
+ $LOAD_PATH.unshift(dir)
6
+
@@ -0,0 +1,2 @@
1
+ TryMe = true
2
+
@@ -0,0 +1,46 @@
1
+ $AUTOLOAD = Hash.new{ |h, k| h[k] = [] }
2
+
3
+ #
4
+ #
5
+ #
6
+ def self.autoload(name, path)
7
+ $AUTOLOAD[name.to_sym] << path
8
+ end
9
+
10
+ class Module
11
+ #
12
+ #
13
+ #
14
+ def self.autoload(subname, path)
15
+ $AUTOLOAD["#{name}::#{subname}".to_sym] << path
16
+ end
17
+ end
18
+
19
+ module Kernel
20
+ #
21
+ # Note: I am not so certain the instance level method is a good idea.
22
+ # The end used can just as easily and more cleary use `self.class.autoload`
23
+ # to do it themselves.
24
+ #
25
+ def autoload(subname, path)
26
+ $AUTOLOAD["#{self.class.name}::#{subname}".to_sym] << path
27
+ end
28
+ end
29
+
30
+ class Object
31
+ #
32
+ #
33
+ #
34
+ def self.const_missing(name)
35
+ if paths = $AUTOLOAD.delete(name)
36
+ paths.each do |path|
37
+ require(path)
38
+ end
39
+ super(name) unless const_defined?(name)
40
+ const_get(name)
41
+ else
42
+ super(name)
43
+ end
44
+ end
45
+ end
46
+
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: autoload
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - trans
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: qed
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: ae
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: Ruby is officially deprecating autoload. Well, some people may prefer
47
+ to keep it! Moreover, Ruby's implementation has had a bug in it for-like-ever. This
48
+ gem fixes that problem too.
49
+ email:
50
+ - transfire@gmail.com
51
+ executables: []
52
+ extensions: []
53
+ extra_rdoc_files:
54
+ - LICENSE.txt
55
+ - HISTORY.md
56
+ - README.md
57
+ files:
58
+ - .index
59
+ - .yardopts
60
+ - demo/applique/main.rb
61
+ - demo/applique/ae.rb
62
+ - demo/01_autoload.md
63
+ - demo/fixture/tryme.rb
64
+ - lib/autoload.rb
65
+ - LICENSE.txt
66
+ - Index.yml
67
+ - HISTORY.md
68
+ - README.md
69
+ - Setup.rb
70
+ homepage: http://dotruby.github.com
71
+ licenses:
72
+ - BSD-2-Clause
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ none: false
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 1.8.23
92
+ signing_key:
93
+ specification_version: 3
94
+ summary: What Ruby does but how Ruby should do it.
95
+ test_files: []