diff --git a/app/liquid_tags/slideshare_tag.rb b/app/liquid_tags/slideshare_tag.rb new file mode 100644 index 000000000..d878d9f47 --- /dev/null +++ b/app/liquid_tags/slideshare_tag.rb @@ -0,0 +1,33 @@ +class SlideshareTag < LiquidTagBase + def initialize(tag_name, key, tokens) + super + @key = validate key.strip + @height = 450 + end + + def render(_context) + finalize_html <<-HTML + + HTML + end + + private + + def validate(key) + if key.match?(/\A[a-zA-Z0-9]{14}\Z/) + key + else + raise StandardError, "Invalid Slideshare Key" + end + end +end + +Liquid::Template.register_tag("slideshare", SlideshareTag) diff --git a/app/views/pages/_editor_guide_text.html.erb b/app/views/pages/_editor_guide_text.html.erb index 6606fa9f9..b543c8c7a 100644 --- a/app/views/pages/_editor_guide_text.html.erb +++ b/app/views/pages/_editor_guide_text.html.erb @@ -121,6 +121,10 @@
  • YouTube: {% youtube dQw4w9WgXcQ %}
  • Vimeo: {% vimeo 193110695 %}
  • + +

    SlideShare Embed

    +

    All you need is the SlideShare key

    + {% slideshare rdOzN9kr1yK5eE %}

    CodePen Embed

    All you need is the full CodePen link, ending in the pen ID code, as follows:

    diff --git a/spec/liquid_tags/slideshare_tag_spec.rb b/spec/liquid_tags/slideshare_tag_spec.rb new file mode 100644 index 000000000..853b4d348 --- /dev/null +++ b/spec/liquid_tags/slideshare_tag_spec.rb @@ -0,0 +1,16 @@ +require "rails_helper" + +RSpec.describe SlideshareTag, type: :liquid_template do + describe "#key" do + let(:valid_key) { "rdOzN9kr1yK5eE" } + + def generate_tag(key) + Liquid::Template.register_tag("slideshare", SlideshareTag) + Liquid::Template.parse("{% slideshare #{key} %}") + end + + it "accepts a valid key" do + expect { generate_tag(valid_key) }.not_to raise_error + end + end +end