t_algebra 0.1.4 → 0.1.5

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
  SHA256:
3
- metadata.gz: 73caa97534e32367521cfb546ff88fd128c784e24a64502e6ef718d843782db8
4
- data.tar.gz: 58af8ae70b758560b338d4591c18a15a670dadbcbba6097afa4e7c055e3c20ce
3
+ metadata.gz: 617977f1693f665231e2b42e517fc64a92de79bbe8824408501586b992308988
4
+ data.tar.gz: d953427b001daff3bbfab23e94ce46fcd61c8a386f891d14019312d0ae37ddca
5
5
  SHA512:
6
- metadata.gz: 1187a260b07ab04d8355ea9a777d4d26b7c727170ea6588bb0c1e88b64e7468e231f9af9090d935f5a40beb51bd45efe4abda878349655ec879ea11d2c06c40e
7
- data.tar.gz: 995fbbc1994d8fb7a6b8d6825f3862ba3b821ed386f015e7c0c3574d5bfe3619c99c21aaaa30ad2c89b911e0594259ca27889525680db61627efc4ba756ccf46
6
+ metadata.gz: 98fb648dfe43e767057bf50f1479ace8a777b01bf0803b46b9e29c8668aaea8f8464014a7282c74796d1d635b2c4afddec828fb5e85d07c0be44ff6fc85595f0
7
+ data.tar.gz: e9ac940c79d2906bf4f27c902474966e8175e1497b98579a0793400f374568c2022f7f804014ba3fd8bbc9f7ddfa84de46ff75dca0b42da9943a0a482d554f15
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- t_algebra (0.1.4)
4
+ t_algebra (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -50,9 +50,10 @@ to reproduce the same functionality:
50
50
  # @return [TAlgebra::Monad::Maybe]
51
51
  def get_address(user)
52
52
  TAlgebra::Monad::Maybe.run do |y|
53
- street = y.yield { to_maybe(user.street) }
54
- city = y.yield { to_maybe(user.city) }
55
- state = y.yield { to_maybe(user.state) }
53
+ m_user = just(user)
54
+ street = y.yield { m_user.fetch(:street) }
55
+ city = y.yield { m_user.fetch(:city) }
56
+ state = y.yield { m_user.fetch(:state) }
56
57
  "#{street}, #{city} #{state.upcase}"
57
58
  end
58
59
  end
@@ -24,11 +24,11 @@ module TAlgebra
24
24
  self.class.pure(yield(value))
25
25
  end
26
26
 
27
- def bind(&block)
28
- raise UseError.new("#bind requires a block") unless block
27
+ def bind
28
+ raise UseError.new("#bind requires a block") unless block_given?
29
29
  return dup if left?
30
30
 
31
- self.class.instance_exec(value, &block)
31
+ yield value
32
32
  end
33
33
 
34
34
  def left?
@@ -69,7 +69,7 @@ module TAlgebra
69
69
 
70
70
  def validate(msg = "Invalid")
71
71
  n = name
72
- bind { |val| yield(val) ? parse(val, n) : failure(msg, n) }
72
+ bind { |val| yield(val) ? Parser.parse(val, n) : Parser.failure(msg, n) }
73
73
  end
74
74
 
75
75
  def extract_parsed(&block)
@@ -17,7 +17,15 @@ module TAlgebra
17
17
  end
18
18
 
19
19
  def run(&block)
20
- e = Enumerator.new { |y| instance_exec(LazyYielder.new(y), &block) }
20
+ block_self = block.binding.receiver
21
+
22
+ self_class = self
23
+ block_self.define_singleton_method(:method_missing) do |m, *args, &block|
24
+ self_class.send(m, *args, &block)
25
+ end
26
+
27
+ e = Enumerator.new { |y| block_self.instance_exec(LazyYielder.new(y), &block) }
28
+
21
29
  run_recursive(e, [])
22
30
  end
23
31
 
@@ -1,3 +1,3 @@
1
1
  module TAlgebra
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: t_algebra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - aaron
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-07 00:00:00.000000000 Z
11
+ date: 2021-12-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: