bridgetown-core 0.20.0 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bridgetown-core.gemspec +0 -1
- data/lib/bridgetown-core.rb +11 -22
- data/lib/bridgetown-core/cleaner.rb +2 -2
- data/lib/bridgetown-core/collection.rb +14 -11
- data/lib/bridgetown-core/commands/build.rb +0 -11
- data/lib/bridgetown-core/commands/concerns/git_helpers.rb +20 -0
- data/lib/bridgetown-core/commands/configure.rb +4 -3
- data/lib/bridgetown-core/commands/doctor.rb +1 -19
- data/lib/bridgetown-core/commands/new.rb +6 -6
- data/lib/bridgetown-core/commands/plugins.rb +14 -13
- data/lib/bridgetown-core/commands/serve.rb +0 -14
- data/lib/bridgetown-core/commands/webpack.rb +75 -0
- data/lib/bridgetown-core/commands/webpack/enable-postcss.rb +12 -0
- data/lib/bridgetown-core/commands/webpack/setup.rb +4 -0
- data/lib/bridgetown-core/commands/webpack/update.rb +3 -0
- data/lib/bridgetown-core/commands/webpack/webpack.config.js +18 -0
- data/lib/{site_template/webpack.config.js.erb → bridgetown-core/commands/webpack/webpack.defaults.js.erb} +25 -11
- data/lib/bridgetown-core/component.rb +183 -0
- data/lib/bridgetown-core/concerns/front_matter_importer.rb +52 -0
- data/lib/bridgetown-core/concerns/layout_placeable.rb +1 -1
- data/lib/bridgetown-core/concerns/site/configurable.rb +3 -7
- data/lib/bridgetown-core/concerns/site/content.rb +2 -3
- data/lib/bridgetown-core/concerns/site/localizable.rb +3 -5
- data/lib/bridgetown-core/concerns/site/processable.rb +5 -4
- data/lib/bridgetown-core/concerns/site/writable.rb +1 -1
- data/lib/bridgetown-core/concerns/validatable.rb +1 -5
- data/lib/bridgetown-core/configuration.rb +22 -14
- data/lib/bridgetown-core/configurations/bt-postcss.rb +6 -6
- data/lib/bridgetown-core/configurations/netlify.rb +1 -0
- data/lib/bridgetown-core/configurations/tailwindcss.rb +6 -6
- data/lib/bridgetown-core/converter.rb +9 -0
- data/lib/bridgetown-core/converters/erb_templates.rb +51 -35
- data/lib/bridgetown-core/converters/liquid_templates.rb +1 -1
- data/lib/bridgetown-core/converters/markdown.rb +1 -1
- data/lib/bridgetown-core/converters/markdown/kramdown_parser.rb +2 -38
- data/lib/bridgetown-core/converters/ruby_templates.rb +17 -0
- data/lib/bridgetown-core/converters/smartypants.rb +3 -1
- data/lib/bridgetown-core/core_ext/psych.rb +19 -0
- data/lib/bridgetown-core/document.rb +3 -2
- data/lib/bridgetown-core/drops/relations_drop.rb +23 -0
- data/lib/bridgetown-core/drops/resource_drop.rb +3 -1
- data/lib/bridgetown-core/drops/unified_payload_drop.rb +1 -0
- data/lib/bridgetown-core/entry_filter.rb +7 -5
- data/lib/bridgetown-core/filters.rb +1 -25
- data/lib/bridgetown-core/filters/from_liquid.rb +23 -0
- data/lib/bridgetown-core/filters/url_filters.rb +12 -0
- data/lib/bridgetown-core/frontmatter_defaults.rb +1 -1
- data/lib/bridgetown-core/generators/prototype_generator.rb +25 -4
- data/lib/bridgetown-core/helpers.rb +48 -9
- data/lib/bridgetown-core/layout.rb +52 -20
- data/lib/bridgetown-core/model/origin.rb +1 -1
- data/lib/bridgetown-core/model/{file_origin.rb → repo_origin.rb} +33 -26
- data/lib/bridgetown-core/page.rb +2 -1
- data/lib/bridgetown-core/plugin_manager.rb +1 -1
- data/lib/bridgetown-core/publisher.rb +2 -2
- data/lib/bridgetown-core/reader.rb +13 -11
- data/lib/bridgetown-core/readers/data_reader.rb +2 -1
- data/lib/bridgetown-core/readers/defaults_reader.rb +1 -1
- data/lib/bridgetown-core/readers/layout_reader.rb +1 -1
- data/lib/bridgetown-core/readers/page_reader.rb +1 -0
- data/lib/bridgetown-core/readers/post_reader.rb +5 -4
- data/lib/bridgetown-core/regenerator.rb +1 -1
- data/lib/bridgetown-core/related_posts.rb +8 -5
- data/lib/bridgetown-core/renderer.rb +1 -1
- data/lib/bridgetown-core/resource/base.rb +80 -26
- data/lib/bridgetown-core/resource/permalink_processor.rb +1 -1
- data/lib/bridgetown-core/resource/relations.rb +132 -0
- data/lib/bridgetown-core/resource/taxonomy_term.rb +10 -1
- data/lib/bridgetown-core/resource/taxonomy_type.rb +9 -0
- data/lib/bridgetown-core/resource/transformer.rb +18 -14
- data/lib/bridgetown-core/ruby_template_view.rb +7 -11
- data/lib/bridgetown-core/site.rb +4 -5
- data/lib/bridgetown-core/tags/highlight.rb +2 -15
- data/lib/bridgetown-core/tags/include.rb +1 -1
- data/lib/bridgetown-core/tags/post_url.rb +2 -2
- data/lib/bridgetown-core/utils.rb +9 -3
- data/lib/bridgetown-core/utils/require_gems.rb +60 -0
- data/lib/bridgetown-core/utils/ruby_exec.rb +6 -9
- data/lib/bridgetown-core/utils/ruby_front_matter.rb +39 -0
- data/lib/bridgetown-core/version.rb +2 -2
- data/lib/bridgetown-core/watcher.rb +2 -1
- data/lib/bridgetown-core/yaml_parser.rb +22 -0
- data/lib/site_template/config/.keep +0 -0
- data/lib/site_template/package.json.erb +4 -4
- data/lib/site_template/plugins/site_builder.rb +1 -1
- data/lib/site_template/src/_posts/0000-00-00-welcome-to-bridgetown.md.erb +1 -1
- metadata +21 -23
- data/lib/bridgetown-core/external.rb +0 -58
- data/lib/bridgetown-core/path_manager.rb +0 -31
- data/lib/bridgetown-core/readers/static_file_reader.rb +0 -25
- data/lib/bridgetown-core/utils/platforms.rb +0 -81
- data/lib/bridgetown-core/utils/thread_event.rb +0 -31
@@ -1,58 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bridgetown
|
4
|
-
module External
|
5
|
-
class << self
|
6
|
-
#
|
7
|
-
# Require a gem or file if it's present, otherwise silently fail.
|
8
|
-
#
|
9
|
-
# names - a string gem name or array of gem names
|
10
|
-
#
|
11
|
-
def require_if_present(names)
|
12
|
-
Array(names).each do |name|
|
13
|
-
require name
|
14
|
-
rescue LoadError
|
15
|
-
Bridgetown.logger.debug "Couldn't load #{name}. Skipping."
|
16
|
-
yield(name, version_constraint(name)) if block_given?
|
17
|
-
false
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
#
|
22
|
-
# The version constraint required to activate a given gem.
|
23
|
-
#
|
24
|
-
# Returns a String version constraint in a parseable form for
|
25
|
-
# RubyGems.
|
26
|
-
def version_constraint
|
27
|
-
"> 0"
|
28
|
-
end
|
29
|
-
|
30
|
-
#
|
31
|
-
# Require a gem or gems. If it's not present, show a very nice error
|
32
|
-
# message that explains everything and is much more helpful than the
|
33
|
-
# normal LoadError.
|
34
|
-
#
|
35
|
-
# names - a string gem name or array of gem names
|
36
|
-
#
|
37
|
-
def require_with_graceful_fail(names)
|
38
|
-
Array(names).each do |name|
|
39
|
-
Bridgetown.logger.debug "Requiring:", name.to_s
|
40
|
-
require name
|
41
|
-
rescue LoadError => e
|
42
|
-
Bridgetown.logger.error "Dependency Error:", <<~MSG
|
43
|
-
Yikes! It looks like you don't have #{name} or one of its dependencies installed.
|
44
|
-
In order to use Bridgetown as currently configured, you'll need to install this gem.
|
45
|
-
|
46
|
-
If you've run Bridgetown with `bundle exec`, ensure that you have included the #{name}
|
47
|
-
gem in your Gemfile as well.
|
48
|
-
|
49
|
-
The full error message from Ruby is: '#{e.message}'
|
50
|
-
|
51
|
-
If you run into trouble, you can find helpful resources at https://www.bridgetownrb.com/docs/community/
|
52
|
-
MSG
|
53
|
-
raise Bridgetown::Errors::MissingDependencyException, name
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bridgetown
|
4
|
-
# A singleton class that caches frozen instances of path strings returned from its methods.
|
5
|
-
#
|
6
|
-
# NOTE:
|
7
|
-
# This class exists because `File.join` allocates an Array and returns a new String on every
|
8
|
-
# call using **the same arguments**. Caching the result means reduced memory usage.
|
9
|
-
# However, the caches are never flushed so that they can be used even when a site is
|
10
|
-
# regenerating. The results are frozen to deter mutation of the cached string.
|
11
|
-
#
|
12
|
-
# Therefore, employ this class only for situations where caching the result is necessary
|
13
|
-
# for performance reasons.
|
14
|
-
#
|
15
|
-
class PathManager
|
16
|
-
# This class cannot be initialized from outside
|
17
|
-
private_class_method :new
|
18
|
-
|
19
|
-
# Wraps `File.join` to cache the frozen result.
|
20
|
-
# Reassigns `nil`, empty strings and empty arrays to a frozen empty string beforehand.
|
21
|
-
#
|
22
|
-
# Returns a frozen string.
|
23
|
-
def self.join(base, item)
|
24
|
-
base = "" if base.nil? || base.empty?
|
25
|
-
item = "" if item.nil? || item.empty?
|
26
|
-
@join ||= {}
|
27
|
-
@join[base] ||= {}
|
28
|
-
@join[base][item] ||= File.join(base, item).freeze
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bridgetown
|
4
|
-
class StaticFileReader
|
5
|
-
attr_reader :site, :dir, :unfiltered_content
|
6
|
-
|
7
|
-
def initialize(site, dir)
|
8
|
-
@site = site
|
9
|
-
@dir = dir
|
10
|
-
@unfiltered_content = []
|
11
|
-
end
|
12
|
-
|
13
|
-
# Create a new StaticFile object for every entry in a given list of basenames.
|
14
|
-
#
|
15
|
-
# files - an array of file basenames.
|
16
|
-
#
|
17
|
-
# Returns an array of static files.
|
18
|
-
def read(files)
|
19
|
-
files.each do |file|
|
20
|
-
@unfiltered_content << StaticFile.new(@site, @site.source, @dir, file)
|
21
|
-
end
|
22
|
-
@unfiltered_content
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bridgetown
|
4
|
-
module Utils
|
5
|
-
# TODO: deprecate, we should try not to have any platform-specific code
|
6
|
-
module Platforms
|
7
|
-
extend self
|
8
|
-
|
9
|
-
# TODO: jruby is NOT supported by Bridgetown. This should probably
|
10
|
-
# get removed.
|
11
|
-
{ jruby?: "jruby", mri?: "ruby" }.each do |k, v|
|
12
|
-
define_method k do
|
13
|
-
::RUBY_ENGINE == v
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# --
|
18
|
-
# Allows you to detect "real" Windows, or what we would consider
|
19
|
-
# "real" Windows. That is, that we can pass the basic test and the
|
20
|
-
# /proc/version returns nothing to us.
|
21
|
-
# --
|
22
|
-
|
23
|
-
def vanilla_windows?
|
24
|
-
RbConfig::CONFIG["host_os"] =~ %r!mswin|mingw|cygwin!i && \
|
25
|
-
!proc_version
|
26
|
-
end
|
27
|
-
|
28
|
-
# --
|
29
|
-
# XXX: Remove in 4.0
|
30
|
-
# --
|
31
|
-
|
32
|
-
alias_method :really_windows?, \
|
33
|
-
:vanilla_windows?
|
34
|
-
|
35
|
-
#
|
36
|
-
|
37
|
-
def bash_on_windows?
|
38
|
-
RbConfig::CONFIG["host_os"] =~ %r!linux! && \
|
39
|
-
proc_version =~ %r!microsoft!i
|
40
|
-
end
|
41
|
-
|
42
|
-
#
|
43
|
-
|
44
|
-
def windows?
|
45
|
-
vanilla_windows? || bash_on_windows?
|
46
|
-
end
|
47
|
-
|
48
|
-
#
|
49
|
-
|
50
|
-
def linux?
|
51
|
-
RbConfig::CONFIG["host_os"] =~ %r!linux! && \
|
52
|
-
proc_version !~ %r!microsoft!i
|
53
|
-
end
|
54
|
-
|
55
|
-
# Provides windows?, linux?, osx?, unix? so that we can detect
|
56
|
-
# platforms. This is mostly useful for `bridgetown doctor` and for testing
|
57
|
-
# where we kick off certain tests based on the platform.
|
58
|
-
|
59
|
-
{ osx?: %r!darwin|mac os!, unix?: %r!solaris|bsd! }.each do |k, v|
|
60
|
-
define_method k do
|
61
|
-
!!(
|
62
|
-
RbConfig::CONFIG["host_os"] =~ v
|
63
|
-
)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
#
|
68
|
-
|
69
|
-
private
|
70
|
-
|
71
|
-
def proc_version
|
72
|
-
@proc_version ||=
|
73
|
-
begin
|
74
|
-
File.read("/proc/version")
|
75
|
-
rescue Errno::ENOENT, Errno::EACCES
|
76
|
-
nil
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Bridgetown
|
4
|
-
module Utils
|
5
|
-
# Based on the pattern and code from
|
6
|
-
# https://emptysqua.re/blog/an-event-synchronization-primitive-for-ruby/
|
7
|
-
class ThreadEvent
|
8
|
-
attr_reader :flag
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@lock = Mutex.new
|
12
|
-
@cond = ConditionVariable.new
|
13
|
-
@flag = false
|
14
|
-
end
|
15
|
-
|
16
|
-
def set
|
17
|
-
@lock.synchronize do
|
18
|
-
yield if block_given?
|
19
|
-
@flag = true
|
20
|
-
@cond.broadcast
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def wait
|
25
|
-
@lock.synchronize do
|
26
|
-
@cond.wait(@lock) unless @flag
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|