Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate JSONs with Jbuilder #157

Merged
merged 2 commits into from
Feb 9, 2021
Merged

Generate JSONs with Jbuilder #157

merged 2 commits into from
Feb 9, 2021

Conversation

skalee
Copy link
Contributor

@skalee skalee commented Feb 9, 2021

This pull request brings Jbuilder, a Ruby DSL for structuring JSONs, into Geolexica.

Templating JSONs with Liquid is a poor idea for many reasons. Templates are difficult to read, it's easy to introduce errors, processing them is slow. Switching to Jbuilder solves all these problems.

A brand new {% jbuilder %} Liquid block tag is introduced. Content between that and a corresponding closing tag is captured and evaluated as a piece of Jbuilder-powered Ruby script, then a resulting JSON is rendered in place of that block. Rendering context (including page's front matter) is exposed through a getter. Because JSON-building Ruby script is still enclosed in a template, it's easy to override it in particular sites if needed.

All the JSONs defined in this gem have been rewritten in a Jbuilder fashion. JSONs defined in sites require separate treatment.

A side benefit is that sites generate noticeably faster (up to 30% as observed on my computer).

spec/unit/jekyll/geolexica/jbuilder_tag_spec.rb Outdated Show resolved Hide resolved
spec/unit/jekyll/geolexica/jbuilder_tag_spec.rb Outdated Show resolved Hide resolved
spec/unit/jekyll/geolexica/jbuilder_tag_spec.rb Outdated Show resolved Hide resolved
lib/jekyll/geolexica/jbuilder_tag.rb Show resolved Hide resolved
lib/jekyll/geolexica/jbuilder_tag.rb Show resolved Hide resolved
_pages/stats.jbuilder Show resolved Hide resolved
_pages/concepts-index.jbuilder Show resolved Hide resolved
_pages/concepts-index.jbuilder Show resolved Hide resolved
_pages/concepts-index.jbuilder Show resolved Hide resolved
_pages/concept-search-index.jbuilder Show resolved Hide resolved
Define a brand new Liquid tag for templating JSONs with Jbuilder.
The output is the same, but logic is readable and free of Liquid quirks.
end

# Displays line that the error has occurred at.
def location_surroundings(before: 2, after: 2)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assignment Branch Condition size for location_surroundings is too high. [21.38/15]

@skalee skalee merged commit bdb5015 into master Feb 9, 2021
@skalee skalee deleted the jbuilder branch February 9, 2021 04:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant