wiser_date 0.1.2 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzhhYzA5MWQzYTE1NmYxNzhlNjhjMWZlYTljNWVlMjM2NDQ4ODE1YQ==
4
+ NGE0MThiYjFiMzE2MWNlY2M4NzdmZGEzZTdjZmJlNThiMDUxZDM4MA==
5
5
  data.tar.gz: !binary |-
6
- OWUyNjdlZDQ0YjVkYzk1ZTNlYTRlYThmZjEyMTJjODg3ZGM0M2U4Ng==
6
+ NDJjMWFkMDk2M2M3NDRlMmU1ZTVjNzUwNWY2ZTI1OTUyYWUwNmU0Yg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YTU4YTY3ZGY2OTFmYjEzZDBmZDg4ZDFiYTI1ZDljYTU4NGNiNTAxYjE5NTdj
10
- ZGNkMTViMTI1MGZkYTM2N2QyZDY3NzgwZGVjN2ZiM2ExN2FjMDgxMDY1ZDBl
11
- OTliYWE1OTAwM2U1NzQ3MDhjMWZlNzk4ZmZmMjRlYzNkYjU1ZjQ=
9
+ Y2MxMDZjNGYyNzU3YzdjNDc1YWQ3YzlmNDljOTFiZjczMDNhODFmYTkxMzNm
10
+ NGJjMWYwYjEzY2FlMmU3NDk2MWJiOTk0NzJhYzkwMDQxNDIyZTQ4MGY5NjUw
11
+ ODc5MTFkYThhZmQ2ZWI3OWZkMGQ4MGE0NWMyNmVmMDFjZDMzNzg=
12
12
  data.tar.gz: !binary |-
13
- YzJmYTA5ZjA5YzFmNDZiOWQyOTk1ZTE1OWU2ODkyODM0ODU0YmJkMDY3ZjI1
14
- MzFhYTRkNTJiNzhiZTcxNmU4MWFhZGRhMTA5ZGIzM2ZlZjdjZmUwOWY0ODUx
15
- MzYxYzAyYjYzMGEzYzZhYzZlOWI2M2JmNDU3YWU4ZGU5MjFhNGQ=
13
+ NDc4MTk3NTNhYjRlMmRmNTU3Mzg4YzljMTI5NzRiY2Q3ZGI5YWI3MmJjYWMz
14
+ MWE5Y2ZiYmEwYmI1ODczMjY2OGM0ZmZjMzM4ZWZkMDIyOTAxZTBhODk5N2Ey
15
+ YWE5YTVlYzM3MWE2MGEwN2RmZmExMTc4Zjg5YjBhZjVkOWQ3ZDI=
data/README.rdoc ADDED
@@ -0,0 +1,104 @@
1
+ = Wiser Date for Rails
2
+
3
+ WiserDate is a date formatting plugin written by Kenneth John Balgos (https://github.com/kennethjohnbalgos). Wiser Date features dynamic presentation of feed timestamps. Right now, it only displays the date statically. I'm writing the jQuery scripts to update the displayed dates in real-time and dynamic.
4
+
5
+
6
+ == Installing Gem
7
+
8
+ gem "wiser_date"
9
+
10
+
11
+
12
+ == Dependency
13
+
14
+ The Rails application should have jQuery to make the real-time feature work.
15
+
16
+
17
+ == Using the javascripts - Not Yet Available
18
+
19
+ Require jquery.wiser_date in your app/assets/application.js file.
20
+
21
+ //= require jquery.wiser_date
22
+
23
+
24
+ == Usage
25
+
26
+ Use the wiser_date function in your views.
27
+
28
+ <%= wiser_date @user.last_login_at %>
29
+ # Sample display within few seconds: just now
30
+ # Sample display within few minutes: about 30 minutes ago
31
+ # Sample display within the day: about 15 hours ago
32
+ # Sample display after the day: yesterday 12:21pm
33
+ # Sample display after 2 days: Sept 10, 2013 12:21pm
34
+
35
+ @user.last_login_at can be any timestamp you want to display.
36
+
37
+ Assume that the value is "Mon, 10 Sept 2012 12:21:16 UTC +00:00".
38
+
39
+
40
+ == Options & Examples
41
+
42
+ You can customize the behavior of the date display by using the following options:
43
+
44
+ * *date_format* - overrides the default date format [default: "%b %d, %Y"]
45
+
46
+ <%= wiser_date @user.last_login_at, :date_format => "%Y-%m-%d" %>
47
+ # Sample display within few seconds: just now
48
+ # Sample display within few minutes: about 30 minutes ago
49
+ # Sample display within the day: about 15 hours ago
50
+ # Sample display after the day: yesterday 12:21pm
51
+ # Sample display after 2 days: 2012-09-10 12:21pm
52
+
53
+ * *time_format* - overrides the default time format [default: "%l:%M%P"]
54
+
55
+ <%= wiser_date @user.last_login_at, :time_format => "%H:%M:%S" %>
56
+ # Sample display within few seconds: just now
57
+ # Sample display within few minutes: about 30 minutes ago
58
+ # Sample display within the day: about 15 hours ago
59
+ # Sample display after the day: yesterday 12:21:16
60
+ # Sample display after 2 days: Sept 10, 2013 12:21:16
61
+
62
+ * *humanize* - converts date to more readable string [default: true]
63
+
64
+ <%= wiser_date @user.last_login_at, :humanize => false %>
65
+ # Sample display within few seconds: Sept 10, 2013 12:21pm
66
+ # Sample display within few minutes: Sept 10, 2013 12:21pm
67
+ # Sample display within the day: Sept 10, 2013 12:21pm
68
+ # Sample display after the day: Sept 10, 2013 12:21pm
69
+ # Sample display after 2 days: Sept 10, 2013 12:21pm
70
+
71
+ * *time_first* - displays time first instead of date [default: false]
72
+
73
+ <%= wiser_date @user.last_login_at, :time_first => true %>
74
+ # Sample display within few seconds: just now
75
+ # Sample display within few minutes: about 30 minutes ago
76
+ # Sample display within the day: about 15 hours ago
77
+ # Sample display after the day: 12:21pm yesterday
78
+ # Sample display after 2 days: 12:21pm Sept 10, 2013
79
+
80
+ * *hide_same_year* - will not display the year if the it is the same with the present year [default: false]
81
+
82
+ <%= wiser_date @user.last_login_at, :hide_same_year => true %>
83
+ # Sample display within few seconds: just now
84
+ # Sample display within few minutes: about 30 minutes ago
85
+ # Sample display within the day: about 15 hours ago
86
+ # Sample display after the day: yesterday 12:21pm
87
+ # Sample display after 2 days: Sept 10, 12:21pm
88
+
89
+ * *capitalize* - capitalizes the first letter of the date displayed [default: true]
90
+
91
+ <%= wiser_date @user.last_login_at, :capitalize => true %>
92
+ # Sample display within few seconds: Just now
93
+ # Sample display within few minutes: About 30 minutes ago
94
+ # Sample display within the day: About 15 hours ago
95
+ # Sample display after the day: Yesterday 12:21pm
96
+ # Sample display after 2 days: Sept 10, 12:21pm
97
+
98
+
99
+ == Thanks
100
+ Thanks to me for writing an awesome real-time date display plugin :p
101
+
102
+
103
+ == Support
104
+ Open an issue in https://github.com/kennethjohnbalgos/wiser_date if you need further support or want to report a bug.
@@ -2,12 +2,12 @@ require 'date'
2
2
 
3
3
  module WiserDate
4
4
  module ViewHelpers
5
-
5
+
6
6
  include ActionView::Helpers::JavaScriptHelper
7
7
  include ActionView::Helpers::TagHelper
8
8
  include ActionView::Helpers::DateHelper
9
9
  include ActionView::Context
10
-
10
+
11
11
  def wiser_date(timestamp, options = {})
12
12
  # Options
13
13
  date_format = options.has_key?(:date_format) ? options[:date_format] : "%b %d, %Y"
@@ -16,51 +16,62 @@ module WiserDate
16
16
  time_first = options.has_key?(:time_first) ? options[:time_first] : false
17
17
  hide_same_year = options.has_key?(:hide_same_year) ? options[:hide_same_year] : false
18
18
  capitalize = options.has_key?(:capitalize) ? options[:capitalize] : true
19
-
20
-
21
- # Now
22
- time_now = Time.now
23
-
19
+ custom_class = options.has_key?(:custom_class) ? options[:custom_class] : nil
20
+ time_now = options.has_key?(:time_now) ? options[:time_now].to_datetime : Time.now
21
+
24
22
  # Formats
25
23
  flat_format = "%Y%m%d%H%M%S"
26
24
  plain_format = "%Y-%m-%d %H:%M:%S"
27
25
  custom_format = time_first ? "#{time_format} #{date_format}" : "#{date_format} #{time_format}"
28
-
26
+
29
27
  # Timestamps
30
28
  custom_timestamp = timestamp.strftime(custom_format)
31
29
  plain_timestamp = timestamp.strftime(plain_format)
32
-
30
+
33
31
  # Humanize Display
34
32
  if humanize
35
33
  time_diff_in_seconds = (time_now - timestamp.to_time).ceil
36
- time_diff = (time_diff_in_seconds / (60*60*24))
37
- if time_diff_in_seconds <= 15
34
+ time_diff_in_days = (time_diff_in_seconds / (60*60*24))
35
+ if time_diff_in_seconds <= 30 && time_diff_in_seconds >= 0
38
36
  custom_timestamp = "just now"
39
37
  elsif time_now.to_date - 1.day == timestamp.to_date
40
38
  date_value = "yesterday"
41
39
  time_value = timestamp.strftime(time_format)
42
40
  custom_timestamp = time_first ? "#{time_value} #{date_value}" : "#{date_value} #{time_value}"
43
- elsif time_diff < 1.0
41
+ elsif time_diff_in_days <= 1.0 && time_diff_in_days >= 0
44
42
  custom_timestamp = "#{distance_of_time_in_words(Time.now, timestamp.to_time)} ago"
45
43
  elsif hide_same_year && time_now.year == timestamp.year
46
44
  custom_timestamp = custom_timestamp.gsub(", #{time_now.year.to_s}", '')
47
45
  end
48
46
  end
49
-
47
+
50
48
  # Capitalize
51
49
  if capitalize
52
50
  custom_timestamp = custom_timestamp.to_s.capitalize
53
51
  end
54
-
52
+
53
+
55
54
  uniq_id = Digest::SHA1.hexdigest([Time.now, rand].join)
56
55
  html = content_tag(:span, custom_timestamp,
57
56
  "id" => uniq_id,
58
- "class" => "wiser_date",
57
+ "class" => "wiser_date #{custom_class if custom_class.present?}",
59
58
  "data-plain-timestamp" => plain_timestamp,
60
59
  "data-custom-timestamp" => custom_timestamp,
61
60
  "data-new-custom-timestamp" => custom_timestamp
62
61
  )
63
- html += javascript_tag("jQuery(document).ready(function(){if(jQuery('body meta#wiser_date').size() == 0){$('body').prepend('<meta id=\"wiser_date\" data-value=\"#"+uniq_id+"\"/>')}else{$('meta#wiser_date').attr('data-value',$('meta#wiser_date').attr('data-value')+', #"+uniq_id+"')}});")
62
+
63
+ meta_vars = []
64
+ meta_vars << "data-value=\"#"+uniq_id+"\""
65
+ meta_vars << "data-custom-format=\""+custom_format+"\""
66
+ meta_vars << "data-date-format=\""+date_format+"\""
67
+ meta_vars << "data-time-format=\""+time_format+"\""
68
+ meta_vars << "data-humanize=\""+humanize.to_s+"\""
69
+ meta_vars << "data-hide-same-year=\""+hide_same_year.to_s+"\""
70
+ meta_vars << "data-time-first=\""+time_first.to_s+"\""
71
+ meta_vars << "data-capitalize=\""+capitalize.to_s+"\""
72
+ meta_vars << "id=\"wiser_date\""
73
+
74
+ html += javascript_tag("jQuery(document).ready(function(){if(jQuery('body meta#wiser_date').size() == 0){$('body').prepend('<meta "+meta_vars.join(' ')+" />')}else{$('meta#wiser_date').attr('data-value',$('meta#wiser_date').attr('data-value')+', #"+uniq_id+"')}});")
64
75
  html.html_safe
65
76
  end
66
77
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wiser_date
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenneth John Balgos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2012-05-24 00:00:00.000000000 Z
11
+ date: 2012-05-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Display dates in the coolest format.
14
14
  email: kennethjohnbalgos@gmail.com
@@ -19,6 +19,7 @@ files:
19
19
  - lib/wiser_date/view_helpers.rb
20
20
  - lib/wiser_date/railtie.rb
21
21
  - lib/wiser_date.rb
22
+ - README.rdoc
22
23
  homepage: https://github.com/kennethjohnbalgos/wiser_date
23
24
  licenses:
24
25
  - MIT