rails-timeago 2.0.0.beta1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  Add this line to your application's Gemfile:
9
9
 
10
10
  ```ruby
11
- gem 'rails-timeago', '~> 2.0.0.beta1'
11
+ gem 'rails-timeago', '~> 2.0'
12
12
  ```
13
13
 
14
14
  And then execute:
@@ -64,6 +64,10 @@ Force time ago tag ignoring limit option.
64
64
  String that will be returned if time is nil.
65
65
  (default: '-')
66
66
 
67
+ **title**
68
+ A string or block that will be used to create a title attribute for timeago tags. It set to nil or false no title attribute will be set.
69
+ (default: proc { |time, options| I18n.l time, :format => options[:format] })
70
+
67
71
  All other options will be given as options to the time tag helper.
68
72
  The above options can be assigned globally as defaults using
69
73
 
@@ -104,7 +108,7 @@ Do not forget to require the needed locale files by either require `rails-timeag
104
108
 
105
109
  Your customized jQuery locale files must be changed to work with **rails-timeago 2**. Instead of defining your locale strings as `jQuery.timeago.settings.strings` you need to define them like this:
106
110
 
107
- jQuery.timeago.settings.string["en"] = {
111
+ jQuery.timeago.settings.strings["en"] = {
108
112
  ...
109
113
  }
110
114
 
data/lib/rails-timeago.rb CHANGED
@@ -5,7 +5,7 @@ module Rails
5
5
  module Timeago
6
6
  if defined?(::Rails::Engine)
7
7
  class Engine < ::Rails::Engine # :nodoc:
8
- initializer 'rails-timeago', group: :all do |app|
8
+ initializer 'rails-timeago', :group => :all do |app|
9
9
  ActiveSupport.on_load(:action_controller) do
10
10
  include Rails::Timeago::Helper
11
11
  end
@@ -47,19 +47,29 @@ module Rails
47
47
  # (default: '-')
48
48
  #
49
49
  def self.default_options(opts = nil)
50
- @defaults ||= {
50
+ @defaults ||= self.option_hash
51
+ if opts
52
+ @defaults.merge! opts.extract!(*@defaults.keys.select{|k| opts.include?(k)})
53
+ else
54
+ @defaults
55
+ end
56
+ end
57
+
58
+ # Reset options to default values
59
+ def self.reset_default_options
60
+ @defaults = self.option_hash
61
+ end
62
+
63
+ def self.option_hash
64
+ {
51
65
  :nojs => false,
52
66
  :force => false,
53
67
  :format => :default,
54
68
  :limit => proc { 4.days.ago },
55
69
  :date_only => true,
56
- :default => '-'
70
+ :default => '-',
71
+ :title => proc { |time, options| I18n.l time, :format => options[:format] }
57
72
  }
58
- if opts
59
- @defaults.merge! opts.extract!(*@defaults.keys.select{|k| opts.include?(k)})
60
- else
61
- @defaults
62
- end
63
73
  end
64
74
  end
65
75
  end
@@ -39,7 +39,9 @@ module Rails
39
39
  time_options = time_options.merge html_options.extract!(*time_options.keys.select{|k| html_options.include?(k)})
40
40
  return time_options[:default] if time.nil?
41
41
 
42
- html_options.merge! :title => I18n.l(time, :format => time_options[:format])
42
+ if time_options[:title]
43
+ html_options.merge! :title => time_options[:title].is_a?(Proc) ? time_options[:title].call(time, time_options) : time_options[:title]
44
+ end
43
45
  time_options[:limit] = time_options[:limit].call if time_options[:limit].is_a?(Proc)
44
46
 
45
47
  if time_options[:force] or time_options[:limit].nil? or time_options[:limit] < time
@@ -2,9 +2,9 @@ module Rails
2
2
  module Timeago
3
3
  module VERSION
4
4
  MAJOR = 2
5
- MINOR = 0
5
+ MINOR = 1
6
6
  PATCH = 0
7
- STAGE = 'beta1'
7
+ STAGE = nil
8
8
 
9
9
  def self.to_s
10
10
  [MAJOR, MINOR, PATCH, STAGE].reject(&:nil?).join '.'
@@ -3,18 +3,53 @@ require File.dirname(__FILE__) + '/../spec_helper'
3
3
 
4
4
  describe Rails::Timeago::Helper do
5
5
  before { @stub = TimeagoStub.new }
6
+ after { Rails::Timeago.reset_default_options }
7
+ let(:time) { Time.now }
6
8
 
7
9
  context "#timeago_tag" do
8
10
  it 'should create a time tag' do
9
- @stub.timeago_tag(Time.now).should =~ /<time.*>.*<\/time>/
11
+ @stub.timeago_tag(time).should =~ /<time.*>.*<\/time>/
10
12
  end
11
13
 
12
14
  it 'should have title attribute' do
13
- @stub.timeago_tag(Time.now).should =~ /<time.*title=".*".*>.*<\/time>/
15
+ @stub.timeago_tag(time).should =~ /<time.*title=".*".*>.*<\/time>/
16
+ end
17
+
18
+ it 'should have human readable datetime as title attribute' do
19
+ @stub.timeago_tag(time).should include("title=\"#{I18n.l time}\"")
20
+ end
21
+
22
+ it 'should have human readable datetime as title attribute with given format' do
23
+ @stub.timeago_tag(time, :format => :short).should include("title=\"#{I18n.l time, :format => :short}\"")
24
+ end
25
+
26
+ it 'should have human readable datetime as title attribute with global format' do
27
+ Rails::Timeago.default_options :format => :short
28
+ @stub.timeago_tag(time).should include("title=\"#{I18n.l time, :format => :short}\"")
29
+ end
30
+
31
+ it 'should have no title attribute if title is set to false globally' do
32
+ Rails::Timeago.default_options :title => false
33
+ @stub.timeago_tag(time).should_not =~ /<time.*title=".*".*>.*<\/time>/
34
+ end
35
+
36
+ it 'should have no title attribute if title is set to nil globally' do
37
+ Rails::Timeago.default_options :title => nil
38
+ @stub.timeago_tag(time).should_not =~ /<time.*title=".*".*>.*<\/time>/
39
+ end
40
+
41
+ it 'should have title attribute with proc value globally' do
42
+ Rails::Timeago.default_options :title => proc { |time, options| options[:format] }
43
+ @stub.timeago_tag(time, :format => :short).should =~ /<time.*title="short".*>.*<\/time>/
44
+ end
45
+
46
+ it 'should have title attribute with proc value locally' do
47
+ @stub.timeago_tag(time, :format => :long,
48
+ :title => proc { |time, options| options[:format] }).should =~ /<time.*title="long".*>.*<\/time>/
14
49
  end
15
50
 
16
51
  it 'should have data-time-ago attribute' do
17
- @stub.timeago_tag(Time.now).should =~ /<time.*data-time-ago=".*".*>.*<\/time>/
52
+ @stub.timeago_tag(time).should =~ /<time.*data-time-ago=".*".*>.*<\/time>/
18
53
  end
19
54
 
20
55
  it 'should not have data-time-ago attribute for times before limit' do
@@ -58,7 +93,7 @@ describe Rails::Timeago::Helper do
58
93
  end
59
94
 
60
95
  it 'should pass html option to tag helper' do
61
- @stub.timeago_tag(Time.now, :myattr => 'abc').should =~ /<time.*myattr="abc".*>.*<\/time>/
96
+ @stub.timeago_tag(time, :myattr => 'abc').should =~ /<time.*myattr="abc".*>.*<\/time>/
62
97
  end
63
98
 
64
99
  it "should allow to set global options" do
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-timeago
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta1
5
- prerelease: 6
4
+ version: 2.1.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jan Graichen
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-24 00:00:00.000000000 Z
12
+ date: 2013-01-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -132,9 +132,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
132
  required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  none: false
134
134
  requirements:
135
- - - ! '>'
135
+ - - ! '>='
136
136
  - !ruby/object:Gem::Version
137
- version: 1.3.1
137
+ version: '0'
138
138
  requirements: []
139
139
  rubyforge_project:
140
140
  rubygems_version: 1.8.24