u-struct 0.10.0 → 0.11.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/.github/workflows/ci.yml +27 -0
- data/.gitignore +2 -0
- data/.vscode/settings.json +8 -0
- data/Gemfile +1 -1
- data/README.md +21 -3
- data/bin/prepare_coverage +27 -0
- data/bin/test +8 -0
- data/examples/rgb/color.rb +7 -7
- data/examples/rgb/number.rb +8 -4
- data/examples/rgb_1.rb +18 -10
- data/examples/rgb_2.rb +24 -8
- data/examples/rgb_3.rb +15 -3
- data/lib/micro/struct/factory/create_struct.rb +39 -38
- data/lib/micro/struct/factory/members.rb +37 -0
- data/lib/micro/struct/factory.rb +4 -8
- data/lib/micro/struct/features.rb +3 -4
- data/lib/micro/struct/version.rb +1 -1
- data/u-struct.gemspec +1 -1
- metadata +9 -5
- data/Gemfile.lock +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0150b18cb61a38d042a0ad2f22c9588c7269c8362a708a8ebf156cc927a312dd
|
4
|
+
data.tar.gz: 0fc97adb461433c7382ee524d3a58c4d134624013c4afa974cade30b46f09109
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 708cbec302ef69ec3d6f465ebca2d07eff62ff1a3746b4e7034b21a571e693b27b9e4dad1ada934f4ac37f2565212cc83f111d384eb84573209578aab77beac6
|
7
|
+
data.tar.gz: cec5b4750bcc98d9955fbe27bcca952b2139c36dd90d6f6c98fd3b107f9ef577fdb2e72f34c78871e15d608cdab06c034427efeab67caa5bc2c869bbaeee8026
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
name: build
|
3
|
+
on: [push]
|
4
|
+
jobs:
|
5
|
+
test:
|
6
|
+
runs-on: ubuntu-latest
|
7
|
+
strategy:
|
8
|
+
matrix:
|
9
|
+
ruby: [2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1.0-preview1]
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v2
|
12
|
+
- uses: ruby/setup-ruby@v1
|
13
|
+
with:
|
14
|
+
ruby-version: ${{ matrix.ruby }}
|
15
|
+
bundler-cache: true
|
16
|
+
- name: Test and generate coverage
|
17
|
+
run: bin/test
|
18
|
+
- name: Format coverage
|
19
|
+
if: ${{ matrix.ruby >= 3 && matrix.ruby < 3.1 }}
|
20
|
+
run: bin/prepare_coverage
|
21
|
+
- uses: paambaati/codeclimate-action@v2.7.5
|
22
|
+
if: ${{ matrix.ruby >= 3 && matrix.ruby < 3.1 }}
|
23
|
+
env:
|
24
|
+
CC_TEST_REPORTER_ID: 8ce350edeb0772e94ffd678bbaca30d9c1293b9d9051a1689c79b91c21f5afd5
|
25
|
+
with:
|
26
|
+
debug: true
|
27
|
+
coverageLocations: coverage/.resultset.json:simplecov
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,24 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Create powered Ruby structs
|
1
|
+
<p align="center">
|
2
|
+
<h1 align="center">🧱 μ-struct</h1>
|
3
|
+
<p align="center"><i>Create powered Ruby structs.</i></p>
|
4
|
+
<br>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<p align="center">
|
8
|
+
<img src="https://img.shields.io/badge/ruby%20%3E=%202.2,%20%3C%203.2-ruby.svg?colorA=99004d&colorB=cc0066" alt="Ruby">
|
9
|
+
<a href="https://rubygems.org/gems/u-struct">
|
10
|
+
<img alt="Gem" src="https://img.shields.io/gem/v/u-struct.svg?style=flat-square">
|
11
|
+
</a>
|
12
|
+
<a href="https://github.com/serradura/u-struct/actions/workflows/ci.yml">
|
13
|
+
<img alt="Build Status" src="https://github.com/serradura/u-struct/actions/workflows/ci.yml/badge.svg">
|
14
|
+
</a>
|
15
|
+
<a href="https://codeclimate.com/github/serradura/u-struct/maintainability">
|
16
|
+
<img alt="Maintainability" src="https://api.codeclimate.com/v1/badges/2cc0204411cc2b392b7a/maintainability">
|
17
|
+
</a>
|
18
|
+
<a href="https://codeclimate.com/github/serradura/u-struct/test_coverage">
|
19
|
+
<img alt="Test Coverage" src="https://api.codeclimate.com/v1/badges/2cc0204411cc2b392b7a/test_coverage">
|
20
|
+
</a>
|
21
|
+
</p>
|
4
22
|
|
5
23
|
## Installation
|
6
24
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
# Borrowed from https://gist.github.com/qortex/7e7c49f3731391a91ee898336183acef
|
4
|
+
|
5
|
+
# Temporary hack to get CodeClimate to work with SimpleCov 0.18 JSON format until issue is fixed
|
6
|
+
# upstream: https://github.com/codeclimate/test-reporter/issues/413
|
7
|
+
|
8
|
+
require "json"
|
9
|
+
|
10
|
+
filename = "coverage/.resultset.json"
|
11
|
+
contents = JSON.parse(File.read(filename))
|
12
|
+
|
13
|
+
def remove_lines_key(obj)
|
14
|
+
case obj
|
15
|
+
when Hash
|
16
|
+
obj.transform_values do |val|
|
17
|
+
val.is_a?(Hash) && val.key?("lines") ? val["lines"] : remove_lines_key(val)
|
18
|
+
end
|
19
|
+
else
|
20
|
+
obj
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# overwrite
|
25
|
+
File.write(filename, JSON.generate(remove_lines_key(contents)))
|
26
|
+
|
27
|
+
puts Dir['coverage/.*.json']
|
data/bin/test
ADDED
data/examples/rgb/color.rb
CHANGED
@@ -2,20 +2,20 @@
|
|
2
2
|
|
3
3
|
module RGB
|
4
4
|
Color = Micro::Struct.with(:readonly, :to_ary).new(:red, :green, :blue) do
|
5
|
-
def
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
def initialize(r, g, b)
|
6
|
+
super(
|
7
|
+
Number.new(value: r, label: 'red'),
|
8
|
+
Number.new(value: g, label: 'green'),
|
9
|
+
Number.new(value: b, label: 'blue')
|
10
10
|
)
|
11
11
|
end
|
12
12
|
|
13
13
|
def to_a
|
14
|
-
super.map(&:value)
|
14
|
+
@to_a ||= super.map(&:value)
|
15
15
|
end
|
16
16
|
|
17
17
|
def to_hex
|
18
|
-
"##{red}#{green}#{blue}"
|
18
|
+
@to_hex ||= "##{red}#{green}#{blue}"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
data/examples/rgb/number.rb
CHANGED
@@ -1,17 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module RGB
|
4
|
-
Number = Micro::Struct.with(:readonly).new(:value) do
|
4
|
+
Number = Micro::Struct.with(:readonly).new(:value, :label) do
|
5
5
|
Input = Kind.object(name: 'Integer(>= 0 and <= 255)') do |value|
|
6
6
|
value.is_a?(::Integer) && value >= 0 && value <= 255
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
10
|
-
|
9
|
+
def initialize(value, label)
|
10
|
+
super(Input[value, label: label])
|
11
11
|
end
|
12
12
|
|
13
13
|
def to_s
|
14
|
-
value
|
14
|
+
@to_s ||= '%02x' % value
|
15
|
+
end
|
16
|
+
|
17
|
+
def inspect
|
18
|
+
"#<RGB::Number #{value}>"
|
15
19
|
end
|
16
20
|
end
|
17
21
|
end
|
data/examples/rgb_1.rb
CHANGED
@@ -14,26 +14,24 @@ RGBColor = Micro::Struct.with(:readonly, :to_ary).new(:red, :green, :blue) do
|
|
14
14
|
value.is_a?(::Integer) && value >= 0 && value <= 255
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
19
|
-
red: Number[r, label: 'r'],
|
20
|
-
green: Number[g, label: 'g'],
|
21
|
-
blue: Number[b, label: 'b']
|
22
|
-
)
|
17
|
+
def initialize(r, g, b)
|
18
|
+
super(Number[r], Number[g], Number[b])
|
23
19
|
end
|
24
20
|
|
25
21
|
def to_hex
|
26
|
-
|
22
|
+
'#%02x%02x%02x' % self
|
27
23
|
end
|
28
24
|
end
|
29
25
|
|
30
|
-
|
26
|
+
puts
|
27
|
+
|
28
|
+
rgb_color = RGBColor.new(red: 1, green: 1, blue: 255)
|
31
29
|
|
32
30
|
p rgb_color
|
33
31
|
|
34
32
|
puts
|
35
|
-
puts format('to_hex: %p', rgb_color.to_hex)
|
36
33
|
puts format('to_a: %p', rgb_color.to_a)
|
34
|
+
puts format('to_hex: %p', rgb_color.to_hex)
|
37
35
|
puts
|
38
36
|
|
39
37
|
r, g, b = rgb_color
|
@@ -41,5 +39,15 @@ r, g, b = rgb_color
|
|
41
39
|
puts format('red: %p', r)
|
42
40
|
puts format('green: %p', g)
|
43
41
|
puts format('blue: %p', b)
|
42
|
+
puts
|
44
43
|
|
45
|
-
|
44
|
+
*rgb = rgb_color
|
45
|
+
|
46
|
+
puts rgb.inspect
|
47
|
+
puts
|
48
|
+
|
49
|
+
begin
|
50
|
+
RGBColor.new(red: 1, green: -1, blue: 255)
|
51
|
+
rescue => exception
|
52
|
+
puts exception # Kind::Error (-1 expected to be a kind of Integer(>= 0 and <= 255))
|
53
|
+
end
|
data/examples/rgb_2.rb
CHANGED
@@ -14,21 +14,25 @@ RGBNumber = Micro::Struct.with(:readonly).new(:value) do
|
|
14
14
|
value.is_a?(::Integer) && value >= 0 && value <= 255
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
17
|
+
def initialize(value)
|
18
|
+
super(Input[value])
|
19
19
|
end
|
20
20
|
|
21
21
|
def to_s
|
22
|
-
value
|
22
|
+
'%02x' % value
|
23
|
+
end
|
24
|
+
|
25
|
+
def inspect
|
26
|
+
"#<RGBNumber #{value}>"
|
23
27
|
end
|
24
28
|
end
|
25
29
|
|
26
30
|
RGBColor = Micro::Struct.with(:readonly, :to_ary).new(:red, :green, :blue) do
|
27
31
|
def self.new(r:, g:, b:)
|
28
32
|
__new__(
|
29
|
-
red: RGBNumber.new(
|
30
|
-
green: RGBNumber.new(
|
31
|
-
blue: RGBNumber.new(
|
33
|
+
red: RGBNumber.new(value: r),
|
34
|
+
green: RGBNumber.new(value: g),
|
35
|
+
blue: RGBNumber.new(value: b)
|
32
36
|
)
|
33
37
|
end
|
34
38
|
|
@@ -41,13 +45,15 @@ RGBColor = Micro::Struct.with(:readonly, :to_ary).new(:red, :green, :blue) do
|
|
41
45
|
end
|
42
46
|
end
|
43
47
|
|
48
|
+
puts
|
49
|
+
|
44
50
|
rgb_color = RGBColor.new(r: 1, g: 1, b: 255)
|
45
51
|
|
46
52
|
p rgb_color
|
47
53
|
|
48
54
|
puts
|
49
|
-
puts format('to_hex: %p', rgb_color.to_hex)
|
50
55
|
puts format('to_a: %p', rgb_color.to_a)
|
56
|
+
puts format('to_hex: %p', rgb_color.to_hex)
|
51
57
|
puts
|
52
58
|
|
53
59
|
r, g, b = rgb_color
|
@@ -55,5 +61,15 @@ r, g, b = rgb_color
|
|
55
61
|
puts format('red: %p', r)
|
56
62
|
puts format('green: %p', g)
|
57
63
|
puts format('blue: %p', b)
|
64
|
+
puts
|
65
|
+
|
66
|
+
*rgb = rgb_color
|
58
67
|
|
59
|
-
|
68
|
+
puts rgb.inspect
|
69
|
+
puts
|
70
|
+
|
71
|
+
begin
|
72
|
+
RGBColor.new(r: 1, g: -1, b: 255)
|
73
|
+
rescue => exception
|
74
|
+
puts exception # Kind::Error (-1 expected to be a kind of Integer(>= 0 and <= 255))
|
75
|
+
end
|
data/examples/rgb_3.rb
CHANGED
@@ -12,13 +12,15 @@ end
|
|
12
12
|
require_relative 'rgb/number'
|
13
13
|
require_relative 'rgb/color'
|
14
14
|
|
15
|
-
|
15
|
+
puts
|
16
|
+
|
17
|
+
rgb_color = RGB::Color.new(red: 1, green: 1, blue: 255)
|
16
18
|
|
17
19
|
p rgb_color
|
18
20
|
|
19
21
|
puts
|
20
|
-
puts format('to_hex: %p', rgb_color.to_hex)
|
21
22
|
puts format('to_a: %p', rgb_color.to_a)
|
23
|
+
puts format('to_hex: %p', rgb_color.to_hex)
|
22
24
|
puts
|
23
25
|
|
24
26
|
r, g, b = rgb_color
|
@@ -26,5 +28,15 @@ r, g, b = rgb_color
|
|
26
28
|
puts format('red: %p', r)
|
27
29
|
puts format('green: %p', g)
|
28
30
|
puts format('blue: %p', b)
|
31
|
+
puts
|
29
32
|
|
30
|
-
|
33
|
+
*rgb = rgb_color
|
34
|
+
|
35
|
+
puts rgb.inspect
|
36
|
+
puts
|
37
|
+
|
38
|
+
begin
|
39
|
+
RGB::Color.new(red: 1, green: -1, blue: 255)
|
40
|
+
rescue => exception
|
41
|
+
puts exception # Kind::Error (green: -1 expected to be a kind of Integer(>= 0 and <= 255))
|
42
|
+
end
|
@@ -4,30 +4,24 @@ class Micro::Struct::Factory
|
|
4
4
|
module CreateStruct
|
5
5
|
extend self
|
6
6
|
|
7
|
-
def with(
|
8
|
-
struct = ::Struct.new(*
|
7
|
+
def with(members, block, features)
|
8
|
+
struct = ::Struct.new(*members.required_and_optional)
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def_to_proc(struct) if features[:to_proc]
|
14
|
-
def_readonly(struct) if features[:readonly]
|
15
|
-
def_instance_copy(struct) if features[:instance_copy]
|
10
|
+
ClassScope.def_new(struct, members)
|
11
|
+
ClassScope.def_to_proc(struct) if features[:to_proc]
|
12
|
+
ClassScope.def_private_writers(struct) if features[:readonly]
|
16
13
|
|
17
|
-
|
14
|
+
InstanceScope.def_with(struct) if features[:instance_copy]
|
15
|
+
InstanceScope.def_to_ary(struct) if features[:to_ary]
|
16
|
+
InstanceScope.def_to_hash(struct) if features[:to_hash]
|
17
|
+
|
18
|
+
ClassScope.evaluate(struct, block)
|
18
19
|
|
19
20
|
struct
|
20
21
|
end
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
def def_initialize(struct, required_members, optional_members)
|
25
|
-
required = "#{required_members.join(':, ')}#{':' unless required_members.empty?}"
|
26
|
-
optional = "#{optional_members.join(': nil, ')}#{': nil' unless optional_members.empty?}"
|
27
|
-
|
28
|
-
keywords_arguments = [required, optional].reject(&:empty?).join(', ')
|
29
|
-
positional_arguments = (required_members + optional_members).join(', ')
|
30
|
-
|
23
|
+
module ClassScope
|
24
|
+
def self.def_new(struct, members)
|
31
25
|
# The .new() method will require all required keyword arguments.
|
32
26
|
# We are doing this because the Struct constructor keyword init option treats everything as optional.
|
33
27
|
#
|
@@ -35,18 +29,36 @@ class Micro::Struct::Factory
|
|
35
29
|
class << self
|
36
30
|
undef_method :new
|
37
31
|
|
38
|
-
def new(#{
|
39
|
-
instance = allocate
|
40
|
-
instance.send(:initialize, #{
|
41
|
-
instance
|
42
|
-
end
|
32
|
+
def new(#{members.to_eval.keyword_args}) # def new(a:, b:, c: nil) do
|
33
|
+
instance = allocate # instance = allocate
|
34
|
+
instance.send(:initialize, #{members.to_eval.positional_args}) # instance.send(:initialize, a, b, c)
|
35
|
+
instance # instance
|
36
|
+
end # end
|
43
37
|
|
44
38
|
alias __new__ new
|
45
39
|
end
|
46
40
|
RUBY
|
47
41
|
end
|
48
42
|
|
49
|
-
def
|
43
|
+
def self.def_to_proc(struct)
|
44
|
+
struct.class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
45
|
+
def self.to_proc
|
46
|
+
->(hash) { new(**hash) }
|
47
|
+
end
|
48
|
+
RUBY
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.def_private_writers(struct)
|
52
|
+
struct.send(:private, *struct.members.map { |member| "#{member}=" })
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.evaluate(struct, block)
|
56
|
+
struct.class_eval(&block) if block
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
module InstanceScope
|
61
|
+
def self.def_to_ary(struct)
|
50
62
|
struct.class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
51
63
|
def to_ary
|
52
64
|
to_a
|
@@ -54,7 +66,7 @@ class Micro::Struct::Factory
|
|
54
66
|
RUBY
|
55
67
|
end
|
56
68
|
|
57
|
-
def def_to_hash(struct)
|
69
|
+
def self.def_to_hash(struct)
|
58
70
|
struct.class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
59
71
|
def to_hash
|
60
72
|
to_h
|
@@ -62,25 +74,14 @@ class Micro::Struct::Factory
|
|
62
74
|
RUBY
|
63
75
|
end
|
64
76
|
|
65
|
-
def
|
66
|
-
struct.send(:private, *struct.members.map { |member| "#{member}=" })
|
67
|
-
end
|
68
|
-
|
69
|
-
def def_instance_copy(struct)
|
77
|
+
def self.def_with(struct)
|
70
78
|
struct.class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
71
79
|
def with(**members)
|
72
80
|
self.class.new(**to_h.merge(members))
|
73
81
|
end
|
74
82
|
RUBY
|
75
83
|
end
|
76
|
-
|
77
|
-
def def_to_proc(struct)
|
78
|
-
struct.class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
79
|
-
def self.to_proc
|
80
|
-
->(hash) { new(**hash) }
|
81
|
-
end
|
82
|
-
RUBY
|
83
|
-
end
|
84
|
+
end
|
84
85
|
end
|
85
86
|
|
86
87
|
private_constant :CreateStruct
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Micro::Struct
|
4
|
+
class Factory
|
5
|
+
class Members
|
6
|
+
attr_reader :required_and_optional
|
7
|
+
|
8
|
+
Names = ->(values) { NormalizeNames::AsSymbols.(values, context: 'member') }
|
9
|
+
|
10
|
+
def initialize(required_members, required_option, optional_option)
|
11
|
+
@required = Names[required_members] + Names[required_option]
|
12
|
+
@optional = Names[optional_option]
|
13
|
+
|
14
|
+
@required_and_optional = @required + @optional
|
15
|
+
end
|
16
|
+
|
17
|
+
ToEval = ::Struct.new(:required, :optional, :required_and_optional) do
|
18
|
+
def keyword_args
|
19
|
+
required_kargs = "#{required.join(':, ')}#{':' unless required.empty?}"
|
20
|
+
optional_kargs = "#{optional.join(': nil, ')}#{': nil' unless optional.empty?}"
|
21
|
+
|
22
|
+
[required_kargs, optional_kargs].reject(&:empty?).join(', ')
|
23
|
+
end
|
24
|
+
|
25
|
+
def positional_args
|
26
|
+
required_and_optional.join(', ')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_eval
|
31
|
+
@to_eval ||= ToEval.new(@required, @optional, required_and_optional)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private_constant :Members
|
36
|
+
end
|
37
|
+
end
|
data/lib/micro/struct/factory.rb
CHANGED
@@ -2,21 +2,17 @@
|
|
2
2
|
|
3
3
|
module Micro::Struct
|
4
4
|
class Factory
|
5
|
+
require_relative 'factory/members'
|
5
6
|
require_relative 'factory/create_struct'
|
6
7
|
|
7
8
|
def initialize(features)
|
8
9
|
@features = Features.require(features)
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
def new(*members, required: nil, optional: nil, &block)
|
16
|
-
optional_members = NormalizeMemberNames[optional]
|
17
|
-
required_members = NormalizeMemberNames[members] + NormalizeMemberNames[required]
|
12
|
+
def new(*required_members, required: nil, optional: nil, &struct_block)
|
13
|
+
members = Members.new(required_members, required, optional)
|
18
14
|
|
19
|
-
CreateStruct.with(
|
15
|
+
CreateStruct.with(members, struct_block, @features)
|
20
16
|
end
|
21
17
|
end
|
22
18
|
|
@@ -17,13 +17,12 @@ module Micro::Struct
|
|
17
17
|
instance_copy: instance_copy }
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
Names = ->(values) do
|
21
21
|
NormalizeNames::AsSymbols.(values, context: 'feature')
|
22
22
|
end
|
23
23
|
|
24
|
-
def self.require(
|
25
|
-
to_enable =
|
26
|
-
NormalizeFeatureNames[names].each_with_object({}) { |name, memo| memo[name] = true }
|
24
|
+
def self.require(values)
|
25
|
+
to_enable = Names[values].each_with_object({}) { |name, memo| memo[name] = true }
|
27
26
|
|
28
27
|
Check.(**DISABLED.merge(to_enable))
|
29
28
|
end
|
data/lib/micro/struct/version.rb
CHANGED
data/u-struct.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = %q{Create powered Ruby structs.}
|
13
13
|
spec.homepage = 'https://github.com/serradura/u-struct'
|
14
14
|
spec.license = 'MIT'
|
15
|
-
spec.required_ruby_version = '>= 2.
|
15
|
+
spec.required_ruby_version = '>= 2.2.0'
|
16
16
|
|
17
17
|
spec.metadata['homepage_uri'] = spec.homepage
|
18
18
|
spec.metadata['source_code_uri'] = 'https://github.com/serradura/u-struct'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: u-struct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Serradura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-12-
|
11
|
+
date: 2021-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -45,16 +45,19 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
+
- ".github/workflows/ci.yml"
|
48
49
|
- ".gitignore"
|
50
|
+
- ".vscode/settings.json"
|
49
51
|
- CHANGELOG.md
|
50
52
|
- CODE_OF_CONDUCT.md
|
51
53
|
- Gemfile
|
52
|
-
- Gemfile.lock
|
53
54
|
- LICENSE.txt
|
54
55
|
- README.md
|
55
56
|
- Rakefile
|
56
57
|
- bin/console
|
58
|
+
- bin/prepare_coverage
|
57
59
|
- bin/setup
|
60
|
+
- bin/test
|
58
61
|
- examples/person_1.rb
|
59
62
|
- examples/person_2.rb
|
60
63
|
- examples/rgb/color.rb
|
@@ -65,6 +68,7 @@ files:
|
|
65
68
|
- lib/micro/struct.rb
|
66
69
|
- lib/micro/struct/factory.rb
|
67
70
|
- lib/micro/struct/factory/create_struct.rb
|
71
|
+
- lib/micro/struct/factory/members.rb
|
68
72
|
- lib/micro/struct/features.rb
|
69
73
|
- lib/micro/struct/normalize_names.rb
|
70
74
|
- lib/micro/struct/version.rb
|
@@ -85,14 +89,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
85
89
|
requirements:
|
86
90
|
- - ">="
|
87
91
|
- !ruby/object:Gem::Version
|
88
|
-
version: 2.
|
92
|
+
version: 2.2.0
|
89
93
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
94
|
requirements:
|
91
95
|
- - ">="
|
92
96
|
- !ruby/object:Gem::Version
|
93
97
|
version: '0'
|
94
98
|
requirements: []
|
95
|
-
rubygems_version: 3.2.
|
99
|
+
rubygems_version: 3.2.22
|
96
100
|
signing_key:
|
97
101
|
specification_version: 4
|
98
102
|
summary: Create powered Ruby structs.
|
data/Gemfile.lock
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
u-struct (0.10.0)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
docile (1.4.0)
|
10
|
-
minitest (5.14.4)
|
11
|
-
rake (13.0.6)
|
12
|
-
simplecov (0.21.2)
|
13
|
-
docile (~> 1.1)
|
14
|
-
simplecov-html (~> 0.11)
|
15
|
-
simplecov_json_formatter (~> 0.1)
|
16
|
-
simplecov-html (0.12.3)
|
17
|
-
simplecov_json_formatter (0.1.3)
|
18
|
-
|
19
|
-
PLATFORMS
|
20
|
-
ruby
|
21
|
-
x86_64-darwin-19
|
22
|
-
|
23
|
-
DEPENDENCIES
|
24
|
-
bundler
|
25
|
-
minitest (~> 5.0)
|
26
|
-
rake (~> 13.0)
|
27
|
-
simplecov (~> 0.21.2)
|
28
|
-
u-struct!
|
29
|
-
|
30
|
-
BUNDLED WITH
|
31
|
-
2.2.32
|