mdemare-like_time 0.1.1
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.
- data/Rakefile +13 -0
- data/VERSION +1 -0
- data/lib/time.rb +77 -0
- data/like_time.gemspec +34 -0
- metadata +56 -0
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
begin
|
2
|
+
require 'jeweler'
|
3
|
+
Jeweler::Tasks.new do |gemspec|
|
4
|
+
gemspec.name = "like_time"
|
5
|
+
gemspec.authors = ["Michiel de Mare"]
|
6
|
+
gemspec.homepage = %q{http://github.com/mdemare/like_time}
|
7
|
+
gemspec.summary = %q{Allows you to specify time and date formats close to your own language.}
|
8
|
+
gemspec.description = %q{A human alternative to Time#strftime.}
|
9
|
+
gemspec.email = %q{michieldemare@gmail.com}
|
10
|
+
end
|
11
|
+
rescue LoadError
|
12
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
13
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.1
|
data/lib/time.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
class Time
|
2
|
+
def Time.default_template_language(lang)
|
3
|
+
@lang = lang
|
4
|
+
end
|
5
|
+
|
6
|
+
def Time.default_template_language
|
7
|
+
@lang
|
8
|
+
end
|
9
|
+
|
10
|
+
LANG_DATA = {
|
11
|
+
: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
|
+
:sday => %w(Su Mo Tu We Th Fr Sa),
|
16
|
+
:day => %w(Sun Mon Tue Wed Thu Fri Sat),
|
17
|
+
:lday => %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday),
|
18
|
+
:month => %w(X jan feb mar apr may jun jul aug sep oct nov dec),
|
19
|
+
:lmonth => %w(X january february march april may june july august september october november december)},
|
20
|
+
: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 },
|
24
|
+
:day => %w(Zo Ma Di Wo Do Vr Za),
|
25
|
+
:lday => %w(Zondag Maandag Dinsdag Woensdag Donderdag Vrijdag Zaterdag),
|
26
|
+
:month => %w(X jan feb mrt apr mei jun jul aug sep okt nov dec),
|
27
|
+
:lmonth => %w(X januari februari maart april mei juni juli augustus september oktober november december)}}
|
28
|
+
|
29
|
+
# +template+ 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
|
+
|
46
|
+
# +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
|
+
def like(template, lang = nil)
|
56
|
+
lang_data = LANG_DATA[(lang || Time.default_template_language).to_sym]
|
57
|
+
raise "Language #{lang} not supported." unless lang_data
|
58
|
+
s = template.dup
|
59
|
+
match_capitalization = lambda {|t,z| z == z.downcase ? t.downcase : z == z.upcase ? t.upcase : t.capitalize }
|
60
|
+
s.scan(/\d+|\w+/).each do |x|
|
61
|
+
if y = lang_data[:conversion][x.downcase]
|
62
|
+
if String === y
|
63
|
+
s.gsub! /\b#{x}\b/, y
|
64
|
+
elsif y == :day or y == :lday
|
65
|
+
s.gsub! /\b#{x}\b/, match_capitalization[lang_data[y][wday], x]
|
66
|
+
else
|
67
|
+
s.gsub! /\b#{x}\b/, match_capitalization[lang_data[y][month], x]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
strftime s
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
data/like_time.gemspec
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{like_time}
|
5
|
+
s.version = "0.1.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Michiel de Mare"]
|
9
|
+
s.date = %q{2009-06-07}
|
10
|
+
s.description = %q{A human alternative to Time#strftime.}
|
11
|
+
s.email = %q{michieldemare@gmail.com}
|
12
|
+
s.files = [
|
13
|
+
"Rakefile",
|
14
|
+
"VERSION",
|
15
|
+
"lib/time.rb",
|
16
|
+
"like_time.gemspec"
|
17
|
+
]
|
18
|
+
s.has_rdoc = true
|
19
|
+
s.homepage = %q{http://github.com/mdemare/like_time}
|
20
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
s.rubygems_version = %q{1.3.1}
|
23
|
+
s.summary = %q{Allows you to specify time and date formats close to your own language.}
|
24
|
+
|
25
|
+
if s.respond_to? :specification_version then
|
26
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
27
|
+
s.specification_version = 2
|
28
|
+
|
29
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
30
|
+
else
|
31
|
+
end
|
32
|
+
else
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mdemare-like_time
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michiel de Mare
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-06-07 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A human alternative to Time#strftime.
|
17
|
+
email: michieldemare@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- Rakefile
|
26
|
+
- VERSION
|
27
|
+
- lib/time.rb
|
28
|
+
- like_time.gemspec
|
29
|
+
has_rdoc: true
|
30
|
+
homepage: http://github.com/mdemare/like_time
|
31
|
+
post_install_message:
|
32
|
+
rdoc_options:
|
33
|
+
- --charset=UTF-8
|
34
|
+
require_paths:
|
35
|
+
- lib
|
36
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: "0"
|
41
|
+
version:
|
42
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
version:
|
48
|
+
requirements: []
|
49
|
+
|
50
|
+
rubyforge_project:
|
51
|
+
rubygems_version: 1.2.0
|
52
|
+
signing_key:
|
53
|
+
specification_version: 2
|
54
|
+
summary: Allows you to specify time and date formats close to your own language.
|
55
|
+
test_files: []
|
56
|
+
|