administrate-field-money 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ce29868870d5f9dda2388d6a941f7f681ca91bfa
4
+ data.tar.gz: 3baad865093b0fd706deccd4b65350e5801f8191
5
+ SHA512:
6
+ metadata.gz: 118e8604530c18a581d759e8ace8e22b4d4992936b3cc60c4a115ef705ee79919f180ff4b3832ed07e935451d116018ba282e0832ef460ea73e898d6bc79f67d
7
+ data.tar.gz: f37ec19015b36e22c5d2d0c26a91a950087b0aeaa133ea3530eb4551a808135b8175dea6641dd84049a464ce2d06bfb8c089acdd9d246710a00f451a6fdd7fab
@@ -0,0 +1 @@
1
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,155 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ administrate-field-money (0.0.1)
5
+ administrate (~> 0.2.1)
6
+ money (~> 6.7)
7
+ rails (>= 4.2)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ actionmailer (4.2.7.1)
13
+ actionpack (= 4.2.7.1)
14
+ actionview (= 4.2.7.1)
15
+ activejob (= 4.2.7.1)
16
+ mail (~> 2.5, >= 2.5.4)
17
+ rails-dom-testing (~> 1.0, >= 1.0.5)
18
+ actionpack (4.2.7.1)
19
+ actionview (= 4.2.7.1)
20
+ activesupport (= 4.2.7.1)
21
+ rack (~> 1.6)
22
+ rack-test (~> 0.6.2)
23
+ rails-dom-testing (~> 1.0, >= 1.0.5)
24
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
25
+ actionview (4.2.7.1)
26
+ activesupport (= 4.2.7.1)
27
+ builder (~> 3.1)
28
+ erubis (~> 2.7.0)
29
+ rails-dom-testing (~> 1.0, >= 1.0.5)
30
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
31
+ activejob (4.2.7.1)
32
+ activesupport (= 4.2.7.1)
33
+ globalid (>= 0.3.0)
34
+ activemodel (4.2.7.1)
35
+ activesupport (= 4.2.7.1)
36
+ builder (~> 3.1)
37
+ activerecord (4.2.7.1)
38
+ activemodel (= 4.2.7.1)
39
+ activesupport (= 4.2.7.1)
40
+ arel (~> 6.0)
41
+ activesupport (4.2.7.1)
42
+ i18n (~> 0.7)
43
+ json (~> 1.7, >= 1.7.7)
44
+ minitest (~> 5.1)
45
+ thread_safe (~> 0.3, >= 0.3.4)
46
+ tzinfo (~> 1.1)
47
+ administrate (0.2.2)
48
+ autoprefixer-rails (~> 6.0)
49
+ datetime_picker_rails (~> 0.0.7)
50
+ jquery-rails (~> 4.0)
51
+ kaminari (~> 0.16)
52
+ momentjs-rails (~> 2.8)
53
+ neat (~> 1.1)
54
+ normalize-rails (~> 3.0)
55
+ rails (~> 4.2)
56
+ sass-rails (~> 5.0)
57
+ selectize-rails (~> 0.6)
58
+ arel (6.0.3)
59
+ autoprefixer-rails (6.5.3)
60
+ execjs
61
+ builder (3.2.2)
62
+ concurrent-ruby (1.0.2)
63
+ datetime_picker_rails (0.0.7)
64
+ momentjs-rails (>= 2.8.1)
65
+ erubis (2.7.0)
66
+ execjs (2.7.0)
67
+ globalid (0.3.7)
68
+ activesupport (>= 4.1.0)
69
+ i18n (0.7.0)
70
+ jquery-rails (4.2.1)
71
+ rails-dom-testing (>= 1, < 3)
72
+ railties (>= 4.2.0)
73
+ thor (>= 0.14, < 2.0)
74
+ json (1.8.3)
75
+ kaminari (0.17.0)
76
+ actionpack (>= 3.0.0)
77
+ activesupport (>= 3.0.0)
78
+ loofah (2.0.3)
79
+ nokogiri (>= 1.5.9)
80
+ mail (2.6.4)
81
+ mime-types (>= 1.16, < 4)
82
+ mime-types (3.1)
83
+ mime-types-data (~> 3.2015)
84
+ mime-types-data (3.2016.0521)
85
+ mini_portile2 (2.1.0)
86
+ minitest (5.9.1)
87
+ momentjs-rails (2.15.1)
88
+ railties (>= 3.1)
89
+ money (6.7.1)
90
+ i18n (>= 0.6.4, <= 0.7.0)
91
+ sixarm_ruby_unaccent (>= 1.1.1, < 2)
92
+ neat (1.8.0)
93
+ sass (>= 3.3)
94
+ thor (~> 0.19)
95
+ nokogiri (1.6.8.1)
96
+ mini_portile2 (~> 2.1.0)
97
+ normalize-rails (3.0.3)
98
+ rack (1.6.5)
99
+ rack-test (0.6.3)
100
+ rack (>= 1.0)
101
+ rails (4.2.7.1)
102
+ actionmailer (= 4.2.7.1)
103
+ actionpack (= 4.2.7.1)
104
+ actionview (= 4.2.7.1)
105
+ activejob (= 4.2.7.1)
106
+ activemodel (= 4.2.7.1)
107
+ activerecord (= 4.2.7.1)
108
+ activesupport (= 4.2.7.1)
109
+ bundler (>= 1.3.0, < 2.0)
110
+ railties (= 4.2.7.1)
111
+ sprockets-rails
112
+ rails-deprecated_sanitizer (1.0.3)
113
+ activesupport (>= 4.2.0.alpha)
114
+ rails-dom-testing (1.0.7)
115
+ activesupport (>= 4.2.0.beta, < 5.0)
116
+ nokogiri (~> 1.6.0)
117
+ rails-deprecated_sanitizer (>= 1.0.1)
118
+ rails-html-sanitizer (1.0.3)
119
+ loofah (~> 2.0)
120
+ railties (4.2.7.1)
121
+ actionpack (= 4.2.7.1)
122
+ activesupport (= 4.2.7.1)
123
+ rake (>= 0.8.7)
124
+ thor (>= 0.18.1, < 2.0)
125
+ rake (11.3.0)
126
+ sass (3.4.22)
127
+ sass-rails (5.0.6)
128
+ railties (>= 4.0.0, < 6)
129
+ sass (~> 3.1)
130
+ sprockets (>= 2.8, < 4.0)
131
+ sprockets-rails (>= 2.0, < 4.0)
132
+ tilt (>= 1.1, < 3)
133
+ selectize-rails (0.12.4)
134
+ sixarm_ruby_unaccent (1.1.1)
135
+ sprockets (3.7.0)
136
+ concurrent-ruby (~> 1.0)
137
+ rack (> 1, < 3)
138
+ sprockets-rails (3.2.0)
139
+ actionpack (>= 4.0)
140
+ activesupport (>= 4.0)
141
+ sprockets (>= 3.0.0)
142
+ thor (0.19.1)
143
+ thread_safe (0.3.5)
144
+ tilt (2.0.5)
145
+ tzinfo (1.2.2)
146
+ thread_safe (~> 0.1)
147
+
148
+ PLATFORMS
149
+ ruby
150
+
151
+ DEPENDENCIES
152
+ administrate-field-money!
153
+
154
+ BUNDLED WITH
155
+ 1.13.6
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015-2016 z.productions.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,40 @@
1
+ # Administrate::Field::Money
2
+
3
+ [![Code Climate](https://codeclimate.com/github/z-productions/administrate-field-money/badges/gpa.svg)](https://codeclimate.com/github/z-productions/administrate-field-money)
4
+
5
+ A plugin to deal with money in [Administrate], with the help of [Money] gem.
6
+
7
+ **Attribute must be in cents**.
8
+
9
+ ![Demo](https://raw.githubusercontent.com/z-productions/administrate-field-money/master/demo.gif)
10
+
11
+ ## Usage
12
+
13
+ Add it to your `Gemfile`:
14
+
15
+ ```ruby
16
+ gem 'administrate-field-money', '~> 0.0.1'
17
+ ```
18
+
19
+ Run:
20
+
21
+ ```bash
22
+ $ bundle install
23
+ ```
24
+
25
+ Add to your `FooDashboard`:
26
+
27
+ ```ruby
28
+ ATTRIBUTE_TYPES = {
29
+ bar: Field::Money.with_options(unit: 'USD'), # EUR, CAD, GBP, AUD, JPY, ...
30
+ }.freeze
31
+ ```
32
+ The field will figure out the appropriate thousand separator and decimal delimiter for the unit.
33
+
34
+ ## About
35
+
36
+ Administrate::Field::Money is maintained by [z.productions].
37
+
38
+ [Administrate]: https://github.com/thoughtbot/administrate
39
+ [Money]: https://github.com/RubyMoney/money
40
+ [z.productions]: https://www.z.productions/
@@ -0,0 +1,20 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'administrate-field-money'
5
+ gem.version = '0.0.1'
6
+ gem.authors = ['Michele Gerarduzzi']
7
+ gem.email = ['michele.gerarduzzi@gmail.com']
8
+ gem.homepage = 'https://github.com/z-productions/administrate-field-money'
9
+ gem.summary = 'A plugin to deal with money in Administrate'
10
+ gem.description = gem.summary
11
+ gem.license = 'MIT'
12
+
13
+ gem.require_paths = ['lib']
14
+ gem.files = `git ls-files`.split("\n")
15
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+
17
+ gem.add_runtime_dependency 'administrate', '~> 0.2.1'
18
+ gem.add_runtime_dependency 'rails', '>= 4.2'
19
+ gem.add_runtime_dependency 'money', '~> 6.7'
20
+ end
@@ -0,0 +1,14 @@
1
+ //= require jquery.maskMoney.min
2
+
3
+ $(function() {
4
+ $('.maskmoney').each(function() {
5
+ // Apply the mask and trigger it
6
+ $(this).maskMoney().trigger('mask');
7
+
8
+ // Sync unmasked value with hidden field
9
+ $(this).on('change keyup paste', function() {
10
+ var unmaskedMoneyCents = $(this).maskMoney('unmasked')[0] * 100;
11
+ $(this).siblings('[type="hidden"]').val(unmaskedMoneyCents);
12
+ })
13
+ });
14
+ });
@@ -0,0 +1,23 @@
1
+ <%#
2
+ # Money Form Partial
3
+
4
+ This partial renders a masked input element.
5
+ It keeps the (unmasked) value in sync with a sibling hidden field
6
+ that gets submitted with the form.
7
+
8
+ ## Local variables:
9
+
10
+ - `f`:
11
+ A Rails form generator, used to help create the appropriate input fields.
12
+ - `field`:
13
+ An instance of Administrate::Field::Money.
14
+ %>
15
+
16
+ <div class="field-unit__label">
17
+ <%= f.label field.attribute %>
18
+ </div>
19
+ <div class="field-unit__field">
20
+ <%= text_field_tag field.attribute, field.data, class: 'maskmoney',
21
+ data: { prefix: field.money.symbol, thousands: field.money.separator, decimal: field.money.delimiter } %>
22
+ <%= f.hidden_field field.attribute %>
23
+ </div>
@@ -0,0 +1,13 @@
1
+ <%#
2
+ # Money Index Partial
3
+
4
+ This partial renders a money amount to be
5
+ displayed on a resource's index page.
6
+
7
+ ## Local variables:
8
+
9
+ - `field`:
10
+ An instance of Administrate::Field::Money.
11
+ %>
12
+
13
+ <%= field %>
@@ -0,0 +1,13 @@
1
+ <%#
2
+ # Money Show Partial
3
+
4
+ This partial renders a date to be displayed
5
+ on a resource's show page.
6
+
7
+ ## Local variables:
8
+
9
+ - `field`:
10
+ An instance of Administrate::Field::Money.
11
+ %>
12
+
13
+ <%= field %>
Binary file
@@ -0,0 +1,24 @@
1
+ require 'administrate/field/text'
2
+ require 'administrate/engine'
3
+
4
+ module Administrate
5
+ module Field
6
+ class Money < Administrate::Field::Text
7
+ class Engine < ::Rails::Engine
8
+ Administrate::Engine.add_javascript 'administrate-field-money/application'
9
+ end
10
+
11
+ def to_s
12
+ money.format
13
+ end
14
+
15
+ def money
16
+ @money ||= ::Money.new(data, code)
17
+ end
18
+
19
+ def code
20
+ options.fetch(:code, 'USD')
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ /*
2
+ * jquery-maskmoney - v3.0.2
3
+ * jQuery plugin to mask data entry in the input text in the form of money (currency)
4
+ * https://github.com/plentz/jquery-maskmoney
5
+ *
6
+ * Made by Diego Plentz
7
+ * Under MIT License (https://raw.github.com/plentz/jquery-maskmoney/master/LICENSE)
8
+ */
9
+ !function($){"use strict";$.browser||($.browser={},$.browser.mozilla=/mozilla/.test(navigator.userAgent.toLowerCase())&&!/webkit/.test(navigator.userAgent.toLowerCase()),$.browser.webkit=/webkit/.test(navigator.userAgent.toLowerCase()),$.browser.opera=/opera/.test(navigator.userAgent.toLowerCase()),$.browser.msie=/msie/.test(navigator.userAgent.toLowerCase()));var a={destroy:function(){return $(this).unbind(".maskMoney"),$.browser.msie&&(this.onpaste=null),this},mask:function(a){return this.each(function(){var b,c=$(this);return"number"==typeof a&&(c.trigger("mask"),b=$(c.val().split(/\D/)).last()[0].length,a=a.toFixed(b),c.val(a)),c.trigger("mask")})},unmasked:function(){return this.map(function(){var a,b=$(this).val()||"0",c=-1!==b.indexOf("-");return $(b.split(/\D/).reverse()).each(function(b,c){return c?(a=c,!1):void 0}),b=b.replace(/\D/g,""),b=b.replace(new RegExp(a+"$"),"."+a),c&&(b="-"+b),parseFloat(b)})},init:function(a){return a=$.extend({prefix:"",suffix:"",affixesStay:!0,thousands:",",decimal:".",precision:2,allowZero:!1,allowNegative:!1},a),this.each(function(){function b(){var a,b,c,d,e,f=s.get(0),g=0,h=0;return"number"==typeof f.selectionStart&&"number"==typeof f.selectionEnd?(g=f.selectionStart,h=f.selectionEnd):(b=document.selection.createRange(),b&&b.parentElement()===f&&(d=f.value.length,a=f.value.replace(/\r\n/g,"\n"),c=f.createTextRange(),c.moveToBookmark(b.getBookmark()),e=f.createTextRange(),e.collapse(!1),c.compareEndPoints("StartToEnd",e)>-1?g=h=d:(g=-c.moveStart("character",-d),g+=a.slice(0,g).split("\n").length-1,c.compareEndPoints("EndToEnd",e)>-1?h=d:(h=-c.moveEnd("character",-d),h+=a.slice(0,h).split("\n").length-1)))),{start:g,end:h}}function c(){var a=!(s.val().length>=s.attr("maxlength")&&s.attr("maxlength")>=0),c=b(),d=c.start,e=c.end,f=c.start!==c.end&&s.val().substring(d,e).match(/\d/)?!0:!1,g="0"===s.val().substring(0,1);return a||f||g}function d(a){s.each(function(b,c){if(c.setSelectionRange)c.focus(),c.setSelectionRange(a,a);else if(c.createTextRange){var d=c.createTextRange();d.collapse(!0),d.moveEnd("character",a),d.moveStart("character",a),d.select()}})}function e(b){var c="";return b.indexOf("-")>-1&&(b=b.replace("-",""),c="-"),c+a.prefix+b+a.suffix}function f(b){var c,d,f,g=b.indexOf("-")>-1&&a.allowNegative?"-":"",h=b.replace(/[^0-9]/g,""),i=h.slice(0,h.length-a.precision);return i=i.replace(/^0*/g,""),i=i.replace(/\B(?=(\d{3})+(?!\d))/g,a.thousands),""===i&&(i="0"),c=g+i,a.precision>0&&(d=h.slice(h.length-a.precision),f=new Array(a.precision+1-d.length).join(0),c+=a.decimal+f+d),e(c)}function g(a){var b,c=s.val().length;s.val(f(s.val())),b=s.val().length,a-=c-b,d(a)}function h(){var a=s.val();s.val(f(a))}function i(){var b=s.val();return a.allowNegative?""!==b&&"-"===b.charAt(0)?b.replace("-",""):"-"+b:b}function j(a){a.preventDefault?a.preventDefault():a.returnValue=!1}function k(a){a=a||window.event;var d,e,f,h,k,l=a.which||a.charCode||a.keyCode;return void 0===l?!1:48>l||l>57?45===l?(s.val(i()),!1):43===l?(s.val(s.val().replace("-","")),!1):13===l||9===l?!0:!$.browser.mozilla||37!==l&&39!==l||0!==a.charCode?(j(a),!0):!0:c()?(j(a),d=String.fromCharCode(l),e=b(),f=e.start,h=e.end,k=s.val(),s.val(k.substring(0,f)+d+k.substring(h,k.length)),g(f+1),!1):!1}function l(c){c=c||window.event;var d,e,f,h,i,k=c.which||c.charCode||c.keyCode;return void 0===k?!1:(d=b(),e=d.start,f=d.end,8===k||46===k||63272===k?(j(c),h=s.val(),e===f&&(8===k?""===a.suffix?e-=1:(i=h.split("").reverse().join("").search(/\d/),e=h.length-i-1,f=e+1):f+=1),s.val(h.substring(0,e)+h.substring(f,h.length)),g(e),!1):9===k?!0:!0)}function m(){r=s.val(),h();var a,b=s.get(0);b.createTextRange&&(a=b.createTextRange(),a.collapse(!1),a.select())}function n(){setTimeout(function(){h()},0)}function o(){var b=parseFloat("0")/Math.pow(10,a.precision);return b.toFixed(a.precision).replace(new RegExp("\\.","g"),a.decimal)}function p(b){if($.browser.msie&&k(b),""===s.val()||s.val()===e(o()))a.allowZero?a.affixesStay?s.val(e(o())):s.val(o()):s.val("");else if(!a.affixesStay){var c=s.val().replace(a.prefix,"").replace(a.suffix,"");s.val(c)}s.val()!==r&&s.change()}function q(){var a,b=s.get(0);b.setSelectionRange?(a=s.val().length,b.setSelectionRange(a,a)):s.val(s.val())}var r,s=$(this);a=$.extend(a,s.data()),s.unbind(".maskMoney"),s.bind("keypress.maskMoney",k),s.bind("keydown.maskMoney",l),s.bind("blur.maskMoney",p),s.bind("focus.maskMoney",m),s.bind("click.maskMoney",q),s.bind("cut.maskMoney",n),s.bind("paste.maskMoney",n),s.bind("mask.maskMoney",h)})}};$.fn.maskMoney=function(b){return a[b]?a[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?($.error("Method "+b+" does not exist on jQuery.maskMoney"),void 0):a.init.apply(this,arguments)}}(window.jQuery||window.Zepto);
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: administrate-field-money
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Michele Gerarduzzi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: administrate
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '4.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '4.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: money
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '6.7'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '6.7'
55
+ description: A plugin to deal with money in Administrate
56
+ email:
57
+ - michele.gerarduzzi@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - Gemfile.lock
65
+ - LICENSE.md
66
+ - README.md
67
+ - administrate-field-money.gemspec
68
+ - app/assets/javascripts/administrate-field-money/application.js
69
+ - app/views/fields/money/_form.html.erb
70
+ - app/views/fields/money/_index.html.erb
71
+ - app/views/fields/money/_show.html.erb
72
+ - demo.gif
73
+ - lib/administrate/field/money.rb
74
+ - vendor/assets/javascripts/jquery.maskMoney.min.js
75
+ homepage: https://github.com/z-productions/administrate-field-money
76
+ licenses:
77
+ - MIT
78
+ metadata: {}
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: '0'
93
+ requirements: []
94
+ rubyforge_project:
95
+ rubygems_version: 2.5.1
96
+ signing_key:
97
+ specification_version: 4
98
+ summary: A plugin to deal with money in Administrate
99
+ test_files: []