Add speakerdeck liquid tag (#343)

* Take darker of user colors

* Add speakerdeck liquid tag

* Modify speakerdeck test
This commit is contained in:
Ben Halpern 2018-05-22 17:31:07 -04:00 committed by GitHub
parent c36c7d8d28
commit ce255ba900
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 60 additions and 0 deletions

View file

@ -197,6 +197,7 @@ class MarkdownParser
Liquid::Template.register_tag("codepen", CodepenTag)
Liquid::Template.register_tag("gist", GistTag)
Liquid::Template.register_tag("instagram", InstagramTag)
Liquid::Template.register_tag("speakerdeck", SpeakerdeckTag)
Liquid::Template.register_tag("replit", ReplitTag)
Liquid::Template.register_tag("runkit", RunkitTag)
Liquid::Template.register_tag("youtube", YoutubeTag)

View file

@ -0,0 +1,37 @@
class SpeakerdeckTag < LiquidTagBase
def initialize(tag_name, id, tokens)
super
@id = parse_id(id)
end
def render(context)
html = <<-HTML
<iframe allowfullscreen="true"
allowtransparency="true"
frameborder="0"
height="463"
id="talk_frame_#{@id}"
mozallowfullscreen="true"
src="//speakerdeck.com/player/#{@id}"
style="border:0; padding:0; margin:0; background:transparent;"
webkitallowfullscreen="true"
width="710"></iframe>
HTML
finalize_html(html)
end
private
def parse_id(input)
input_no_space = input.delete(" ")
if valid_id?(input_no_space)
input_no_space
else
raise StandardError, "Invalid Speakerdeck Id"
end
end
def valid_id?(id)
!!(id =~ /\A[a-z\d]*\Z/i)
end
end

View file

@ -13,6 +13,7 @@ Liquid::Template.register_tag("user", UserTag)
Liquid::Template.register_tag("codepen", CodepenTag)
Liquid::Template.register_tag("gist", GistTag)
Liquid::Template.register_tag("instagram", InstagramTag)
Liquid::Template.register_tag("speakerdeck", SpeakerdeckTag)
Liquid::Template.register_tag("replit", ReplitTag)
Liquid::Template.register_tag("runkit", RunkitTag)
Liquid::Template.register_tag("youtube", YoutubeTag)

View file

@ -0,0 +1,21 @@
require "rails_helper"
RSpec.describe InstagramTag, type: :liquid_template do
describe "#id" do
let(:valid_id) { "BXgGcAUjM39" }
let(:invalid_id) { "blahblahblahbl sdsdssd // dsdssd" }
def generate_tag(id)
Liquid::Template.register_tag("speakerdeck", SpeakerdeckTag)
Liquid::Template.parse("{% speakerdeck #{id} %}")
end
it "rejects invalid ids" do
expect { generate_tag(invalid_id) }.to raise_error(StandardError)
end
it "accepts a valid id" do
expect { generate_tag(valid_id) }.not_to raise_error
end
end
end