bridgetown-routes 1.2.0.beta3 → 1.2.0.beta4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5949b1ebe4c5f24232ac0488c4f605218927c3da20c26bdce731552db4ede14
4
- data.tar.gz: '0811c661436d875745219faccb16509c17109eda2ebb3616bb8e1d250bdd2845'
3
+ metadata.gz: d25f883860757364304b62c272eda2e32a75f89b0822d0dcacb1cffbd9b520bc
4
+ data.tar.gz: aa1c4341ecfaa9d337d233d2e7cff360aa45784d39e67152c400d84c94c63c7f
5
5
  SHA512:
6
- metadata.gz: fd962ecf01401df33260d541bf8762589f0e0011f13dd91798f81cf8b081f72cc41b0926f5a4c475ad41287e83483bea6c5f1c9abf28df2151d051b4f7e68143
7
- data.tar.gz: be0aa19c3a01bbc1549382c2a54a006733f55c9638d5bdb1dc4dbfb94d57b26aa8a43e9db3f681112c747b9bb100a16ac5dc82fc9d61411790f25358c3a3e412
6
+ metadata.gz: 54f32ecbd983c9beec9b010ba27208c6c68811d837bb9a44b7e2057ffc6b9d0acb7414d6e967fe3e5d22a2442d4fb02ecd83acf6cea1cce505b0053b595c71d0
7
+ data.tar.gz: fc1e5cafcbcbe048ca6e49bea10c0f026efa42ca2c7d678c539db22e921448b963cd1f25069c7a22f814c691ef80088a9c27d060c52d590514d52cebc20aa98e
@@ -32,7 +32,10 @@ module Bridgetown
32
32
  ":#{Regexp.last_match(1)}"
33
33
  end
34
34
 
35
- [file, file_slug, segment_keys]
35
+ # generate localized file slugs
36
+ localized_file_slugs = generate_localized_file_slugs(site, file_slug)
37
+
38
+ [file, localized_file_slugs, segment_keys]
36
39
  end
37
40
 
38
41
  new_manifest += sort_routes!(routes)
@@ -57,6 +60,28 @@ module Bridgetown
57
60
  end
58
61
  end.reverse!
59
62
  end
63
+
64
+ def locale_for(slug, site)
65
+ possible_locale_segment = slug.split("/").first.to_sym
66
+
67
+ if site.config.available_locales.include? possible_locale_segment
68
+ possible_locale_segment
69
+ else
70
+ site.config.default_locale
71
+ end
72
+ end
73
+
74
+ private
75
+
76
+ def generate_localized_file_slugs(site, file_slug)
77
+ site.config.available_locales.map do |locale|
78
+ if locale == site.config.default_locale && !site.config.prefix_default_locale
79
+ file_slug
80
+ else
81
+ "#{locale}/#{file_slug}"
82
+ end
83
+ end
84
+ end
60
85
  end
61
86
  end
62
87
  end
@@ -16,27 +16,40 @@ module Bridgetown
16
16
  end
17
17
 
18
18
  Bridgetown::Routes::Manifest.generate_manifest(bridgetown_site).each do |route|
19
- file, file_slug, segment_keys = route
20
-
21
- r.on file_slug do |*segment_values|
22
- response["X-Bridgetown-SSR"] = "1"
23
- # eval_route_file caches when Bridgetown.env.production?
24
- Bridgetown::Routes::CodeBlocks.eval_route_file file, file_slug, @_roda_app
25
-
26
- segment_values.each_with_index do |value, index|
27
- r.params[segment_keys[index]] ||= value
28
- end
29
-
30
- route_block = Bridgetown::Routes::CodeBlocks.route_block(file_slug)
31
- response.instance_variable_set(
32
- :@_route_file_code, route_block.instance_variable_get(:@_route_file_code)
33
- ) # could be nil
34
- @_roda_app.instance_exec(r, &route_block)
19
+ file, localized_file_slugs, segment_keys = route
20
+
21
+ localized_file_slugs.each do |file_slug|
22
+ add_route(r, file, file_slug, segment_keys)
35
23
  end
36
24
  end
37
25
 
38
26
  nil
39
27
  end
28
+
29
+ private
30
+
31
+ def add_route(route, file, file_slug, segment_keys)
32
+ route.on file_slug do |*segment_values|
33
+ response["X-Bridgetown-SSR"] = "1"
34
+ # eval_route_file caches when Bridgetown.env.production?
35
+ Bridgetown::Routes::CodeBlocks.eval_route_file file, file_slug, @_roda_app
36
+
37
+ segment_values.each_with_index do |value, index|
38
+ route.params[segment_keys[index]] ||= value
39
+ end
40
+
41
+ # set route locale
42
+ locale = Bridgetown::Routes::Manifest.locale_for(file_slug, bridgetown_site)
43
+ I18n.locale = locale
44
+ route.params[:locale] = locale
45
+
46
+ route_block = Bridgetown::Routes::CodeBlocks.route_block(file_slug)
47
+ response.instance_variable_set(
48
+ :@_route_file_code, route_block.instance_variable_get(:@_route_file_code)
49
+ ) # could be nil
50
+ @_roda_app.instance_exec(route, &route_block)
51
+ end
52
+ end
40
53
  end
41
54
  end
42
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bridgetown-routes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0.beta3
4
+ version: 1.2.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bridgetown Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-09 00:00:00.000000000 Z
11
+ date: 2022-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bridgetown-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.0.beta3
19
+ version: 1.2.0.beta4
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.0.beta3
26
+ version: 1.2.0.beta4
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: roda-route_list
29
29
  requirement: !ruby/object:Gem::Requirement