condensation 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +2 -2
- data/README.md +16 -2
- data/condensation.gemspec +0 -1
- data/lib/condensation/filters/advance_date_to_next.rb +33 -0
- data/lib/condensation/filters/days_since.rb +9 -3
- data/lib/condensation/filters/days_until.rb +9 -3
- data/lib/condensation/filters.rb +2 -1
- data/lib/condensation/version.rb +1 -1
- data/lib/condensation.rb +2 -1
- data/spec/condensation/filters/advance_date_to_next_spec.rb +72 -0
- data/spec/condensation/filters/days_since_spec.rb +1 -8
- data/spec/condensation_spec.rb +1 -1
- data/spec/spec_helper.rb +0 -1
- metadata +5 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d604b37c39e91d58a069c1077d28b324f2bf3a6
|
4
|
+
data.tar.gz: 4a26fbcf785eef22ba017ad16f053006ac479745
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe2d89862616b7c0e79f66a7beabbd94db59fc8f36d3ed0bc68c7d13a145bf98e5e9d3419cfea171962e06621a32c170bad6a8f2444af39a0f970adaa82be5bb
|
7
|
+
data.tar.gz: 6e33fdf33b43a11b7720715140d387d6542c86ec0fa64059bfefa6ba559f544bc3192cc0c1f249652a909572d377ac109137a697c7adfef7f56c5dfd7c4b24ea
|
data/LICENSE.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2013 Derrick Reimer
|
1
|
+
Copyright (c) 2013-2015 Derrick Reimer
|
2
2
|
|
3
3
|
MIT License
|
4
4
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
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.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Condensation
|
2
2
|
|
3
|
-
|
3
|
+
A collection of handy Liquid filters. Developed for [Drip](https://www.getdrip.com).
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -18,7 +18,21 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
To make all the filters available in your Liquid templates, place this call
|
22
|
+
in your app initialization code:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
Condensation.register_filters
|
26
|
+
```
|
27
|
+
|
28
|
+
For example, in a Rails app, you'll likely place this in an initializer.
|
29
|
+
To pick and choose which filters you like, just register them manually:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
Liquid::Template.register_filter(Condensation::Filters::DaysUntil)
|
33
|
+
```
|
34
|
+
|
35
|
+
Explore all the available filters [here](https://github.com/djreimer/condensation/tree/master/lib/condensation/filters).
|
22
36
|
|
23
37
|
## Contributing
|
24
38
|
|
data/condensation.gemspec
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
module Condensation
|
4
|
+
module Filters
|
5
|
+
module AdvanceDateToNext
|
6
|
+
def advance_date_to_next(input, day)
|
7
|
+
return if input.nil?
|
8
|
+
|
9
|
+
if input.is_a?(Time)
|
10
|
+
value = input
|
11
|
+
else
|
12
|
+
value = Time.parse(input) rescue nil
|
13
|
+
end
|
14
|
+
|
15
|
+
return input unless value.is_a?(Time)
|
16
|
+
|
17
|
+
days = %w{sunday monday tuesday wednesday thursday friday saturday}
|
18
|
+
day_number = days.index(day.downcase)
|
19
|
+
|
20
|
+
unless day_number
|
21
|
+
raise Liquid::ArgumentError, "#{day} is not a valid day"
|
22
|
+
end
|
23
|
+
|
24
|
+
loop do
|
25
|
+
value = value + 86400 # advance a day
|
26
|
+
break if value.wday == day_number
|
27
|
+
end
|
28
|
+
|
29
|
+
value
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,11 +1,17 @@
|
|
1
|
-
require '
|
1
|
+
require 'time'
|
2
2
|
|
3
3
|
module Condensation
|
4
4
|
module Filters
|
5
5
|
module DaysSince
|
6
6
|
def days_since(input)
|
7
7
|
return if input.nil?
|
8
|
-
|
8
|
+
|
9
|
+
if input.is_a?(Time)
|
10
|
+
value = input
|
11
|
+
else
|
12
|
+
value = Time.parse(input) rescue nil
|
13
|
+
end
|
14
|
+
|
9
15
|
return unless value.is_a?(Time)
|
10
16
|
|
11
17
|
diff = Time.now - value
|
@@ -13,4 +19,4 @@ module Condensation
|
|
13
19
|
end
|
14
20
|
end
|
15
21
|
end
|
16
|
-
end
|
22
|
+
end
|
@@ -1,11 +1,17 @@
|
|
1
|
-
require '
|
1
|
+
require 'time'
|
2
2
|
|
3
3
|
module Condensation
|
4
4
|
module Filters
|
5
5
|
module DaysUntil
|
6
6
|
def days_until(input)
|
7
7
|
return if input.nil?
|
8
|
-
|
8
|
+
|
9
|
+
if input.is_a?(Time)
|
10
|
+
value = input
|
11
|
+
else
|
12
|
+
value = Time.parse(input) rescue nil
|
13
|
+
end
|
14
|
+
|
9
15
|
return unless value.is_a?(Time)
|
10
16
|
|
11
17
|
diff = value - Time.now
|
@@ -13,4 +19,4 @@ module Condensation
|
|
13
19
|
end
|
14
20
|
end
|
15
21
|
end
|
16
|
-
end
|
22
|
+
end
|
data/lib/condensation/filters.rb
CHANGED
@@ -4,4 +4,5 @@ require "condensation/filters/replace_inner_html"
|
|
4
4
|
require "condensation/filters/days_since"
|
5
5
|
require "condensation/filters/days_until"
|
6
6
|
require "condensation/filters/url_encode"
|
7
|
-
require "condensation/filters/strip_commas"
|
7
|
+
require "condensation/filters/strip_commas"
|
8
|
+
require "condensation/filters/advance_date_to_next"
|
data/lib/condensation/version.rb
CHANGED
data/lib/condensation.rb
CHANGED
@@ -0,0 +1,72 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
|
3
|
+
describe Condensation::Filters::AdvanceDateToNext do
|
4
|
+
def render_with_filter(template, context)
|
5
|
+
template.render(context, :filters => [Condensation::Filters::AdvanceDateToNext])
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#advance_date_to_next" do
|
9
|
+
it "should handle UTC ISO 8601 dates" do
|
10
|
+
created_at = "2015-06-11T10:00:00Z" # a Thursday
|
11
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Saturday\" }}")
|
12
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
13
|
+
result.must_equal "2015-06-13 10:00:00 UTC"
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should handle non-UTC ISO 8601 dates" do
|
17
|
+
created_at = "2015-06-11T20:00:00-07:00" # a Thursday
|
18
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Saturday\" }}")
|
19
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
20
|
+
result.must_equal "2015-06-13 20:00:00 -0700"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should handle YMD formatted dates" do
|
24
|
+
created_at = "2015-06-11" # a Thursday
|
25
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Saturday\" }}")
|
26
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
27
|
+
result[0..18].must_equal "2015-06-13 00:00:00"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should handle Time input" do
|
31
|
+
created_at = Time.utc(2015, 6, 11, 10, 0, 0) # a Thursday
|
32
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Saturday\" }}")
|
33
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
34
|
+
result.must_equal "2015-06-13 10:00:00 UTC"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "never return the same day" do
|
38
|
+
created_at = "2015-06-11T10:00:00Z" # a Thursday
|
39
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Thursday\" }}")
|
40
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
41
|
+
result.must_equal "2015-06-18 10:00:00 UTC"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should handle malformed dates" do
|
45
|
+
created_at = "foo"
|
46
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Saturday\" }}")
|
47
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
48
|
+
result.must_equal "foo"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should handle empty string input" do
|
52
|
+
created_at = ""
|
53
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Saturday\" }}")
|
54
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
55
|
+
result.must_equal ""
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should handle nil input" do
|
59
|
+
created_at = nil
|
60
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"Saturday\" }}")
|
61
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
62
|
+
result.must_equal ""
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should render an error given an invalid day" do
|
66
|
+
created_at = "2015-06-11T10:00:00Z" # a Thursday
|
67
|
+
template = Liquid::Template.parse("{{ created_at | advance_date_to_next: \"fooday\" }}")
|
68
|
+
result = render_with_filter(template, { "created_at" => created_at })
|
69
|
+
result.must_equal "Liquid error: fooday is not a valid day"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -32,13 +32,6 @@ describe Condensation::Filters::DaysSince do
|
|
32
32
|
result.must_equal "13"
|
33
33
|
end
|
34
34
|
|
35
|
-
it "should handle YMD formatted dates" do
|
36
|
-
created_at = "2014-05-15"
|
37
|
-
template = Liquid::Template.parse("{{ created_at | days_since }}")
|
38
|
-
result = render_with_filter(template, { "created_at" => created_at })
|
39
|
-
result.must_equal "15"
|
40
|
-
end
|
41
|
-
|
42
35
|
it "should handle Time input" do
|
43
36
|
created_at = Time.utc(2014, 5, 20, 0, 0, 0)
|
44
37
|
template = Liquid::Template.parse("{{ created_at | days_since }}")
|
@@ -74,4 +67,4 @@ describe Condensation::Filters::DaysSince do
|
|
74
67
|
result.must_equal ""
|
75
68
|
end
|
76
69
|
end
|
77
|
-
end
|
70
|
+
end
|
data/spec/condensation_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: condensation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derrick Reimer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,20 +72,6 @@ dependencies:
|
|
72
72
|
- - <=
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '4.0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: quack
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - '>='
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: 0.0.3
|
82
|
-
type: :runtime
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - '>='
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: 0.0.3
|
89
75
|
description: A collection of handy extensions to the Liquid templating language
|
90
76
|
email:
|
91
77
|
- derrickreimer@gmail.com
|
@@ -101,6 +87,7 @@ files:
|
|
101
87
|
- condensation.gemspec
|
102
88
|
- lib/condensation.rb
|
103
89
|
- lib/condensation/filters.rb
|
90
|
+
- lib/condensation/filters/advance_date_to_next.rb
|
104
91
|
- lib/condensation/filters/days_since.rb
|
105
92
|
- lib/condensation/filters/days_until.rb
|
106
93
|
- lib/condensation/filters/default.rb
|
@@ -110,6 +97,7 @@ files:
|
|
110
97
|
- lib/condensation/filters/url_encode.rb
|
111
98
|
- lib/condensation/sanitizer.rb
|
112
99
|
- lib/condensation/version.rb
|
100
|
+
- spec/condensation/filters/advance_date_to_next_spec.rb
|
113
101
|
- spec/condensation/filters/days_since_spec.rb
|
114
102
|
- spec/condensation/filters/days_until_spec.rb
|
115
103
|
- spec/condensation/filters/default_spec.rb
|
@@ -145,6 +133,7 @@ specification_version: 4
|
|
145
133
|
summary: Condensation is a collection of handy extensions to the Liquid templating
|
146
134
|
language
|
147
135
|
test_files:
|
136
|
+
- spec/condensation/filters/advance_date_to_next_spec.rb
|
148
137
|
- spec/condensation/filters/days_since_spec.rb
|
149
138
|
- spec/condensation/filters/days_until_spec.rb
|
150
139
|
- spec/condensation/filters/default_spec.rb
|