bridgetown-core 0.19.3 → 0.20.0

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/bridgetown-core.gemspec +1 -1
  3. data/lib/bridgetown-core.rb +30 -11
  4. data/lib/bridgetown-core/cleaner.rb +7 -1
  5. data/lib/bridgetown-core/collection.rb +173 -77
  6. data/lib/bridgetown-core/commands/base.rb +9 -0
  7. data/lib/bridgetown-core/commands/configure.rb +4 -0
  8. data/lib/bridgetown-core/commands/console.rb +4 -0
  9. data/lib/bridgetown-core/concerns/data_accessible.rb +1 -0
  10. data/lib/bridgetown-core/concerns/site/configurable.rb +7 -3
  11. data/lib/bridgetown-core/concerns/site/content.rb +57 -15
  12. data/lib/bridgetown-core/concerns/site/processable.rb +1 -0
  13. data/lib/bridgetown-core/concerns/site/renderable.rb +26 -0
  14. data/lib/bridgetown-core/concerns/site/writable.rb +11 -1
  15. data/lib/bridgetown-core/concerns/validatable.rb +1 -0
  16. data/lib/bridgetown-core/configuration.rb +39 -19
  17. data/lib/bridgetown-core/converter.rb +14 -0
  18. data/lib/bridgetown-core/converters/identity.rb +0 -9
  19. data/lib/bridgetown-core/converters/markdown.rb +14 -4
  20. data/lib/bridgetown-core/converters/markdown/kramdown_parser.rb +3 -0
  21. data/lib/bridgetown-core/current.rb +10 -0
  22. data/lib/bridgetown-core/document.rb +6 -14
  23. data/lib/bridgetown-core/drops/collection_drop.rb +1 -1
  24. data/lib/bridgetown-core/drops/page_drop.rb +4 -0
  25. data/lib/bridgetown-core/drops/resource_drop.rb +81 -0
  26. data/lib/bridgetown-core/drops/site_drop.rb +33 -8
  27. data/lib/bridgetown-core/drops/unified_payload_drop.rb +4 -0
  28. data/lib/bridgetown-core/entry_filter.rb +10 -23
  29. data/lib/bridgetown-core/errors.rb +0 -2
  30. data/lib/bridgetown-core/filters.rb +2 -1
  31. data/lib/bridgetown-core/generators/prototype_generator.rb +37 -19
  32. data/lib/bridgetown-core/layout.rb +2 -2
  33. data/lib/bridgetown-core/liquid_renderer/file.rb +1 -0
  34. data/lib/bridgetown-core/liquid_renderer/table.rb +1 -0
  35. data/lib/bridgetown-core/model/base.rb +138 -0
  36. data/lib/bridgetown-core/model/builder_origin.rb +40 -0
  37. data/lib/bridgetown-core/model/file_origin.rb +119 -0
  38. data/lib/bridgetown-core/model/origin.rb +38 -0
  39. data/lib/bridgetown-core/page.rb +9 -1
  40. data/lib/bridgetown-core/plugin_manager.rb +0 -2
  41. data/lib/bridgetown-core/publisher.rb +7 -1
  42. data/lib/bridgetown-core/reader.rb +25 -12
  43. data/lib/bridgetown-core/readers/data_reader.rb +3 -4
  44. data/lib/bridgetown-core/readers/post_reader.rb +1 -1
  45. data/lib/bridgetown-core/regenerator.rb +8 -1
  46. data/lib/bridgetown-core/related_posts.rb +1 -1
  47. data/lib/bridgetown-core/renderer.rb +5 -12
  48. data/lib/bridgetown-core/resource/base.rb +275 -0
  49. data/lib/bridgetown-core/resource/destination.rb +49 -0
  50. data/lib/bridgetown-core/resource/permalink_processor.rb +179 -0
  51. data/lib/bridgetown-core/resource/taxonomy_term.rb +25 -0
  52. data/lib/bridgetown-core/resource/taxonomy_type.rb +47 -0
  53. data/lib/bridgetown-core/resource/transformer.rb +173 -0
  54. data/lib/bridgetown-core/ruby_template_view.rb +4 -0
  55. data/lib/bridgetown-core/site.rb +9 -1
  56. data/lib/bridgetown-core/static_file.rb +33 -10
  57. data/lib/bridgetown-core/url.rb +1 -0
  58. data/lib/bridgetown-core/utils.rb +40 -40
  59. data/lib/bridgetown-core/utils/platforms.rb +1 -0
  60. data/lib/bridgetown-core/version.rb +2 -2
  61. data/lib/site_template/webpack.config.js.erb +8 -6
  62. metadata +28 -21
  63. data/lib/bridgetown-core/page_without_a_file.rb +0 -17
  64. data/lib/bridgetown-core/readers/collection_reader.rb +0 -23
  65. data/lib/bridgetown-core/utils/exec.rb +0 -26
  66. data/lib/bridgetown-core/utils/internet.rb +0 -37
  67. data/lib/bridgetown-core/utils/win_tz.rb +0 -75
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Bridgetown
4
4
  module Utils
5
+ # TODO: deprecate, we should try not to have any platform-specific code
5
6
  module Platforms
6
7
  extend self
7
8
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bridgetown
4
- VERSION = "0.19.3"
5
- CODE_NAME = "Arbor Lodge"
4
+ VERSION = "0.20.0"
5
+ CODE_NAME = "Healy Heights"
6
6
  end
@@ -3,7 +3,9 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
3
3
  const ManifestPlugin = require("webpack-manifest-plugin");
4
4
 
5
5
  module.exports = {
6
- entry: "./frontend/javascript/index.js",
6
+ entry: {
7
+ main: "./frontend/javascript/index.js"
8
+ },
7
9
  devtool: "source-map",
8
10
  // Set some or all of these to true if you want more verbose logging:
9
11
  stats: {
@@ -14,7 +16,7 @@ module.exports = {
14
16
  },
15
17
  output: {
16
18
  path: path.resolve(__dirname, "output", "_bridgetown", "static", "js"),
17
- filename: "all.[contenthash].js",
19
+ filename: "[name].[contenthash].js",
18
20
  },
19
21
  resolve: {
20
22
  extensions: [".js", ".jsx"],
@@ -29,7 +31,7 @@ module.exports = {
29
31
  },
30
32
  plugins: [
31
33
  new MiniCssExtractPlugin({
32
- filename: "../css/all.[contenthash].css",
34
+ filename: "../css/[name].[contenthash].css",
33
35
  }),
34
36
  new ManifestPlugin({
35
37
  fileName: path.resolve(__dirname, ".bridgetown-webpack", "manifest.json"),
@@ -108,9 +110,9 @@ module.exports = {
108
110
  test: /\.png?$|\.gif$|\.jpg$|\.svg$/,
109
111
  loader: "file-loader",
110
112
  options: {
111
- name: "[name]-[contenthash].[ext]",
112
- outputPath: "../images",
113
- publicPath: "../images",
113
+ name: "[path][name]-[contenthash].[ext]",
114
+ outputPath: "../",
115
+ publicPath: "../",
114
116
  },
115
117
  },
116
118
  ],
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bridgetown-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.3
4
+ version: 0.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bridgetown Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-11 00:00:00.000000000 Z
11
+ date: 2021-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: activesupport
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -206,20 +220,6 @@ dependencies:
206
220
  - - "~>"
207
221
  - !ruby/object:Gem::Version
208
222
  version: '3.0'
209
- - !ruby/object:Gem::Dependency
210
- name: pathutil
211
- requirement: !ruby/object:Gem::Requirement
212
- requirements:
213
- - - "~>"
214
- - !ruby/object:Gem::Version
215
- version: '0.9'
216
- type: :runtime
217
- prerelease: false
218
- version_requirements: !ruby/object:Gem::Requirement
219
- requirements:
220
- - - "~>"
221
- - !ruby/object:Gem::Version
222
- version: '0.9'
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: rouge
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -370,6 +370,7 @@ files:
370
370
  - lib/bridgetown-core/converters/markdown.rb
371
371
  - lib/bridgetown-core/converters/markdown/kramdown_parser.rb
372
372
  - lib/bridgetown-core/converters/smartypants.rb
373
+ - lib/bridgetown-core/current.rb
373
374
  - lib/bridgetown-core/deprecator.rb
374
375
  - lib/bridgetown-core/document.rb
375
376
  - lib/bridgetown-core/drops/bridgetown_drop.rb
@@ -378,6 +379,7 @@ files:
378
379
  - lib/bridgetown-core/drops/drop.rb
379
380
  - lib/bridgetown-core/drops/excerpt_drop.rb
380
381
  - lib/bridgetown-core/drops/page_drop.rb
382
+ - lib/bridgetown-core/drops/resource_drop.rb
381
383
  - lib/bridgetown-core/drops/site_drop.rb
382
384
  - lib/bridgetown-core/drops/static_file_drop.rb
383
385
  - lib/bridgetown-core/drops/unified_payload_drop.rb
@@ -405,14 +407,16 @@ files:
405
407
  - lib/bridgetown-core/log_adapter.rb
406
408
  - lib/bridgetown-core/log_writer.rb
407
409
  - lib/bridgetown-core/mime.types
410
+ - lib/bridgetown-core/model/base.rb
411
+ - lib/bridgetown-core/model/builder_origin.rb
412
+ - lib/bridgetown-core/model/file_origin.rb
413
+ - lib/bridgetown-core/model/origin.rb
408
414
  - lib/bridgetown-core/page.rb
409
- - lib/bridgetown-core/page_without_a_file.rb
410
415
  - lib/bridgetown-core/path_manager.rb
411
416
  - lib/bridgetown-core/plugin.rb
412
417
  - lib/bridgetown-core/plugin_manager.rb
413
418
  - lib/bridgetown-core/publisher.rb
414
419
  - lib/bridgetown-core/reader.rb
415
- - lib/bridgetown-core/readers/collection_reader.rb
416
420
  - lib/bridgetown-core/readers/data_reader.rb
417
421
  - lib/bridgetown-core/readers/defaults_reader.rb
418
422
  - lib/bridgetown-core/readers/layout_reader.rb
@@ -423,6 +427,12 @@ files:
423
427
  - lib/bridgetown-core/regenerator.rb
424
428
  - lib/bridgetown-core/related_posts.rb
425
429
  - lib/bridgetown-core/renderer.rb
430
+ - lib/bridgetown-core/resource/base.rb
431
+ - lib/bridgetown-core/resource/destination.rb
432
+ - lib/bridgetown-core/resource/permalink_processor.rb
433
+ - lib/bridgetown-core/resource/taxonomy_term.rb
434
+ - lib/bridgetown-core/resource/taxonomy_type.rb
435
+ - lib/bridgetown-core/resource/transformer.rb
426
436
  - lib/bridgetown-core/ruby_template_view.rb
427
437
  - lib/bridgetown-core/site.rb
428
438
  - lib/bridgetown-core/static_file.rb
@@ -439,12 +449,9 @@ files:
439
449
  - lib/bridgetown-core/url.rb
440
450
  - lib/bridgetown-core/utils.rb
441
451
  - lib/bridgetown-core/utils/ansi.rb
442
- - lib/bridgetown-core/utils/exec.rb
443
- - lib/bridgetown-core/utils/internet.rb
444
452
  - lib/bridgetown-core/utils/platforms.rb
445
453
  - lib/bridgetown-core/utils/ruby_exec.rb
446
454
  - lib/bridgetown-core/utils/thread_event.rb
447
- - lib/bridgetown-core/utils/win_tz.rb
448
455
  - lib/bridgetown-core/version.rb
449
456
  - lib/bridgetown-core/watcher.rb
450
457
  - lib/site_template/.gitignore
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bridgetown
4
- # A Bridgetown::Page subclass to handle processing files without reading it to
5
- # determine the page-data and page-content based on Front Matter delimiters.
6
- #
7
- # The class instance is basically just a bare-bones entity with just
8
- # attributes "dir", "name", "path", "url" defined on it.
9
- class PageWithoutAFile < Page
10
- Bridgetown.logger.warn "NOTICE: the PageWithoutAFile class is deprecated and" \
11
- " will be removed in Bridgetown 0.20."
12
-
13
- def read_yaml(*)
14
- @data ||= {}
15
- end
16
- end
17
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bridgetown
4
- class CollectionReader
5
- SPECIAL_COLLECTIONS = %w(posts data).freeze
6
-
7
- attr_reader :site, :content
8
-
9
- def initialize(site)
10
- @site = site
11
- @content = {}
12
- end
13
-
14
- # Read in all collections specified in the configuration
15
- #
16
- # Returns nothing.
17
- def read
18
- site.collections.each_value do |collection|
19
- collection.read unless SPECIAL_COLLECTIONS.include?(collection.label)
20
- end
21
- end
22
- end
23
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "open3"
4
-
5
- module Bridgetown
6
- module Utils
7
- module Exec
8
- extend self
9
-
10
- # Runs a program in a sub-shell.
11
- #
12
- # *args - a list of strings containing the program name and arguments
13
- #
14
- # Returns a Process::Status and a String of output in an array in
15
- # that order.
16
- def run(*args)
17
- stdin, stdout, stderr, process = Open3.popen3(*args)
18
- out = stdout.read.strip
19
- err = stderr.read.strip
20
-
21
- [stdin, stdout, stderr].each(&:close)
22
- [process.value, out + err]
23
- end
24
- end
25
- end
26
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bridgetown
4
- module Utils
5
- module Internet
6
- # Public: Determine whether the present device has a connection to
7
- # the Internet. This allows plugin writers which require the outside
8
- # world to have a neat fallback mechanism for offline building.
9
- #
10
- # Example:
11
- # if Internet.connected?
12
- # Typhoeus.get("https://pages.github.com/versions.json")
13
- # else
14
- # Bridgetown.logger.warn "Warning:", "Version check has been disabled."
15
- # Bridgetown.logger.warn "", "Connect to the Internet to enable it."
16
- # nil
17
- # end
18
- #
19
- # Returns true if a DNS call can successfully be made, or false if not.
20
-
21
- module_function
22
-
23
- def connected?
24
- !dns("example.com").nil?
25
- end
26
-
27
- def dns(domain)
28
- require "resolv"
29
- Resolv::DNS.open do |resolver|
30
- resolver.getaddress(domain)
31
- end
32
- rescue Resolv::ResolvError, Resolv::ResolvTimeout
33
- nil
34
- end
35
- end
36
- end
37
- end
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bridgetown
4
- module Utils
5
- module WinTZ
6
- extend self
7
-
8
- # Public: Calculate the Timezone for Windows when the config file has a defined
9
- # 'timezone' key.
10
- #
11
- # timezone - the IANA Time Zone specified in "_config.yml"
12
- #
13
- # Returns a string that ultimately re-defines ENV["TZ"] in Windows
14
- def calculate(timezone)
15
- External.require_with_graceful_fail("tzinfo") unless defined?(TZInfo)
16
- tz = TZInfo::Timezone.get(timezone)
17
- difference = Time.now.to_i - tz.now.to_i
18
- #
19
- # POSIX style definition reverses the offset sign.
20
- # e.g. Eastern Standard Time (EST) that is 5Hrs. to the 'west' of Prime Meridian
21
- # is denoted as:
22
- # EST+5 (or) EST+05:00
23
- # Reference: http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
24
- sign = difference.negative? ? "-" : "+"
25
- offset = sign == "-" ? "+" : "-" unless difference.zero?
26
- #
27
- # convert the difference (in seconds) to hours, as a rational number, and perform
28
- # a modulo operation on it.
29
- modulo = modulo_of(rational_hour(difference))
30
- #
31
- # Format the hour as a two-digit number.
32
- # Establish the minutes based on modulo expression.
33
- hh = format("%<hour>02d", hour: absolute_hour(difference).ceil)
34
- mm = modulo.zero? ? "00" : "30"
35
-
36
- Bridgetown.logger.debug "Timezone:", "#{timezone} #{offset}#{hh}:#{mm}"
37
- #
38
- # Note: The 3-letter-word below doesn't have a particular significance.
39
- "WTZ#{sign}#{hh}:#{mm}"
40
- end
41
-
42
- private
43
-
44
- # Private: Convert given seconds to an hour as a rational number.
45
- #
46
- # seconds - supplied as an integer, it is converted to a rational number.
47
- # 3600 - no. of seconds in an hour.
48
- #
49
- # Returns a rational number.
50
- def rational_hour(seconds)
51
- seconds.to_r / 3600
52
- end
53
-
54
- # Private: Convert given seconds to an hour as an absolute number.
55
- #
56
- # seconds - supplied as an integer, it is converted to its absolute.
57
- # 3600 - no. of seconds in an hour.
58
- #
59
- # Returns an integer.
60
- def absolute_hour(seconds)
61
- seconds.abs / 3600
62
- end
63
-
64
- # Private: Perform a modulo operation on a given fraction.
65
- #
66
- # fraction - supplied as a rational number, its numerator is divided
67
- # by its denominator and the remainder returned.
68
- #
69
- # Returns an integer.
70
- def modulo_of(fraction)
71
- fraction.numerator % fraction.denominator
72
- end
73
- end
74
- end
75
- end