bridgetown-core 0.19.3 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
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