dizzy 1.0.0.alpha.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8c43df022ef1a289584a66cf8143b6ed7c850c4f
4
+ data.tar.gz: c9659f5c7095fe456c4770412bb521df44fa7ed9
5
+ SHA512:
6
+ metadata.gz: 3bb5848677977e34edc588055da8c6d65d4a44330c2cc19f9b9f607a76e23b7af1b821f4defda0546fc08df2b6542ca9c9e8e808047f17ecb3a297d5c5422857
7
+ data.tar.gz: 0f6526c2ba17d5a839a11eb78027bc38a1454e596e92b6db223deea744396089cc30d13088884269b77e402d231c169090c9d4e9a631f2c8ccc5da7125cfa2ae
data/lib/dizzy/core.rb ADDED
@@ -0,0 +1,4 @@
1
+
2
+ module Dizzy
3
+
4
+ end
data/lib/dizzy/dsl.rb ADDED
@@ -0,0 +1,56 @@
1
+
2
+ require 'dizzy/core'
3
+ require 'dizzy/rule'
4
+
5
+ module Dizzy::DSL
6
+
7
+ class RuleContext
8
+
9
+ attr_reader :rule
10
+
11
+ def initialize(rule)
12
+ @rule = rule
13
+ end
14
+
15
+ def init(&block)
16
+ rule.init_proc = block
17
+ end
18
+
19
+ def wire(&block)
20
+ rule.wire_proc = block
21
+ end
22
+ end
23
+
24
+
25
+ def di(name, clazz = nil, *args, &block)
26
+ ___method_name = name.to_sym
27
+ ___variable_name = "@#{name}".to_sym
28
+
29
+
30
+ rule = Dizzy::Rule.new
31
+
32
+ if clazz
33
+ rule.init_proc = lambda{ clazz.new(*args) }
34
+ rule.wire_proc = block || lambda{|x| }
35
+ else
36
+ rc = ::Dizzy::DSL::RuleContext.new(rule)
37
+ rc.instance_exec(&block)
38
+ end
39
+
40
+
41
+ define_method ___method_name do
42
+ unless instance_variable_defined? ___variable_name
43
+ value = self.instance_exec(&rule.init_proc)
44
+ instance_variable_set(___variable_name, value)
45
+
46
+ self.instance_exec(value, &rule.wire_proc)
47
+ end
48
+ instance_variable_get(___variable_name)
49
+ end
50
+
51
+ end
52
+
53
+
54
+
55
+
56
+ end
data/lib/dizzy/rule.rb ADDED
@@ -0,0 +1,13 @@
1
+
2
+ require 'dizzy/core'
3
+
4
+ class Dizzy::Rule
5
+
6
+ attr_accessor :init_proc, :wire_proc
7
+
8
+ def initialize(options = {})
9
+ @init_proc = lambda{}
10
+ @wire_proc = lambda{|x| }
11
+ end
12
+
13
+ end
data/lib/dizzy.rb ADDED
@@ -0,0 +1,2 @@
1
+
2
+ require 'dizzy/dsl'
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dizzy
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.alpha.1
5
+ platform: ruby
6
+ authors:
7
+ - Brian Lauber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-05 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Dependency Injection that won't make your head spin
14
+ email: constructible.truth@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/dizzy.rb
20
+ - lib/dizzy/core.rb
21
+ - lib/dizzy/dsl.rb
22
+ - lib/dizzy/rule.rb
23
+ homepage:
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.1
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.2.2
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: Dependency Injection that won't make your head spin
47
+ test_files: []