diff --git a/.gem_release.yml b/.gem_release.yml
new file mode 100644
index 0000000..e6fd7b4
--- /dev/null
+++ b/.gem_release.yml
@@ -0,0 +1,3 @@
+bump:
+ file: lib/bridgetown-inline-svg/version.rb
+ skip_ci: true
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..4a5cab7
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: andrewmcodes
+# patreon: # Replace with a single Patreon username
+# open_collective: # Replace with a single Open Collective username
+# ko_fi: # Replace with a single Ko-fi username
+# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+# liberapay: # Replace with a single Liberapay username
+# issuehunt: # Replace with a single IssueHunt username
+# otechie: # Replace with a single Otechie username
+# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..c6054dc
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,24 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: andrewmcodes
+
+---
+
+## What did you do?
+
+## What did you expect to happen?
+
+## What actually happened?
+
+## Additional context
+
+## Environment
+
+**Ruby Version:**
+
+**Framework Version (Rails, whatever):**
+
+**Dev Api Version:**
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..a9f255a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,24 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: enhancement
+assignees: andrewmcodes
+
+---
+
+## Is your feature request related to a problem? Please describe.
+
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+## Describe the solution you'd like
+
+A clear and concise description of what you want to happen.
+
+## Describe alternatives you've considered
+
+A clear and concise description of any alternative solutions or features you've considered.
+
+## Additional context
+
+Add any other context or screenshots about the feature request here.
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..26447f4
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,23 @@
+
+
+## What is the purpose of this pull request?
+
+
+
+## What changes did you make? (overview)
+
+## Is there anything you'd like reviewers to focus on?
+
+## Checklist
+
+- [ ] I've added tests for this change
+- [ ] I've added a Changelog entry
+- [ ] I've updated a documentation
diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml
new file mode 100644
index 0000000..b5f3847
--- /dev/null
+++ b/.github/workflows/linters.yml
@@ -0,0 +1,34 @@
+name: Linters
+
+on:
+ pull_request:
+ branches:
+ - "*"
+ push:
+ branches:
+ - main
+
+jobs:
+ standardrb:
+ name: StandardRB Check Action
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, 'ci skip')"
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Ruby 2.7
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: 2.7.1
+ - name: Cache gems
+ uses: actions/cache@v1
+ with:
+ path: vendor/bundle
+ key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-gems-
+ - name: Install gems
+ run: |
+ bundle config path vendor/bundle
+ bundle install --jobs 4 --retry 3
+ - name: Run StandardRB
+ run: bin/checks/standardrb
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..37b4c2d
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,34 @@
+name: Tests
+
+on:
+ pull_request:
+ branches:
+ - "*"
+ push:
+ branches:
+ - main
+
+jobs:
+ tests:
+ name: Rspec Tests
+ runs-on: ubuntu-latest
+ if: "!contains(github.event.head_commit.message, 'ci skip')"
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Ruby 2.7
+ uses: ruby/setup-ruby@v1
+ with:
+ ruby-version: 2.7.1
+ - name: Cache gems
+ uses: actions/cache@v1
+ with:
+ path: vendor/bundle
+ key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-gems-
+ - name: Install gems
+ run: |
+ bundle config path vendor/bundle
+ bundle install --jobs 4 --retry 3
+ - name: Run Rspec
+ run: bin/rspec
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0e22231
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,38 @@
+/vendor
+/.bundle/
+/.yardoc
+/Gemfile.lock
+/_yardoc/
+/coverage/
+/doc/
+/pkg/
+/spec/reports/
+/tmp/
+*.bundle
+*.so
+*.o
+*.a
+mkmf.log
+*.gem
+Gemfile.lock
+.bundle
+.ruby-version
+
+# Node
+node_modules
+.npm
+.node_repl_history
+
+# Yarn
+yarn-error.log
+yarn-debug.log*
+.pnp/
+.pnp.js
+
+# Yarn Integrity file
+.yarn-integrity
+
+spec/dest
+/.bridgetown-metadata/
+/.bridgetown-cache/
+/.bridgetown-webpack/
diff --git a/.rspec b/.rspec
new file mode 100644
index 0000000..5f16476
--- /dev/null
+++ b/.rspec
@@ -0,0 +1,2 @@
+--color
+--format progress
diff --git a/.solargraph.yml b/.solargraph.yml
new file mode 100644
index 0000000..7dfcf02
--- /dev/null
+++ b/.solargraph.yml
@@ -0,0 +1,15 @@
+---
+include:
+ - "**/*.rb"
+exclude:
+ - spec/**/*
+ - test/**/*
+ - vendor/**/*
+ - ".bundle/**/*"
+require: []
+domains: []
+reporters:
+ - require_not_found
+require_paths: []
+plugins: []
+max_files: 5000
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..6d14166
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,22 @@
+{
+ // EDITOR
+ "editor.formatOnSave": true,
+ // "editor.defaultFormatter": "esbenp.prettier-vscode",
+ "[ruby]": {
+ "editor.formatOnSave": true,
+ "editor.defaultFormatter": "rebornix.ruby"
+ },
+ // RUBY EXTENSION
+ "ruby.useLanguageServer": true,
+ "ruby.lintDebounceTime": 1500,
+ "ruby.useBundler": true,
+ "ruby.lint": {
+ "standard": true,
+ "rubocop": false
+ },
+ "ruby.format": "standard",
+ // SOLARGRAPH EXTENSION
+ "solargraph.diagnostics": true,
+ // GIT
+ "git.ignoreLimitWarning": true
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..aff1cdb
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,5 @@
+# Change log
+
+## main
+
+[@andrewmcodes]: https://github.com/andrewmcodes
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..f911e37
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,74 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of experience,
+nationality, personal appearance, race, religion, or sexual identity and
+orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at andrewmcodes@protonmail.com. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at [https://contributor-covenant.org/version/1/4][version]
+
+[homepage]: https://contributor-covenant.org
+[version]: https://contributor-covenant.org/version/1/4/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..234679a
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,24 @@
+# Contributing
+
+## Code of Conduct
+
+Everyone interacting with the bridgetown-inline-svg project’s codebase, issue trackers, etc. is expected to follow the [Code of Conduct](CODE_OF_CONDUCT.md).
+
+## Linters
+
+This project uses [Standard](https://github.com/testdouble/standard) for Ruby code to minimize bike shedding related to source formatting.
+
+Please run `./bin/format` prior to submitting pull requests.
+
+## Testing
+
+* Run `bundle exec rspec` to run the test suite
+
+## Overview
+
+1. Fork it (https://github.com/andrewmcodes/bridgetown-inline-svg/fork)
+2. Clone the fork using `git clone` to your local development machine.
+3. Create your feature branch (`git checkout -b my-new-feature`)
+4. Commit your changes (`git commit -am 'Add some feature'`)
+5. Push to the branch (`git push origin my-new-feature`)
+6. Create a new Pull Request
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..3c0f1f6
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+source "https://rubygems.org"
+gemspec
+
+gem "bridgetown", ENV["BRIDGETOWN_VERSION"] if ENV["BRIDGETOWN_VERSION"]
+
+gem "rake", "~> 12.0"
+gem "rspec", "~> 3.0"
+gem "standard", "~> 0.4"
+gem "solargraph", "~> 0.39"
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..64a3ac3
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Andrew Mason
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8475c69
--- /dev/null
+++ b/README.md
@@ -0,0 +1,128 @@
+