t_algebra 0.1.4 → 0.1.5

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