pre_and_post_initialize 0.0.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.md ADDED
File without changes
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # Pre-And-Post-Initialize #
2
+
3
+ http://rubygems.org/gems/pre_and_post_initialize
4
+
5
+ # Summary #
6
+
7
+ Creates event chain prior to object initialization.
8
+
9
+ # Description #
10
+
11
+ Adds Object#pre\_initialize and Object#post\_initialize so that events can occur before and after Object#initialize chain.
12
+
13
+ # Install #
14
+
15
+ * sudo gem install pre\_and\_post\_initialize
16
+
17
+ # Usage #
18
+
19
+ ```ruby
20
+ class AnyClass
21
+
22
+ extend PreAndPostInitialize
23
+
24
+ def pre_initialize( *initialize_args, & initialize_block )
25
+ # anything here will happen before #initialize
26
+ end
27
+
28
+ def post_initialize( *initialize_args, & initialize_block )
29
+ # anything here will happen after #initialize
30
+ end
31
+
32
+ end
33
+ ```
34
+
35
+ # License #
36
+
37
+ (The MIT License)
38
+
39
+ Copyright (c) 2013 Ridiculous Power, Asher
40
+
41
+ Permission is hereby granted, free of charge, to any person obtaining
42
+ a copy of this software and associated documentation files (the
43
+ 'Software'), to deal in the Software without restriction, including
44
+ without limitation the rights to use, copy, modify, merge, publish,
45
+ distribute, sublicense, and/or sell copies of the Software, and to
46
+ permit persons to whom the Software is furnished to do so, subject to
47
+ the following conditions:
48
+
49
+ The above copyright notice and this permission notice shall be
50
+ included in all copies or substantial portions of the Software.
51
+
52
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
53
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
54
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
55
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
56
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
57
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
58
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,36 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ ###
4
+ # Adds calls to #pre_initialize and #post_initialize before and after call to #initialize.
5
+ #
6
+ module ::PreAndPostInitialize::ClassInstance
7
+
8
+ #########
9
+ # new #
10
+ #########
11
+
12
+ ###
13
+ # Adds calls to #pre_initialize and #post_initialize before and after call to #initialize.
14
+ #
15
+ # @overload initialize( any_arg, ... )
16
+ #
17
+ # @param [Object] any_arg
18
+ #
19
+ # Any arguments can be used for initialize.
20
+ # No arguments are expected here, but any will be passed to super.
21
+ #
22
+ def new( *args, & block )
23
+
24
+ instance = allocate
25
+
26
+ instance.instance_eval do
27
+ pre_initialize( *args, & block )
28
+ initialize( *args, & block )
29
+ post_initialize( *args, & block )
30
+ end
31
+
32
+ return instance
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,46 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ ###
4
+ # Adds #pre_initialize and #post_initialize before and after call to #initialize.
5
+ #
6
+ module ::PreAndPostInitialize::ObjectInstance
7
+
8
+ ####################
9
+ # pre_initialize #
10
+ ####################
11
+
12
+ ###
13
+ # Permits activity to be defined prior to any initialization activity. This can be useful
14
+ # if initialization activity may depend on a particular feature, such as instance registration,
15
+ # prior to activity occuring that queries or otherwise implicates its identity/definition.
16
+ #
17
+ # @overload pre_initialize( any_arg, ... )
18
+ #
19
+ # @param [Object] any_arg
20
+ #
21
+ # Any arguments can be used for pre_initialize.
22
+ # No arguments are expected here, but any will be passed to super.
23
+ #
24
+ def pre_initialize( *args, & block )
25
+ # nothing here - subclasses define
26
+ end
27
+
28
+ #####################
29
+ # post_initialize #
30
+ #####################
31
+
32
+ ###
33
+ # Permits activity to be defined after all initialization activity.
34
+ #
35
+ # @overload post_initialize( any_arg, ... )
36
+ #
37
+ # @param [Object] any_arg
38
+ #
39
+ # Any arguments can be used for post_initialize.
40
+ # No arguments are expected here, but any will be passed to super.
41
+ #
42
+ def post_initialize( *args, & block )
43
+ # nothing here - subclasses define
44
+ end
45
+
46
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ ###
4
+ # Adds calls to #pre_initialize and #post_initialize before and after call to #initialize.
5
+ #
6
+ module ::PreAndPostInitialize
7
+
8
+ require_relative 'pre_and_post_initialize/class_instance.rb'
9
+ require_relative 'pre_and_post_initialize/object_instance.rb'
10
+
11
+ include ::PreAndPostInitialize::ClassInstance
12
+
13
+ ###################
14
+ # self.extended #
15
+ ###################
16
+
17
+ def self.extended( instance )
18
+
19
+ super if defined?( super )
20
+
21
+ instance.class_eval { include( ::PreAndPostInitialize::ObjectInstance ) }
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,31 @@
1
+
2
+ require_relative '../lib/pre_and_post_initialize.rb'
3
+
4
+ describe ::PreAndPostInitialize do
5
+
6
+ class PreAndPostInitializeTestClass
7
+ extend PreAndPostInitialize
8
+ attr_accessor :pre_init_arg, :init_arg, :post_init_arg
9
+ def pre_initialize
10
+ @pre_init_arg = :pre
11
+ @init_arg = :pre
12
+ @post_init_arg = :pre
13
+ end
14
+ def initialize
15
+ @init_arg = :init
16
+ @post_init_arg = :init
17
+ end
18
+ def post_initialize
19
+ @post_init_arg = :post
20
+ end
21
+ end
22
+
23
+ let( :instance ) { ::PreAndPostInitializeTestClass.new }
24
+
25
+ it 'should run #pre_initialize, #initialize, #post_initialize' do
26
+ instance.pre_init_arg.should == :pre
27
+ instance.init_arg.should == :init
28
+ instance.post_init_arg.should == :post
29
+ end
30
+
31
+ end
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pre_and_post_initialize
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Asher
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-08 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Adds Object#pre_initialize so that events can occur before and after
15
+ Object#initialize chain.
16
+ email: asher@ridiculouspower.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/pre_and_post_initialize/class_instance.rb
22
+ - lib/pre_and_post_initialize/object_instance.rb
23
+ - lib/pre_and_post_initialize.rb
24
+ - spec/pre_and_post_initialize_spec.rb
25
+ - README.md
26
+ - CHANGELOG.md
27
+ homepage: http://rubygems.org/gems/pre_initialize
28
+ licenses: []
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: 1.9.1
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ requirements: []
46
+ rubyforge_project: pre_and_post_initialize
47
+ rubygems_version: 1.8.23
48
+ signing_key:
49
+ specification_version: 3
50
+ summary: Creates event chain before and after object initialization.
51
+ test_files: []