lalka 0.6.0 → 0.7.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 +4 -4
- data/.travis.yml +1 -1
- data/README.md +1 -0
- data/lalka.gemspec +18 -19
- data/lib/lalka.rb +36 -25
- data/lib/lalka/version.rb +1 -1
- metadata +2 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f052e0cce98cefd5a400f81e00280c0670c244dc
|
4
|
+
data.tar.gz: e29c8e0b3d7ae4720d91ea5fd061719ce0c43997
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2c4d41777640d33f50a82fdac121d0ca1460e243946ea687ffb66b53d0750b723b16bf475afa4cb647e3e8942dd21ca8c90dc38d124f6855d5aa155c64cf54a
|
7
|
+
data.tar.gz: 52c6004164ae271f1c7e5f6bfaa22e80d9538ad6c9988b3c943a4dc4a004296462d5077b91caef47b6cb0dc828d338c2fad680284ebce220329a00ff10ab2973
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Lalka
|
2
|
+
[](https://travis-ci.org/v-shmyhlo/lalka)
|
2
3
|
|
3
4
|
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/lalka`. To experiment with that code, run `bin/console` for an interactive prompt.
|
4
5
|
|
data/lalka.gemspec
CHANGED
@@ -1,42 +1,41 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
require 'lalka/version'
|
5
6
|
|
6
7
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
8
|
+
spec.name = 'lalka'
|
8
9
|
spec.version = Lalka::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
10
|
+
spec.authors = ['Vlad Shmyhlo']
|
11
|
+
spec.email = ['aion.stu@gmail.com']
|
11
12
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
13
|
+
spec.summary = 'Task monad'
|
14
|
+
spec.description = 'Task monad'
|
15
|
+
spec.homepage = 'https://github.com/v-shmyhlo/lalka'
|
16
|
+
spec.license = 'MIT'
|
16
17
|
|
17
18
|
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
19
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
20
|
if spec.respond_to?(:metadata)
|
20
21
|
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
21
22
|
else
|
22
|
-
raise
|
23
|
-
|
23
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
24
|
+
'public gem pushes.'
|
24
25
|
end
|
25
26
|
|
26
|
-
spec.files
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
27
28
|
f.match(%r{^(test|spec|features)/})
|
28
29
|
end
|
29
|
-
spec.bindir =
|
30
|
+
spec.bindir = 'exe'
|
30
31
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
-
spec.require_paths = [
|
32
|
+
spec.require_paths = ['lib']
|
32
33
|
|
33
|
-
spec.add_dependency "concurrent-ruby"
|
34
|
-
spec.add_dependency "concurrent-ruby-ext"
|
35
34
|
spec.add_dependency 'dry-monads'
|
36
35
|
|
37
|
-
spec.add_development_dependency
|
38
|
-
spec.add_development_dependency
|
39
|
-
spec.add_development_dependency
|
40
|
-
spec.add_development_dependency
|
41
|
-
spec.add_development_dependency
|
36
|
+
spec.add_development_dependency 'bundler', '~> 1.13'
|
37
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
38
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
39
|
+
spec.add_development_dependency 'rubocop'
|
40
|
+
spec.add_development_dependency 'pry'
|
42
41
|
end
|
data/lib/lalka.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'lalka/version'
|
3
2
|
require 'dry-monads'
|
4
|
-
|
3
|
+
|
4
|
+
require 'lalka/version'
|
5
5
|
|
6
6
|
module Lalka
|
7
7
|
M = Dry::Monads
|
@@ -27,11 +27,6 @@ module Lalka
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
def id(internal)
|
31
|
-
internal.on_success { |v| v }
|
32
|
-
internal.on_error { |e| e }
|
33
|
-
end
|
34
|
-
|
35
30
|
alias of resolve
|
36
31
|
end
|
37
32
|
|
@@ -46,7 +41,8 @@ module Lalka
|
|
46
41
|
if block_given?
|
47
42
|
yield internal
|
48
43
|
else
|
49
|
-
|
44
|
+
internal.on_success { |v| v }
|
45
|
+
internal.on_error { |e| e }
|
50
46
|
end
|
51
47
|
|
52
48
|
internal.call(&@computation)
|
@@ -104,41 +100,56 @@ module Lalka
|
|
104
100
|
|
105
101
|
def ap(other_task)
|
106
102
|
Task.new do |t|
|
107
|
-
|
103
|
+
mutex = Mutex.new
|
104
|
+
completed = false
|
105
|
+
either = M.Right([M.None(), M.None()])
|
108
106
|
|
109
|
-
|
110
|
-
|
111
|
-
|
107
|
+
complete_task = lambda do |&block|
|
108
|
+
mutex.synchronize do
|
109
|
+
return if completed
|
112
110
|
|
113
|
-
|
114
|
-
t.resolve(result)
|
115
|
-
atom.delete_observers
|
116
|
-
end
|
117
|
-
else
|
118
|
-
error = either.value
|
111
|
+
either = block.call(either)
|
119
112
|
|
120
|
-
|
121
|
-
|
113
|
+
if either.right?
|
114
|
+
(e_fn, e_arg) = either.value
|
115
|
+
|
116
|
+
e_fn.bind { |fn| e_arg.fmap(fn) }.fmap do |value|
|
117
|
+
t.resolve(value)
|
118
|
+
completed = true
|
119
|
+
end
|
120
|
+
else
|
121
|
+
error = either.value
|
122
|
+
t.reject(error)
|
123
|
+
completed = true
|
124
|
+
end
|
122
125
|
end
|
123
126
|
end
|
124
127
|
|
125
128
|
fork do |this|
|
126
129
|
this.on_success do |fn|
|
127
|
-
|
130
|
+
complete_task.call do |either|
|
131
|
+
either.bind { |_, e_arg| M.Right([M.Some(fn), e_arg]) }
|
132
|
+
end
|
128
133
|
end
|
129
134
|
|
130
135
|
this.on_error do |error|
|
131
|
-
|
136
|
+
complete_task.call do |either|
|
137
|
+
either.bind { M.Left(error) }
|
138
|
+
end
|
132
139
|
end
|
133
140
|
end
|
134
141
|
|
135
142
|
other_task.fork do |other|
|
136
143
|
other.on_success do |arg|
|
137
|
-
|
144
|
+
complete_task.call do |either|
|
145
|
+
either.bind { |e_fn, _| M.Right([e_fn, M.Some(arg)]) }
|
146
|
+
end
|
138
147
|
end
|
139
148
|
|
140
149
|
other.on_error do |error|
|
141
|
-
|
150
|
+
complete_task.call do |either|
|
151
|
+
either.bind { M.Left(error) }
|
152
|
+
end
|
142
153
|
end
|
143
154
|
end
|
144
155
|
end
|
@@ -219,7 +230,7 @@ module Lalka
|
|
219
230
|
result =
|
220
231
|
if @on_error.nil?
|
221
232
|
ArgumentError.new('missing on_error block')
|
222
|
-
|
233
|
+
else
|
223
234
|
@on_error.call(error)
|
224
235
|
end
|
225
236
|
|
data/lib/lalka/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lalka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vlad Shmyhlo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: concurrent-ruby
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: concurrent-ruby-ext
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
13
|
- !ruby/object:Gem::Dependency
|
42
14
|
name: dry-monads
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|