alki 0.1.0 → 0.2.0

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 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