jekyll-localization 0.0.1 → 0.0.2

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/ChangeLog CHANGED
@@ -1,5 +1,14 @@
1
1
  = Revision history for jekyll-localization
2
2
 
3
+ == 0.0.2 [2010-07-01]
4
+
5
+ * Refactoring and documentation.
6
+ * Jekyll::LANGUAGES now lives in Jekyll::Localization::LANGUAGES
7
+ * New constant Jekyll::Localization::LANG_EXT_RE
8
+ * Directory name should *NOT* contain language extension
9
+ * Turned #t method into a filter (should work for Liquid, too?)
10
+ * Credits.
11
+
3
12
  == 0.0.1 [2010-06-30]
4
13
 
5
14
  * Birthday :-)
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to jekyll-localization version 0.0.1
5
+ This documentation refers to jekyll-localization version 0.0.2
6
6
 
7
7
 
8
8
  == DESCRIPTION
@@ -13,15 +13,17 @@ Add the following to your <tt>_plugins/ext.rb</tt> file:
13
13
 
14
14
  require 'jekyll-localization'
15
15
 
16
- Then start using Engine::Erb#t in your templates, which will extract the target
17
- language from the file extension. The order of the arguments corresponds to the
18
- order of the languages defined in Jekyll::LANGUAGES:
16
+ Then start using Jekyll::Filters#t in your templates, which will extract
17
+ the target language from the file name (<tt><NAME>.<LANG>.<EXT></tt>,
18
+ where +LANG+ is supposed to be a two-letter language code). The order
19
+ of the arguments corresponds to the order of the languages defined in
20
+ Localization::LANGUAGES (e.g., +en+, +de+, +fr+):
19
21
 
20
22
  Some <%= t 'translated', 'übersetzter' %> text.
21
23
 
22
24
  You can modify Jekyll::LANGUAGES to add languages or change their order.
23
25
  The first one is the default language and will be used when a translation
24
- is missing.
26
+ is missing (+fr+ in this example).
25
27
 
26
28
 
27
29
  == LINKS
@@ -37,6 +39,12 @@ RubyGem:: <http://rubygems.org/gems/jekyll-localization>
37
39
  * Jens Wille <mailto:jens.wille@uni-koeln.de>
38
40
 
39
41
 
42
+ == CREDITS
43
+
44
+ * Arne Eilermann <mailto:arne.eilermann@uni-koeln.de> for the original idea
45
+ and implementation.
46
+
47
+
40
48
  == LICENSE AND COPYRIGHT
41
49
 
42
50
  Copyright (C) 2010 University of Cologne,
@@ -32,29 +32,39 @@ require 'jekyll/rendering'
32
32
 
33
33
  module Jekyll
34
34
 
35
- LANGUAGES = %w[en de fr]
36
-
37
35
  module Localization
36
+
37
+ # The language codes that will be considered for translation
38
+ LANGUAGES = %w[en de fr]
39
+
40
+ # What is considered a language extension
41
+ LANG_EXT_RE = %r{\.([a-z]{2})}
42
+
38
43
  end
39
44
 
40
45
  class Page
41
46
 
42
47
  alias_method :_localization_original_initialize, :initialize
43
48
 
49
+ # Overwrites the original method to extract the language extension.
44
50
  def initialize(site, base, dir, name)
45
51
  _localization_original_initialize(site, base, dir, name)
46
52
 
47
- @lang = data['lang'] = @name[/\.([a-z]{2})\.\w+\z/, 1]
53
+ @lang = data['lang'] = @name[/#{Localization::LANG_EXT_RE}\.\w+\z/, 1]
54
+ @lang_ext = ".#{@lang}" if @lang
48
55
  end
49
56
 
50
57
  alias_method :_localization_original_url, :url
51
58
 
59
+ # Overwrites the original method to include the language extension.
52
60
  def url
53
- @lang ? "#{_localization_original_url}.#{@lang}" : _localization_original_url
61
+ "#{_localization_original_url}#{@lang_ext}"
54
62
  end
55
63
 
56
64
  alias_method :_localization_original_write, :write
57
65
 
66
+ # Overwrites the original method to cater for language extension in output
67
+ # file name.
58
68
  def write(dest_prefix, dest_suffix = nil)
59
69
  dest = File.join(dest_prefix, @dir)
60
70
  dest = File.join(dest, dest_suffix) if dest_suffix
@@ -62,45 +72,35 @@ module Jekyll
62
72
 
63
73
  # The url needs to be unescaped in order to preserve the correct filename
64
74
  path = File.join(dest, CGI.unescape(url))
65
- if ext == '.html' && url !~ /\.html(?:\.[a-z]{2})?\z/
66
- FileUtils.mkdir_p(path)
67
- path = File.join(path, "index#{@lang ? "#{ext}.#{@lang}" : ext}")
68
- end
69
75
 
70
- File.open(path, 'w') { |f| f.write(output) }
71
- end
76
+ if ext == '.html' && _localization_original_url !~ /\.html\z/
77
+ path.sub!(/#{Localization::LANG_EXT_RE}\z/, '')
72
78
 
73
- end
74
-
75
- module Engine
76
-
77
- class Erb
78
-
79
- def t(*translations)
80
- index = LANGUAGES.index(page.lang)
81
- index && translations[index] || translations.first
79
+ FileUtils.mkdir_p(path)
80
+ path = File.join(path, "index#{ext}#{@lang_ext}")
82
81
  end
83
82
 
83
+ File.open(path, 'w') { |f| f.write(output) }
84
84
  end
85
85
 
86
86
  end
87
87
 
88
- class TranslateTag < Liquid::Tag
89
-
90
- # FIXME: dunno if it works...
88
+ module Filters
91
89
 
92
- def initialize(tag_name, translations, tokens)
93
- super
94
- @translations = translations
95
- end
90
+ # call-seq:
91
+ # t 'default', 'translation', ... => aString (Ruby-style)
92
+ # ['default', 'translation', ...] | t => aString (Liquid-style)
93
+ #
94
+ # Returns the argument whose position corresponds to the current
95
+ # language's position in the Localization::LANGUAGES array. If that
96
+ # particular argument is missing, +default+ is returned.
97
+ def t(*translations)
98
+ translations.flatten!
96
99
 
97
- def render(context)
98
- index = LANGUAGES.index(context.registers[:page].lang)
99
- index && @translations[index] || @translations.first
100
+ index = Localization::LANGUAGES.index(page.lang)
101
+ index && translations[index] || translations.first
100
102
  end
101
103
 
102
- Liquid::Template.register_tag('t', self)
103
-
104
104
  end
105
105
 
106
106
  end
@@ -6,7 +6,7 @@ module Jekyll
6
6
 
7
7
  MAJOR = 0
8
8
  MINOR = 0
9
- TINY = 1
9
+ TINY = 2
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: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jens Wille
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-30 00:00:00 +02:00
18
+ date: 2010-07-01 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency