jquery-final_countdown-rails 2.0.4

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c0f5d07b1e4bf2ea2e7ee87cf8c261c1647033e8
4
+ data.tar.gz: 642dd571dadd44863450f013f2e19716fac8ad16
5
+ SHA512:
6
+ metadata.gz: 286e06d641e7d0cf7446281710ebf681b4f69260cac66c3abe7cd3ce5b15564e2c7ff534389d9dec4aea8f7bcee925720fda66bed3182471893f8a73d2ab54ab
7
+ data.tar.gz: 31987620a0193cb04a0d4e8c6b2fea3ca9597087df3241db54bb8e0ba164165465f0e748932754977ce90c8928f0c67a84bad4911394de7e8b111b9f20fb92c2
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
@@ -0,0 +1,3 @@
1
+ ## v2.0.4 (17 August 2014)
2
+
3
+ Initial Commit.
@@ -0,0 +1,42 @@
1
+ ## Contributing
2
+
3
+ ### Updating jQuery.Countdown (The Final Countdown)
4
+
5
+ If the [jQuery.countdown][jquery-final-countdown] is outdated, please open an issue inform me to update.
6
+
7
+ [jquery-final-countdown]: https://github.com/hilios/jQuery.countdown
8
+
9
+ **Everyone** is encouraged to help improve this project.
10
+
11
+ Ways to contribute:
12
+
13
+ * by reporting bugs
14
+ * by writing or editing documentation
15
+ * by writing code (**no patch is too small**: fix typos, add comments, clean up
16
+ inconsistent whitespace)
17
+ * by refactoring code
18
+ * by fixing [issues][]
19
+ * by reviewing patches
20
+
21
+ [issues]: https://github.com/juanitofatas/comer_de_tapas/issues
22
+
23
+ ## Submit an Issue
24
+
25
+ We use the [GitHub issue tracker][issues] to track bugs and features. Before
26
+ submitting a bug report or feature request, check to make sure it hasn't
27
+ already been submitted. When submitting a bug report, please include a [Gist][]
28
+ that includes a stack trace and any details that may be necessary to reproduce
29
+ the bug, including your gem version, Ruby version, and operating system.
30
+
31
+ [gist]: https://gist.github.com/
32
+
33
+ ## Submit a Pull Request
34
+
35
+ 1. [Fork the repository.][fork]
36
+ 2. Create a topic branch.
37
+ 3. Implement your feature or bug fix.
38
+ 4. Add, commit, and push your changes.
39
+ 5. [Submit a pull request.][pr]
40
+
41
+ [fork]: https://help.github.com/articles/fork-a-repo
42
+ [pr]: https://help.github.com/articles/using-pull-requests
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in jquery-final_countdown-rails.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Juanito Fatas
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,70 @@
1
+ jquery-final_countdown-rails
2
+ ============================
3
+
4
+ [![Gem Version](http://img.shields.io/gem/v/jquery-final_countdown-rails.svg)][gem]
5
+
6
+ [jQuery.countdown (aka The Final Countdown)][jquery-final-countdown] for Rails Asset Pipeline or
7
+ standalone sprockets applications.
8
+
9
+ [gem]: https://rubygems.org/gems/jquery-final_countdown-rails
10
+
11
+ Installation
12
+ ------------
13
+
14
+ :warning: jQuery.countdown needs jQuery. That is, you need to have `'jquery-rails'` in your Gemfile.
15
+
16
+ ### Rails 3.1+
17
+
18
+ Add this line to your application's Gemfile:
19
+
20
+ gem 'jquery-final_countdown-rails'
21
+
22
+ And then execute:
23
+
24
+ $ bundle
25
+
26
+ Add following directive to your JavaScript manifest file (`app/assets/javascripts/application.js`):
27
+
28
+ ```js
29
+ //= require jquery.countdown
30
+ ```
31
+
32
+ That's it!
33
+
34
+ ### Rails < 3.1 (or greater with asset pipeline *disabled*)
35
+
36
+ This gem adds a single generator: `jquery:final_countdown:install`. Running the generator will copy `jquery.countdown.js` and `jquery.countdown.min.js` to `public/javascripts` directory.
37
+
38
+ This gem contains the minified and un-minified versions of `jquery.countdown`, only the minified versions will be included in the `:defaults` when Rails is in `production` or `test` mode (un-minified versions will be included when Rails is in `development` mode).
39
+
40
+ To invoke the generator, run:
41
+
42
+ ```sh
43
+ rails generate jquery:final_countdown:install
44
+ ```
45
+
46
+ That's it!
47
+
48
+ Versions
49
+ --------
50
+
51
+ *The jquery-final_countdown-rails version is the same as jQuery.countdown version.*
52
+
53
+ If a bug in gem is discovered, a 4th version identifier will be added. Like `2.0.4.1`.
54
+
55
+ Contributing
56
+ ------------
57
+
58
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
59
+
60
+ Thanks
61
+ ------
62
+
63
+ I gemify this gem by mock the [jquery-rails](https://github.com/rails/jquery-rails).
64
+
65
+ [jquery-final-countdown]: https://github.com/hilios/jQuery.countdown
66
+
67
+ License
68
+ -------
69
+
70
+ MIT License. Please see [LICENSE](/LICENSE).
@@ -0,0 +1,26 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ task :update_jquery_final_countdown do
4
+ puts 'Downloading jquery.countdown.js'
5
+ puts `curl -o vendor/assets/javascripts/jquery.countdown.js https://raw.githubusercontent.com/hilios/jQuery.countdown/master/dist/jquery.countdown.js`
6
+ puts 'Downloading jquery.countdown.min.js'
7
+ puts `curl -o vendor/assets/javascripts/jquery.countdown.min.js https://raw.githubusercontent.com/hilios/jQuery.countdown/master/dist/jquery.countdown.min.js`
8
+
9
+ puts 'Updating version.rb'
10
+ version = false
11
+ File.foreach('vendor/assets/javascripts/jquery.countdown.js') do |line|
12
+ version = line.match(/The Final Countdown for jQuery v([\S]+)/)
13
+ version = version && version[1]
14
+ break if version
15
+ end
16
+
17
+ version_path = 'lib/jquery/final_countdown/rails/version.rb'
18
+ lines = IO.readlines(version_path).map do |line|
19
+ line.gsub(/VERSION = "([\d\.]+)"/, "VERSION = \"#{version}\"")
20
+ end
21
+ File.open(version_path, 'w') do |file|
22
+ file.puts lines
23
+ end
24
+
25
+ puts "\e[32mDone!\e[0m"
26
+ end
@@ -0,0 +1,21 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'jquery/final_countdown/rails/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'jquery-final_countdown-rails'
8
+ s.version = '2.0.4'
9
+ s.authors = ['Juanito Fatas']
10
+ s.email = ['katehuang0320@gmail.com']
11
+ s.summary = 'jQuery.countdown (The Final Countdown) for Rails'
12
+ s.description = 'This gem provides jQuery.countdown driver for your Rails application.'
13
+ s.homepage = 'https://github.com/jquery-final_countdown-rails'
14
+ s.license = 'MIT'
15
+
16
+ s.add_dependency 'railties', '>= 3.0', '< 5.0'
17
+ s.add_dependency 'thor', '>= 0.14', '< 2.0'
18
+
19
+ s.files = `git ls-files -z`.split("\x0")
20
+ s.require_path = ['lib']
21
+ end
@@ -0,0 +1,37 @@
1
+ require 'rails'
2
+
3
+ # Supply generator for Rails 3.0.x or if asset pipeline is not enabled
4
+ if ::Rails.version < "3.1" || ::Rails.application.config.assets.enabled == false
5
+ module Jquery
6
+ module FinalCountdown
7
+ module Generators
8
+ class InstallGenerator < ::Rails::Generators::Base
9
+
10
+ desc "This generator installs jQuery.countdown #{Jquery::FinalCountdown::Rails::VERSION}"
11
+ source_root File.expand_path('../../../../../../vendor/assets/javascripts', __FILE__)
12
+
13
+ def copy_jquery_final_countdown
14
+ say_status("copying", "jQuery.countdown (#{Jquery::FinalCountdown::Rails::VERSION})", :green)
15
+ copy_file "jquery.countdown.js", "public/javascripts/jquery.countdown.js"
16
+ copy_file "jquery.countdown.min.js", "public/javascripts/jquery.countdown.min.js"
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ else # Rails 3.1+
23
+ module Jquery
24
+ module FinalCountdown
25
+ module Generators
26
+ class InstallGenerator < ::Rails::Generators::Base
27
+ desc "Just show instructions so people will know what to do when mistakenly using generator"
28
+
29
+ def do_nothing
30
+ say("The jQuery.countdown is ready to use in your asset pipeline.", :green)
31
+ say("Just add `//= require jquery.countdown` to your app/assets/javascripts/application.js and that's it!", :green)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1 @@
1
+ require 'jquery/final_countdown/rails'
@@ -0,0 +1,17 @@
1
+ require 'jquery/final_countdown/rails/version'
2
+
3
+ module Jquery
4
+ module FinalCountdown
5
+ module Rails
6
+ if defined? ::Rails
7
+ if ::Rails.version < "3.1"
8
+ require 'jquery/final_countdown/rails/railtie'
9
+ else
10
+ require 'jquery/final_countdown/rails/engine'
11
+ end
12
+ elsif defined? ::Sprockets
13
+ require 'jquery/final_countdown/rails/sprockets'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ module Jquery
2
+ module FinalCountdown
3
+ module Rails
4
+ class Engine < ::Rails::Engine
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ module Jquery
2
+ module FinalCountdown
3
+ module Rails
4
+ class Railtie < ::Rails::Railtie
5
+ config.before_configuration do
6
+ if config.action_view.javascript_expansions
7
+ the_final_countdown_default = ::Rails.env.production? || ::Rails.env.test? ? %w(jquery.countdown.min) : %w(jquery.countdown)
8
+
9
+ # Add jQuery.countdown
10
+ config.action_view.javascript_expansions[:defaults] |= the_final_countdown_default
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ module Jquery
2
+ module FinalCountdown
3
+ module Rails
4
+ Sprockets.paths << File.expand_path('../../../../../vendor/assets/', __FILE__)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Jquery
2
+ module FinalCountdown
3
+ module Rails
4
+ VERSION = "2.0.4"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,206 @@
1
+ /*!
2
+ * The Final Countdown for jQuery v2.0.4 (http://hilios.github.io/jQuery.countdown/)
3
+ * Copyright (c) 2014 Edson Hilios
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ * this software and associated documentation files (the "Software"), to deal in
7
+ * the Software without restriction, including without limitation the rights to
8
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ * the Software, and to permit persons to whom the Software is furnished to do so,
10
+ * subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * 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, FITNESS
17
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ */
22
+ (function(factory) {
23
+ "use strict";
24
+ if (typeof define === "function" && define.amd) {
25
+ define([ "jquery" ], factory);
26
+ } else {
27
+ factory(jQuery);
28
+ }
29
+ })(function($) {
30
+ "use strict";
31
+ var PRECISION = 100;
32
+ var instances = [], matchers = [];
33
+ matchers.push(/^[0-9]*$/.source);
34
+ matchers.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);
35
+ matchers.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source);
36
+ matchers = new RegExp(matchers.join("|"));
37
+ function parseDateString(dateString) {
38
+ if (dateString instanceof Date) {
39
+ return dateString;
40
+ }
41
+ if (String(dateString).match(matchers)) {
42
+ if (String(dateString).match(/^[0-9]*$/)) {
43
+ dateString = Number(dateString);
44
+ }
45
+ if (String(dateString).match(/\-/)) {
46
+ dateString = String(dateString).replace(/\-/g, "/");
47
+ }
48
+ return new Date(dateString);
49
+ } else {
50
+ throw new Error("Couldn't cast `" + dateString + "` to a date object.");
51
+ }
52
+ }
53
+ var DIRECTIVE_KEY_MAP = {
54
+ Y: "years",
55
+ m: "months",
56
+ w: "weeks",
57
+ d: "days",
58
+ D: "totalDays",
59
+ H: "hours",
60
+ M: "minutes",
61
+ S: "seconds"
62
+ };
63
+ function strftime(offsetObject) {
64
+ return function(format) {
65
+ var directives = format.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);
66
+ if (directives) {
67
+ for (var i = 0, len = directives.length; i < len; ++i) {
68
+ var directive = directives[i].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/), regexp = new RegExp(directive[0]), modifier = directive[1] || "", plural = directive[3] || "", value = null;
69
+ directive = directive[2];
70
+ if (DIRECTIVE_KEY_MAP.hasOwnProperty(directive)) {
71
+ value = DIRECTIVE_KEY_MAP[directive];
72
+ value = Number(offsetObject[value]);
73
+ }
74
+ if (value !== null) {
75
+ if (modifier === "!") {
76
+ value = pluralize(plural, value);
77
+ }
78
+ if (modifier === "") {
79
+ if (value < 10) {
80
+ value = "0" + value.toString();
81
+ }
82
+ }
83
+ format = format.replace(regexp, value.toString());
84
+ }
85
+ }
86
+ }
87
+ format = format.replace(/%%/, "%");
88
+ return format;
89
+ };
90
+ }
91
+ function pluralize(format, count) {
92
+ var plural = "s", singular = "";
93
+ if (format) {
94
+ format = format.replace(/(:|;|\s)/gi, "").split(/\,/);
95
+ if (format.length === 1) {
96
+ plural = format[0];
97
+ } else {
98
+ singular = format[0];
99
+ plural = format[1];
100
+ }
101
+ }
102
+ if (Math.abs(count) === 1) {
103
+ return singular;
104
+ } else {
105
+ return plural;
106
+ }
107
+ }
108
+ var Countdown = function(el, finalDate, callback) {
109
+ this.el = el;
110
+ this.$el = $(el);
111
+ this.interval = null;
112
+ this.offset = {};
113
+ this.instanceNumber = instances.length;
114
+ instances.push(this);
115
+ this.$el.data("countdown-instance", this.instanceNumber);
116
+ if (callback) {
117
+ this.$el.on("update.countdown", callback);
118
+ this.$el.on("stoped.countdown", callback);
119
+ this.$el.on("finish.countdown", callback);
120
+ }
121
+ this.setFinalDate(finalDate);
122
+ this.start();
123
+ };
124
+ $.extend(Countdown.prototype, {
125
+ start: function() {
126
+ if (this.interval !== null) {
127
+ clearInterval(this.interval);
128
+ }
129
+ var self = this;
130
+ this.update();
131
+ this.interval = setInterval(function() {
132
+ self.update.call(self);
133
+ }, PRECISION);
134
+ },
135
+ stop: function() {
136
+ clearInterval(this.interval);
137
+ this.interval = null;
138
+ this.dispatchEvent("stoped");
139
+ },
140
+ pause: function() {
141
+ this.stop.call(this);
142
+ },
143
+ resume: function() {
144
+ this.start.call(this);
145
+ },
146
+ remove: function() {
147
+ this.stop();
148
+ instances[this.instanceNumber] = null;
149
+ delete this.$el.data().countdownInstance;
150
+ },
151
+ setFinalDate: function(value) {
152
+ this.finalDate = parseDateString(value);
153
+ },
154
+ update: function() {
155
+ if (this.$el.closest("html").length === 0) {
156
+ this.remove();
157
+ return;
158
+ }
159
+ this.totalSecsLeft = this.finalDate.getTime() - new Date().getTime();
160
+ this.totalSecsLeft = Math.ceil(this.totalSecsLeft / 1e3);
161
+ this.totalSecsLeft = this.totalSecsLeft < 0 ? 0 : this.totalSecsLeft;
162
+ this.offset = {
163
+ seconds: this.totalSecsLeft % 60,
164
+ minutes: Math.floor(this.totalSecsLeft / 60) % 60,
165
+ hours: Math.floor(this.totalSecsLeft / 60 / 60) % 24,
166
+ days: Math.floor(this.totalSecsLeft / 60 / 60 / 24) % 7,
167
+ totalDays: Math.floor(this.totalSecsLeft / 60 / 60 / 24),
168
+ weeks: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 7),
169
+ months: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 30),
170
+ years: Math.floor(this.totalSecsLeft / 60 / 60 / 24 / 365)
171
+ };
172
+ if (this.totalSecsLeft === 0) {
173
+ this.stop();
174
+ this.dispatchEvent("finish");
175
+ } else {
176
+ this.dispatchEvent("update");
177
+ }
178
+ },
179
+ dispatchEvent: function(eventName) {
180
+ var event = $.Event(eventName + ".countdown");
181
+ event.finalDate = this.finalDate;
182
+ event.offset = $.extend({}, this.offset);
183
+ event.strftime = strftime(this.offset);
184
+ this.$el.trigger(event);
185
+ }
186
+ });
187
+ $.fn.countdown = function() {
188
+ var argumentsArray = Array.prototype.slice.call(arguments, 0);
189
+ return this.each(function() {
190
+ var instanceNumber = $(this).data("countdown-instance");
191
+ if (instanceNumber !== undefined) {
192
+ var instance = instances[instanceNumber], method = argumentsArray[0];
193
+ if (Countdown.prototype.hasOwnProperty(method)) {
194
+ instance[method].apply(instance, argumentsArray.slice(1));
195
+ } else if (String(method).match(/^[$A-Z_][0-9A-Z_$]*$/i) === null) {
196
+ instance.setFinalDate.call(instance, method);
197
+ instance.start();
198
+ } else {
199
+ $.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi, method));
200
+ }
201
+ } else {
202
+ new Countdown(this, argumentsArray[0], argumentsArray[1]);
203
+ }
204
+ });
205
+ };
206
+ });
@@ -0,0 +1,22 @@
1
+ /*!
2
+ * The Final Countdown for jQuery v2.0.4 (http://hilios.github.io/jQuery.countdown/)
3
+ * Copyright (c) 2014 Edson Hilios
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ * this software and associated documentation files (the "Software"), to deal in
7
+ * the Software without restriction, including without limitation the rights to
8
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ * the Software, and to permit persons to whom the Software is furnished to do so,
10
+ * subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * 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, FITNESS
17
+ * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ */
22
+ !function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){"use strict";function b(a){if(a instanceof Date)return a;if(String(a).match(g))return String(a).match(/^[0-9]*$/)&&(a=Number(a)),String(a).match(/\-/)&&(a=String(a).replace(/\-/g,"/")),new Date(a);throw new Error("Couldn't cast `"+a+"` to a date object.")}function c(a){return function(b){var c=b.match(/%(-|!)?[A-Z]{1}(:[^;]+;)?/gi);if(c)for(var e=0,f=c.length;f>e;++e){var g=c[e].match(/%(-|!)?([a-zA-Z]{1})(:[^;]+;)?/),i=new RegExp(g[0]),j=g[1]||"",k=g[3]||"",l=null;g=g[2],h.hasOwnProperty(g)&&(l=h[g],l=Number(a[l])),null!==l&&("!"===j&&(l=d(k,l)),""===j&&10>l&&(l="0"+l.toString()),b=b.replace(i,l.toString()))}return b=b.replace(/%%/,"%")}}function d(a,b){var c="s",d="";return a&&(a=a.replace(/(:|;|\s)/gi,"").split(/\,/),1===a.length?c=a[0]:(d=a[0],c=a[1])),1===Math.abs(b)?d:c}var e=100,f=[],g=[];g.push(/^[0-9]*$/.source),g.push(/([0-9]{1,2}\/){2}[0-9]{4}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g.push(/[0-9]{4}([\/\-][0-9]{1,2}){2}( [0-9]{1,2}(:[0-9]{2}){2})?/.source),g=new RegExp(g.join("|"));var h={Y:"years",m:"months",w:"weeks",d:"days",D:"totalDays",H:"hours",M:"minutes",S:"seconds"},i=function(b,c,d){this.el=b,this.$el=a(b),this.interval=null,this.offset={},this.instanceNumber=f.length,f.push(this),this.$el.data("countdown-instance",this.instanceNumber),d&&(this.$el.on("update.countdown",d),this.$el.on("stoped.countdown",d),this.$el.on("finish.countdown",d)),this.setFinalDate(c),this.start()};a.extend(i.prototype,{start:function(){null!==this.interval&&clearInterval(this.interval);var a=this;this.update(),this.interval=setInterval(function(){a.update.call(a)},e)},stop:function(){clearInterval(this.interval),this.interval=null,this.dispatchEvent("stoped")},pause:function(){this.stop.call(this)},resume:function(){this.start.call(this)},remove:function(){this.stop(),f[this.instanceNumber]=null,delete this.$el.data().countdownInstance},setFinalDate:function(a){this.finalDate=b(a)},update:function(){return 0===this.$el.closest("html").length?void this.remove():(this.totalSecsLeft=this.finalDate.getTime()-(new Date).getTime(),this.totalSecsLeft=Math.ceil(this.totalSecsLeft/1e3),this.totalSecsLeft=this.totalSecsLeft<0?0:this.totalSecsLeft,this.offset={seconds:this.totalSecsLeft%60,minutes:Math.floor(this.totalSecsLeft/60)%60,hours:Math.floor(this.totalSecsLeft/60/60)%24,days:Math.floor(this.totalSecsLeft/60/60/24)%7,totalDays:Math.floor(this.totalSecsLeft/60/60/24),weeks:Math.floor(this.totalSecsLeft/60/60/24/7),months:Math.floor(this.totalSecsLeft/60/60/24/30),years:Math.floor(this.totalSecsLeft/60/60/24/365)},void(0===this.totalSecsLeft?(this.stop(),this.dispatchEvent("finish")):this.dispatchEvent("update")))},dispatchEvent:function(b){var d=a.Event(b+".countdown");d.finalDate=this.finalDate,d.offset=a.extend({},this.offset),d.strftime=c(this.offset),this.$el.trigger(d)}}),a.fn.countdown=function(){var b=Array.prototype.slice.call(arguments,0);return this.each(function(){var c=a(this).data("countdown-instance");if(void 0!==c){var d=f[c],e=b[0];i.prototype.hasOwnProperty(e)?d[e].apply(d,b.slice(1)):null===String(e).match(/^[$A-Z_][0-9A-Z_$]*$/i)?(d.setFinalDate.call(d,e),d.start()):a.error("Method %s does not exist on jQuery.countdown".replace(/\%s/gi,e))}else new i(this,b[0],b[1])})}});
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jquery-final_countdown-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Juanito Fatas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-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'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: thor
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0.14'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '2.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0.14'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '2.0'
53
+ description: This gem provides jQuery.countdown driver for your Rails application.
54
+ email:
55
+ - katehuang0320@gmail.com
56
+ executables: []
57
+ extensions: []
58
+ extra_rdoc_files: []
59
+ files:
60
+ - ".gitignore"
61
+ - CHANGELOG.md
62
+ - CONTRIBUTING.md
63
+ - Gemfile
64
+ - LICENSE
65
+ - README.md
66
+ - Rakefile
67
+ - jquery-final_countdown-rails.gemspec
68
+ - lib/generators/jquery/final_countdown/install/install_generator.rb
69
+ - lib/jquery-final_countdown-rails..rb
70
+ - lib/jquery/final_countdown/rails.rb
71
+ - lib/jquery/final_countdown/rails/engine.rb
72
+ - lib/jquery/final_countdown/rails/railtie.rb
73
+ - lib/jquery/final_countdown/rails/sprockets.rb
74
+ - lib/jquery/final_countdown/rails/version.rb
75
+ - vendor/assets/javascripts/jquery.countdown.js
76
+ - vendor/assets/javascripts/jquery.countdown.min.js
77
+ homepage: https://github.com/jquery-final_countdown-rails
78
+ licenses:
79
+ - MIT
80
+ metadata: {}
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 2.4.1
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: jQuery.countdown (The Final Countdown) for Rails
101
+ test_files: []
102
+ has_rdoc: