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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed0c19c23a4cbdd7282390be2590b7b9ae8b025badd32ffbaae9adf128d79667
4
- data.tar.gz: b18729b71798828d9ba517f635e3b2b8e6baff640724b0837bac66be14e72ed8
3
+ metadata.gz: 0150b18cb61a38d042a0ad2f22c9588c7269c8362a708a8ebf156cc927a312dd
4
+ data.tar.gz: 0fc97adb461433c7382ee524d3a58c4d134624013c4afa974cade30b46f09109
5
5
  SHA512:
6
- metadata.gz: '0519e4b525fb8e62021c8ec5e518f503c6f14d865f48942c9dd145864f08ca2c3cbfb5c65fae703c3f91c3730ffd04881890d950c335ecc14789cdb28f24a541'
7
- data.tar.gz: c0068d5051527141d7d1bfd59de4cd5e7b026abbbb5abe2d0a9b45b0a74de674e51bda16d483400f1cdeb9284a7bdb6093ba5989d8eb940e4a431e70bed12ee7
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
@@ -6,3 +6,5 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+
10
+ Gemfile.lock
@@ -0,0 +1,8 @@
1
+ {
2
+ "cSpell.enabled": true,
3
+ "cSpell.ignoreWords": [
4
+ "paambaati",
5
+ "resultset",
6
+ "simplecov"
7
+ ]
8
+ }
data/Gemfile CHANGED
@@ -8,4 +8,4 @@ gemspec
8
8
  gem 'rake', '~> 13.0'
9
9
 
10
10
  gem 'minitest', '~> 5.0'
11
- gem 'simplecov', '~> 0.21.2'
11
+ gem 'simplecov', '~> 0.21.2' if RUBY_VERSION >= '2.5.0'
data/README.md CHANGED
@@ -1,6 +1,24 @@
1
- # Micro::Struct
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
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ rm Gemfile.lock
6
+
7
+ bundle update
8
+ bundle exec rake test
@@ -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 self.new(r:, g:, b:)
6
- __new__(
7
- red: Number.new(r, label: 'r'),
8
- green: Number.new(g, label: 'g'),
9
- blue: Number.new(b, label: 'b')
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
@@ -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 self.new(value, label:)
10
- __new__(value: Input[value, label: label])
9
+ def initialize(value, label)
10
+ super(Input[value, label: label])
11
11
  end
12
12
 
13
13
  def to_s
14
- value.to_s(16)
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 self.new(r:, g:, b:)
18
- __new__(
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
- "##{red.to_s(16)}#{green.to_s(16)}#{blue.to_s(16)}"
22
+ '#%02x%02x%02x' % self
27
23
  end
28
24
  end
29
25
 
30
- rgb_color = RGBColor.new(r: 1, g: 1, b: 255)
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
- RGBColor.new(r: 1, g: -1, b: 255) # Kind::Error (g: -1 expected to be a kind of Integer(>= 0 and <= 255))
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 self.new(value, label:)
18
- __new__(value: Input[value, label: label])
17
+ def initialize(value)
18
+ super(Input[value])
19
19
  end
20
20
 
21
21
  def to_s
22
- value.to_s(16)
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(r, label: 'r'),
30
- green: RGBNumber.new(g, label: 'g'),
31
- blue: RGBNumber.new(b, label: 'b')
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
- RGB::Color.new(r: 1, g: -1, b: 255) # Kind::Error (g: -1 expected to be a kind of Integer(>= 0 and <= 255))
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
- rgb_color = RGB::Color.new(r: 1, g: 1, b: 255)
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
- RGB::Color.new(r: 1, g: -1, b: 255) # Kind::Error (g: -1 expected to be a kind of Integer(>= 0 and <= 255))
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(required_members, optional_members, features, &block)
8
- struct = ::Struct.new(*(required_members + optional_members))
7
+ def with(members, block, features)
8
+ struct = ::Struct.new(*members.required_and_optional)
9
9
 
10
- def_initialize(struct, required_members, optional_members)
11
- def_to_ary(struct) if features[:to_ary]
12
- def_to_hash(struct) if features[:to_hash]
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
- struct.class_eval(&block) if block
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
- private
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(#{keywords_arguments}) # def new(a:, b:, c: nil) do
39
- instance = allocate # instance = allocate
40
- instance.send(:initialize, #{positional_arguments}) # instance.send(:initialize, a, b, c)
41
- instance # instance
42
- end # 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 def_to_ary(struct)
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 def_readonly(struct)
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
@@ -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
- NormalizeMemberNames = ->(values) do
12
- NormalizeNames::AsSymbols.(values, context: 'member')
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(required_members, optional_members, @features, &block)
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
- NormalizeFeatureNames = ->(values) do
20
+ Names = ->(values) do
21
21
  NormalizeNames::AsSymbols.(values, context: 'feature')
22
22
  end
23
23
 
24
- def self.require(names)
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Micro
4
4
  module Struct
5
- VERSION = '0.10.0'
5
+ VERSION = '0.11.0'
6
6
  end
7
7
  end
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.4.0'
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.10.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-15 00:00:00.000000000 Z
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.4.0
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.17
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