middleman-more 3.1.0.beta.2 → 3.1.0.beta.3
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.
- checksums.yaml +4 -4
- data/features/i18n_builder.feature +8 -0
- data/features/i18n_preview.feature +12 -0
- data/fixtures/i18n-test-app/locales/es.yml +2 -1
- data/fixtures/i18n-test-app/source/CNAME +1 -0
- data/fixtures/i18n-test-app/source/morning.en.html.erb +1 -0
- data/fixtures/i18n-test-app/source/morning.es.html.erb +1 -0
- data/fixtures/i18n-test-app/source/password.txt +1 -0
- data/lib/middleman-more/core_extensions/default_helpers.rb +1 -1
- data/lib/middleman-more/core_extensions/i18n.rb +60 -28
- data/middleman-more.gemspec +2 -2
- metadata +16 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8d70a64e249ff6df7795667ef05024a708f3a60
|
4
|
+
data.tar.gz: 96958acceab755073342eda0410ba132ce751ded
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddb8512c1b091fffd6a30cd975c5464129febb07b776596a7770f4cf4024d642b2d37d6b143b02a91975bfc50436c97fff189b5b9019c9538d7d218970a87fbe
|
7
|
+
data.tar.gz: 390cacdf49c818ffc2ae284b7298b85d9cd4aefc5b6d2b670d9f2bdaf632babfafc2e3a13c4cc6d50c35ff8325d707f45f78eb2c3aeeff77f2453f74035e3141
|
@@ -12,14 +12,22 @@ Feature: i18n Builder
|
|
12
12
|
Then the following files should exist:
|
13
13
|
| index.html |
|
14
14
|
| hello.html |
|
15
|
+
| morning.html |
|
15
16
|
| es/index.html |
|
16
17
|
| es/hola.html |
|
18
|
+
| es/manana.html |
|
19
|
+
| CNAME |
|
20
|
+
| password.txt |
|
17
21
|
Then the following files should not exist:
|
18
22
|
| en/index.html |
|
19
23
|
And the file "index.html" should contain "Howdy"
|
20
24
|
And the file "hello.html" should contain "Hello World"
|
25
|
+
And the file "morning.html" should contain "Good morning"
|
21
26
|
And the file "es/index.html" should contain "Como Esta?"
|
22
27
|
And the file "es/hola.html" should contain "Hola World"
|
28
|
+
And the file "es/manana.html" should contain "Buenos días"
|
29
|
+
And the file "CNAME" should contain "test.github.com"
|
30
|
+
And the file "password.txt" should contain "hunter2"
|
23
31
|
|
24
32
|
Scenario: Running localize with the alt path config
|
25
33
|
Given a fixture app "i18n-test-app"
|
@@ -12,12 +12,18 @@ Feature: i18n Preview
|
|
12
12
|
Then I should see "Howdy"
|
13
13
|
When I go to "/hello.html"
|
14
14
|
Then I should see "Hello World"
|
15
|
+
When I go to "/morning.html"
|
16
|
+
Then I should see "Good morning"
|
15
17
|
When I go to "/en/index.html"
|
16
18
|
Then I should see "File Not Found"
|
19
|
+
When I go to "/en/morning.html"
|
20
|
+
Then I should see "File Not Found"
|
17
21
|
When I go to "/es/index.html"
|
18
22
|
Then I should see "Como Esta?"
|
19
23
|
When I go to "/es/hola.html"
|
20
24
|
Then I should see "Hola World"
|
25
|
+
When I go to "/es/manana.html"
|
26
|
+
Then I should see "Buenos días"
|
21
27
|
|
22
28
|
Scenario: A template changes i18n during preview
|
23
29
|
Given a fixture app "i18n-test-app"
|
@@ -119,8 +125,14 @@ Feature: i18n Preview
|
|
119
125
|
Then I should see "Como Esta?"
|
120
126
|
When I go to "/hola.html"
|
121
127
|
Then I should see "Hola World"
|
128
|
+
When I go to "/manana.html"
|
129
|
+
Then I should see "Buenos días"
|
122
130
|
When I go to "/hello.html"
|
123
131
|
Then I should see "File Not Found"
|
132
|
+
When I go to "/en/morning.html"
|
133
|
+
Then I should see "Good morning"
|
134
|
+
When I go to "/es/manana.html"
|
135
|
+
Then I should see "File Not Found"
|
124
136
|
When I go to "/es/index.html"
|
125
137
|
Then I should see "File Not Found"
|
126
138
|
When I go to "/es/hola.html"
|
@@ -0,0 +1 @@
|
|
1
|
+
test.github.com
|
@@ -0,0 +1 @@
|
|
1
|
+
Good morning
|
@@ -0,0 +1 @@
|
|
1
|
+
Buenos días
|
@@ -0,0 +1 @@
|
|
1
|
+
hunter2
|
@@ -14,7 +14,7 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
14
14
|
app.helpers ::Padrino::Helpers::RenderHelpers
|
15
15
|
app.helpers ::Padrino::Helpers::NumberHelpers
|
16
16
|
# app.helpers ::Padrino::Helpers::TranslationHelpers
|
17
|
-
app.helpers ::Padrino::Helpers::Breadcrumbs
|
17
|
+
# app.helpers ::Padrino::Helpers::Breadcrumbs
|
18
18
|
|
19
19
|
app.config.define_setting :relative_links, false, 'Whether to generate relative links instead of absolute ones'
|
20
20
|
end
|
@@ -17,6 +17,8 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
17
17
|
end
|
18
18
|
|
19
19
|
app.config.define_setting :locales_dir, "locales", 'The directory holding your locale configurations'
|
20
|
+
|
21
|
+
app.send :include, LocaleHelpers
|
20
22
|
end
|
21
23
|
|
22
24
|
def after_configuration
|
@@ -71,7 +73,7 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
71
73
|
app.files.deleted(&method(:on_file_changed))
|
72
74
|
end
|
73
75
|
|
74
|
-
helpers do
|
76
|
+
helpers do
|
75
77
|
def t(*args)
|
76
78
|
::I18n.t(*args)
|
77
79
|
end
|
@@ -108,43 +110,73 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
108
110
|
new_resources = []
|
109
111
|
|
110
112
|
resources.each do |resource|
|
111
|
-
|
113
|
+
# If it's a "localizable template"
|
114
|
+
if File.fnmatch?(File.join(options[:templates_dir], "**"), resource.path)
|
115
|
+
page_id = File.basename(resource.path, File.extname(resource.path))
|
116
|
+
langs.each do |lang|
|
117
|
+
# Remove folder name
|
118
|
+
path = resource.path.sub(options[:templates_dir], "")
|
119
|
+
new_resources << build_resource(path, resource.path, page_id, lang)
|
120
|
+
end
|
121
|
+
elsif result = parse_locale_extension(resource.path)
|
122
|
+
lang, path, page_id = result
|
123
|
+
new_resources << build_resource(path, resource.path, page_id, lang)
|
124
|
+
end
|
125
|
+
end
|
112
126
|
|
113
|
-
|
127
|
+
resources + new_resources
|
128
|
+
end
|
114
129
|
|
115
|
-
|
116
|
-
langs.map do |lang|
|
117
|
-
::I18n.locale = lang
|
130
|
+
private
|
118
131
|
|
119
|
-
|
120
|
-
|
132
|
+
# Parse locale extension filename
|
133
|
+
# @return [lang, path, basename]
|
134
|
+
# will return +nil+ if no locale extension
|
135
|
+
def parse_locale_extension(path)
|
136
|
+
path_bits = path.split('.')
|
137
|
+
return nil if path_bits.size < 3
|
121
138
|
|
122
|
-
|
123
|
-
|
124
|
-
prefix = "/"
|
125
|
-
else
|
126
|
-
replacement = options[:lang_map].has_key?(lang) ? options[:lang_map][lang] : lang
|
127
|
-
prefix = options[:path].sub(":locale", replacement.to_s)
|
128
|
-
end
|
139
|
+
lang = path_bits.delete_at(-2).to_sym
|
140
|
+
return nil unless langs.include?(lang)
|
129
141
|
|
130
|
-
|
131
|
-
|
132
|
-
)
|
142
|
+
path = path_bits.join('.')
|
143
|
+
basename = File.basename(path_bits[0..-2].join('.'))
|
133
144
|
|
134
|
-
|
145
|
+
[lang, path, basename]
|
146
|
+
end
|
135
147
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
)
|
140
|
-
p.proxy_to(resource.path)
|
148
|
+
def build_resource(path, source_path, page_id, lang)
|
149
|
+
old_locale = ::I18n.locale
|
150
|
+
::I18n.locale = lang
|
141
151
|
|
142
|
-
|
143
|
-
end
|
144
|
-
::I18n.locale = old_locale
|
152
|
+
localized_page_id = ::I18n.t("paths.#{page_id}", :default => page_id, :fallback => [])
|
145
153
|
|
154
|
+
if @mount_at_root == lang
|
155
|
+
prefix = "/"
|
156
|
+
else
|
157
|
+
replacement = options[:lang_map].fetch(lang, lang)
|
158
|
+
prefix = options[:path].sub(":locale", replacement.to_s)
|
146
159
|
end
|
147
160
|
|
148
|
-
|
161
|
+
path = ::Middleman::Util.normalize_path(
|
162
|
+
File.join(prefix, path.sub(page_id, localized_page_id))
|
163
|
+
)
|
164
|
+
|
165
|
+
@_localization_data[path] = [lang, path, localized_page_id]
|
166
|
+
|
167
|
+
p = ::Middleman::Sitemap::Resource.new(app.sitemap, path)
|
168
|
+
p.proxy_to(source_path)
|
169
|
+
|
170
|
+
::I18n.locale = old_locale
|
171
|
+
|
172
|
+
p
|
173
|
+
end
|
174
|
+
|
175
|
+
module LocaleHelpers
|
176
|
+
# Access the list of languages supported by this Middleman application
|
177
|
+
# @return [Array<Symbol>]
|
178
|
+
def langs
|
179
|
+
extensions[:i18n].langs
|
180
|
+
end
|
149
181
|
end
|
150
182
|
end
|
data/middleman-more.gemspec
CHANGED
@@ -24,6 +24,6 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_dependency("coffee-script", ["~> 2.2.0"])
|
25
25
|
s.add_dependency("execjs", ["~> 1.4.0"])
|
26
26
|
s.add_dependency("kramdown", ["~> 1.0.0"])
|
27
|
-
s.add_dependency("i18n", ["~> 0.6.
|
28
|
-
s.add_dependency("padrino-helpers", ["0.
|
27
|
+
s.add_dependency("i18n", ["~> 0.6.1"])
|
28
|
+
s.add_dependency("padrino-helpers", ["0.10.7"])
|
29
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-more
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1.0.beta.
|
4
|
+
version: 3.1.0.beta.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Reynolds
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: middleman-core
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - '='
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 3.1.0.beta.
|
20
|
+
version: 3.1.0.beta.3
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - '='
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 3.1.0.beta.
|
27
|
+
version: 3.1.0.beta.3
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: uglifier
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -129,28 +129,28 @@ dependencies:
|
|
129
129
|
requirements:
|
130
130
|
- - ~>
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: 0.6.
|
132
|
+
version: 0.6.1
|
133
133
|
type: :runtime
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
137
|
- - ~>
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 0.6.
|
139
|
+
version: 0.6.1
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: padrino-helpers
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - '='
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: 0.
|
146
|
+
version: 0.10.7
|
147
147
|
type: :runtime
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - '='
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: 0.
|
153
|
+
version: 0.10.7
|
154
154
|
description: A static site generator. Provides dozens of templating languages (Haml,
|
155
155
|
Sass, Compass, Slim, CoffeeScript, and more). Makes minification, compression, cache
|
156
156
|
busting, Yaml data (and more) an easy part of your development cycle.
|
@@ -325,9 +325,13 @@ files:
|
|
325
325
|
- fixtures/i18n-force-locale/source/index.haml
|
326
326
|
- fixtures/i18n-test-app/locales/en.yml
|
327
327
|
- fixtures/i18n-test-app/locales/es.yml
|
328
|
+
- fixtures/i18n-test-app/source/CNAME
|
328
329
|
- fixtures/i18n-test-app/source/layout.erb
|
329
330
|
- fixtures/i18n-test-app/source/localizable/hello.html.erb
|
330
331
|
- fixtures/i18n-test-app/source/localizable/index.html.erb
|
332
|
+
- fixtures/i18n-test-app/source/morning.en.html.erb
|
333
|
+
- fixtures/i18n-test-app/source/morning.es.html.erb
|
334
|
+
- fixtures/i18n-test-app/source/password.txt
|
331
335
|
- fixtures/i18n-test-app/source/stylesheets/site.css
|
332
336
|
- fixtures/ignore-app/source/about.html.erb
|
333
337
|
- fixtures/ignore-app/source/images/icon/messages.png
|
@@ -802,9 +806,13 @@ test_files:
|
|
802
806
|
- fixtures/i18n-force-locale/source/index.haml
|
803
807
|
- fixtures/i18n-test-app/locales/en.yml
|
804
808
|
- fixtures/i18n-test-app/locales/es.yml
|
809
|
+
- fixtures/i18n-test-app/source/CNAME
|
805
810
|
- fixtures/i18n-test-app/source/layout.erb
|
806
811
|
- fixtures/i18n-test-app/source/localizable/hello.html.erb
|
807
812
|
- fixtures/i18n-test-app/source/localizable/index.html.erb
|
813
|
+
- fixtures/i18n-test-app/source/morning.en.html.erb
|
814
|
+
- fixtures/i18n-test-app/source/morning.es.html.erb
|
815
|
+
- fixtures/i18n-test-app/source/password.txt
|
808
816
|
- fixtures/i18n-test-app/source/stylesheets/site.css
|
809
817
|
- fixtures/ignore-app/source/about.html.erb
|
810
818
|
- fixtures/ignore-app/source/images/icon/messages.png
|