jekyll-localization 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,5 +1,9 @@
1
1
  = Revision history for jekyll-localization
2
2
 
3
+ == 0.1.4 [2012-04-18]
4
+
5
+ * More flexible approach to date/time localization.
6
+
3
7
  == 0.1.3 [2011-05-30]
4
8
 
5
9
  * Switched license to Affero GPL.
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to jekyll-localization version 0.1.3
5
+ This documentation refers to jekyll-localization version 0.1.4
6
6
 
7
7
 
8
8
  == DESCRIPTION
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  #--
2
4
  ###############################################################################
3
5
  # #
@@ -44,15 +46,41 @@ module Jekyll
44
46
  'fr' => %w[French Französisch Français]
45
47
  }
46
48
 
47
- MONTH_LONG = {
48
- 'de' => %w[Januar Februar März April Mai Juni Juli August September Oktober November Dezember],
49
- 'fr' => %w[janvier février mars avril mai juin juillet août septembre octobre novembre décembre]
50
- }
49
+ DATE_FMT = Hash.new { |h, k| h[k] = '%a %e %b %Y %M:%M:%S %Z' }.update(
50
+ 'en' => '%a %e %b %Y %M:%M:%S %p %Z'
51
+ )
51
52
 
52
- MONTH_SHORT = {
53
- 'de' => %w[Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez],
54
- 'fr' => %w[janv fév mars avr mai juin juil août sept oct nov déc]
55
- }
53
+ DATE_FMT_LONG = Hash.new { |h, k| h[k] = '%e %B %Y' }.update(
54
+ 'de' => '%e. %B %Y'
55
+ )
56
+
57
+ DATE_FMT_SHORT = Hash.new { |h, k| h[k] = '%e %b %Y' }.update(
58
+ 'de' => '%e. %b %Y'
59
+ )
60
+
61
+ MONTHNAMES = Hash.new { |h, k| h[k] = Date::MONTHNAMES }.update(
62
+ 'de' => [nil] + %w[Januar Februar März April Mai Juni Juli August September Oktober November Dezember],
63
+ 'fr' => [nil] + %w[janvier février mars avril mai juin juillet août septembre octobre novembre décembre]
64
+ )
65
+
66
+ ABBR_MONTHNAMES = Hash.new { |h, k| h[k] = Date::ABBR_MONTHNAMES }.update(
67
+ 'de' => [nil] + %w[Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez],
68
+ 'fr' => [nil] + %w[janv. fév. mars avril mai juin juil. août sept. oct. nov. déc.]
69
+ )
70
+
71
+ DAYNAMES = Hash.new { |h, k| h[k] = Date::DAYNAMES }.update(
72
+ 'de' => %w[Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag],
73
+ 'fr' => %w[dimanche lundi mardi mercredi jeudi vendredi samedi]
74
+ )
75
+
76
+ ABBR_DAYNAMES = Hash.new { |h, k| h[k] = Date::ABBR_DAYNAMES }.update(
77
+ 'de' => %w[So Mo Di Mi Do Fr Sa],
78
+ 'fr' => %w[dim. lun. mar. mer. jeu. ven. sam.]
79
+ )
80
+
81
+ MERIDIAN = Hash.new { |h, k| h[k] = ['', ''] }.update(
82
+ 'en' => %w[AM PM]
83
+ )
56
84
 
57
85
  # What is considered a language extension
58
86
  LANG_EXT_RE = %r{\.([a-z]{2})}
@@ -187,7 +215,7 @@ module Jekyll
187
215
 
188
216
  yield
189
217
  ensure
190
- site.posts.replace(original_posts) if original_posts && page.lang
218
+ site.posts.replace(original_posts) if original_posts && lang
191
219
  end
192
220
 
193
221
  end
@@ -265,27 +293,36 @@ module Jekyll
265
293
 
266
294
  # Overwrites the original method to generate localized date strings.
267
295
  def date_to_string(date, lang = lang)
268
- local_date_string(date, false, lang)
296
+ local_date_string(date, Localization::DATE_FMT_SHORT[lang], lang)
269
297
  end
270
298
 
271
299
  alias_method :_localization_original_date_to_long_string, :date_to_long_string
272
300
 
273
301
  # Overwrites the original method to generate localized date strings.
274
302
  def date_to_long_string(date, lang = lang)
275
- local_date_string(date, true, lang)
303
+ local_date_string(date, Localization::DATE_FMT_LONG[lang], lang)
276
304
  end
277
305
 
278
- def local_date_string(date, long, lang)
279
- format = "%d#{'.' if lang == 'de'} month#{'.' if lang == 'fr' && !long} %Y"
280
-
281
- if Localization::LANGUAGES.include?(lang) && lang != 'en'
282
- month = long ? Localization::MONTH_LONG[lang][date.month - 1]:
283
- Localization::MONTH_SHORT[lang][date.month - 1]
284
- else
285
- month = long ? '%B' : '%b'
286
- end
306
+ def local_date_string(date, fmt, lang = lang)
307
+ # unabashedly stole this snippet from Joshua Harvey's Globalize plugin,
308
+ # which itself unabashedly stole it from Tadayoshi Funaba's Date class
309
+ res = ''
310
+
311
+ fmt.scan(/%[EO]?(.)|(.)/o) { |a, b|
312
+ res << case a
313
+ when nil then b
314
+ when 'A' then Localization::DAYNAMES[lang][date.wday]
315
+ when 'a' then Localization::ABBR_DAYNAMES[lang][date.wday]
316
+ when 'B' then Localization::MONTHNAMES[lang][date.month]
317
+ when 'b' then Localization::ABBR_MONTHNAMES[lang][date.month]
318
+ when 'c' then local_date_string(date, Localization::DATE_FMT[lang], lang)
319
+ when 'P' then Localization::MERIDIAN[lang][date.send(:hour) < 12 ? 0 : 1].downcase
320
+ when 'p' then Localization::MERIDIAN[lang][date.send(:hour) < 12 ? 0 : 1]
321
+ else '%' << a
322
+ end
323
+ } if fmt
287
324
 
288
- date.strftime(format.sub(/month/, month))
325
+ date.strftime(res)
289
326
  end
290
327
 
291
328
  end
@@ -6,7 +6,7 @@ module Jekyll
6
6
 
7
7
  MAJOR = 0
8
8
  MINOR = 1
9
- TINY = 3
9
+ TINY = 4
10
10
 
11
11
  class << self
12
12
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-localization
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jens Wille
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-05-31 00:00:00 Z
19
+ date: 2012-04-18 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: jekyll-rendering
@@ -47,23 +47,23 @@ extra_rdoc_files:
47
47
  files:
48
48
  - lib/jekyll/localization/version.rb
49
49
  - lib/jekyll/localization.rb
50
- - Rakefile
51
- - COPYING
52
50
  - ChangeLog
51
+ - COPYING
53
52
  - README
53
+ - Rakefile
54
54
  homepage: http://github.com/blackwinter/jekyll-localization
55
55
  licenses: []
56
56
 
57
57
  post_install_message:
58
58
  rdoc_options:
59
- - --line-numbers
60
- - --title
61
- - jekyll-localization Application documentation (v0.1.3)
62
59
  - --main
63
60
  - README
64
61
  - --charset
65
62
  - UTF-8
66
63
  - --all
64
+ - --title
65
+ - jekyll-localization Application documentation (v0.1.4)
66
+ - --line-numbers
67
67
  require_paths:
68
68
  - lib
69
69
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -87,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  requirements: []
88
88
 
89
89
  rubyforge_project:
90
- rubygems_version: 1.8.4
90
+ rubygems_version: 1.8.22
91
91
  signing_key:
92
92
  specification_version: 3
93
93
  summary: Jekyll plugin that adds localization features to the rendering engine.