lalka 0.7.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -32
- data/lib/lalka.rb +3 -8
- data/lib/lalka/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 542e2e1eb9c6cb8c0c06caf00441fe62725d1481
|
4
|
+
data.tar.gz: 54388187231a1df55b04fdf3a23210e87d5562f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 815108b4f5a393ae43483c34e45b9f205e431a22d44b7b6cc9ed5e44712a1140ce55c0c5fdbe558aa8af9ef881e4eb8afc1a158f1fc015e605890aae5ea8533d
|
7
|
+
data.tar.gz: 6b85ca6700e1af2d992b32883d25085acda77c3f8869af30823d09222a97523d1f962c27bdcc50a902acde41e5fd778cece3f6c6ab547921f8443e1c5459efd2
|
data/README.md
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
# Lalka
|
2
2
|
[![Build Status](https://travis-ci.org/v-shmyhlo/lalka.svg?branch=master)](https://travis-ci.org/v-shmyhlo/lalka)
|
3
3
|
|
4
|
-
|
4
|
+
Lalka is a ruby implementation of a Task monad (aka Continuation monad) - usefull abstraction for managing parallel and concurrent code.
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
# Usage
|
6
|
+
## Usage
|
9
7
|
|
10
8
|
### Create:
|
11
9
|
```ruby
|
@@ -45,17 +43,9 @@ TODO: Delete this and the text above, and describe your gem
|
|
45
43
|
### fork_wait:
|
46
44
|
```ruby
|
47
45
|
# executes computation, fork_wait blocks and returns Either from "dry-monads" gem
|
48
|
-
task = Lalka::Task.resolve(
|
49
|
-
|
50
|
-
result = task.fork_wait do |t|
|
51
|
-
t.on_success do |value|
|
52
|
-
value + 1
|
53
|
-
end
|
46
|
+
task = Lalka::Task.resolve(100)
|
54
47
|
|
55
|
-
|
56
|
-
# ...
|
57
|
-
end
|
58
|
-
end
|
48
|
+
result = task.fork_wait
|
59
49
|
|
60
50
|
result # Right(100)
|
61
51
|
```
|
@@ -63,17 +53,9 @@ TODO: Delete this and the text above, and describe your gem
|
|
63
53
|
```ruby
|
64
54
|
task = Lalka::Task.reject('error')
|
65
55
|
|
66
|
-
result = task.fork_wait
|
67
|
-
t.on_success do |value|
|
68
|
-
# ...
|
69
|
-
end
|
70
|
-
|
71
|
-
t.on_error do |error|
|
72
|
-
"Error: " + error
|
73
|
-
end
|
74
|
-
end
|
56
|
+
result = task.fork_wait
|
75
57
|
|
76
|
-
result # Left("
|
58
|
+
result # Left("error")
|
77
59
|
```
|
78
60
|
|
79
61
|
### map:
|
@@ -137,22 +119,16 @@ Or install it yourself as:
|
|
137
119
|
|
138
120
|
$ gem install lalka
|
139
121
|
|
140
|
-
## Usage
|
141
|
-
|
142
|
-
TODO: Write usage instructions here
|
143
|
-
|
144
122
|
## Development
|
145
123
|
|
146
124
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
147
125
|
|
148
|
-
To install this gem onto your local machine, run `bundle exec rake install`.
|
126
|
+
To install this gem onto your local machine, run `bundle exec rake install`.
|
149
127
|
|
150
128
|
## Contributing
|
151
129
|
|
152
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
153
|
-
|
130
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/v-shmyhlo/lalka. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
154
131
|
|
155
132
|
## License
|
156
133
|
|
157
134
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
158
|
-
|
data/lib/lalka.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'dry-monads'
|
3
|
-
|
4
3
|
require 'lalka/version'
|
5
4
|
|
6
5
|
module Lalka
|
@@ -38,12 +37,8 @@ module Lalka
|
|
38
37
|
queue = Queue.new
|
39
38
|
internal = Internal.new(queue)
|
40
39
|
|
41
|
-
|
42
|
-
|
43
|
-
else
|
44
|
-
internal.on_success { |v| v }
|
45
|
-
internal.on_error { |e| e }
|
46
|
-
end
|
40
|
+
internal.on_success { |v| v }
|
41
|
+
internal.on_error { |e| e }
|
47
42
|
|
48
43
|
internal.call(&@computation)
|
49
44
|
queue.pop
|
@@ -163,7 +158,7 @@ module Lalka
|
|
163
158
|
|
164
159
|
def function_from_arguments(*args, &block)
|
165
160
|
if block_given?
|
166
|
-
raise ArgumentError, 'both block and function provided'
|
161
|
+
raise ArgumentError, 'both block and function provided' unless args.empty?
|
167
162
|
block
|
168
163
|
else
|
169
164
|
raise ArgumentError, 'no block or function provided' if args.length != 1
|
data/lib/lalka/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lalka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.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:
|
11
|
+
date: 2017-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-monads
|
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
134
|
version: '0'
|
135
135
|
requirements: []
|
136
136
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.6.
|
137
|
+
rubygems_version: 2.6.11
|
138
138
|
signing_key:
|
139
139
|
specification_version: 4
|
140
140
|
summary: Task monad
|