l43_open_object 0.2.9 → 0.3.0
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 +4 -4
- data/lib/l43/open_object/initializer.rb +18 -4
- data/lib/l43/open_object/version.rb +8 -0
- data/lib/l43/open_object.rb +10 -3
- metadata +19 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b6d55f44ec50f1cd6ba1dc6488db8cd515a5cef61841a34da88e30032963932c
|
|
4
|
+
data.tar.gz: 3f04fe5f15b9e81f9c80b57099d0bbf691eff30be9f32707002175b7c3b82850
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d132576dde02301168436e9633f0a4caa4b61f61d055b7fcdcb52a3e00665d1c4d5ff8dff00366a30f28c5f12fe54ca2b031bab5a35d6b0c8c8dca11a7e70e98
|
|
7
|
+
data.tar.gz: 30e854ee3d537492a0ee2e2d5b69bf0f47a0350071e5953a7596be59e411139ea82c2b06b09e59fc7646102651432033cd0c5979a966abfefbfe9366aa3ad271
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'ostruct'
|
|
3
4
|
module L43
|
|
4
5
|
module OpenObject
|
|
5
6
|
module Initializer extend self
|
|
6
7
|
|
|
7
8
|
def define_initialize(klass, atts, defaults, blk)
|
|
8
9
|
klass.define_method :initialize do |**kwds|
|
|
9
|
-
missing = atts - kwds.keys
|
|
10
|
-
raise ArgumentError, "missing required keyword parameters: #{missing.inspect}" unless missing.empty?
|
|
11
10
|
spurious = kwds.keys - atts - defaults.keys
|
|
12
11
|
raise ArgumentError, "spurious keyword parameters: #{spurious.inspect}" unless spurious.empty?
|
|
13
12
|
|
|
@@ -15,11 +14,26 @@ module L43
|
|
|
15
14
|
values.each do |key, value|
|
|
16
15
|
instance_variable_set("@#{key}", value)
|
|
17
16
|
end
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
if blk
|
|
20
|
+
more_values = instance_exec(OpenStruct.new(values), &blk)
|
|
21
|
+
if Hash === more_values
|
|
22
|
+
more_values.each do |key, value|
|
|
23
|
+
instance_variable_set("@#{key}", value)
|
|
24
|
+
end
|
|
25
|
+
values = values.merge(more_values)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
missing = atts - values.keys
|
|
30
|
+
raise ArgumentError, "missing required keyword parameters: #{missing.inspect}" unless missing.empty?
|
|
31
|
+
|
|
18
32
|
if respond_to?(:_init)
|
|
19
33
|
_init
|
|
20
34
|
end
|
|
21
|
-
|
|
22
|
-
if
|
|
35
|
+
|
|
36
|
+
if klass.mutable?
|
|
23
37
|
Initializer.define_dynamic_to_h(klass, values.keys)
|
|
24
38
|
else
|
|
25
39
|
Initializer.define_to_h(klass, values.keys)
|
data/lib/l43/open_object.rb
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require 'l43/open_object/initializer'
|
|
4
|
+
require 'l43/open_object/behavior'
|
|
5
5
|
module L43
|
|
6
6
|
module OpenObject
|
|
7
|
-
VERSION = "0.2.9"
|
|
8
7
|
|
|
9
8
|
def attributes(*atts, **defaults, &blk)
|
|
10
9
|
attr_reader(*atts)
|
|
@@ -31,6 +30,14 @@ module L43
|
|
|
31
30
|
# end
|
|
32
31
|
end
|
|
33
32
|
|
|
33
|
+
def mutable_object!
|
|
34
|
+
instance_variable_set("@__mutable__", true)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def mutable?
|
|
38
|
+
instance_variable_get("@__mutable__") || false
|
|
39
|
+
end
|
|
40
|
+
|
|
34
41
|
def self.def_class(*a, **k, &b)
|
|
35
42
|
oo = self
|
|
36
43
|
Class.new do
|
metadata
CHANGED
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: l43_open_object
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Robert Dober
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date: 2026-04-
|
|
11
|
-
dependencies:
|
|
10
|
+
date: 2026-04-27 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: ostruct
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: 0.6.3
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: 0.6.3
|
|
12
26
|
description: |-
|
|
13
27
|
When using the class method `attributes` in a class you get:
|
|
14
28
|
- an initialize method with attributes as kwd params and the respective defaults
|
|
@@ -26,6 +40,7 @@ files:
|
|
|
26
40
|
- lib/l43/open_object.rb
|
|
27
41
|
- lib/l43/open_object/behavior.rb
|
|
28
42
|
- lib/l43/open_object/initializer.rb
|
|
43
|
+
- lib/l43/open_object/version.rb
|
|
29
44
|
homepage: https://codeberg.org/lab419/l43_open_object
|
|
30
45
|
licenses:
|
|
31
46
|
- AGPL-3.0-or-later
|
|
@@ -44,7 +59,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
44
59
|
- !ruby/object:Gem::Version
|
|
45
60
|
version: '0'
|
|
46
61
|
requirements: []
|
|
47
|
-
rubygems_version: 4.0.
|
|
62
|
+
rubygems_version: 4.0.10
|
|
48
63
|
specification_version: 4
|
|
49
64
|
summary: Define attributes with potential defaults, get all the goodies...
|
|
50
65
|
test_files: []
|