diff --git a/app/liquid_tags/glitch_tag.rb b/app/liquid_tags/glitch_tag.rb index 0c64a1c4c..3cb257627 100644 --- a/app/liquid_tags/glitch_tag.rb +++ b/app/liquid_tags/glitch_tag.rb @@ -2,23 +2,22 @@ require "uri" class GlitchTag < LiquidTagBase attr_accessor :uri + PARTIAL = "liquids/glitch".freeze + def initialize(tag_name, id, tokens) super - @uri = build_uri(id) + @query = parse_options(id) @id = parse_id(id) end def render(_context) - html = <<-HTML -
- HTML - finalize_html(html) + ActionController::Base.new.render_to_string( + partial: PARTIAL, + locals: { + id: @id, + query: @query + }, + ) end private @@ -78,12 +77,6 @@ class GlitchTag < LiquidTagBase build_options(options) end - - def build_uri(input) - id = parse_id(input) - query = parse_options(input) - "https://glitch.com/embed/#!/embed/#{id}?#{query}" - end end Liquid::Template.register_tag("glitch", GlitchTag) diff --git a/app/views/liquids/_glitch.html.erb b/app/views/liquids/_glitch.html.erb new file mode 100644 index 000000000..a05775ed3 --- /dev/null +++ b/app/views/liquids/_glitch.html.erb @@ -0,0 +1,7 @@ + diff --git a/spec/liquid_tags/glitch_tag_spec.rb b/spec/liquid_tags/glitch_tag_spec.rb index a70df7a90..21f906a84 100644 --- a/spec/liquid_tags/glitch_tag_spec.rb +++ b/spec/liquid_tags/glitch_tag_spec.rb @@ -31,31 +31,31 @@ RSpec.describe GlitchTag, type: :liquid_template do it "handles 'app' option" do template = generate_tag(id_with_app_option) - expected = "src=\"" + base_uri + "some-id?previewSize=100&path=index.html" + expected = "src=\"" + base_uri + "some-id?previewSize=100&path=index.html" expect(template.render(nil)).to include(expected) end it "handles 'code' option" do template = generate_tag(id_with_code_option) - expected = "src=\"" + base_uri + "some-id?previewSize=0&path=index.html" + expected = "src=\"" + base_uri + "some-id?previewSize=0&path=index.html" expect(template.render(nil)).to include(expected) end it "handles 'no-files' option" do template = generate_tag(id_with_no_files_option) - expected = "src=\"" + base_uri + "some-id?sidebarCollapsed=true&path=index.html" + expected = "src=\"" + base_uri + "some-id?sidebarCollapsed=true&path=index.html" expect(template.render(nil)).to include(expected) end it "handles 'preview-first' option" do template = generate_tag(id_with_preview_first_option) - expected = "src=\"" + base_uri + "some-id?previewFirst=true&path=index.html" + expected = "src=\"" + base_uri + "some-id?previewFirst=true&path=index.html" expect(template.render(nil)).to include(expected) end it "handles 'no-attribution' option" do template = generate_tag(id_with_no_attribution_option) - expected = "src=\"" + base_uri + "some-id?attributionHidden=true&path=index.html" + expected = "src=\"" + base_uri + "some-id?attributionHidden=true&path=index.html" expect(template.render(nil)).to include(expected) end @@ -68,7 +68,7 @@ RSpec.describe GlitchTag, type: :liquid_template do it "handles complex case" do template = generate_tag(id_with_many_options) expected = "src=\"" + base_uri + - "some-id?previewSize=100&attributionHidden=true&sidebarCollapsed=true&path=script.js" + "some-id?previewSize=100&attributionHidden=true&sidebarCollapsed=true&path=script.js" expect(template.render(nil)).to include(expected) end