holywarez-mpt 0.1.3.15 → 0.1.3.16

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 CHANGED
@@ -1,19 +1,20 @@
1
- v0.1.3.15 Security.sandbox experiment
2
- v0.1.3.14 "subscribe instance methods" bugfix
3
- v0.1.3.13 reorganize alghoritm fixed
4
- v0.1.3.12 subscribe class instance methods for events is now supported
5
- v0.1.3.11 wrappable was renamed to wrapable. "wrappable" will be removed in future versions
6
- v0.1.3.10 wrap ability without accessor
7
- v0.1.3.9 cache_method helper
8
- v0.1.3.8 Refactoring FilterChain array subclass
9
- v0.1.3.7 Bug fix for clear_owner_subscribers
10
- v0.1.3.6 Bug fix for Wrap.get default value
11
- v0.1.3.5 Little bug fix for empty subscriber chain
12
- v0.1.3.4 Added clear_owner_subscribers
13
- v0.1.3.3 Added clear_event_chain support
14
- v0.1.3.2 Added new example
15
- v0.1.3.1 Added dependencies for gem
16
- v0.1.3 Wrap helpers support added
17
- v0.1.2 Instance eval with arguments is now supported for any object
18
- v0.1.1 Sample sources updated
1
+ v0.1.3.16 Event.method_missing implementation
2
+ v0.1.3.15 Security.sandbox experiment
3
+ v0.1.3.14 "subscribe instance methods" bugfix
4
+ v0.1.3.13 reorganize alghoritm fixed
5
+ v0.1.3.12 subscribe class instance methods for events is now supported
6
+ v0.1.3.11 wrappable was renamed to wrapable. "wrappable" will be removed in future versions
7
+ v0.1.3.10 wrap ability without accessor
8
+ v0.1.3.9 cache_method helper
9
+ v0.1.3.8 Refactoring FilterChain array subclass
10
+ v0.1.3.7 Bug fix for clear_owner_subscribers
11
+ v0.1.3.6 Bug fix for Wrap.get default value
12
+ v0.1.3.5 Little bug fix for empty subscriber chain
13
+ v0.1.3.4 Added clear_owner_subscribers
14
+ v0.1.3.3 Added clear_event_chain support
15
+ v0.1.3.2 Added new example
16
+ v0.1.3.1 Added dependencies for gem
17
+ v0.1.3 Wrap helpers support added
18
+ v0.1.2 Instance eval with arguments is now supported for any object
19
+ v0.1.1 Sample sources updated
19
20
  v0.1.0 First version of MPT gem
data/Manifest CHANGED
@@ -1,19 +1,19 @@
1
- CHANGELOG
2
- LICENSE
3
- Manifest
4
- README
5
- Rakefile
6
- examples/call_experiment.rb
7
- examples/declarations.rb
8
- examples/instance_eval_with_args.rb
9
- examples/ordered_subscribers.rb
10
- examples/run_experiments.rb
11
- examples/unordered_subscribers.rb
12
- examples/wrap_method_experiment.rb
13
- install_gem.bat
14
- lib/event.rb
15
- lib/mpt.rb
16
- lib/system.rb
17
- lib/wrap.rb
18
- mpt.gemspec
19
- run_examples.bat
1
+ CHANGELOG
2
+ examples/call_experiment.rb
3
+ examples/declarations.rb
4
+ examples/instance_eval_with_args.rb
5
+ examples/ordered_subscribers.rb
6
+ examples/run_experiments.rb
7
+ examples/unordered_subscribers.rb
8
+ examples/wrap_method_experiment.rb
9
+ lib/event.rb
10
+ lib/mpt.rb
11
+ lib/system.rb
12
+ lib/wrap.rb
13
+ LICENSE
14
+ Manifest
15
+ mpt.gemspec
16
+ Rakefile
17
+ README
18
+ test/security_test.rb
19
+ test/test_helper.rb
data/Rakefile CHANGED
@@ -1,11 +1,22 @@
1
1
  require "echoe"
2
+
2
3
  Echoe.new( "mpt" ) do |p|
3
- p.author = "Anatoly Lapshin"
4
- p.summary = "Monkey Patching Toolkit"
5
- p.runtime_dependencies = ['activesupport', 'uuid']
6
- p.development_dependencies = []
7
- p.need_tar_gz = false
8
- p.retain_gemspec = true
9
- p.gemspec_name = 'mpt.gemspec'
10
- p.clean_pattern.push 'lib/*-*'
4
+ p.author = ["Anatoly Lapshin", "Ilya Vesov"]
5
+ p.summary = "Monkey Patching Toolkit"
6
+ p.email = "holywarez@gmail.com"
7
+ p.url = "http://github.com/holywarez/mpt"
8
+
9
+ p.runtime_dependencies = ['activesupport', 'uuid']
10
+ p.development_dependencies = []
11
+
12
+ p.need_tar_gz = false
13
+ p.retain_gemspec = true
14
+ p.gemspec_name = 'mpt.gemspec'
15
+ p.test_pattern = ["test/**/*_test.rb"]
16
+
17
+ p.clean_pattern.push 'lib/*-*'
18
+ p.has_rdoc = true
19
+ p.rdoc_pattern = ["README", "CHANGELOG", "lib/**/*.rb"]
20
+ p.rdoc_options << "-c utf-8"
21
+ p.ignore_pattern = [".gitignore", "doc", "examples", ".idea", "coverage.data", "*.bat"]
11
22
  end
data/lib/event.rb CHANGED
@@ -1,120 +1,124 @@
1
-
2
- class Array
3
- def mpt_filterchain_reorganize
4
- index = 0
5
- while index < self.size
6
- filter = self[index]
7
- filter_opts = filter[:options]
8
- unless filter_opts[:after].nil?
9
- (self.size-1).downto(index) do |i|
10
- fo = self[i][:options]
11
- unless fo[:as].nil?
12
- if fo[:as] == filter_opts[:after]
13
- new_chain = []
14
- new_chain += self[0..index-1] if index > 0
15
- new_chain += [self[i]]
16
- new_chain += self[index..i-1]
17
- new_chain += self[i+1..self.size-1]
18
- self.replace new_chain
19
- index = 0
20
- break
21
- end # if :as matched with :after
22
- end # unless :as is nil
23
- end # for next items
24
- end # unless :after is nil
25
- index += 1
26
- end # while index < list size
27
- end # def reorganize
28
- end # filter chain class
29
-
30
- module MPT
31
- class EventContainer
32
- attr_accessor :event_object
33
-
34
- def initialize( val = nil )
35
- self.event_object = val.dup unless val.nil?
36
- end
37
-
38
- end
39
-
40
- class Event
41
- @@mpt_subscribers = {}
42
-
43
- class << self
44
- def subscribe(event_name, options = {}, &block)
45
- channel = @@mpt_subscribers[event_name] ||= []
46
- channel << { :options => options, :proc => block }
47
- channel.mpt_filterchain_reorganize
48
- end
49
-
50
- def trigger_with_object(event_name, object, *args)
51
- container = MPT::EventContainer.new(object)
52
- channel = @@mpt_subscribers[event_name]
53
- if !channel.nil? && channel.size > 0
54
- channel.each do |subscriber|
55
- container.instance_eval_with_args( *args, &subscriber[:proc] )
56
- end
57
- end
58
-
59
- container.event_object
60
- end
61
-
62
- def trigger(event_name, *args)
63
- trigger_with_object(event_name, nil, *args)
64
- end
65
-
66
- def clear_event_chain(event_name)
67
- @@mpt_subscribers.delete(event_name)
68
- end
69
-
70
- def clear_owner_subscribers(owner)
71
- @@mpt_subscribers.each_pair do |event_name, subscribers|
72
- @@mpt_subscribers[event_name] = subscribers.select { |s| owner != s[:options][:owner] }
73
- end
74
- end
75
- end # end of static section
76
- end # end of class Event
77
-
78
- end
79
-
80
- class Class
81
- def subscribe( target, options )
82
- return if options[:for].blank?
83
-
84
- unless self.respond_to?( :new_with_subscribe_support )
85
- code_to_eval = <<-EOC
86
- class << self
87
- def register_subscribe(target, options)
88
- es = @@event_subscribes ||= {}
89
- est = es[options[:for]] ||= []
90
- est << target
91
- end
92
-
93
- def new_with_subscribe_support(*constructor_arguments)
94
- instance = new_without_subscribe_support(*constructor_arguments)
95
- @@event_subscribes.each_key do |event_name|
96
- ::MPT::Event.subscribe( event_name, :owner => instance ) do |*args|
97
- instance.send( "trigger_event", event_name, *args )
98
- end
99
- end
100
- instance
101
- end
102
-
103
- alias_method_chain :new, :subscribe_support
104
- end
105
-
106
- private
107
- def trigger_event(name, *args)
108
- @@event_subscribes[name].each do |method_name|
109
- self.send( method_name, *args )
110
- end
111
- end
112
- EOC
113
-
114
- self.class_eval( code_to_eval, __FILE__, __LINE__ )
115
- end
116
-
117
- self.register_subscribe( target, options )
118
-
119
- end
120
- end
1
+
2
+ class Array
3
+ def mpt_filterchain_reorganize
4
+ index = 0
5
+ while index < self.size
6
+ filter = self[index]
7
+ filter_opts = filter[:options]
8
+ unless filter_opts[:after].nil?
9
+ (self.size-1).downto(index) do |i|
10
+ fo = self[i][:options]
11
+ unless fo[:as].nil?
12
+ if fo[:as] == filter_opts[:after]
13
+ new_chain = []
14
+ new_chain += self[0..index-1] if index > 0
15
+ new_chain += [self[i]]
16
+ new_chain += self[index..i-1]
17
+ new_chain += self[i+1..self.size-1]
18
+ self.replace new_chain
19
+ index = 0
20
+ break
21
+ end # if :as matched with :after
22
+ end # unless :as is nil
23
+ end # for next items
24
+ end # unless :after is nil
25
+ index += 1
26
+ end # while index < list size
27
+ end # def reorganize
28
+ end # filter chain class
29
+
30
+ module MPT
31
+ class EventContainer
32
+ attr_accessor :event_object
33
+
34
+ def initialize( val = nil )
35
+ self.event_object = val.dup unless val.nil?
36
+ end
37
+
38
+ end
39
+
40
+ class Event
41
+ @@mpt_subscribers = {}
42
+
43
+ class << self
44
+ def subscribe(event_name, options = {}, &block)
45
+ channel = @@mpt_subscribers[event_name] ||= []
46
+ channel << { :options => options, :proc => block }
47
+ channel.mpt_filterchain_reorganize
48
+ end
49
+
50
+ def trigger_with_object(event_name, object, *args)
51
+ container = MPT::EventContainer.new(object)
52
+ channel = @@mpt_subscribers[event_name]
53
+ if !channel.nil? && channel.size > 0
54
+ channel.each do |subscriber|
55
+ container.instance_eval_with_args( *args, &subscriber[:proc] )
56
+ end
57
+ end
58
+
59
+ container.event_object
60
+ end
61
+
62
+ def trigger(event_name, *args)
63
+ trigger_with_object(event_name, nil, *args)
64
+ end
65
+
66
+ def clear_event_chain(event_name)
67
+ @@mpt_subscribers.delete(event_name)
68
+ end
69
+
70
+ def clear_owner_subscribers(owner)
71
+ @@mpt_subscribers.each_pair do |event_name, subscribers|
72
+ @@mpt_subscribers[event_name] = subscribers.select { |s| owner != s[:options][:owner] }
73
+ end
74
+ end
75
+
76
+ def method_missing(name, *args)
77
+ self.trigger(name.to_sym, *args)
78
+ end
79
+ end # end of static section
80
+ end # end of class Event
81
+
82
+ end
83
+
84
+ class Class
85
+ def subscribe( target, options )
86
+ return if options[:for].blank?
87
+
88
+ unless self.respond_to?( :new_with_subscribe_support )
89
+ code_to_eval = <<-EOC
90
+ class << self
91
+ def register_subscribe(target, options)
92
+ es = @@event_subscribes ||= {}
93
+ est = es[options[:for]] ||= []
94
+ est << target
95
+ end
96
+
97
+ def new_with_subscribe_support(*constructor_arguments)
98
+ instance = new_without_subscribe_support(*constructor_arguments)
99
+ @@event_subscribes.each_key do |event_name|
100
+ ::MPT::Event.subscribe( event_name, :owner => instance ) do |*args|
101
+ instance.send( "trigger_event", event_name, *args )
102
+ end
103
+ end
104
+ instance
105
+ end
106
+
107
+ alias_method_chain :new, :subscribe_support
108
+ end
109
+
110
+ private
111
+ def trigger_event(name, *args)
112
+ @@event_subscribes[name].each do |method_name|
113
+ self.send( method_name, *args )
114
+ end
115
+ end
116
+ EOC
117
+
118
+ self.class_eval( code_to_eval, __FILE__, __LINE__ )
119
+ end
120
+
121
+ self.register_subscribe( target, options )
122
+
123
+ end
124
+ end
data/mpt.gemspec CHANGED
@@ -1,37 +1,38 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- Gem::Specification.new do |s|
4
- s.name = %q{mpt}
5
- s.version = "0.1.3.15"
6
-
7
- s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["Anatoly Lapshin"]
9
- s.date = %q{2009-08-05}
10
- s.description = %q{Monkey Patching Toolkit}
11
- s.email = %q{}
12
- s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/event.rb", "lib/mpt.rb", "lib/system.rb", "lib/wrap.rb"]
13
- s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "examples/call_experiment.rb", "examples/declarations.rb", "examples/instance_eval_with_args.rb", "examples/ordered_subscribers.rb", "examples/run_experiments.rb", "examples/unordered_subscribers.rb", "examples/wrap_method_experiment.rb", "install_gem.bat", "lib/event.rb", "lib/mpt.rb", "lib/system.rb", "lib/wrap.rb", "mpt.gemspec", "run_examples.bat"]
14
- s.has_rdoc = true
15
- s.homepage = %q{}
16
- s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Mpt", "--main", "README"]
17
- s.require_paths = ["lib"]
18
- s.rubyforge_project = %q{mpt}
19
- s.rubygems_version = %q{1.3.1}
20
- s.summary = %q{Monkey Patching Toolkit}
21
-
22
- if s.respond_to? :specification_version then
23
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
- s.specification_version = 2
25
-
26
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
- s.add_runtime_dependency(%q<activesupport>, [">= 0"])
28
- s.add_runtime_dependency(%q<uuid>, [">= 0"])
29
- else
30
- s.add_dependency(%q<activesupport>, [">= 0"])
31
- s.add_dependency(%q<uuid>, [">= 0"])
32
- end
33
- else
34
- s.add_dependency(%q<activesupport>, [">= 0"])
35
- s.add_dependency(%q<uuid>, [">= 0"])
36
- end
37
- end
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{mpt}
5
+ s.version = "0.1.3.16"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Anatoly Lapshin, Ilya Vesov"]
9
+ s.date = %q{2009-08-07}
10
+ s.description = %q{Monkey Patching Toolkit}
11
+ s.email = %q{holywarez@gmail.com}
12
+ s.extra_rdoc_files = ["CHANGELOG", "lib/event.rb", "lib/mpt.rb", "lib/system.rb", "lib/wrap.rb", "README"]
13
+ s.files = ["CHANGELOG", "examples/call_experiment.rb", "examples/declarations.rb", "examples/instance_eval_with_args.rb", "examples/ordered_subscribers.rb", "examples/run_experiments.rb", "examples/unordered_subscribers.rb", "examples/wrap_method_experiment.rb", "lib/event.rb", "lib/mpt.rb", "lib/system.rb", "lib/wrap.rb", "LICENSE", "Manifest", "mpt.gemspec", "Rakefile", "README", "test/security_test.rb", "test/test_helper.rb"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/holywarez/mpt}
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Mpt", "--main", "README", "-c utf-8"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{mpt}
19
+ s.rubygems_version = %q{1.3.2}
20
+ s.summary = %q{Monkey Patching Toolkit}
21
+ s.test_files = ["test/security_test.rb"]
22
+
23
+ if s.respond_to? :specification_version then
24
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
+ s.specification_version = 3
26
+
27
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
+ s.add_runtime_dependency(%q<activesupport>, [">= 0"])
29
+ s.add_runtime_dependency(%q<uuid>, [">= 0"])
30
+ else
31
+ s.add_dependency(%q<activesupport>, [">= 0"])
32
+ s.add_dependency(%q<uuid>, [">= 0"])
33
+ end
34
+ else
35
+ s.add_dependency(%q<activesupport>, [">= 0"])
36
+ s.add_dependency(%q<uuid>, [">= 0"])
37
+ end
38
+ end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
2
+ require "test_helper"
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+
3
+ require "mpt"
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holywarez-mpt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3.15
4
+ version: 0.1.3.16
5
5
  platform: ruby
6
6
  authors:
7
- - Anatoly Lapshin
7
+ - Anatoly Lapshin, Ilya Vesov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-05 00:00:00 -07:00
12
+ date: 2009-08-07 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -33,25 +33,20 @@ dependencies:
33
33
  version: "0"
34
34
  version:
35
35
  description: Monkey Patching Toolkit
36
- email: ""
36
+ email: holywarez@gmail.com
37
37
  executables: []
38
38
 
39
39
  extensions: []
40
40
 
41
41
  extra_rdoc_files:
42
42
  - CHANGELOG
43
- - LICENSE
44
- - README
45
43
  - lib/event.rb
46
44
  - lib/mpt.rb
47
45
  - lib/system.rb
48
46
  - lib/wrap.rb
47
+ - README
49
48
  files:
50
49
  - CHANGELOG
51
- - LICENSE
52
- - Manifest
53
- - README
54
- - Rakefile
55
50
  - examples/call_experiment.rb
56
51
  - examples/declarations.rb
57
52
  - examples/instance_eval_with_args.rb
@@ -59,15 +54,19 @@ files:
59
54
  - examples/run_experiments.rb
60
55
  - examples/unordered_subscribers.rb
61
56
  - examples/wrap_method_experiment.rb
62
- - install_gem.bat
63
57
  - lib/event.rb
64
58
  - lib/mpt.rb
65
59
  - lib/system.rb
66
60
  - lib/wrap.rb
61
+ - LICENSE
62
+ - Manifest
67
63
  - mpt.gemspec
68
- - run_examples.bat
64
+ - Rakefile
65
+ - README
66
+ - test/security_test.rb
67
+ - test/test_helper.rb
69
68
  has_rdoc: true
70
- homepage: ""
69
+ homepage: http://github.com/holywarez/mpt
71
70
  licenses:
72
71
  post_install_message:
73
72
  rdoc_options:
@@ -77,6 +76,7 @@ rdoc_options:
77
76
  - Mpt
78
77
  - --main
79
78
  - README
79
+ - -c utf-8
80
80
  require_paths:
81
81
  - lib
82
82
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -96,7 +96,7 @@ requirements: []
96
96
  rubyforge_project: mpt
97
97
  rubygems_version: 1.3.5
98
98
  signing_key:
99
- specification_version: 2
99
+ specification_version: 3
100
100
  summary: Monkey Patching Toolkit
101
- test_files: []
102
-
101
+ test_files:
102
+ - test/security_test.rb
data/install_gem.bat DELETED
@@ -1,5 +0,0 @@
1
- call rake manifest
2
- call rake install
3
- cd pkg
4
- call gem install mpt-0.1.3.14.gem
5
- cd ..
data/run_examples.bat DELETED
@@ -1,3 +0,0 @@
1
- cd examples
2
- call ruby run_experiments.rb
3
- cd ..