dominar-rails 1.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: 7b527382ef5ecb43beaf98d3ad40aa02aafba8ba
4
+ data.tar.gz: f7e7022d244320829fd1d1f1b9c52957187fb848
5
+ SHA512:
6
+ metadata.gz: 28098f746b9d4b0cf4827a129f6b3f01cb192f1469e84328133f0a41ac7addc14dc1d3cf87aa1b28211add6cd4893716d8162163bbcd1ff2806c3efd7b81ef2e
7
+ data.tar.gz: 740753e3a15a4908f220705aa26d739415ee75f4b83fd8fa73f83714c86124b09e423a8c3e2e228a8a5a730d6a8ce3379d6d0ba128088499c761c6a5028c2750
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Nilanga Saluwadana MIT License
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,57 @@
1
+ Dominar Rails
2
+ ====
3
+
4
+ Lightweight and highly configurable boostrap rails validator built on-top of [Dominar.js](https://github.com/garygreen/dominar).
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ gem "dominar-rails"
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ ## Usage
17
+
18
+ Add the following to your `app/assets/javascripts/application.js`:
19
+
20
+ //= require dominar-standalone.min
21
+
22
+ If you already have validator.js installed then just simply use:
23
+
24
+ //= require dominar.min
25
+
26
+
27
+ See the complete [Dominar.js documentation](https://github.com/garygreen/dominar)
28
+
29
+ Demo [Dominar.js documentation](http://garygreen.github.io/dominar/).
30
+
31
+ ## Example
32
+
33
+ var validator = new Dominar($('#new_user'), {
34
+ "user[name]": {
35
+ rules: 'required|min:3|max:10'
36
+ },
37
+ user[notes]: {
38
+ rules: 'required|min:5|max:20'
39
+ },
40
+ user[group]: {
41
+ rules: 'required|in:guest,admin'
42
+ }
43
+ });
44
+
45
+
46
+ ## Versions
47
+
48
+ The gem follows Dominar.js' versions. If the gem version is `1.0`, then `1.0` is the version of Dominar.js and `0`
49
+ is the patch level of the gem itself.
50
+
51
+ ## Contributing
52
+
53
+ 1. Fork it
54
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
55
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
56
+ 4. Push to the branch (`git push origin my-new-feature`)
57
+ 5. Create new Pull Request
@@ -0,0 +1,8 @@
1
+ require 'rails/engine'
2
+
3
+ module Dominar
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module Dominar
2
+ module Rails
3
+ VERSION = "1.0.1"
4
+ end
5
+ end
@@ -0,0 +1 @@
1
+ /* dominar.js - Copyright 2015 Gary Green. Licensed under the Apache License, Version 2.0 */!function(){function t(){for(var e,i,r,n,s,a=arguments[0]||{},o=1,u=arguments.length;u>o;o++)if(null!=(n=arguments[o]))for(r in n)e=a[r],i=n[r],a!==i&&(i&&"object"==typeof i?(s=e&&"object"==typeof e?e:{},a[r]=t(s,i)):void 0!==i&&(a[r]=i));return a}var e={accepted:"The :attribute must be accepted.",alpha:"The :attribute field must contain only alphabetic characters.",alpha_dash:"The :attribute field may only contain alpha-numeric characters, as well as dashes and underscores.",alpha_num:"The :attribute field must be alphanumeric.",confirmed:"The :attribute confirmation does not match.",email:"The :attribute format is invalid.",def:"The :attribute attribute has errors.",digits:"The :attribute must be :digits digits.",different:"The :attribute and :different must be different.","in":"The selected :attribute is invalid.",integer:"The :attribute must be an integer.",min:{numeric:"The :attribute must be at least :min.",string:"The :attribute must be at least :min characters."},max:{numeric:"The :attribute must be less than :max.",string:"The :attribute must be less than :max characters."},not_in:"The selected :attribute is invalid.",numeric:"The :attribute must be a number.",required:"The :attribute field is required.",same:"The :attribute and :same fields must match.",size:{numeric:"The :attribute must be :size.",string:"The :attribute must be :size characters."},url:"The :attribute format is invalid.",regex:"The :attribute format is invalid"};Array.prototype.forEach||(Array.prototype.forEach=function(t,e){"use strict";var i,r;for(i=0,r=this.length;r>i;++i)i in this&&t.call(e,this[i],i,this)});var i=function(){};i.prototype={constructor:i,get:function(t){return this[t]?this[t]:[]},first:function(t){return this[t]?this[t][0]:!1},all:function(){return this},has:function(t){return this[t]&&this[t].length>0?!0:!1}};var r=function(r,n,s){this.input=r,this.rules=n,this.messages=t({},e,s||{}),this.errors=new i,this.errorCount=0,this.check()};r.prototype={constructor:r,_createMessage:function(t,e){var i,r;if("string"==typeof t&&"object"==typeof e){i=t;for(r in e)e.hasOwnProperty(r)&&(i=i.replace(":"+r,e[r]))}return i},check:function(){var t=this;this._each(this.rules,function(e){var i=this.rules[e];"string"==typeof i&&(i=this.rules[e].split("|"));var r=this.input[e];i.forEach(function(i){var n,s,a,o,u=t._extractRuleAndRuleValue(i),c=u.rule,h=u.ruleValue;n=t.validate[c].call(t,r,h,e),n||(t.errors.hasOwnProperty(e)||(t.errors[e]=[]),s=t._createErrorMessageTemplateData(e,c,h),a=t._selectMessageTemplate(c,r,e),o=t._createMessage(a,s),t._addErrorMessage(e,o))})},this)},_each:function(t,e,i){for(var r in t)e.call(i,r)},_extractRuleAndRuleValue:function(t){var e,i={};return i.rule=t,t.indexOf(":")>=0&&(e=t.split(":"),i.rule=e[0],i.ruleValue=e.slice(1).join(":")),i},_addErrorMessage:function(t,e){this.errors[t].push(e),this.errorCount++},_createErrorMessageTemplateData:function(t,e,i){var r={attribute:t};return r[e]=i,r},_selectMessageTemplate:function(t,e,i){var r,n=this.messages;if(n.hasOwnProperty(t+"."+i))r=n[t+"."+i];else if(n.hasOwnProperty(t)){if(r=n[t],"object"==typeof r)switch(typeof e){case"number":r=r.numeric;break;case"string":r=r.string}}else r=n.def;return r},passes:function(){return 0===this.errorCount?!0:!1},fails:function(){return this.errorCount>0?!0:!1},validate:{required:function(t){var e;return void 0===t||null===t?!1:(e=String(t).replace(/\s/g,""),e.length>0?!0:!1)},size:function(t,e){return t?(e=parseFloat(e),"number"==typeof t?t===e?!0:!1:t.length===e?!0:!1):!0},min:function(t,e){return void 0===t||""===t?!0:"number"==typeof t?t>=e?!0:!1:t.length>=e?!0:!1},max:function(t,e){return void 0===t||""===t?!0:"number"==typeof t?e>=t?!0:!1:t.length<=e?!0:!1},email:function(t){var e=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return void 0===t||""===t?!0:e.test(t)},numeric:function(t){var e;return void 0===t||""===t?!0:(e=Number(t),"number"!=typeof e||isNaN(e)||"boolean"==typeof t?!1:!0)},url:function(t){return void 0===t||""===t?!0:/^https?:\/\/\S+/.test(t)},alpha:function(t){return void 0===t||""===t?!0:/^[a-zA-Z]+$/.test(t)},alpha_dash:function(t){return void 0===t||""===t?!0:/^[a-zA-Z0-9_\-]+$/.test(t)},alpha_num:function(t){return void 0===t||""===t?!0:/^[a-zA-Z0-9]+$/.test(t)},same:function(t,e){var i=this.input[e],r=t;return i===r?!0:!1},different:function(t,e){var i=this.input[e],r=t;return i!==r?!0:!1},"in":function(t,e){var i,r,n;if(t){i=e.split(","),r=i.length,n=!1,t=String(t);for(var s=0;r>s;s++)if(t===i[s]){n=!0;break}return n}return!0},not_in:function(t,e){var i=e.split(","),r=i.length,n=!0;t=String(t);for(var s=0;r>s;s++)if(t===i[s]){n=!1;break}return n},accepted:function(t){return"on"===t||"yes"===t||1===t||"1"===t?!0:!1},confirmed:function(t,e,i){var r=i+"_confirmation";return this.input[r]===t?!0:!1},integer:function(t){return void 0===t||""===t?!0:(t=String(t),/^\d+$/.test(t)?!0:!1)},digits:function(t,e){return this.validate.numeric(t)&&String(t).length===parseInt(e)?!0:!1},regex:function(t,e){var i=/[g|i|m]{1,3}$/,r=e.match(i);return r=r?r[0]:"i",e=e.replace(i,"").slice(1,-1),e=new RegExp(e,r),!!t.match(e)}}},r.register=function(t,i,r){this.prototype.validate[t]=i,e[t]="string"==typeof r?r:e.def},r.make=function(t,e,i){return new r(t,e,i)},"undefined"!=typeof module&&module.exports?module.exports=r:"function"==typeof define&&define.amd?define("Validator",[],function(){return r}):window.Validator=r}(),function(t){"undefined"!=typeof exports?module.exports=t:window.Dominar=t(jQuery,Validator)}(function(t,e){function i(e,i,r){this.$form=e,this.options=i||{},this.config=r||t.extend({},this.configDefaults,r),this.fields={},this.bindEvents()}function r(e,i,r){this.name=e,this.options=r,this.$field=i,this.$container=i.closest(this.options.container),this.$message=this.options.message?this.getMessageElement():t(),this.$feedback=this.options.feedback?this.getFeedbackElement():t()}return i.prototype={defaults:{container:".form-group",delay:300,delayTriggers:["keyup"],rules:"",remoteRule:t.noop,triggers:["keyup","focusout","change"],message:!0,customMessages:{},feedback:!0,feedbackIcons:{success:'<i class="glyphicon glyphicon-check"></i>',error:'<i class="glyphicon glyphicon-remove"></i>'}},configDefaults:{validateOnSubmit:!0},DominarField:r,bindEvents:function(){var t=this;this.$form.on("keyup blur change","textarea, input, select",function(e){t.fireValidate.call(t,e)}),this.$form.on("submit",function(e){t.fireSubmit.call(t,e)})},getField:function(t){if("string"==typeof t)return this.fields[t];var e=t.attr("name"),i=this.fields[e];return!i&&this.options[e]&&(i=new this.DominarField(e,t,this.getOptions(e)),this.fields[e]=i,this.trigger("init-field",{dominarField:i})),i},getOptions:function(e){var i=this.options[e];return t.extend({},this.defaults,i)},add:function(t,e){var i=this;return t.each(function(){i.options[this.name]=e}),this},trigger:function(e,i,r){var i=t.extend({},{dominar:this},i),n=t.Event("dominar."+e,i);return this.$form.trigger(n),r&&!n.isDefaultPrevented()&&r(),n},fireValidate:function(e){var i=t(e.target),r=this.getField(i);r&&r.fireValidate(e)},fireSubmit:function(t){var e=this;if(e.config.validateOnSubmit){var i=function(){t.target.submit()},r=function(){e.trigger("submit-failed")},n=function(){t.preventDefault(),e.validateAll(function(){e.trigger("submit-passed",{},i)},function(){e.trigger("submit-failed",{},r)})};e.trigger("submit",{},n)}},validate:function(t,e,i){var r=this.getField(t);r&&r.validate(e,i)},validateDelayed:function(t,e,i){var r=this.getField(t);r&&r.validateDelayed(e,i)},validateAll:function(e,i){var r,n,s=[];e=e||t.noop,i=i||t.noop;for(var a in this.options)n=t.Deferred(),r=this.getField(a)||this.getField(this.$form.find('[name="'+a+'"]')),s.push(n),function(t,e){t.validate(function(){e.resolve()},function(t){e.reject(t)})}(r,n);return t.when.apply(t,s).done(e).fail(i)}},i.register=function(t,i,r){e.register(t,i,r)},r.prototype={validate:function(e,i){var r=this.getName(),n=this.getValue(),s=this,a=t.Deferred();e=e||t.noop,i=i||t.noop,this.validator&&delete this.validator,this.validator=this.getValidator(),t.when(a,this.options.remoteRule(n)).done(function(){s.showSuccess(),e()}).fail(function(t){"string"!=typeof t&&(t=t.responseJSON.message),s.showError(t),i(t)}),!this.validator||this.validator.passes()?a.resolve():a.reject(this.validator.errors.first(r))},validateDelayed:function(e,i){var r=this,n=this.options.delay;e=e||t.noop,i=i||t.noop,clearTimeout(this.delayTimer),n?this.delayTimer=setTimeout(function(){r.validate.apply(r,[e,i])},n):this.validate(e,i)},fireValidate:function(t){var e=this.getTrigger(t);e.validate&&(e.delay?this.validateDelayed():this.validate())},getValidationOptions:function(){var t=this.getName(),e={},i={};e[t]=this.getValue(),i[t]=this.getRules(),0===i[t].length&&delete i[t];var r={data:e,rules:i,customMessages:this.options.customMessages};return this.options.validatorOptions&&(r=this.options.validatorOptions.call(this,r)),r},getValidator:function(){var t=this.getValidationOptions(),i=new e(t.data,t.rules,t.customMessages);return i},getRules:function(){return this.options.rules},getName:function(){return this.name},getValue:function(){return this.$field.val()},getTrigger:function(e){var i=e.type,r="keyup"==i,n=t.inArray(i,this.options.triggers)>-1,s=t.inArray(i,this.options.delayTriggers)>-1,a=(r&&9!==e.keyCode||!r)&&n;return{validate:a,delay:s}},$form:function(){return this.$container.closest("form")},getMessageElement:function(){var e=this.$container.find(".help-block");return 0===e.length&&(e=t('<span class="help-block"/>').insertAfter(this.$field)),e},getFeedbackElement:function(){var e=this.$container.find(".form-control-feedback");return 0===e.length&&(e=t('<span class="form-control-feedback"/>').insertAfter(this.$message.length?this.$message:this.$field)),e},showError:function(t){this.reset(),this.$container.addClass("has-error"),this.options.message&&this.$message.html(t||""),this.options.feedback&&this.showFeedback("error")},showSuccess:function(t){this.reset(),this.$container.addClass("has-success"),this.options.message&&this.$message.html(t||""),this.options.feedback&&this.showFeedback("success")},showFeedback:function(t){this.$container.addClass("has-feedback"),this.$feedback.html(this.options.feedbackIcons[t])},reset:function(){this.$container.removeClass("has-error has-success has-feedback"),this.$message.empty(),this.$feedback.empty()}},i});
@@ -0,0 +1 @@
1
+ /* dominar.js - Copyright 2015 Gary Green. Licensed under the Apache License, Version 2.0 */!function(t){"undefined"!=typeof exports?module.exports=t:window.Dominar=t(jQuery,Validator)}(function(t,e){function i(e,i,s){this.$form=e,this.options=i||{},this.config=s||t.extend({},this.configDefaults,s),this.fields={},this.bindEvents()}function s(e,i,s){this.name=e,this.options=s,this.$field=i,this.$container=i.closest(this.options.container),this.$message=this.options.message?this.getMessageElement():t(),this.$feedback=this.options.feedback?this.getFeedbackElement():t()}return i.prototype={defaults:{container:".form-group",delay:300,delayTriggers:["keyup"],rules:"",remoteRule:t.noop,triggers:["keyup","focusout","change"],message:!0,customMessages:{},feedback:!0,feedbackIcons:{success:'<i class="glyphicon glyphicon-check"></i>',error:'<i class="glyphicon glyphicon-remove"></i>'}},configDefaults:{validateOnSubmit:!0},DominarField:s,bindEvents:function(){var t=this;this.$form.on("keyup blur change","textarea, input, select",function(e){t.fireValidate.call(t,e)}),this.$form.on("submit",function(e){t.fireSubmit.call(t,e)})},getField:function(t){if("string"==typeof t)return this.fields[t];var e=t.attr("name"),i=this.fields[e];return!i&&this.options[e]&&(i=new this.DominarField(e,t,this.getOptions(e)),this.fields[e]=i,this.trigger("init-field",{dominarField:i})),i},getOptions:function(e){var i=this.options[e];return t.extend({},this.defaults,i)},add:function(t,e){var i=this;return t.each(function(){i.options[this.name]=e}),this},trigger:function(e,i,s){var i=t.extend({},{dominar:this},i),n=t.Event("dominar."+e,i);return this.$form.trigger(n),s&&!n.isDefaultPrevented()&&s(),n},fireValidate:function(e){var i=t(e.target),s=this.getField(i);s&&s.fireValidate(e)},fireSubmit:function(t){var e=this;if(e.config.validateOnSubmit){var i=function(){t.target.submit()},s=function(){e.trigger("submit-failed")},n=function(){t.preventDefault(),e.validateAll(function(){e.trigger("submit-passed",{},i)},function(){e.trigger("submit-failed",{},s)})};e.trigger("submit",{},n)}},validate:function(t,e,i){var s=this.getField(t);s&&s.validate(e,i)},validateDelayed:function(t,e,i){var s=this.getField(t);s&&s.validateDelayed(e,i)},validateAll:function(e,i){var s,n,a=[];e=e||t.noop,i=i||t.noop;for(var o in this.options)n=t.Deferred(),s=this.getField(o)||this.getField(this.$form.find('[name="'+o+'"]')),a.push(n),function(t,e){t.validate(function(){e.resolve()},function(t){e.reject(t)})}(s,n);return t.when.apply(t,a).done(e).fail(i)}},i.register=function(t,i,s){e.register(t,i,s)},s.prototype={validate:function(e,i){var s=this.getName(),n=this.getValue(),a=this,o=t.Deferred();e=e||t.noop,i=i||t.noop,this.validator&&delete this.validator,this.validator=this.getValidator(),t.when(o,this.options.remoteRule(n)).done(function(){a.showSuccess(),e()}).fail(function(t){"string"!=typeof t&&(t=t.responseJSON.message),a.showError(t),i(t)}),!this.validator||this.validator.passes()?o.resolve():o.reject(this.validator.errors.first(s))},validateDelayed:function(e,i){var s=this,n=this.options.delay;e=e||t.noop,i=i||t.noop,clearTimeout(this.delayTimer),n?this.delayTimer=setTimeout(function(){s.validate.apply(s,[e,i])},n):this.validate(e,i)},fireValidate:function(t){var e=this.getTrigger(t);e.validate&&(e.delay?this.validateDelayed():this.validate())},getValidationOptions:function(){var t=this.getName(),e={},i={};e[t]=this.getValue(),i[t]=this.getRules(),0===i[t].length&&delete i[t];var s={data:e,rules:i,customMessages:this.options.customMessages};return this.options.validatorOptions&&(s=this.options.validatorOptions.call(this,s)),s},getValidator:function(){var t=this.getValidationOptions(),i=new e(t.data,t.rules,t.customMessages);return i},getRules:function(){return this.options.rules},getName:function(){return this.name},getValue:function(){return this.$field.val()},getTrigger:function(e){var i=e.type,s="keyup"==i,n=t.inArray(i,this.options.triggers)>-1,a=t.inArray(i,this.options.delayTriggers)>-1,o=(s&&9!==e.keyCode||!s)&&n;return{validate:o,delay:a}},$form:function(){return this.$container.closest("form")},getMessageElement:function(){var e=this.$container.find(".help-block");return 0===e.length&&(e=t('<span class="help-block"/>').insertAfter(this.$field)),e},getFeedbackElement:function(){var e=this.$container.find(".form-control-feedback");return 0===e.length&&(e=t('<span class="form-control-feedback"/>').insertAfter(this.$message.length?this.$message:this.$field)),e},showError:function(t){this.reset(),this.$container.addClass("has-error"),this.options.message&&this.$message.html(t||""),this.options.feedback&&this.showFeedback("error")},showSuccess:function(t){this.reset(),this.$container.addClass("has-success"),this.options.message&&this.$message.html(t||""),this.options.feedback&&this.showFeedback("success")},showFeedback:function(t){this.$container.addClass("has-feedback"),this.$feedback.html(this.options.feedbackIcons[t])},reset:function(){this.$container.removeClass("has-error has-success has-feedback"),this.$message.empty(),this.$feedback.empty()}},i});
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dominar-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Nilanga Saluwadana
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.0
27
+ description: dominar.js bundled for Rails Asset Pipeline
28
+ email:
29
+ - nilnaga89@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - LICENSE.txt
35
+ - README.md
36
+ - lib/dominar-rails.rb
37
+ - lib/dominar-rails/version.rb
38
+ - vendor/assets/javascripts/dominar-standalone.min.js
39
+ - vendor/assets/javascripts/dominar.min.js
40
+ homepage: https://github.com/mekishizufu/dominar-rails
41
+ licenses:
42
+ - MIT
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 2.3.0
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: dominar.js bundled for Rails Asset Pipeline
64
+ test_files: []