l43_core 0.2.2 → 0.2.4

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: 0aa197b658b531ac744c4b1abdbb65a6a9e458888719f94e1b4bb6b925c59a01
4
- data.tar.gz: 5dec25bfea72b6cad59c7129df6016e2468e5524af95b87569f67f8ac78dfea8
3
+ metadata.gz: 5a5999d04d4f7f2f971a6d8f26361eaaf9779bf566fc3f59601ba421b02a30f4
4
+ data.tar.gz: c5b6bcc73627a82539e2f224b9af034d1da5712bae1bd955929e12a24deab16c
5
5
  SHA512:
6
- metadata.gz: 7feb54949e60987eeab232f454888006372beeec962955e391fc8a11cc915a849c461905bdac979309de144f27afe7c62600f5e73bf009c9cc4719bdd9d59d57
7
- data.tar.gz: 4389d10b980e262493d862ac5e655ef586f03b49965573f38c706191977696dbdff371c84e4a06ebf7fa9d5d86396a5b005d9eedb2a787a04dc4a33c4afc4cab
6
+ metadata.gz: 2bf55edd1fa913aedc386b9afcc9e7c4578ec095e0196c040ced198ef5d0464363a940f8cb511827d551d752ea3a38f4c12ac8ca42b4cf9ed2476e3db8d52f18
7
+ data.tar.gz: 1f05cc991b243630208f3a812432840ecf07116fc39decfbd576b22e3b186a88b3ff57df0b47aff645bf8a65da6153301246acb3f909fbd7751d52d18abfe555
@@ -9,12 +9,12 @@ module L43
9
9
  by.include self
10
10
  end
11
11
 
12
- def as_result(caller: nil, &blk)
12
+ def as_result(name=nil, caller: nil, &blk)
13
13
  Success.new(blk.())
14
14
  rescue StandardError => se
15
15
  Failure.new(
16
16
  exception: se,
17
- message: se.inspect,
17
+ message: [se.inspect, name, "at #{blk.source_location}"].compact.join("\n"),
18
18
  location: [caller, se.backtrace_locations.first].compact.join(" ")
19
19
  )
20
20
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'object_extensions'
4
+ module L43
5
+ module Core
6
+ Object.extend ObjectExtensions
7
+ end
8
+ end
9
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../errors'
4
+ module L43
5
+ module Core
6
+ module ObjectExtensions
7
+
8
+ def instance_variables_set(*names, **from)
9
+ # check
10
+ names.each do
11
+ ivar = "@#{it}"
12
+ raise InstanceVariableOverride,
13
+ "must not override existing instance variable #{ivar}" if instance_variable_defined?(ivar)
14
+ raise MissingValue,
15
+ "must provide a value for instance variable #{ivar} in keyword args: #{from.inspect}" unless
16
+ from.has_key?(it)
17
+ end
18
+ # execute
19
+ names.each do
20
+ ivar = "@#{it}"
21
+ instance_variable_set(ivar, from[it])
22
+ end
23
+ end
24
+
25
+ def instance_variables_set!(*names, **from)
26
+ # check
27
+ names.each do
28
+ ivar = "@#{it}"
29
+ "must provide a value for instance variable #{ivar} in keyword args: #{from.inspect}" unless
30
+ from.has_key?(it)
31
+ end
32
+ # execute
33
+ names.each do
34
+ ivar = "@#{it}"
35
+ instance_variable_set(ivar, from[it])
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -15,8 +15,8 @@ module L43
15
15
  blk.(self)
16
16
  end
17
17
 
18
- def map_result(&blk)
19
- as_result('map_result') do
18
+ def map_result(name='map_result', &blk)
19
+ as_result(name) do
20
20
  blk.(self)
21
21
  end
22
22
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module L43
4
4
  module Core
5
- VERSION = "0.2.2"
5
+ VERSION = "0.2.4"
6
6
  end
7
7
  end
8
8
  # SPDX-License-Identifier: AGPL-3.0-or-later
data/lib/l43/errors.rb CHANGED
@@ -3,5 +3,9 @@
3
3
  module L43
4
4
  IllegalState = Class.new(RuntimeError)
5
5
  AbstractMethod = Class.new(RuntimeError)
6
+ module Core
7
+ InstanceVariableOverride = Class.new(RuntimeError)
8
+ MissingValue = Class.new(RuntimeError)
9
+ end
6
10
  end
7
11
  # SPDX-License-Identifier: AGPL-3.0-or-later
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: l43_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-04-04 00:00:00.000000000 Z
10
+ date: 2026-04-14 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: ostruct
@@ -36,8 +36,10 @@ files:
36
36
  - lib/l43/core/as_result.rb
37
37
  - lib/l43/core/enum.rb
38
38
  - lib/l43/core/enum/hash.rb
39
+ - lib/l43/core/extend_object.rb
39
40
  - lib/l43/core/forwarder.rb
40
41
  - lib/l43/core/none.rb
42
+ - lib/l43/core/object_extensions.rb
41
43
  - lib/l43/core/result.rb
42
44
  - lib/l43/core/result/constructors.rb
43
45
  - lib/l43/core/result/failure.rb