power-types 0.4.0 → 0.5.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: '09c102791e603d22a9adc00c2541eefe568d5535bec4bcf1cd339166653edae6'
4
- data.tar.gz: 36fa5e71d80e34ebd2c7aaf93cceecfe3375008d2084dc1e283d5ae80efd2756
3
+ metadata.gz: 0d925bbf270d6ba204b3e091b60f5b16a5f02e5c6a76a6cee0ce710ff148f548
4
+ data.tar.gz: f494be84a510e19471380a1b3163e8ccb5b320f7c3307b272090314297a0491c
5
5
  SHA512:
6
- metadata.gz: b219f01522f1c1de782ebdc7957b915df269d5663e651b4e67c1bdf44bc430c95d85f73e28f9d5fa1f1c317c8d9b766088900e1ab75575d8cca5f9d01d5bc34f
7
- data.tar.gz: 34ffe18ebf5ed15af95c4a9be9579994dde7268f64d0fa6d8cd8fd7196c9f1cf87edbca8793d5f6fbe918f033e18fbd8ce355bf0a97cc52be7612ed1b665b59a
6
+ metadata.gz: 8dcbe2f8d896b4f3de9431d79247ce76426528ebc206a8585f33770dab9f110ad9849f8d5a46435c6fcc3fd84493cddcdec5d6b1916ce7f238dd74d4a825f6d3
7
+ data.tar.gz: 26570fe587be13f151c0ac0627b361de02977ad32c3651ee1f5f6f7135b0357c33d55fe217931cc569a81a09756b8aff0efc7ef30c0d52cb35e9039db5aef87c
@@ -0,0 +1,103 @@
1
+ version: 2.1
2
+
3
+ env-vars: &env-vars
4
+ RAILS_ENV: test
5
+ NODE_ENV: test
6
+ BUNDLE_PATH: vendor/bundle
7
+
8
+ orbs:
9
+ ruby: circleci/ruby@0.1.2
10
+ browser-tools: circleci/browser-tools@1.1.3
11
+
12
+ executors:
13
+ main-executor:
14
+ parameters:
15
+ ruby-version:
16
+ description: "Ruby version"
17
+ default: "2.7"
18
+ type: string
19
+ docker:
20
+ - image: circleci/ruby:<<parameters.ruby-version>>-node
21
+ environment: *env-vars
22
+
23
+ commands:
24
+ setup:
25
+ description: checkout code and install dependencies
26
+ steps:
27
+ - checkout
28
+ - run:
29
+ name: Install bundle dependencies
30
+ command: |
31
+ gem install bundler:2.2.15
32
+ bundle install
33
+
34
+ jobs:
35
+ lint:
36
+ executor: main-executor
37
+ steps:
38
+ - setup
39
+ - run:
40
+ name: Install reviewdog
41
+ command: |
42
+ curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s -- -b ./bin
43
+ - run:
44
+ name: Get files to lint
45
+ command: |
46
+ mkdir tmp
47
+ git diff origin/master --name-only --diff-filter=d > tmp/files_to_lint
48
+ - run:
49
+ name: Run rubocop
50
+ shell: /bin/bash
51
+ command: |
52
+ cat tmp/files_to_lint | grep -E '.+\.(rb)$' | xargs bundle exec rubocop --force-exclusion \
53
+ | ./bin/reviewdog -reporter=github-pr-review -f=rubocop
54
+ test:
55
+ parameters:
56
+ ruby-version:
57
+ description: "Ruby version"
58
+ default: "2.7"
59
+ type: string
60
+ executor:
61
+ name: main-executor
62
+ ruby-version: <<parameters.ruby-version>>
63
+ steps:
64
+ - setup
65
+ - run:
66
+ name: Run Tests
67
+ command: |
68
+ RSPEC_JUNIT_ARGS="-r rspec_junit_formatter -f RspecJunitFormatter -o test_results/rspec.xml"
69
+ RSPEC_FORMAT_ARGS="-f progress --no-color -p 10"
70
+ bundle exec rspec ./spec $RSPEC_FORMAT_ARGS $RSPEC_JUNIT_ARGS
71
+ - store_test_results:
72
+ path: test_results
73
+ deploy:
74
+ executor: main-executor
75
+ steps:
76
+ - setup
77
+ - run:
78
+ name: Setup rubygems
79
+ command: bash .circleci/setup-rubygems.sh
80
+ - run:
81
+ name: Publish to rubygems
82
+ command: |
83
+ gem build power-types.gemspec
84
+ version_tag=$(git describe --tags)
85
+ gem push power-types-${version_tag#v}.gem
86
+
87
+ workflows:
88
+ version: 2
89
+ main:
90
+ jobs:
91
+ - lint:
92
+ context: org-global
93
+ - test:
94
+ matrix:
95
+ parameters:
96
+ ruby-version: ["2.5", "2.6", "2.7"]
97
+ - deploy:
98
+ context: org-global
99
+ filters:
100
+ tags:
101
+ only: /.*/
102
+ branches:
103
+ ignore: /.*/
@@ -0,0 +1,3 @@
1
+ mkdir ~/.gem
2
+ echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
3
+ chmod 0600 /home/circleci/.gem/credentials
data/.rubocop.yml CHANGED
@@ -198,7 +198,6 @@ Style/WordArray:
198
198
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-w
199
199
  Enabled: false
200
200
  MinSize: 0
201
- WordRegex: !ruby/regexp /\A[\p{Word}]+\z/
202
201
  Metrics/AbcSize:
203
202
  Description: A calculated magnitude based on number of assignments, branches, and
204
203
  conditions.
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5
1
+ 2.7
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 Ignacio Baixas
3
+ Copyright 2022 Platanus
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Power Types
2
- [![Gem Version](https://badge.fury.io/rb/power-types.svg)](https://badge.fury.io/rb/power-types) [![Build Status](https://travis-ci.org/platanus/power-types.svg?branch=master)](https://travis-ci.org/platanus/power-types) [![Coverage Status](https://coveralls.io/repos/github/platanus/power-types/badge.svg)](https://coveralls.io/github/platanus/power-types)
2
+ [![Gem Version](https://badge.fury.io/rb/power-types.svg)](https://badge.fury.io/rb/power-types)
3
+ [![CircleCI](https://circleci.com/gh/platanus/local_resource.svg?style=shield)](https://app.circleci.com/pipelines/github/platanus/local_resource)
4
+ [![Coverage Status](https://coveralls.io/repos/github/platanus/power-types/badge.svg)](https://coveralls.io/github/platanus/power-types)
3
5
 
4
6
  Rails pattern enforcing types used by the Platanus team.
5
7
 
@@ -28,10 +30,20 @@ bundle install
28
30
 
29
31
  ## Power types
30
32
 
31
- - [Services](#services)
32
- - [Commands](#commands)
33
- - [Observers](#observers)
34
- - [Values and Utils](#values-and-utils)
33
+ - [Power Types](#power-types)
34
+ - [Introduction](#introduction)
35
+ - [Installation](#installation)
36
+ - [Power types](#power-types-1)
37
+ - [Services](#services)
38
+ - [Commands](#commands)
39
+ - [Observers](#observers)
40
+ - [Values](#values)
41
+ - [Presenters](#presenters)
42
+ - [Utils](#utils)
43
+ - [Publishing](#publishing)
44
+ - [Contributing](#contributing)
45
+ - [Credits](#credits)
46
+ - [License](#license)
35
47
 
36
48
  ### Services
37
49
 
@@ -201,7 +213,7 @@ describe MyModelObserver do
201
213
  end
202
214
  ```
203
215
 
204
- Now, suppose you have defined the following model (with name and villian attributes) and observer:
216
+ Now, suppose you have defined the following model (with name and villain attributes) and observer:
205
217
 
206
218
  ```ruby
207
219
  class Wizard < ActiveRecord::Base
@@ -214,7 +226,7 @@ class WizardObserver < PowerTypes::Observer
214
226
  after_create :kill_villain
215
227
 
216
228
  def kill_villain
217
- p "#{object.name} have killed #{object.villian}"
229
+ p "#{object.name} has killed #{object.villain}"
218
230
  end
219
231
  end
220
232
  ```
@@ -222,42 +234,34 @@ end
222
234
  Then, you can use it like this:
223
235
 
224
236
  ```ruby
225
- Wizard.create!(name: "Gandalf", villian: "Sauron") #=> This action will trigger the method kill_villian defined in the WizardObserver's after_create callback.
237
+ Wizard.create!(name: "Gandalf", villain: "Sauron") #=> This action will trigger the method kill_villain defined in the WizardObserver's after_create callback.
226
238
  ```
227
239
 
228
240
  > As you can guess, `object` holds the Wizard instance.
229
241
 
230
- ### Values and Utils
231
-
232
- These two types don't have generators.
233
-
234
- Values are just simple Ruby classes, but watch out to keep them in the Values directory!
235
-
236
- Utils should be defined as a module. There you define the independent but related functions. Use the extend self pattern to call them directly after the module name.
242
+ You can trigger multiple methods on the same callback. For example:
237
243
 
238
244
  ```ruby
239
- module MagicTricks
240
- extend self
241
-
242
- def dissappear(object)
243
- #blah blah
244
- end
245
+ class WizardObserver < PowerTypes::Observer
246
+ after_create :kill_villain
247
+ after_create :bury_villains_corpse
245
248
 
246
- def shrink(children)
247
- #bleh bleeh
249
+ def kill_villain
250
+ p "#{object.name} has killed #{object.villain}"
248
251
  end
249
252
 
250
- def shuffle(cards)
251
- #blaah
253
+ def bury_villains_corpse
254
+ p "#{object.name} has buried #{object.villain}'s corpse"
252
255
  end
253
- end
256
+ end
254
257
  ```
258
+ Note: Triggering the event will preserve the order of the methods, so in the example `kill_villain` will be called before `bury_villains_corpse`.
255
259
 
256
- Example of calling a Util function:
260
+ ### Values
257
261
 
258
- ```ruby
259
- MagicTricks.dissapear(rabbit)
260
- ```
262
+ This pattern doesn't have a generator.
263
+
264
+ Values are just simple Ruby classes, but watch out to keep them in the Values directory!
261
265
 
262
266
  ### Presenters
263
267
 
@@ -365,6 +369,65 @@ In the view, you can use it like this:
365
369
  <div><%= @presenter.platanus_link %></div>
366
370
  ```
367
371
 
372
+ ### Utils
373
+
374
+ To generate a util we use:
375
+
376
+ ```
377
+ $ bundle exec rails g util Numbers clean double
378
+ ```
379
+
380
+ This will generate the `NumbersUtil` class in the `app/utils` directory, as follows:
381
+
382
+ ```ruby
383
+ class NumbersUtil < PowerTypes::BaseUtil
384
+
385
+ def self.clean
386
+ # Method code goes here
387
+ end
388
+
389
+ def self.double
390
+ # Method code goes here
391
+ end
392
+
393
+ end
394
+ ```
395
+
396
+ And it will generate the spec file as well, in the `spec/utils` directory:
397
+
398
+ ```ruby
399
+ require 'rails_helper'
400
+
401
+ describe NumbersUtil do
402
+ describe '#clean' do
403
+ pending 'describe what the util method clean does here'
404
+ end
405
+
406
+ describe '#double' do
407
+ pending 'describe what the util method double does here'
408
+ end
409
+
410
+ end
411
+ ```
412
+
413
+ Every util will inherit from the class `PowerTypes::BaseUtil` which raises an error when the initialize method is called. The purpose of this is to ensure that all the utils methods work as class methods. Thus, there is no need to create an instance of the util to use its methods. For instance, we could use the `NumbersUtil` as follows:
414
+
415
+ ```ruby
416
+ NumbersUtil.clean('5.000') # -> 5000
417
+ NumbersUtil.double(100) # -> 200
418
+ ```
419
+
420
+ ## Publishing
421
+
422
+ On master/main branch...
423
+
424
+ 1. Change `VERSION` in `lib/power-types/version.rb`.
425
+ 2. Change `Unreleased` title to current version in `CHANGELOG.md`.
426
+ 3. Run `bundle install`.
427
+ 4. Commit new release. For example: `Releasing v0.1.0`.
428
+ 5. Create tag. For example: `git tag v0.1.0`.
429
+ 6. Push tag. For example: `git push origin v0.1.0`.
430
+
368
431
  ## Contributing
369
432
 
370
433
  1. Fork it
@@ -0,0 +1,7 @@
1
+ class <%= class_name %>Util < PowerTypes::BaseUtil
2
+ <% attributes_names.each do |method_name| %>
3
+ def self.<%= method_name %>
4
+ # Method code goes here
5
+ end
6
+ <% end %>
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'rails_helper'
2
+
3
+ describe <%= class_name %>Util do
4
+ <% attributes_names.each do |method_name| %>
5
+ describe '#<%= method_name %>' do
6
+ pending 'describe what the util method <%= method_name %> does here'
7
+ end
8
+ <% end %>
9
+ end
@@ -0,0 +1,14 @@
1
+ module Rails
2
+ class UtilGenerator < Rails::Generators::NamedBase
3
+ source_root File.expand_path('../templates', __FILE__)
4
+
5
+ argument :attributes, type: :array, default: [], banner: 'method method'
6
+
7
+ desc 'This generator creates a new util at app/utils'
8
+
9
+ def create_util
10
+ template('util.rb', "app/utils/#{file_name.underscore}_util.rb")
11
+ template('util_spec.rb', "spec/utils/#{file_name.underscore}_util_spec.rb")
12
+ end
13
+ end
14
+ end
@@ -1,2 +1,3 @@
1
1
  class PowerTypes::Error < RuntimeError; end
2
2
  class PowerTypes::PresenterError < PowerTypes::Error; end
3
+ class PowerTypes::UtilError < PowerTypes::Error; end
@@ -0,0 +1,7 @@
1
+ module PowerTypes
2
+ class BaseUtil
3
+ def initialize
4
+ raise PowerTypes::UtilError.new('a util cannot be instantiated')
5
+ end
6
+ end
7
+ end
@@ -1,6 +1,6 @@
1
1
  module PowerTypes
2
2
  module Util
3
- OBSERVABLE_EVENTS = [:create, :update, :save, :destroy]
3
+ OBSERVABLE_EVENTS = [:create, :update, :save, :destroy, :commit]
4
4
  OBSERVABLE_TYPES = [:before, :after]
5
5
  end
6
6
  end
@@ -1,3 +1,3 @@
1
1
  module PowerTypes
2
- VERSION = '0.4.0'
2
+ VERSION = '0.5.0'
3
3
  end
data/lib/power_types.rb CHANGED
@@ -10,6 +10,7 @@ require "power_types/patterns/observer/observer"
10
10
  require "power_types/patterns/observer/trigger"
11
11
  require "power_types/patterns/presenter/base_presenter"
12
12
  require "power_types/patterns/presenter/presentable"
13
+ require "power_types/patterns/base_util"
13
14
 
14
15
  module PowerTypes
15
16
  end
data/power-types.gemspec CHANGED
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'power_types/version'
@@ -20,18 +19,15 @@ Gem::Specification.new do |spec|
20
19
  spec.require_paths = ["lib"]
21
20
 
22
21
  spec.add_dependency "activesupport"
23
- spec.add_development_dependency "bundler", "~> 2.1.4"
22
+
23
+ spec.add_development_dependency "bundler", "~> 2.2.15"
24
24
  spec.add_development_dependency "coveralls"
25
25
  spec.add_development_dependency "guard", "~> 2.11"
26
26
  spec.add_development_dependency "guard-rspec", "~> 4.5"
27
27
  spec.add_development_dependency "pry", "~> 0.10"
28
- spec.add_development_dependency "pry-byebug", "~> 3.2"
29
- spec.add_development_dependency "pry-nav", "~> 0.2"
30
- spec.add_development_dependency "pry-remote", "~> 0.1"
31
28
  spec.add_development_dependency "rake", "~> 10.4"
32
29
  spec.add_development_dependency "rspec", "~> 3.1"
33
- spec.add_development_dependency "rspec-nc", "~> 0.2"
30
+ spec.add_development_dependency "rspec_junit_formatter"
34
31
  spec.add_development_dependency "rubocop", "0.66"
35
32
  spec.add_development_dependency "rubocop-rspec"
36
- spec.add_development_dependency "terminal-notifier-guard", "~> 1.6", ">= 1.6.1"
37
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: power-types
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Baixas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-10-19 00:00:00.000000000 Z
12
+ date: 2022-08-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 2.1.4
34
+ version: 2.2.15
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 2.1.4
41
+ version: 2.2.15
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: coveralls
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -95,48 +95,6 @@ dependencies:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0.10'
98
- - !ruby/object:Gem::Dependency
99
- name: pry-byebug
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '3.2'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '3.2'
112
- - !ruby/object:Gem::Dependency
113
- name: pry-nav
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '0.2'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '0.2'
126
- - !ruby/object:Gem::Dependency
127
- name: pry-remote
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '0.1'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '0.1'
140
98
  - !ruby/object:Gem::Dependency
141
99
  name: rake
142
100
  requirement: !ruby/object:Gem::Requirement
@@ -166,19 +124,19 @@ dependencies:
166
124
  - !ruby/object:Gem::Version
167
125
  version: '3.1'
168
126
  - !ruby/object:Gem::Dependency
169
- name: rspec-nc
127
+ name: rspec_junit_formatter
170
128
  requirement: !ruby/object:Gem::Requirement
171
129
  requirements:
172
- - - "~>"
130
+ - - ">="
173
131
  - !ruby/object:Gem::Version
174
- version: '0.2'
132
+ version: '0'
175
133
  type: :development
176
134
  prerelease: false
177
135
  version_requirements: !ruby/object:Gem::Requirement
178
136
  requirements:
179
- - - "~>"
137
+ - - ">="
180
138
  - !ruby/object:Gem::Version
181
- version: '0.2'
139
+ version: '0'
182
140
  - !ruby/object:Gem::Dependency
183
141
  name: rubocop
184
142
  requirement: !ruby/object:Gem::Requirement
@@ -207,26 +165,6 @@ dependencies:
207
165
  - - ">="
208
166
  - !ruby/object:Gem::Version
209
167
  version: '0'
210
- - !ruby/object:Gem::Dependency
211
- name: terminal-notifier-guard
212
- requirement: !ruby/object:Gem::Requirement
213
- requirements:
214
- - - "~>"
215
- - !ruby/object:Gem::Version
216
- version: '1.6'
217
- - - ">="
218
- - !ruby/object:Gem::Version
219
- version: 1.6.1
220
- type: :development
221
- prerelease: false
222
- version_requirements: !ruby/object:Gem::Requirement
223
- requirements:
224
- - - "~>"
225
- - !ruby/object:Gem::Version
226
- version: '1.6'
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: 1.6.1
230
168
  description: Power Types for Rails by Platanus
231
169
  email:
232
170
  - ignacio@platan.us
@@ -235,13 +173,13 @@ executables: []
235
173
  extensions: []
236
174
  extra_rdoc_files: []
237
175
  files:
176
+ - ".circleci/config.yml"
177
+ - ".circleci/setup-rubygems.sh"
238
178
  - ".coveralls.yml"
239
179
  - ".gitignore"
240
- - ".hound.yml"
241
180
  - ".rspec"
242
181
  - ".rubocop.yml"
243
182
  - ".ruby-version"
244
- - ".travis.yml"
245
183
  - CODE_OF_CONDUCT.md
246
184
  - Gemfile
247
185
  - Guardfile
@@ -261,9 +199,13 @@ files:
261
199
  - lib/generators/rails/templates/presenter_spec.rb
262
200
  - lib/generators/rails/templates/service.rb
263
201
  - lib/generators/rails/templates/service_spec.rb
202
+ - lib/generators/rails/templates/util.rb
203
+ - lib/generators/rails/templates/util_spec.rb
204
+ - lib/generators/rails/util_generator.rb
264
205
  - lib/power-types.rb
265
206
  - lib/power_types.rb
266
207
  - lib/power_types/errors.rb
208
+ - lib/power_types/patterns/base_util.rb
267
209
  - lib/power_types/patterns/command.rb
268
210
  - lib/power_types/patterns/observer/observable.rb
269
211
  - lib/power_types/patterns/observer/observer.rb
@@ -293,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
293
235
  - !ruby/object:Gem::Version
294
236
  version: '0'
295
237
  requirements: []
296
- rubygems_version: 3.0.8
238
+ rubygems_version: 3.1.6
297
239
  signing_key:
298
240
  specification_version: 4
299
241
  summary: Power Types for Rails by Platanus
data/.hound.yml DELETED
@@ -1,4 +0,0 @@
1
- ---
2
- ruby:
3
- enabled: true
4
- config_file: ".rubocop.yml"
data/.travis.yml DELETED
@@ -1,13 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.5.0
5
- before_install: gem install bundler -v 2.1.4
6
- deploy:
7
- provider: rubygems
8
- api_key:
9
- secure: e5mtRDYciM2I5IxsMJDKKNSHgyQsfmAQEMCgbf1tN+SEmxeJTif0FXfA1M4vZ2y6XL7sza0Pf1hTMIqmEIh4L8tv/JxTOl6ZWkD2l8x+nn/2Hlu5mVsztsBh+qDPWPg29hbvTptOfcLHfAqIboB4L4f5nNuHeeLZQjGD7irwaVil7IntV3oG+XfD1uJzkqO9x7Xw+cN+HzACwZQ3u+XhmedCnMWJdCwai5QZAYlytxqKirYoGgS9pi4ZgAs0ptIT+aG3dG8ckCRvhDiu2iGDrv7AnG+K2MrI7O06g0676Iao1O0xTcW2Yo9uArkVXRo9L3Ghk1T5O5zCPoiF7oLiNlBkHeRGOw/+H+88NxziNaOi9BZswn2ROpFylVPrg8hDvIoOqRZfxqgnCtM2vTdOdyCcPOJgm3nhZl9OZ9aPbE3x/Fh5zXVBFT5Vwz3RV0s9uDuKa6pjphxOGb/be+ZYyPJ/uOU7Wo6Qj+lQ+/YBwbZ2wPJ2qAqb69gRBliYpSFbMsLptKw7YUYNW22yknZHGrhHlok7YDDpotUMMDJmSKUrXvBIPdqq9Y61gXLXE5QxxQkWqAFyhluDDMdIDs0PMkDBl45LvHfPJQZxp8sX+FK5ashmMPgdsDcb8DRK+LYrCHrinMkPcwIME5JeuAnb7bT0ErrtBSq8iAD8sPeI+/Q=
10
- gem: power-types
11
- on:
12
- tags: true
13
- repo: platanus/power-types