mdemare-like_time 0.1.4 → 0.1.5

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.
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