diff --git a/app/liquid_tags/gitpitch_tag.rb b/app/liquid_tags/git_pitch_tag.rb similarity index 100% rename from app/liquid_tags/gitpitch_tag.rb rename to app/liquid_tags/git_pitch_tag.rb diff --git a/app/liquid_tags/jsfiddle_tag.rb b/app/liquid_tags/js_fiddle_tag.rb similarity index 93% rename from app/liquid_tags/jsfiddle_tag.rb rename to app/liquid_tags/js_fiddle_tag.rb index 5b2a53084..c0914c75f 100644 --- a/app/liquid_tags/jsfiddle_tag.rb +++ b/app/liquid_tags/js_fiddle_tag.rb @@ -1,4 +1,4 @@ -class JSFiddleTag < LiquidTagBase +class JsFiddleTag < LiquidTagBase PARTIAL = "liquids/jsfiddle".freeze OPTION_REGEXP = /\A(js|html|css|result|,)*\z/.freeze LINK_REGEXP = /\A(http|https):\/\/(jsfiddle\.net)\/[a-zA-Z0-9\-\/]*\z/.freeze @@ -51,4 +51,4 @@ class JSFiddleTag < LiquidTagBase end end -Liquid::Template.register_tag("jsfiddle", JSFiddleTag) +Liquid::Template.register_tag("jsfiddle", JsFiddleTag) diff --git a/app/liquid_tags/nexttech_tag.rb b/app/liquid_tags/next_tech_tag.rb similarity index 100% rename from app/liquid_tags/nexttech_tag.rb rename to app/liquid_tags/next_tech_tag.rb diff --git a/app/liquid_tags/standard_filters.rb b/app/liquid_tags/standard_filters.rb deleted file mode 100644 index fcbc1a116..000000000 --- a/app/liquid_tags/standard_filters.rb +++ /dev/null @@ -1,75 +0,0 @@ -module StandardFilters - def append(_input) - raise StandardError, "Liquid#append filter is disabled" - end - - def concat(_input) - raise StandardError, "Liquid#concat filter is disabled" - end - - def compact(_input) - raise StandardError, "Liquid#compact filter is disabled" - end - - def first(_input) - raise StandardError, "Liquid#first filter is disabled" - end - - def join(_input) - raise StandardError, "Liquid#join filter is disabled" - end - - def last(_input) - raise StandardError, "Liquid#last filter is disabled" - end - - def map(_input, _property) - raise StandardError, "Liquid#map filter is disabled" - end - - def prepend(_input, _string) - raise StandardError, "Liquid#prepend filter is disabled" - end - - def remove(_input) - raise StandardError, "Liquid#remove filter is disabled" - end - - def remove_first(_input) - raise StandardError, "Liquid#remove_first filter is disabled" - end - - def reverse(_input) - raise StandardError, "Liquid#reverse filter is disabled" - end - - def replace(_input) - raise StandardError, "Liquid#replace filter is disabled" - end - - def replace_first(_input) - raise StandardError, "Liquid#replace_first filter is disabled" - end - - def slice(_input) - raise StandardError, "Liquid#slice filter is disabled" - end - - def split(_input) - raise StandardError, "Liquid#split filter is disabled" - end - - def truncate(_input) - raise StandardError, "Liquid#truncate filter is disabled" - end - - def truncatewords(_input) - raise StandardError, "Liquid#truncatewords filter is disabled" - end - - def uniq(_input, _property) - raise StandardError, "Liquid#uniq filter is disabled" - end -end - -Liquid::Template.register_filter(StandardFilters) diff --git a/app/liquid_tags/url_decode_filter.rb b/app/liquid_tags/url_decode_filter.rb deleted file mode 100644 index ca91407dd..000000000 --- a/app/liquid_tags/url_decode_filter.rb +++ /dev/null @@ -1,7 +0,0 @@ -module UrlDecodeFilter - def url_decode(input) - input - end -end - -Liquid::Template.register_filter(UrlDecodeFilter) diff --git a/config/initializers/liquid.rb b/config/initializers/liquid.rb index 8100f6197..94988281d 100644 --- a/config/initializers/liquid.rb +++ b/config/initializers/liquid.rb @@ -1,3 +1,9 @@ +# TODO: [rhymes] [Rails 6] explicitly requiring dependencies in `classic` mode. +# Will move over to `zeitwerk` in a future PR +Dir.glob(Rails.root.join("lib/liquid/*.rb")).sort.each do |filename| + require_dependency filename +end + # Our custom Liquid tags are registered to Liquid::Template at the bottom of # each files. Each Liquid tags will need to be loaded/required before the main # Liquid gem is evoked, hence the need for the fix below. diff --git a/app/liquid_tags/raw_tag.rb b/lib/liquid/raw.rb similarity index 66% rename from app/liquid_tags/raw_tag.rb rename to lib/liquid/raw.rb index 5c0a63324..7dc16098f 100644 --- a/app/liquid_tags/raw_tag.rb +++ b/lib/liquid/raw.rb @@ -1,3 +1,6 @@ +# Patches Liquid::Raw to change `FullTokenPossiblyInvalid` regexp +# see https://github.com/Shopify/liquid/blob/master/lib/liquid/tags/raw.rb + module Liquid class Raw < Block remove_const(:FullTokenPossiblyInvalid) if defined?(FullTokenPossiblyInvalid) diff --git a/app/liquid_tags/liquid_variable.rb b/lib/liquid/variable.rb similarity index 53% rename from app/liquid_tags/liquid_variable.rb rename to lib/liquid/variable.rb index efdd39e2a..c8e074520 100644 --- a/app/liquid_tags/liquid_variable.rb +++ b/lib/liquid/variable.rb @@ -1,3 +1,5 @@ +# Disables regular Liquid::Variables like {{ user.name }} +# see https://github.com/Shopify/liquid/blob/master/lib/liquid/variable.rb module Liquid class Variable def initialize(_markup, _parse_context) diff --git a/spec/lib/liquid/raw_spec.rb b/spec/lib/liquid/raw_spec.rb new file mode 100644 index 000000000..f5117ac28 --- /dev/null +++ b/spec/lib/liquid/raw_spec.rb @@ -0,0 +1,8 @@ +require "rails_helper" + +RSpec.describe Liquid::Raw do + it "uses the correct regexp for invalid tokens" do + expected_regexp = /\A(.*)#{Liquid::TagStart}\s*(\w+)\s*#{Liquid::TagEnd}\z/om + expect(described_class::FullTokenPossiblyInvalid).to eq(expected_regexp) + end +end diff --git a/spec/lib/liquid/variable_spec.rb b/spec/lib/liquid/variable_spec.rb new file mode 100644 index 000000000..a63a650d7 --- /dev/null +++ b/spec/lib/liquid/variable_spec.rb @@ -0,0 +1,7 @@ +require "rails_helper" + +RSpec.describe Liquid::Variable do + it "does not allow instantiation" do + expect { described_class.new("", nil) }.to raise_error(StandardError, /variables are disabled/) + end +end diff --git a/spec/liquid_tags/js_fiddle_tag_spec.rb b/spec/liquid_tags/js_fiddle_tag_spec.rb index 6b3f6a67f..94ae506c0 100644 --- a/spec/liquid_tags/js_fiddle_tag_spec.rb +++ b/spec/liquid_tags/js_fiddle_tag_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -RSpec.describe JSFiddleTag, type: :liquid_tag do +RSpec.describe JsFiddleTag, type: :liquid_tag do describe "#link" do let(:jsfiddle_link) { "http://jsfiddle.net/link2twenty/v2kx9jcd" } let(:jsfiddle_link_with_custom_tabs) { "http://jsfiddle.net/link2twenty/v2kx9jcd result,html,css" } @@ -12,7 +12,7 @@ RSpec.describe JSFiddleTag, type: :liquid_tag do ) def generate_new_liquid(link) - Liquid::Template.register_tag("jsfiddle", JSFiddleTag) + Liquid::Template.register_tag("jsfiddle", JsFiddleTag) Liquid::Template.parse("{% jsfiddle #{link} %}") end