bridgetown-prismic 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 228039775ada1cab1c61c74eed29302e9795b11ba594e14b31c77d3ba3478831
4
+ data.tar.gz: 2bfec49e77bddd821d6cb720b49bb4d2f4bb29c111ed155c7025657fbfe48704
5
+ SHA512:
6
+ metadata.gz: 65717df7f3d68ae012027defb84dd4fb7becb3f19448dd8d0766bb0fe9a70408e126d8921608958a21bb9c674da44772924ff00fa5c5ed882f5f7fc12cdf52e8
7
+ data.tar.gz: 89f7e077090f5021cba067c8eb46a3a73c83f55ee71acbafea1234099e5d51015c326d62ce7a1092f2b2ee898c028981ed39ff2c1e1a3dcd16e5a97ee28f2d49
data/.gitignore ADDED
@@ -0,0 +1,38 @@
1
+ /vendor
2
+ /.bundle/
3
+ /.yardoc
4
+ /Gemfile.lock
5
+ /_yardoc/
6
+ /coverage/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
11
+ *.bundle
12
+ *.so
13
+ *.o
14
+ *.a
15
+ mkmf.log
16
+ *.gem
17
+ Gemfile.lock
18
+ .bundle
19
+ .ruby-version
20
+
21
+ # Node
22
+ node_modules
23
+ .npm
24
+ .node_repl_history
25
+
26
+ # Yarn
27
+ yarn-error.log
28
+ yarn-debug.log*
29
+ .pnp/
30
+ .pnp.js
31
+
32
+ # Yarn Integrity file
33
+ .yarn-integrity
34
+
35
+ test/dest
36
+ .bridgetown-metadata
37
+ .bridgetown-cache
38
+ .bridgetown-webpack
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ require: rubocop-bridgetown
2
+
3
+ inherit_gem:
4
+ rubocop-bridgetown: .rubocop.yml
5
+
6
+ AllCops:
7
+ TargetRubyVersion: 3.0
8
+
9
+ Exclude:
10
+ - .gitignore
11
+ - .rubocop.yml
12
+ - "*.gemspec"
13
+
14
+ - Gemfile.lock
15
+ - CHANGELOG.md
16
+ - LICENSE.txt
17
+ - README.md
18
+ - Rakefile
19
+ - bridgetown.automation.rb
20
+
21
+ - script/**/*
22
+ - vendor/**/*
23
+ - test/fixtures/**/*
data/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## Unreleased
9
+
10
+ ...
11
+
12
+ ## 0.1.1
13
+
14
+ - Fix bugs and test link resolvers
15
+ - Better error handling and Roda preview assistance
16
+ - Enforce `.html` for relative path
17
+
18
+ ## 0.1.0 (unreleased)
19
+
20
+ - First version
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+ gemspec
5
+
6
+ gem "bridgetown", ENV["BRIDGETOWN_VERSION"] if ENV["BRIDGETOWN_VERSION"]
7
+
8
+ group :test do
9
+ gem "minitest"
10
+ gem "minitest-reporters"
11
+ gem "shoulda"
12
+ end
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020-present
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # Sample plugin for Bridgetown
2
+
3
+ _NOTE: This isn't a real plugin! Copy this sample code and use it to create your own Ruby gem! [Help guide here…](https://www.bridgetownrb.com/docs/plugins)_ 😃
4
+
5
+ _Starting with Bridgetown v0.15, you can run_ `bridgetown plugins new` _to easily set up a customized verison of this starter repo._
6
+
7
+ A Bridgetown plugin to [fill in the blank]…
8
+
9
+ ## Installation
10
+
11
+ Run this command to add this plugin to your site's Gemfile:
12
+
13
+ ```shell
14
+ $ bundle add my-awesome-plugin -g bridgetown_plugins
15
+ ```
16
+
17
+ Or if there's a `bridgetown.automation.rb` automation script, you can run that instead for guided setup:
18
+
19
+ ```ruby
20
+ $ bundle exec bridgetown apply https://github.com/username/my-awesome-plugin
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ The plugin will…
26
+
27
+ ### Optional configuration options
28
+
29
+ The plugin will automatically use any of the following metadata variables if they are present in your site's `_data/site_metadata.yml` file.
30
+
31
+
32
+
33
+ ## Testing
34
+
35
+ * Run `bundle exec rake test` to run the test suite
36
+ * Or run `script/cibuild` to validate with Rubocop and Minitest together.
37
+
38
+ ## Contributing
39
+
40
+ 1. Fork it (https://github.com/username/my-awesome-plugin/fork)
41
+ 2. Clone the fork using `git clone` to your local development machine.
42
+ 3. Create your feature branch (`git checkout -b my-new-feature`)
43
+ 4. Commit your changes (`git commit -am 'Add some feature'`)
44
+ 5. Push to the branch (`git push origin my-new-feature`)
45
+ 6. Create a new Pull Request
46
+
47
+ ----
48
+
49
+ ## Releasing (you can delete this section in your own plugin repo)
50
+
51
+ To release a new version of the plugin, simply bump up the version number in both `version.rb` and
52
+ `package.json`, and then run `script/release`. This will require you to have a registered account
53
+ with both the [RubyGems.org](https://rubygems.org) and [NPM](https://www.npmjs.com) registries.
54
+ You can optionally remove the `package.json` and `frontend` folder if you don't need to package frontend
55
+ assets for Webpack.
56
+
57
+ If you run into any problems or need further guidance, please check out our [Bridgetown community resources](https://www.bridgetownrb.com/docs/community)
58
+ where friendly folks are standing by to help you build and release your plugin or theme.
59
+
60
+ **NOTE:** make sure you add the `bridgetown-plugin` [topic](https://github.com/topics/bridgetown-plugin) to your
61
+ plugin's GitHub repo so the plugin or theme will show up on [Bridgetown's official Plugin Directory](https://www.bridgetownrb.com/plugins)! (There may be a day or so delay before you see it appear.)
data/Rakefile ADDED
@@ -0,0 +1,11 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/test_*.rb"]
8
+ t.warning = false
9
+ end
10
+
11
+ task :default => :test
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/bridgetown-prismic/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "bridgetown-prismic"
7
+ spec.version = BridgetownPrismic::VERSION
8
+ spec.author = "Bridgetown Team"
9
+ spec.email = "maintainers@bridgetownrb.com"
10
+ spec.summary = "Sample code for creating new Bridgetown plugins"
11
+ spec.homepage = "https://github.com/username/bridgetown-prismic"
12
+ spec.license = "MIT"
13
+
14
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|script|spec|features|frontend)/!) }
15
+ spec.test_files = spec.files.grep(%r!^test/!)
16
+ spec.require_paths = ["lib"]
17
+
18
+ spec.required_ruby_version = ">= 3.0"
19
+
20
+ spec.add_dependency "bridgetown", ">= 1.0.0.alpha8", "< 2.0"
21
+ spec.add_dependency "prismic.io", ">= 1.8"
22
+ spec.add_dependency "async", ">= 1.30"
23
+
24
+ spec.add_development_dependency "bundler"
25
+ spec.add_development_dependency "rake", ">= 13.0"
26
+ spec.add_development_dependency "rubocop-bridgetown", "~> 0.3"
27
+ end
@@ -0,0 +1,14 @@
1
+ add_bridgetown_plugin("bridgetown-prismic")
2
+
3
+ append_to_file "bridgetown.config.yml" do
4
+ <<~YAML
5
+
6
+ # Prismic config:
7
+ prismic_repository: repo_name_here
8
+ autoload_paths:
9
+ - path: models
10
+ eager: true
11
+ YAML
12
+ end
13
+
14
+ create_file "models/post.rb", File.read(File.join(__dir__, "test", "fixtures", "models", "post.rb")
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bridgetown
4
+ module Utils
5
+ class PrismicData < RubyFrontMatter
6
+ def with_links = Bridgetown::Current.site.config.prismic_link_resolver
7
+
8
+ def provide_data(&block)
9
+ if @provided_called
10
+ return PrismicData.new(scope: @scope).tap { |fm| fm.instance_exec(&block) }.to_h
11
+ end
12
+
13
+ @provided_called = true
14
+ instance_exec(&block)
15
+
16
+ nil
17
+ end
18
+
19
+ def reset_stack
20
+ @provided_called = false
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownPrismic
4
+ module API
5
+ def configure_prismic # rubocop:disable Metrics/AbcSize
6
+ Bridgetown.logger.info "Prismic API:",
7
+ "Connecting to #{site.config.prismic_repository.yellow}..."
8
+ site.config.prismic_api = Prismic.api("https://#{site.config.prismic_repository}.cdn.prismic.io/api")
9
+ site.config.prismic_link_resolver ||= Prismic::LinkResolver.new(nil) do |link|
10
+ next "/preview/#{link.type}/#{link.id}" if site.config.prismic_preview_token
11
+
12
+ if model_exists_for_prismic_type? link.type
13
+ model_for_prismic_type(link.type).prismic_url(link)
14
+ else
15
+ "/"
16
+ end
17
+ end
18
+ end
19
+
20
+ def query_prismic(custom_type, options = {})
21
+ Bridgetown.logger.info "Prismic API:", "Loading #{custom_type.to_s.green}..."
22
+
23
+ BridgetownPrismic
24
+ .api
25
+ .query(Prismic::Predicates.at("document.type", custom_type.to_s), options)
26
+ .results
27
+ end
28
+
29
+ def query_prismic_and_generate_resources_for(klass)
30
+ query_options = {}
31
+
32
+ query_prismic(klass.prismic_custom_type, query_options)
33
+ .map { |doc| klass.import_prismic_document(doc) }
34
+ .each(&:as_resource_in_collection)
35
+ end
36
+
37
+ def model_for_prismic_type(type)
38
+ Bridgetown::Model::Base.descendants.find do |klass|
39
+ klass.respond_to?(:prismic_custom_type) && klass.prismic_custom_type == type.to_sym
40
+ end
41
+ end
42
+
43
+ def prismic_types
44
+ Bridgetown::Model::Base.descendants.filter_map do |klass|
45
+ klass.respond_to?(:prismic_custom_type) ? klass.prismic_custom_type : nil
46
+ end
47
+ end
48
+
49
+ def model_exists_for_prismic_type?(type)
50
+ prismic_types.include? type.to_sym
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownPrismic
4
+ class Builder < Bridgetown::Builder
5
+ include BridgetownPrismic::API
6
+
7
+ def build
8
+ configure_prismic # in API module
9
+
10
+ return if site.ssr?
11
+
12
+ load_prismic_documents
13
+ end
14
+
15
+ def load_prismic_documents
16
+ batches = []
17
+ Async do |task|
18
+ prismic_types.map do |type|
19
+ task.async do
20
+ Bridgetown::Current.site = site # ensure fiber has copy of the current site
21
+ klass = model_for_prismic_type(type)
22
+ batches.push [klass, query_prismic(klass.prismic_custom_type, {})]
23
+ end
24
+ end
25
+ end
26
+
27
+ batches.each do |batch|
28
+ klass, docs = batch
29
+ docs.map { |doc| klass.import_prismic_document(doc) }.each(&:as_resource_in_collection)
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ BridgetownPrismic::Builder.register
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownPrismic
4
+ class Origin < Bridgetown::Model::Origin
5
+ # @return [Pathname]
6
+ attr_reader :relative_path
7
+
8
+ attr_reader :prismic_document
9
+
10
+ def self.handle_scheme?(scheme) = scheme == "prismic"
11
+
12
+ def self.import_document(document) = new("prismic://#{document.type}/#{document.id}",
13
+ document).read
14
+
15
+ def initialize(id, prismic_document = nil)
16
+ super(id)
17
+ @relative_path = Pathname.new("#{id.delete_prefix("prismic://")}.html")
18
+ @prismic_document = prismic_document # could be nil, so model should load preview instance
19
+ end
20
+
21
+ def verify_model?(klass)
22
+ klass.prismic_custom_type.to_s == URI.parse(id).host
23
+ end
24
+
25
+ def read
26
+ klass = Bridgetown::Model::Base.klass_for_id(id)
27
+ if klass.name == "Bridgetown::Model::Base"
28
+ raise "Could not find a specialized model class for ID `#{id}'"
29
+ end
30
+
31
+ Bridgetown::Resource.register_extension klass unless klass.extensions_have_been_registered
32
+ @data = klass.prismic_data(self, @prismic_document)
33
+ @data[:_id_] = id
34
+ @data[:_origin_] = self
35
+
36
+ @data
37
+ end
38
+
39
+ def exists?
40
+ false
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownPrismic
4
+ module Roda
5
+ module Previews
6
+ def prismic_preview_token
7
+ request.params["token"] || request.cookies[Prismic::PREVIEW_COOKIE]
8
+ end
9
+
10
+ def save_prismic_preview_token
11
+ bridgetown_site.config.prismic_preview_token = prismic_preview_token
12
+ end
13
+
14
+ def prismic_preview_redirect_url
15
+ save_prismic_preview_token
16
+ response.set_cookie Prismic::PREVIEW_COOKIE, bridgetown_site.config.prismic_preview_token
17
+ BridgetownPrismic.api.preview_session(
18
+ bridgetown_site.config.prismic_preview_token,
19
+ bridgetown_site.config.prismic_link_resolver,
20
+ "/"
21
+ )
22
+ end
23
+
24
+ def prismic_token_error_msg
25
+ "A valid Prismic preview token was not provided."
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BridgetownPrismic
4
+ VERSION = "0.1.1"
5
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bridgetown"
4
+ require "prismic"
5
+ require "async"
6
+
7
+ module BridgetownPrismic
8
+ def self.api = Bridgetown::Current.site.config.prismic_api
9
+ end
10
+
11
+ require_relative "bridgetown-prismic/api"
12
+ require_relative "bridgetown-prismic/builder"
13
+ require_relative "bridgetown-prismic/origin"
14
+ require_relative "bridgetown/utils/prismic_data"
15
+
16
+ Bridgetown::Model::Base.class_eval do # rubocop:disable Metrics/BlockLength
17
+ class << self
18
+ attr_accessor :extensions_have_been_registered
19
+ end
20
+
21
+ def self.import_prismic_document(doc) = new(BridgetownPrismic::Origin.import_document(doc))
22
+
23
+ def self.with_links = Bridgetown::Current.site.config.prismic_link_resolver
24
+
25
+ def self.provide_data(&block)
26
+ @prismic_data.provide_data(&block)
27
+ end
28
+
29
+ def self.prismic_data(origin, doc = nil) # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
30
+ site = Bridgetown::Current.site
31
+ @prismic_data = Bridgetown::Utils::PrismicData.new(scope: self)
32
+
33
+ unless doc
34
+ prismic_id = origin.id.split("/").last
35
+ # NOTE: if site.config.prismic_preview_token isn't set, it will default to
36
+ # master (published) ref
37
+ doc = site.config.prismic_api.getByID(prismic_id, { ref: site.config.prismic_preview_token })
38
+ end
39
+
40
+ @prismic_data = @prismic_data.tap do
41
+ process_prismic_document(doc)
42
+ rescue StandardError => e
43
+ doc_title = doc["#{doc.type}.title"] ? ", Title: #{doc["#{doc.type}.title"].as_text}" : ""
44
+ Bridgetown.logger.error "Prismic API:", "Error while importing `#{doc.type}':"
45
+ Bridgetown.logger.error "Prismic API:", "Slug: #{doc.slug}#{doc_title}"
46
+ raise e
47
+ end.to_h
48
+
49
+ if @prismic_data[:content]
50
+ @prismic_data[:_content_] = @prismic_data[:content]
51
+ @prismic_data.delete :content
52
+ end
53
+ @prismic_data[:_collection_] = Bridgetown::Current.site.collections[collection_name]
54
+ @prismic_data[:prismic_doc] = doc if Bridgetown.env.development? # good for debugging
55
+
56
+ @prismic_data.tap do # return data while setting the ivar to nil
57
+ @prismic_data = nil
58
+ end
59
+ end
60
+
61
+ def prismic_document
62
+ return nil unless origin.is_a?(BridgetownPrismic::Origin)
63
+
64
+ origin.prismic_document
65
+ end
66
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bridgetown-prismic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Bridgetown Team
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-11-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bridgetown
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0.alpha8
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0.alpha8
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: prismic.io
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.8'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '1.8'
47
+ - !ruby/object:Gem::Dependency
48
+ name: async
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '1.30'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '1.30'
61
+ - !ruby/object:Gem::Dependency
62
+ name: bundler
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rake
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '13.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '13.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rubocop-bridgetown
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.3'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.3'
103
+ description:
104
+ email: maintainers@bridgetownrb.com
105
+ executables: []
106
+ extensions: []
107
+ extra_rdoc_files: []
108
+ files:
109
+ - ".gitignore"
110
+ - ".rubocop.yml"
111
+ - CHANGELOG.md
112
+ - Gemfile
113
+ - LICENSE.txt
114
+ - README.md
115
+ - Rakefile
116
+ - bridgetown-prismic.gemspec
117
+ - bridgetown.automation.rb
118
+ - lib/bridgetown-prismic.rb
119
+ - lib/bridgetown-prismic/api.rb
120
+ - lib/bridgetown-prismic/builder.rb
121
+ - lib/bridgetown-prismic/origin.rb
122
+ - lib/bridgetown-prismic/roda/previews.rb
123
+ - lib/bridgetown-prismic/version.rb
124
+ - lib/bridgetown/utils/prismic_data.rb
125
+ homepage: https://github.com/username/bridgetown-prismic
126
+ licenses:
127
+ - MIT
128
+ metadata: {}
129
+ post_install_message:
130
+ rdoc_options: []
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '3.0'
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubygems_version: 3.2.22
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: Sample code for creating new Bridgetown plugins
148
+ test_files: []