shared 0.4.4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README +8 -0
  2. data/a.rb +12 -0
  3. data/lib/shared.rb +53 -42
  4. metadata +4 -3
data/README CHANGED
@@ -12,6 +12,14 @@ URIS
12
12
  http://codeforpeople.com/lib/ruby/
13
13
 
14
14
  HISTORY
15
+ 1.0.0
16
+ - add Share/Shared methods
17
+ - move from @@vars to closure based impl
18
+
19
+ 0.4.5
20
+ - add Shared.for as 'shared' alias to rails' style const missing can
21
+ trigger lib load for a call. usage: Shared.for(:name){ ... }
22
+
15
23
  0.4.3
16
24
  - added version info
17
25
  - move methods from Object to Kernel and made them private (thx Stefan
data/a.rb ADDED
@@ -0,0 +1,12 @@
1
+ Share :foo do
2
+ def foo() p :foo end
3
+ end
4
+ include Shared(:foo)
5
+
6
+ Share :bar do
7
+ def bar() p :bar end
8
+ end
9
+ include Shared(:bar)
10
+
11
+ foo
12
+ bar
@@ -1,63 +1,74 @@
1
- module Shared
2
- Shared::VERSION = '0.4.4' unless defined?(Shared::VERSION)
3
- def version() Shared::VERSION end
1
+ unless defined?(Shared)
2
+ module Shared
3
+ Shared::VERSION = '1.0.0' unless defined?(Shared::VERSION)
4
+ def version() Shared::VERSION end
4
5
 
5
- Code = {}
6
+ Code = {}
6
7
 
7
- def shared name, &block
8
- key = key_for name
8
+ def shared name, &block
9
+ key = key_for name
9
10
 
10
- return Code[key] if block.nil?
11
+ return Code[key] if block.nil?
11
12
 
12
- m = (Code[key] || Module.new)
13
+ m = (Code[key] || Module.new)
13
14
 
14
- singleton_class(m) do
15
- unless defined?(@@blocks)
16
- @@blocks = []
15
+ singleton_class(m) do
16
+ unless m.respond_to?(:blocks)
17
+ blocks = []
18
+ define_method(:blocks){ blocks }
17
19
 
18
- define_method(:blocks){ @@blocks }
19
-
20
- define_method(:included) do |other|
21
- blocks.each{|b| other.send(:module_eval, &b)}
22
- end
20
+ define_method(:included) do |other|
21
+ blocks.each{|b| other.send(:module_eval, &b)}
22
+ end
23
23
 
24
- define_method(:extend_object) do |other|
25
- Shared.singleton_class(other) do
26
- m.blocks.each{|b| module_eval &b}
24
+ define_method(:extend_object) do |other|
25
+ Shared.singleton_class(other) do
26
+ m.blocks.each{|b| module_eval &b}
27
+ end
27
28
  end
28
29
  end
29
30
  end
31
+
32
+ m.blocks << block
33
+
34
+ Code[key] ||= m
30
35
  end
36
+
37
+ alias_method 'share', 'shared'
38
+ alias_method 'for', 'shared'
39
+ alias_method '[]', 'shared'
31
40
 
32
- m.blocks << block
41
+ def key_for name
42
+ name.to_s.strip.downcase
43
+ end
33
44
 
34
- Code[key] ||= m
35
- end
36
-
37
- alias_method 'share', 'shared'
45
+ def singleton_class object, &block
46
+ singleton_class =
47
+ class << object
48
+ self
49
+ end
50
+ block ? singleton_class.module_eval(&block) : singleton_class
51
+ end
38
52
 
39
- def key_for name
40
- name.to_s.strip.downcase
53
+ extend self
41
54
  end
42
55
 
43
- def singleton_class object, &block
44
- singleton_class =
45
- class << object
46
- self
47
- end
48
- block ? singleton_class.module_eval(&block) : singleton_class
49
- end
56
+ module Kernel
57
+ private
58
+ def share(*a, &b)
59
+ Shared.share(*a, &b)
60
+ end
50
61
 
51
- extend self
52
- end
62
+ def Share(*a, &b)
63
+ Shared.share(*a, &b)
64
+ end
53
65
 
54
- module Kernel
55
- private
56
- def share *a, &b
57
- Shared.share *a, &b
58
- end
66
+ def shared(*a, &b)
67
+ Shared.shared(*a, &b)
68
+ end
59
69
 
60
- def shared *a, &b
61
- Shared.shared *a, &b
70
+ def Shared(*a, &b)
71
+ Shared.shared(*a, &b)
72
+ end
62
73
  end
63
74
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shared
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ara T. Howard
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-09 00:00:00 -07:00
12
+ date: 2009-02-05 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -31,6 +31,7 @@ extensions: []
31
31
  extra_rdoc_files: []
32
32
 
33
33
  files:
34
+ - a.rb
34
35
  - ann-shared-0.4.2.txt
35
36
  - gemspec.rb
36
37
  - gen_readme.rb
@@ -66,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
67
  requirements: []
67
68
 
68
69
  rubyforge_project: codeforpeople
69
- rubygems_version: 1.2.0
70
+ rubygems_version: 1.3.1
70
71
  signing_key:
71
72
  specification_version: 2
72
73
  summary: shared