windcharger 0.5.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3880054180de3f8d84d555577ed519b5df2bd25baf85b60a5fbe047690079b5d
4
- data.tar.gz: 6128c5c16115ecbd0eb80c36e39047e887387ee0fc4a004fcbe96130b8809420
3
+ metadata.gz: b1f803222a12d8986cb4bc94f323c4ecd50a28f1e1c199b31cf6f71262e71b78
4
+ data.tar.gz: b03b6f1073da78a608781b02c8ef68e142471621b00e223c3d10bba8ba846679
5
5
  SHA512:
6
- metadata.gz: 186fe22071dabe644fbc9ee288df9d86336516d508ded03ae33f856c98ed97eae147a16d221bffbd45a7ccea6f0451675a3f555714ea634129e5515fa310dcea
7
- data.tar.gz: a13235f494ab514bf3df98660d772285cdcfc1ea45ab81962642f59296b4e66cd35b28592351455c70155d630fc11578e427b6887bd4395da9c1fbda7b9b6168
6
+ metadata.gz: c3afe86c519266cb6647d32f0d06e6923627572f55cf05c2b5d6e04febe2583123de3d20699439f8349ab3e5f0ac163453cfa54a1d1e709796d96fb29a638f3d
7
+ data.tar.gz: 3919d9fe6ec928a64124477e0d5fee5b062d3d3f88c0a935cace48b4eaa264f4992bf143e4d454b14d5c7ec2025a156a34b26a946f527a63d38d830ef1fe14c2
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: CI
3
+
4
+ 'on':
5
+ pull_request:
6
+ push:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ ruby-version:
14
+ - '2.6'
15
+ - '2.7'
16
+ - '3.0'
17
+ - '3.1'
18
+ - '3.2'
19
+
20
+ steps:
21
+ - uses: actions/checkout@v3
22
+ - name: Setup
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby-version }}
26
+ bundler-cache: true
27
+ - name: Run tests
28
+ run: bundle exec rake
29
+
30
+ ci_complete:
31
+ runs-on: ubuntu-latest
32
+ needs:
33
+ - test
34
+ steps:
35
+ - run: ":"
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # Windcharger
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/windcharger.svg)](https://rubygems.org/gems/windcharger)
4
- [![Build Status](https://secure.travis-ci.org/amarshall/windcharger.svg?branch=master)](https://travis-ci.org/amarshall/windcharger)
5
4
 
6
5
  ![Windcharger mascot. He carries powerful magnets in his arms that he can use to manipulate large objects.](https://i.imgur.com/lApzHFP.jpg "He carries powerful magnets in his arms that he can use to manipulate large objects.")
7
6
 
@@ -3,13 +3,15 @@
3
3
  module Windcharger
4
4
  module Attributes
5
5
  def attributes
6
- (@__attributes || []).dup.freeze
6
+ @__windcharger_attributes ||= []
7
+ super_attrs = superclass.respond_to?(:attributes) ? superclass.attributes : []
8
+ [*super_attrs, *@__windcharger_attributes].freeze
7
9
  end
8
10
 
9
11
  private
10
12
 
11
13
  def __windcharger_add_attribute name
12
- (@__attributes ||= []) << name.to_sym
14
+ (@__windcharger_attributes ||= []) << name.to_sym
13
15
  end
14
16
 
15
17
  def attribute *attributes
@@ -21,7 +23,8 @@ module Windcharger
21
23
  end
22
24
 
23
25
  def method_added name
24
- return unless @__windcharger_next_is_attribute
26
+ super
27
+ return unless defined?(@__windcharger_next_is_attribute) && @__windcharger_next_is_attribute
25
28
  __windcharger_add_attribute name
26
29
  @__windcharger_next_is_attribute = false
27
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Windcharger
4
- VERSION = '0.5.0'
4
+ VERSION = '0.7.0'
5
5
  end
@@ -74,4 +74,51 @@ describe Windcharger::Attributes do
74
74
  expect { transformer_class.attributes << :bar }.to raise_error FrozenError
75
75
  expect(transformer_class.attributes).to eq [:foo]
76
76
  end
77
+
78
+ it "does not break other method_added hooks" do
79
+ calls_before = []
80
+ calls_after = []
81
+ other_hooker_before = Module.new do
82
+ define_method :method_added do |name|
83
+ super name
84
+ calls_before << name
85
+ end
86
+ end
87
+ other_hooker_after = Module.new do
88
+ define_method :method_added do |name|
89
+ super name
90
+ calls_after << name
91
+ end
92
+ end
93
+
94
+ Class.new do
95
+ extend other_hooker_before
96
+ extend Windcharger::Attributes
97
+ extend other_hooker_after
98
+
99
+ attribute
100
+ def foo; end
101
+
102
+ def bar; end
103
+ end
104
+
105
+ expect(calls_before).to eq %i[foo bar]
106
+ expect(calls_after).to eq %i[foo bar]
107
+ end
108
+
109
+ it 'inherits attributes from its superclass' do
110
+ parent_class = Class.new do
111
+ extend Windcharger::Attributes
112
+
113
+ attribute
114
+ def foo; end
115
+ end
116
+
117
+ transformer_class = Class.new(parent_class) do
118
+ attribute
119
+ def bar; end
120
+ end
121
+
122
+ expect(transformer_class.attributes).to match_array [:foo, :bar]
123
+ end
77
124
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: windcharger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Marshall
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-06 00:00:00.000000000 Z
11
+ date: 2023-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -65,8 +65,8 @@ executables: []
65
65
  extensions: []
66
66
  extra_rdoc_files: []
67
67
  files:
68
+ - ".github/workflows/ci.yml"
68
69
  - ".gitignore"
69
- - ".travis.yml"
70
70
  - Gemfile
71
71
  - LICENSE.txt
72
72
  - README.md
@@ -84,7 +84,7 @@ homepage: http://johnandrewmarshall.com/projects/windcharger
84
84
  licenses:
85
85
  - MIT
86
86
  metadata: {}
87
- post_install_message:
87
+ post_install_message:
88
88
  rdoc_options: []
89
89
  require_paths:
90
90
  - lib
@@ -99,8 +99,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  - !ruby/object:Gem::Version
100
100
  version: '0'
101
101
  requirements: []
102
- rubygems_version: 3.0.3
103
- signing_key:
102
+ rubygems_version: 3.3.20
103
+ signing_key:
104
104
  specification_version: 4
105
105
  summary: Small library to easily make objects that transform input via many methods.
106
106
  test_files:
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- ---
2
- language: ruby
3
- rvm:
4
- - 2.6.5
5
- - 2.5.7
6
- - jruby-9.2.8.0