-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Support capture and content_for with Hamlit #1580
Conversation
gem 'liquid', '~> 2.6.x' | ||
gem 'slim' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
slim 2.1.0 is super old and relies on temple ~> 0.6.9. Because hamlit relies on newer temple, I wanted to unpin the slim version. (Since the line is modified, I also moved the line so that they're ordered alphabetically)
def haml? | ||
@current_engine == :haml | ||
@current_engine == :haml && Tilt[:haml] == Tilt::HamlTemplate |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this extra check necessary?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tilt[:haml]
can also be Hamlit::Template
so that it can be used for .haml files, and haml?
is currently used for branches really specific for haml.gem like Haml helper usages (which Hamlit basically doesn't support), not Haml language's syntax.
Should we have the Tilt[:haml] == Tilt::HamlTemplate
check outside haml?
for each branches, or should we rename it to haml_gem?
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh I understand now. I feel like this could be confusing since hamlit really is a haml engine. How many branches are there?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are just two actually. Does this make more sense to you then? 58e1be0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I do like that better. Hopefully that helps us see areas to investigate refactoring.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks!
Update ruby-sinatra to 2.0.8.1. ## 2.0.8.1 / 2020-01-02 * Allow multiple hashes to be passed in `merge` and `merge!` for `Sinatra::IndifferentHash` [#1572](sinatra/sinatra#1572) by Shota Iguchi ## 2.0.8 / 2020-01-01 * Lookup Tilt class for template engine without loading files [#1558](sinatra/sinatra#1558). Fixes [#1172](sinatra/sinatra#1172) by Jordan Owens * Add request info in NotFound exception [#1566](sinatra/sinatra#1566) by Stefan Sundin * Add `.yaml` support in `Sinatra::Contrib::ConfigFile` [#1564](sinatra/sinatra#1564). Fixes [#1563](sinatra/sinatra#1563) by Emerson Manabu Araki * Remove only routing parameters from @params hash [#1569](sinatra/sinatra#1569). Fixes [#1567](sinatra/sinatra#1567) by Jordan Owens, Horacio * Support `capture` and `content_for` with Hamlit [#1580](sinatra/sinatra#1580) by Takashi Kokubun * Eliminate warnings of keyword parameter for Ruby 2.7.0 [#1581](sinatra/sinatra#1581) by Osamtimizer ## 2.0.7 / 2019-08-22 * Fix a regression [#1560](sinatra/sinatra#1560) by Kunpei Sakai ## 2.0.6 / 2019-08-21 * Fix an issue setting environment from command line option [#1547](sinatra/sinatra#1547), [#1554](sinatra/sinatra#1554) by Jordan Owens, Kunpei Sakai * Support pandoc as a new markdown renderer [#1533](sinatra/sinatra#1533) by Vasiliy * Remove outdated code for tilt 1.x [#1532](sinatra/sinatra#1532) by Vasiliy * Remove an extra logic for `force_encoding` [#1527](sinatra/sinatra#1527) by Jordan Owens * Avoid multiple errors even if `params` contains special values [#1526](sinatra/sinatra#1527) by Kunpei Sakai * Support `bundler/inline` with `require 'sinatra'` integration [#1520](sinatra/sinatra#1520) by Kunpei Sakai * Avoid `TypeError` when params contain a key without a value on Ruby < 2.4 [#1516](sinatra/sinatra#1516) by Samuel Giddins * Improve development support and documentation and source code by Olle Jonsson, Basavanagowda Kanur, Yuki MINAMIYA
Problem
As explained in k0kubun/hamlit#150, sinatra-contrib's
capture
andyield_content
don't work with hamlit.gem (another implementation of Haml) because they use helpers specific to haml.gem.Solution
Let them stop using haml.gem-specific helpers if :haml engine is not
Tilt::HamlTemplate
(butHamlit::Block::Template
).Note that hamlit-block plugin is necessary to make sinatra-contrib's
capture
work with Hamlit.