mdemare-like_time 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README +44 -0
  2. data/VERSION +1 -1
  3. data/lib/like_time.rb +14 -41
  4. data/like_time.gemspec +6 -2
  5. metadata +4 -3
data/README ADDED
@@ -0,0 +1,44 @@
1
+ Uses a natural format to specify a date/time format, by using a reference date/time.
2
+ This time is Sunday, December 31 1999, 23:59 UTC, or Sun 12-31-99 11:59 PM.
3
+ Capitalization of months/weekdays will match that in template.
4
+ The following subset of strftime is supported:
5
+ - Year long (1999)
6
+ - Year short (99)
7
+ - Month long (december)
8
+ - Month short (dec)
9
+ - Month numeric (12)
10
+ - Yearday (366)
11
+ - Date (31)
12
+ - Weekday long (Sunday)
13
+ - Weekday short (Sun)
14
+ - Weekday very short (Su)
15
+ - Hour, 24-hour clock (23)
16
+ - Hour, 12-hour clock (11)
17
+ - AM/PM (pm)
18
+ - Minutes (59)
19
+ - Seconds (00)
20
+ - Timezone (UTC)
21
+
22
+ Unsupported (but you may use strftime % codes)
23
+ - milliseconds
24
+ - weekday (numeric)
25
+ - week number
26
+
27
+
28
+ Currently, only English and Dutch are supported. The default language can
29
+ be set using Time.set_default_template_language.
30
+ Examples for English:
31
+ Time.set_default_template_language(:en)
32
+ Time.now.like("Sunday DECEMBER 31, 11:59 PM")
33
+ Time.now.like("Sun 31 dec")
34
+ Time.now.like("12-31-99")
35
+ Time.now.like("Next sunday at 11 o'clock")
36
+ Time.now.like("Sun 12-31-99 11:59 PM UTC")
37
+
38
+ Examples for Dutch:
39
+ Time.set_default_template_language(:nl)
40
+ Time.now.like("Zondag 31 DECEMBER 23:59")
41
+ Time.now.like("Zo 31 dec")
42
+ Time.now.like("31-12-99")
43
+ Time.now.like("Zondag om 23 uur 59")
44
+ Time.now.like("December, 1999")
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.1.5
data/lib/like_time.rb CHANGED
@@ -7,66 +7,39 @@ class Time
7
7
  @lang
8
8
  end
9
9
 
10
- LANG_DATA = {
10
+ CONVERSION = { "99" => "%y", "1999" => "%Y", "12" => "%m", "366" => "%j", "31" => "%d",
11
+ "23" => "%H", "11" => "%I", "pm" => "%p", "59" => "%M", "00" => "%S", "utc" => "%Z"
12
+ }
13
+ LANG_DATA = {
11
14
  :en => {
12
- :conversion => {"31" => "%d", "23" => "%H", "59" => "%M", "12" => "%m", "pm" => "%p",
13
- "99" => "%y", "1999" => "%Y",
14
- "su" => :sday, "sun" => :day, "sunday" => :lday, "dec" => :month, "december" => :lmonth },
15
+ :conversion => {"su" => :sday, "sun" => :day, "sunday" => :lday, "dec" => :month, "december" => :lmonth },
15
16
  :sday => %w(Su Mo Tu We Th Fr Sa),
16
17
  :day => %w(Sun Mon Tue Wed Thu Fri Sat),
17
18
  :lday => %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday),
18
19
  :month => %w(X jan feb mar apr may jun jul aug sep oct nov dec),
19
20
  :lmonth => %w(X january february march april may june july august september october november december)},
20
21
  :nl => {
21
- :conversion => {"31" => "%d", "23" => "%H", "59" => "%M", "12" => "%m", "pm" => "%p",
22
- "99" => "%y", "1999" => "%Y",
23
- "zo" => :day, "zondag" => :lday, "dec" => :month, "december" => :lmonth },
22
+ :conversion => {"zo" => :day, "zondag" => :lday, "dec" => :month, "december" => :lmonth },
24
23
  :day => %w(Zo Ma Di Wo Do Vr Za),
25
24
  :lday => %w(Zondag Maandag Dinsdag Woensdag Donderdag Vrijdag Zaterdag),
26
25
  :month => %w(X jan feb mrt apr mei jun jul aug sep okt nov dec),
27
26
  :lmonth => %w(X januari februari maart april mei juni juli augustus september oktober november december)}}
28
27
 
29
28
  # +s+ Uses a natural format to specify a date/time format, by using a reference date/time.
30
- # This time is Sunday, December 31, 23:59.
31
- # Capitalization of months/weekdays will match that in template.
32
- # The following subset of strftime is supported:
33
- # - Year long (1999)
34
- # - Year short (99)
35
- # - Month long (december)
36
- # - Month short (dec)
37
- # - Month numeric (12)
38
- # - Date (31)
39
- # - Weekday long (Sunday)
40
- # - Weekday short (Sun)
41
- # - Weekday very short (Su)
42
- # - 24-Hours (23)
43
- # - AM/PM (pm)
44
- # - Minutes (59)
45
-
29
+ # This time is Sunday, December 31 1999, 23:59 UTC, or Sun 12-31-99 11:59 PM.
30
+ # See README for details.
46
31
  # +lang+ A two-letter string or symbol. (e.g. "en")
47
- # Currently, only English and Dutch are supported. The default language can
48
- # be set using the Time.default_template_language= accessor.
49
- # Examples for Dutch:
50
- # Time.now.like("Zondag 31 DECEMBER 23:59")
51
- # Time.now.like("Zo 31 dec")
52
- # Time.now.like("31-12-99")
53
- # Time.now.like("Zondag om 23 uur 59")
54
- # Time.now.like("December, 1999")
55
32
  def like(s, lang = nil)
56
- l = lang || Time.default_template_language
57
- raise "Please supply language as parameter, or set global language with Time.set_default_template_language(lang)" unless l
33
+ l = lang || Time.default_template_language || :en
58
34
  lang_data = LANG_DATA[l.to_sym]
59
35
  raise "Language #{lang} not supported." unless lang_data
60
36
  match_capitalization = lambda {|t,z| z == z.downcase ? t.downcase : z == z.upcase ? t.upcase : t.capitalize }
61
37
  s.split(/([A-Z]+)|(\d+)/i).map do |x|
62
- if y = lang_data[:conversion][x.downcase]
63
- if String === y
64
- y
65
- elsif y == :day or y == :lday
66
- match_capitalization[lang_data[y][wday], x]
67
- else
68
- match_capitalization[lang_data[y][month], x]
69
- end
38
+ if y = CONVERSION[x.downcase]
39
+ y
40
+ elsif y = lang_data[:conversion][x.downcase]
41
+ is_day = y == :day || y == :lday
42
+ match_capitalization[lang_data[y][is_day ? wday : month], x]
70
43
  else
71
44
  x
72
45
  end
data/like_time.gemspec CHANGED
@@ -2,15 +2,19 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{like_time}
5
- s.version = "0.1.4"
5
+ s.version = "0.1.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Michiel de Mare"]
9
9
  s.date = %q{2009-06-08}
10
10
  s.description = %q{A human alternative to Time#strftime.}
11
11
  s.email = %q{michieldemare@gmail.com}
12
+ s.extra_rdoc_files = [
13
+ "README"
14
+ ]
12
15
  s.files = [
13
- "Rakefile",
16
+ "README",
17
+ "Rakefile",
14
18
  "VERSION",
15
19
  "lib/like_time.rb",
16
20
  "like_time.gemspec"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mdemare-like_time
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michiel de Mare
@@ -19,9 +19,10 @@ executables: []
19
19
 
20
20
  extensions: []
21
21
 
22
- extra_rdoc_files: []
23
-
22
+ extra_rdoc_files:
23
+ - README
24
24
  files:
25
+ - README
25
26
  - Rakefile
26
27
  - VERSION
27
28
  - lib/like_time.rb