bridgetown-core 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bridgetown-core/commands/esbuild/update.rb +1 -1
- data/lib/bridgetown-core/configuration.rb +1 -0
- data/lib/bridgetown-core/drops/drop.rb +2 -1
- data/lib/bridgetown-core/filters/localization_filters.rb +28 -2
- data/lib/bridgetown-core/filters/translation_filters.rb +15 -2
- data/lib/bridgetown-core/filters.rb +3 -4
- data/lib/bridgetown-core/generators/prototype_generator.rb +2 -1
- data/lib/bridgetown-core/helpers.rb +4 -3
- data/lib/bridgetown-core/tags/l.rb +4 -2
- data/lib/bridgetown-core/tags/t.rb +6 -2
- data/lib/bridgetown-core/tasks/bridgetown_tasks.rake +11 -0
- data/lib/bridgetown-core/utils/loaders_manager.rb +2 -1
- data/lib/bridgetown-core/version.rb +1 -1
- data/lib/bridgetown-core.rb +1 -1
- data/lib/site_template/config/initializers.rb +20 -0
- data/lib/site_template/package.json.erb +12 -12
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97de36caa078103a75226bcc77072ba86c958e58f77a22fb7282fe4d1ef4ef22
|
4
|
+
data.tar.gz: e3fc1723d1c4acc2b3f715ba138de15c77ad0cabaeaca75bf8e5b9b359f61cdb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d19ca716967ef3aae5a991a965ecd89805eb05135ebf8a87c0e320421986b4a2275c63eedf7dcdb41dd35b77c497bb823501849cf824432010a6f9f63d8e315
|
7
|
+
data.tar.gz: 4b06864b42beb7693c50ee75853ad3c4237fc997d8570d5ea5eb8bc41b19af3d12740b58204d0320475b9b1cbf823847dc7449d54ea20819c3b2b954443a2516
|
@@ -5,5 +5,5 @@ copy_file "jsconfig.json"
|
|
5
5
|
say "🎉 esbuild configuration updated successfully!"
|
6
6
|
say "You may need to add `$styles/` to the front of your main CSS imports."
|
7
7
|
say "See https://www.bridgetownrb.com/docs/frontend-assets#esbuild-setup for details."
|
8
|
-
say "⚠️ Don't forget to update the esbuild version in your `package.json` file to \"^0.
|
8
|
+
say "⚠️ Don't forget to update the esbuild version in your `package.json` file to \"^0.19.2\""
|
9
9
|
say "and run `yarn install`!"
|
@@ -41,6 +41,7 @@ module Bridgetown
|
|
41
41
|
category: { key: "categories", title: "Category" }, tag: { key: "tags", title: "Tag" },
|
42
42
|
},
|
43
43
|
"autoload_paths" => [],
|
44
|
+
"inflector" => nil,
|
44
45
|
"eager_load_paths" => [],
|
45
46
|
"autoloader_collapsed_paths" => [],
|
46
47
|
"additional_watch_paths" => [],
|
@@ -202,7 +202,8 @@ module Bridgetown
|
|
202
202
|
return self[key] if key?(key)
|
203
203
|
raise KeyError, %(key not found: "#{key}") if default.nil? && block.nil?
|
204
204
|
return yield(key) unless block.nil?
|
205
|
-
|
205
|
+
|
206
|
+
default unless default.nil?
|
206
207
|
end
|
207
208
|
|
208
209
|
private
|
@@ -3,8 +3,34 @@
|
|
3
3
|
module Bridgetown
|
4
4
|
module Filters
|
5
5
|
module LocalizationFilters
|
6
|
-
def l(input)
|
7
|
-
|
6
|
+
def l(input, format = nil, locale = nil)
|
7
|
+
date = Liquid::Utils.to_date(input)
|
8
|
+
return input if date.nil?
|
9
|
+
|
10
|
+
format = maybe_symbolized(format, date)
|
11
|
+
locale ||= maybe_locale(format)
|
12
|
+
format = nil if locale == format
|
13
|
+
|
14
|
+
I18n.l(date, format: format, locale: locale)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def maybe_locale(format)
|
20
|
+
return if format.nil?
|
21
|
+
|
22
|
+
Bridgetown::Current.site.config.available_locales.include?(format.to_sym) ? format : nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def maybe_symbolized(format, object)
|
26
|
+
return if format.nil?
|
27
|
+
|
28
|
+
type = type_of(object)
|
29
|
+
I18n.t("#{type}.formats").key?(format.to_sym) ? format.to_sym : format
|
30
|
+
end
|
31
|
+
|
32
|
+
def type_of(object)
|
33
|
+
object.respond_to?(:sec) ? "time" : "date"
|
8
34
|
end
|
9
35
|
end
|
10
36
|
end
|
@@ -3,8 +3,21 @@
|
|
3
3
|
module Bridgetown
|
4
4
|
module Filters
|
5
5
|
module TranslationFilters
|
6
|
-
def t(input)
|
7
|
-
|
6
|
+
def t(input, options = "")
|
7
|
+
options = string_to_hash(options)
|
8
|
+
locale = options.delete(:locale)
|
9
|
+
count = options.delete(:count)
|
10
|
+
options[:count] = count.to_i unless count.nil?
|
11
|
+
|
12
|
+
I18n.t(input.to_s, locale: locale, **options)
|
13
|
+
rescue ArgumentError
|
14
|
+
input
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def string_to_hash(options)
|
20
|
+
options.split(",").to_h { |e| e.split(":").map(&:strip) }.symbolize_keys
|
8
21
|
end
|
9
22
|
end
|
10
23
|
end
|
@@ -7,6 +7,8 @@ module Bridgetown
|
|
7
7
|
include URLFilters
|
8
8
|
include GroupingFilters
|
9
9
|
include DateFilters
|
10
|
+
include LocalizationFilters
|
11
|
+
include TranslationFilters
|
10
12
|
include ConditionHelpers
|
11
13
|
|
12
14
|
# Convert a Markdown string into HTML output.
|
@@ -102,7 +104,7 @@ module Bridgetown
|
|
102
104
|
def obfuscate_link(input, prefix = "mailto")
|
103
105
|
link = "<a href=\"#{prefix}:#{input}\">#{input}</a>"
|
104
106
|
script = "<script type=\"text/javascript\">document.currentScript.insertAdjacentHTML('"
|
105
|
-
script += "beforebegin', '#{rot47(link).gsub(
|
107
|
+
script += "beforebegin', '#{rot47(link).gsub("\\", '\\\\\\')}'.replace(/[!-~]/g," # rubocop:disable Style/StringLiteralsInInterpolation
|
106
108
|
script += "function(c){{var j=c.charCodeAt(0);if((j>=33)&&(j<=126)){"
|
107
109
|
script += "return String.fromCharCode(33+((j+ 14)%94));}"
|
108
110
|
script += "else{return String.fromCharCode(j);}}}));</script>"
|
@@ -433,6 +435,3 @@ end
|
|
433
435
|
Liquid::Template.register_filter(
|
434
436
|
Bridgetown::Filters
|
435
437
|
)
|
436
|
-
Liquid::Template.register_filter(
|
437
|
-
Bridgetown::Filters::TranslationFilters
|
438
|
-
)
|
@@ -144,9 +144,10 @@ module Bridgetown
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def process_prototype_page_data(collection, search_term, term)
|
147
|
+
pagination_key = prototyped_page.data.key?("paginate") ? "paginate" : "pagination"
|
147
148
|
# Fill in pagination details to be handled later by Bridgetown::Paginate
|
148
149
|
data["pagination"] = Bridgetown::Utils.deep_merge_hashes(
|
149
|
-
prototyped_page.data[
|
150
|
+
prototyped_page.data[pagination_key].to_h, {
|
150
151
|
"enabled" => true,
|
151
152
|
"collection" => collection,
|
152
153
|
"where_query" => [search_term, term],
|
@@ -97,10 +97,11 @@ module Bridgetown
|
|
97
97
|
# @param options [Hash] key-value pairs of HTML attributes to add to the tag
|
98
98
|
# @return [String] the anchor tag HTML
|
99
99
|
# @raise [ArgumentError] if the file cannot be found
|
100
|
-
def link_to(text, relative_path = nil, options = {})
|
101
|
-
if
|
100
|
+
def link_to(text, relative_path = nil, options = {}, &block)
|
101
|
+
if block.present?
|
102
|
+
options = relative_path || {}
|
102
103
|
relative_path = text
|
103
|
-
text = yield
|
104
|
+
text = view.respond_to?(:capture) ? view.capture(&block) : yield
|
104
105
|
elsif relative_path.nil?
|
105
106
|
raise ArgumentError, "You must provide a relative path"
|
106
107
|
end
|
@@ -3,9 +3,11 @@
|
|
3
3
|
module Bridgetown
|
4
4
|
module Tags
|
5
5
|
class LocalizationTag < Liquid::Tag
|
6
|
+
include Bridgetown::Filters::LocalizationFilters
|
7
|
+
|
6
8
|
def render(_context)
|
7
|
-
|
8
|
-
|
9
|
+
input, format, locale = @markup.split.map(&:strip)
|
10
|
+
l(input, format, locale)
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -3,9 +3,13 @@
|
|
3
3
|
module Bridgetown
|
4
4
|
module Tags
|
5
5
|
class TranslationTag < Liquid::Tag
|
6
|
+
include Bridgetown::Filters::TranslationFilters
|
7
|
+
|
6
8
|
def render(_context)
|
7
|
-
|
8
|
-
|
9
|
+
input, options = @markup.split.map(&:strip)
|
10
|
+
options ||= ""
|
11
|
+
|
12
|
+
t(input, options).to_s
|
9
13
|
end
|
10
14
|
end
|
11
15
|
end
|
@@ -73,3 +73,14 @@ task :environment do # rubocop:todo Metrics/BlockLength
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
76
|
+
|
77
|
+
# rubocop:disable Bridgetown/NoPutsAllowed
|
78
|
+
desc "Provides a time zone-aware date string you can use in front matter"
|
79
|
+
task date: :environment do
|
80
|
+
run_initializers
|
81
|
+
|
82
|
+
puts "🗓️ Today's date & time in your site's timezone (#{ENV.fetch("TZ", "NOT SET")}):"
|
83
|
+
puts
|
84
|
+
puts "➡️ #{Time.now.strftime("%a, %d %b %Y %T %z")}"
|
85
|
+
end
|
86
|
+
# rubocop:enable Bridgetown/NoPutsAllowed
|
@@ -47,7 +47,7 @@ module Bridgetown
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def setup_loaders(autoload_paths = []) # rubocop:todo Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
|
50
|
-
(autoload_paths.presence || config.autoload_paths).each do |load_path|
|
50
|
+
(autoload_paths.presence || config.autoload_paths).each do |load_path| # rubocop:todo Metrics/BlockLength
|
51
51
|
if @loaders.key?(load_path)
|
52
52
|
raise "Zeitwerk loader already added for `#{load_path}'. Please check your config"
|
53
53
|
end
|
@@ -55,6 +55,7 @@ module Bridgetown
|
|
55
55
|
next unless Dir.exist? load_path
|
56
56
|
|
57
57
|
loader = Zeitwerk::Loader.new
|
58
|
+
loader.inflector = config.inflector if config.inflector
|
58
59
|
begin
|
59
60
|
loader.push_dir(load_path)
|
60
61
|
rescue Zeitwerk::Error
|
data/lib/bridgetown-core.rb
CHANGED
@@ -77,7 +77,6 @@ module Bridgetown
|
|
77
77
|
autoload :Cleaner, "bridgetown-core/cleaner"
|
78
78
|
autoload :Collection, "bridgetown-core/collection"
|
79
79
|
autoload :Component, "bridgetown-core/component"
|
80
|
-
autoload :Configuration, "bridgetown-core/configuration"
|
81
80
|
autoload :DefaultsReader, "bridgetown-core/readers/defaults_reader"
|
82
81
|
autoload :Deprecator, "bridgetown-core/deprecator"
|
83
82
|
autoload :EntryFilter, "bridgetown-core/entry_filter"
|
@@ -119,6 +118,7 @@ module Bridgetown
|
|
119
118
|
require "bridgetown-core/liquid_extensions"
|
120
119
|
require "bridgetown-core/filters"
|
121
120
|
|
121
|
+
require "bridgetown-core/configuration"
|
122
122
|
require "bridgetown-core/drops/drop"
|
123
123
|
require "bridgetown-core/drops/resource_drop"
|
124
124
|
require_all "bridgetown-core/converters"
|
@@ -10,6 +10,26 @@ Bridgetown.configure do |config|
|
|
10
10
|
# config.autoload_paths << "models"
|
11
11
|
#
|
12
12
|
|
13
|
+
# You can configure the inflector used by Zeitwerk. In v2.0,
|
14
|
+
# ActiveSupport::Inflector will become the default.
|
15
|
+
#
|
16
|
+
# config.inflector = ActiveSupport::Inflector
|
17
|
+
#
|
18
|
+
# Add new inflection rules using the following format. Inflections
|
19
|
+
# are locale specific, and you may define rules for as many different
|
20
|
+
# locales as you wish. All of these examples are active by default:
|
21
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
22
|
+
# inflect.plural /^(ox)$/i, "\\1en"
|
23
|
+
# inflect.singular /^(ox)en/i, "\\1"
|
24
|
+
# inflect.irregular "person", "people"
|
25
|
+
# inflect.uncountable %w( fish sheep )
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# These inflection rules are supported but not enabled by default:
|
29
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
30
|
+
# inflect.acronym "RESTful"
|
31
|
+
# end
|
32
|
+
|
13
33
|
# You can use `init` to initialize various Bridgetown features or plugin gems.
|
14
34
|
# For example, you can use the Dotenv gem to load environment variables from
|
15
35
|
# `.env`. Just `bundle add dotenv` and then uncomment this:
|
@@ -13,17 +13,17 @@
|
|
13
13
|
},
|
14
14
|
"devDependencies": {
|
15
15
|
<%- if frontend_bundling_option == "webpack" -%>
|
16
|
-
"css-loader": "^6.
|
16
|
+
"css-loader": "^6.8.1",
|
17
17
|
<%- end -%>
|
18
|
-
"esbuild": "^0.
|
18
|
+
"esbuild": "^0.19.2",
|
19
19
|
<%- if frontend_bundling_option == "webpack" -%>
|
20
|
-
"esbuild-loader": "^
|
21
|
-
"mini-css-extract-plugin": "^2.6
|
20
|
+
"esbuild-loader": "^4.0.2",
|
21
|
+
"mini-css-extract-plugin": "^2.7.6",
|
22
22
|
<%- else -%>
|
23
|
-
"glob": "^10.
|
23
|
+
"glob": "^10.3.3",
|
24
24
|
<%- end -%>
|
25
25
|
<%- unless disable_postcss? -%>
|
26
|
-
"postcss": "^8.4.
|
26
|
+
"postcss": "^8.4.29",
|
27
27
|
"postcss-flexbugs-fixes": "^5.0.2",
|
28
28
|
<%- if frontend_bundling_option == "esbuild" -%>
|
29
29
|
"postcss-import": "^15.1.0",
|
@@ -31,20 +31,20 @@
|
|
31
31
|
<%- else -%>
|
32
32
|
"postcss-loader": "^6.2.1",
|
33
33
|
<%- end -%>
|
34
|
-
"postcss-preset-env": "^
|
34
|
+
"postcss-preset-env": "^9.1.2",
|
35
35
|
<%- if frontend_bundling_option == "esbuild" -%>
|
36
36
|
"read-cache": "^1.0.0"<%= "," unless postcss_option %>
|
37
37
|
<%- end -%>
|
38
38
|
<%- end -%>
|
39
39
|
<%- unless postcss_option -%>
|
40
|
-
"sass": "^1.
|
41
|
-
"sass-loader": "^
|
40
|
+
"sass": "^1.66.1",
|
41
|
+
"sass-loader": "^13.3.2"<%= "," if frontend_bundling_option == "webpack" %>
|
42
42
|
<%- end -%>
|
43
43
|
<%- if frontend_bundling_option == "webpack" -%>
|
44
|
-
"webpack": "^5.
|
45
|
-
"webpack-cli": "^
|
44
|
+
"webpack": "^5.88.2",
|
45
|
+
"webpack-cli": "^5.1.4",
|
46
46
|
"webpack-manifest-plugin": "^5.0.0",
|
47
|
-
"webpack-merge": "^5.
|
47
|
+
"webpack-merge": "^5.9.0"
|
48
48
|
<%- end -%>
|
49
49
|
}
|
50
50
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bridgetown-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bridgetown Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|