lalka 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://travis-ci.org/v-shmyhlo/lalka.svg?branch=master)](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
|