condensation 1.2.0 → 1.3.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
  SHA1:
3
- metadata.gz: 6f1c7731be7d1adc39464da39cfcb0c3739c59a6
4
- data.tar.gz: b4d5a9297f02fded79667ef7a4f1ca671662a87f
3
+ metadata.gz: 39333154e19007dc82061393ece503e3da8b5904
4
+ data.tar.gz: af24e07e4f2a0a3541f36e5d11e879e0a28c8111
5
5
  SHA512:
6
- metadata.gz: 4568209ad4434b20227a1b6c74c97d66be42f5852be47921d4b6b516df2c16764b1e2360f121965c02c0b5f366d401be6c676284820b473def0947bd0cdb9b5c
7
- data.tar.gz: f2c05ca8cf688c5f28618f7a44b1370df1cac7f0ea822bce2e11a47702cae0ff4fe3ef404dc4add71b3cd1625f3777a7aef72229bd559dd6ec284d1876cbd7d6
6
+ metadata.gz: 1ee704b9cc8b14be441ddea8b36c1c3fc6314f02ba8f62dbfba4f6f1bffc764bab9c4ba9a611a1caa49701a41de21232b2a88637178e4c3cf252f19b2be00872
7
+ data.tar.gz: 79d694031a622e764e1701cf5d2e9a577aa96b8c4b2d46e0d8b6e559241048137e489163c7eeca4fe6726a633306ba139224ba904be5493882837448233e6a9c
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013-2015 Derrick Reimer
1
+ Copyright (c) 2013-2016 Derrick Reimer
2
2
 
3
3
  MIT License
4
4
 
@@ -3,6 +3,8 @@ require 'time'
3
3
  module Condensation
4
4
  module Filters
5
5
  module DaysSince
6
+ SECONDS_PER_DAY = 86400
7
+
6
8
  def days_since(input)
7
9
  return if input.nil?
8
10
 
@@ -15,7 +17,7 @@ module Condensation
15
17
  return unless value.is_a?(Time)
16
18
 
17
19
  diff = Time.now - value
18
- [diff.to_i / 86400, 0].max
20
+ [diff.to_i / SECONDS_PER_DAY, 0].max
19
21
  end
20
22
  end
21
23
  end
@@ -3,6 +3,8 @@ require 'time'
3
3
  module Condensation
4
4
  module Filters
5
5
  module DaysUntil
6
+ SECONDS_PER_DAY = 86400
7
+
6
8
  def days_until(input)
7
9
  return if input.nil?
8
10
 
@@ -15,7 +17,7 @@ module Condensation
15
17
  return unless value.is_a?(Time)
16
18
 
17
19
  diff = value - Time.now
18
- [diff.to_i / 86400, 0].max
20
+ [diff.to_i / SECONDS_PER_DAY, 0].max
19
21
  end
20
22
  end
21
23
  end
@@ -0,0 +1,24 @@
1
+ require 'time'
2
+
3
+ module Condensation
4
+ module Filters
5
+ module WeeksSince
6
+ SECONDS_PER_WEEK = 86400 * 7
7
+
8
+ def weeks_since(input)
9
+ return if input.nil?
10
+
11
+ if input.is_a?(Time)
12
+ value = input
13
+ else
14
+ value = Time.parse(input) rescue nil
15
+ end
16
+
17
+ return unless value.is_a?(Time)
18
+
19
+ diff = Time.now - value
20
+ [diff.to_i / SECONDS_PER_WEEK, 0].max
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ require 'time'
2
+
3
+ module Condensation
4
+ module Filters
5
+ module WeeksUntil
6
+ SECONDS_PER_WEEK = 86400 * 7
7
+
8
+ def weeks_until(input)
9
+ return if input.nil?
10
+
11
+ if input.is_a?(Time)
12
+ value = input
13
+ else
14
+ value = Time.parse(input) rescue nil
15
+ end
16
+
17
+ return unless value.is_a?(Time)
18
+
19
+ diff = value - Time.now
20
+ [diff.to_i / SECONDS_PER_WEEK, 0].max
21
+ end
22
+ end
23
+ end
24
+ end
@@ -9,3 +9,5 @@ require "condensation/filters/advance_date_to_next"
9
9
  require "condensation/filters/at_midnight"
10
10
  require "condensation/filters/in_time_zone"
11
11
  require "condensation/filters/timestamp"
12
+ require "condensation/filters/weeks_since"
13
+ require "condensation/filters/weeks_until"
@@ -1,3 +1,3 @@
1
1
  module Condensation
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.0"
3
3
  end
data/lib/condensation.rb CHANGED
@@ -16,7 +16,9 @@ module Condensation
16
16
  Filters::AdvanceDateToNext,
17
17
  Filters::AtMidnight,
18
18
  Filters::InTimeZone,
19
- Filters::Timestamp
19
+ Filters::Timestamp,
20
+ Filters::WeeksSince,
21
+ Filters::WeeksUntil
20
22
  ]
21
23
 
22
24
  def self.register_filters
@@ -61,7 +61,7 @@ describe Condensation::Filters::DaysUntil do
61
61
 
62
62
  it "should handle empty string input" do
63
63
  created_at = ""
64
- template = Liquid::Template.parse("{{ created_at | days_since }}")
64
+ template = Liquid::Template.parse("{{ created_at | days_until }}")
65
65
  result = render_with_filter(template, { "created_at" => created_at })
66
66
  result.must_equal ""
67
67
  end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe Condensation::Filters::WeeksSince do
4
+ def render_with_filter(template, context)
5
+ template.render(context, :filters => [Condensation::Filters::WeeksSince])
6
+ end
7
+
8
+ let(:now) do
9
+ Time.utc(2014, 5, 30, 0, 0, 0)
10
+ end
11
+
12
+ before do
13
+ Timecop.freeze(now)
14
+ end
15
+
16
+ after do
17
+ Timecop.return
18
+ end
19
+
20
+ it "should handle UTC ISO 8601 dates" do
21
+ created_at = "2014-05-15T10:00:00Z"
22
+ template = Liquid::Template.parse("{{ created_at | weeks_since }}")
23
+ result = render_with_filter(template, { "created_at" => created_at })
24
+ result.must_equal "2"
25
+ end
26
+
27
+ it "should handle non-UTC ISO 8601 dates" do
28
+ created_at = "2014-05-15T20:00:00-07:00"
29
+ template = Liquid::Template.parse("{{ created_at | weeks_since }}")
30
+ result = render_with_filter(template, { "created_at" => created_at })
31
+ result.must_equal "1"
32
+ end
33
+
34
+ it "should handle Time input" do
35
+ created_at = Time.utc(2014, 5, 1, 0, 0, 0)
36
+ template = Liquid::Template.parse("{{ created_at | weeks_since }}")
37
+ result = render_with_filter(template, { "created_at" => created_at })
38
+ result.must_equal "4"
39
+ end
40
+
41
+ it "should handle malformed dates" do
42
+ created_at = "foo"
43
+ template = Liquid::Template.parse("{{ created_at | weeks_since }}")
44
+ result = render_with_filter(template, { "created_at" => created_at })
45
+ result.must_equal ""
46
+ end
47
+
48
+ it "should be zero for times in the future" do
49
+ created_at = "2014-06-01T20:00:00Z"
50
+ template = Liquid::Template.parse("{{ created_at | weeks_since }}")
51
+ result = render_with_filter(template, { "created_at" => created_at })
52
+ result.must_equal "0"
53
+ end
54
+
55
+ it "should handle empty string input" do
56
+ created_at = ""
57
+ template = Liquid::Template.parse("{{ created_at | weeks_since }}")
58
+ result = render_with_filter(template, { "created_at" => created_at })
59
+ result.must_equal ""
60
+ end
61
+
62
+ it "should handle nil input" do
63
+ created_at = nil
64
+ template = Liquid::Template.parse("{{ created_at | weeks_since }}")
65
+ result = render_with_filter(template, { "created_at" => created_at })
66
+ result.must_equal ""
67
+ end
68
+ end
@@ -0,0 +1,75 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe Condensation::Filters::WeeksUntil do
4
+ def render_with_filter(template, context)
5
+ template.render(context, :filters => [Condensation::Filters::WeeksUntil])
6
+ end
7
+
8
+ let(:now) do
9
+ Time.utc(2014, 5, 15, 0, 0, 0)
10
+ end
11
+
12
+ before do
13
+ Timecop.freeze(now)
14
+ end
15
+
16
+ after do
17
+ Timecop.return
18
+ end
19
+
20
+ it "should handle UTC ISO 8601 dates" do
21
+ created_at = "2014-05-30T10:00:00Z"
22
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
23
+ result = render_with_filter(template, { "created_at" => created_at })
24
+ result.must_equal "2"
25
+ end
26
+
27
+ it "should handle non-UTC ISO 8601 dates" do
28
+ created_at = "2014-05-30T20:00:00-07:00"
29
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
30
+ result = render_with_filter(template, { "created_at" => created_at })
31
+ result.must_equal "2"
32
+ end
33
+
34
+ it "should handle YMD formatted dates" do
35
+ created_at = "2014-05-30"
36
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
37
+ result = render_with_filter(template, { "created_at" => created_at })
38
+ result.must_equal "2"
39
+ end
40
+
41
+ it "should handle Time input" do
42
+ created_at = Time.utc(2014, 6, 15, 0, 0, 0)
43
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
44
+ result = render_with_filter(template, { "created_at" => created_at })
45
+ result.must_equal "4"
46
+ end
47
+
48
+ it "should handle malformed dates" do
49
+ created_at = "foo"
50
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
51
+ result = render_with_filter(template, { "created_at" => created_at })
52
+ result.must_equal ""
53
+ end
54
+
55
+ it "should be zero for days in the past" do
56
+ created_at = "2014-05-01T20:00:00Z"
57
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
58
+ result = render_with_filter(template, { "created_at" => created_at })
59
+ result.must_equal "0"
60
+ end
61
+
62
+ it "should handle empty string input" do
63
+ created_at = ""
64
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
65
+ result = render_with_filter(template, { "created_at" => created_at })
66
+ result.must_equal ""
67
+ end
68
+
69
+ it "should handle nil input" do
70
+ created_at = nil
71
+ template = Liquid::Template.parse("{{ created_at | weeks_until }}")
72
+ result = render_with_filter(template, { "created_at" => created_at })
73
+ result.must_equal ""
74
+ end
75
+ end
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.2.0
4
+ version: 1.3.0
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-12-04 00:00:00.000000000 Z
11
+ date: 2016-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -127,6 +127,8 @@ files:
127
127
  - lib/condensation/filters/strip_commas.rb
128
128
  - lib/condensation/filters/timestamp.rb
129
129
  - lib/condensation/filters/url_encode.rb
130
+ - lib/condensation/filters/weeks_since.rb
131
+ - lib/condensation/filters/weeks_until.rb
130
132
  - lib/condensation/sanitizer.rb
131
133
  - lib/condensation/version.rb
132
134
  - spec/condensation/filters/advance_date_to_next_spec.rb
@@ -140,6 +142,8 @@ files:
140
142
  - spec/condensation/filters/strip_commas_spec.rb
141
143
  - spec/condensation/filters/timestamp_spec.rb
142
144
  - spec/condensation/filters/url_encode_spec.rb
145
+ - spec/condensation/filters/weeks_since_spec.rb
146
+ - spec/condensation/filters/weeks_until_spec.rb
143
147
  - spec/condensation/sanitizer_spec.rb
144
148
  - spec/condensation_spec.rb
145
149
  - spec/spec_helper.rb
@@ -180,6 +184,8 @@ test_files:
180
184
  - spec/condensation/filters/strip_commas_spec.rb
181
185
  - spec/condensation/filters/timestamp_spec.rb
182
186
  - spec/condensation/filters/url_encode_spec.rb
187
+ - spec/condensation/filters/weeks_since_spec.rb
188
+ - spec/condensation/filters/weeks_until_spec.rb
183
189
  - spec/condensation/sanitizer_spec.rb
184
190
  - spec/condensation_spec.rb
185
191
  - spec/spec_helper.rb