alki 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: acebb8f2a073f60c659eb7b994778f3717c140c9
4
- data.tar.gz: c6bf4c35dbe97001bfed4b772a84e811b7200b93
3
+ metadata.gz: bab3b631c216a5a4ca029904251c38faec707269
4
+ data.tar.gz: 3e495653eb662df01c8e5b3e0e65a0a07bc88d34
5
5
  SHA512:
6
- metadata.gz: 623bacc9055973a92a710f2a7fe7235cdea0da93d5f434445b9b931ccc2c4ea51f261ba6715f19d95a5bd90ac5b496e05ce3f0e127877d1e45814863b0bd03d2
7
- data.tar.gz: f33554183dc94171bb8191908745f218cf6bc5215e2125a9d9de4fc9cce1708a25799670e00833050fa83d54201fb02fb4f290f665881094f598870761c5476e
6
+ metadata.gz: 50dec6b5e5a8dfa767d1b21e05041a95033f8a2e5e76282d6f4a1306b9d7169364d83a252d9e83a96012047ac1ff31d9d02ca6e21a4a2b27077bf42340d5d7e2
7
+ data.tar.gz: e8b4b00970c0baea4f6486dbcc2d9e34f810dc38ec48288ac856851433b5727670e3174e47bdabf60770de2fae96d95b9acc1f0ac521f67e45812fc41fa0f8d1
@@ -24,7 +24,7 @@ module Alki
24
24
  res = @obj.send method, *args, &blk
25
25
  else
26
26
  Thread.current[@key] = true
27
- res = @overlay.call @name, @obj, method, *args, &blk
27
+ res = @overlay.overlay_send @name, @obj, method, *args, &blk
28
28
  Thread.current[@key] = false
29
29
  end
30
30
  res
data/lib/alki/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Alki
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -5,25 +5,26 @@ Alki do
5
5
  NumHandler.new num, str, output
6
6
  }
7
7
  end
8
+
8
9
  service :fizz do
9
10
  num_handler 3, settings.fizz
10
11
  end
12
+
11
13
  service :buzz do
12
14
  num_handler 5, settings.buzz
13
15
  end
16
+
14
17
  service :fizzbuzz do
15
18
  num_handler 15, settings.fizzbuzz
16
19
  end
20
+
17
21
  service :echo do
18
22
  require 'echo_handler'
19
23
  EchoHandler.new output
20
24
  end
21
25
 
22
26
  overlay do
23
- log_obj = log
24
- -> (name,obj,method,*args,&blk) {
25
- log_obj << "Calling #{name}##{method} #{args.join(", ")}\n"
26
- obj.public_send method, *args, &blk
27
- }
27
+ require 'log_overlay'
28
+ LogOverlay.new log
28
29
  end
29
30
  end
@@ -0,0 +1,10 @@
1
+ class LogOverlay
2
+ def initialize(log)
3
+ @log = log
4
+ end
5
+
6
+ def overlay_send(name,obj,method,*args,&blk)
7
+ @log << "Calling #{name}##{method} #{args.join(", ")}\n"
8
+ obj.public_send method, *args, &blk
9
+ end
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Edlefsen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-03 00:00:00.000000000 Z
11
+ date: 2016-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -76,14 +76,13 @@ files:
76
76
  - test/fixtures/example/lib/array_output.rb
77
77
  - test/fixtures/example/lib/echo_handler.rb
78
78
  - test/fixtures/example/lib/example.rb
79
+ - test/fixtures/example/lib/log_overlay.rb
79
80
  - test/fixtures/example/lib/num_handler.rb
80
81
  - test/fixtures/example/lib/range_handler.rb
81
82
  - test/fixtures/example/lib/switch_handler.rb
82
83
  - test/integration/class_builder_test.rb
83
84
  - test/integration/loader_test.rb
84
85
  - test/test_helper.rb
85
- - test/unit/application_settings_test.rb
86
- - test/unit/application_test.rb
87
86
  - test/unit/package_processor_test.rb
88
87
  homepage: https://gitlab.xforty.com/matt/base-alki
89
88
  licenses:
@@ -118,12 +117,11 @@ test_files:
118
117
  - test/fixtures/example/lib/array_output.rb
119
118
  - test/fixtures/example/lib/echo_handler.rb
120
119
  - test/fixtures/example/lib/example.rb
120
+ - test/fixtures/example/lib/log_overlay.rb
121
121
  - test/fixtures/example/lib/num_handler.rb
122
122
  - test/fixtures/example/lib/range_handler.rb
123
123
  - test/fixtures/example/lib/switch_handler.rb
124
124
  - test/integration/class_builder_test.rb
125
125
  - test/integration/loader_test.rb
126
126
  - test/test_helper.rb
127
- - test/unit/application_settings_test.rb
128
- - test/unit/application_test.rb
129
127
  - test/unit/package_processor_test.rb
@@ -1,56 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- require 'alki/application_settings'
4
-
5
- describe Alki::ApplicationSettings do
6
- before do
7
- @settings = Alki::ApplicationSettings.new
8
- end
9
-
10
- describe :initialize do
11
- it 'should set environment to development by default' do
12
- @settings.environment.must_equal :development
13
- end
14
- end
15
-
16
- describe :set do
17
- it 'should add setting as method and make it available as an index' do
18
- @settings.respond_to?(:test).must_equal false
19
- @settings.set :test, :test_value
20
- @settings.test.must_equal :test_value
21
- end
22
-
23
- it 'should make setting available as an index' do
24
- @settings[:test].must_equal nil
25
- @settings.set :test, :test_value
26
- @settings[:test].must_equal :test_value
27
- end
28
- end
29
-
30
- describe :environment? do
31
- it 'should return whether environment is one of the arguments' do
32
- @settings.environment?(:development).must_equal true
33
- @settings.environment?(:production,:development).must_equal true
34
- @settings.environment?(:production,:test).must_equal false
35
- end
36
-
37
- it 'should run provided block if true' do
38
- test = false
39
- @settings.environment?(:test) { test = true }
40
- test.must_equal false
41
- @settings.environment?(:development) { test = true }
42
- test.must_equal true
43
- end
44
- end
45
-
46
- describe :configure do
47
- it 'should run provided block in object context' do
48
- @settings.respond_to?(:test).must_equal false
49
- @settings.configure do
50
- set :test, :test_value
51
- test.must_equal :test_value
52
- end
53
- @settings.test.must_equal :test_value
54
- end
55
- end
56
- end
@@ -1,159 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- require 'alki/application'
4
-
5
- describe Alki::Application do
6
- before do
7
- @settings = {test: 1}
8
- @app = Alki::Application.new @settings
9
- end
10
-
11
- describe :settings do
12
- it 'should return settings passed into new' do
13
- @app.settings.must_be_same_as @settings
14
- end
15
- end
16
-
17
- describe :configure do
18
- it 'should allow calling methods as a DSL' do
19
- @app.configure do
20
- service :test_m do
21
- :test
22
- end
23
- end
24
- @app.test_m.must_equal :test
25
- end
26
- end
27
-
28
- describe :root do
29
- it 'should allow extracting the root group from the application' do
30
- @app.service(:test_m) { :test }
31
- @app.root.test_m.must_equal :test
32
- end
33
- end
34
-
35
- describe :service do
36
- it 'should create method that gets result of block' do
37
- @app.service(:test_m) { :test }
38
- @app.respond_to?(:test_m).must_equal true
39
- @app.test_m.must_equal :test
40
- end
41
-
42
- it 'generated method should run on demand' do
43
- count = 0
44
- @app.service(:test_m){ count += 1; :test }
45
- count.must_equal 0
46
- @app.test_m
47
- count.must_equal 1
48
- end
49
-
50
- it 'generated method should run only once' do
51
- count = 0
52
- @app.service(:test_m){ count += 1; :test }
53
- @app.test_m
54
- @app.test_m
55
- count.must_equal 1
56
- end
57
- end
58
-
59
- describe :group do
60
- it 'should create group with block' do
61
- @app.configure do
62
- group :g1 do
63
- end
64
- end
65
- @app.g1.wont_be_nil
66
- end
67
-
68
- it 'should add services to group' do
69
- @app.configure do
70
- group :g1 do
71
- service(:testm1) { :test1 }
72
- end
73
- group :g1 do
74
- service(:testm2) { :test2 }
75
- end
76
- end
77
- @app.g1.testm1.must_equal :test1
78
- @app.g1.testm2.must_equal :test2
79
- end
80
-
81
- it 'should allow creation of subgroups' do
82
- @app.configure do
83
- group :g1 do
84
- group :g2 do
85
- service(:test_m) { :test }
86
- end
87
- end
88
- end
89
- @app.g1.g2.test_m.must_equal :test
90
- end
91
-
92
- it 'should allow calling services of parent groups' do
93
- @app.configure do
94
- service(:test1) { :test1 }
95
- group :g1 do
96
- service(:test2) { :test2 }
97
- group :g2 do
98
- service(:test3) { [test1,test2] }
99
- end
100
- end
101
- end
102
- @app.g1.g2.test3.must_equal [:test1,:test2]
103
- end
104
-
105
- it 'should allow aliasing groups' do
106
- @app.configure do
107
- group :g1 do
108
- service(:test_m) { :test }
109
- end
110
- end
111
- @app.group(:g2,@app.g1)
112
- @app[:g2].test_m.must_equal :test
113
- end
114
-
115
- it 'should allow moving groups to other applications' do
116
- app2 = Alki::Application.new
117
- app2.service(:test_m) { :test }
118
- @app.group(:other,app2.root)
119
- @app.other.test_m.must_equal :test
120
- end
121
-
122
- it 'should raise ArgumentError if non-group is provided' do
123
- assert_raises ArgumentError do
124
- @app.group(:test, {})
125
- end
126
- end
127
- end
128
-
129
- describe :lookup do
130
- it 'should allow lookups of services by string' do
131
- @app.service(:test_m) { :test }
132
- @app.lookup('test_m').must_equal :test
133
- end
134
-
135
- it 'should allow looking up services in groups using dot separators' do
136
- @app.configure do
137
- group :g1 do
138
- service(:test_m) { :test1 }
139
- group :g2 do
140
- service(:test_m) { :test2 }
141
- end
142
- end
143
- end
144
- @app.lookup('g1.test_m').must_equal :test1
145
- @app.lookup('g1.g2.test_m').must_equal :test2
146
- end
147
- end
148
-
149
- describe :delegate do
150
- it 'should allow service reference cycles' do
151
- @app.configure do
152
- service(:all) { {print_all: delegate(:print_all)} }
153
- service(:print_all) { list = all.keys; ->{ p list } }
154
- end
155
-
156
- @app.print_all.call.must_equal [:print_all]
157
- end
158
- end
159
- end