Add speakerdeck liquid tag (#343)
* Take darker of user colors * Add speakerdeck liquid tag * Modify speakerdeck test
This commit is contained in:
parent
c36c7d8d28
commit
ce255ba900
4 changed files with 60 additions and 0 deletions
|
|
@ -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)
|
||||
|
|
|
|||
37
app/liquid_tags/speakerdeck_tag.rb
Normal file
37
app/liquid_tags/speakerdeck_tag.rb
Normal 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
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
21
spec/liquid_tags/speakereck_tag_spec.rb
Normal file
21
spec/liquid_tags/speakereck_tag_spec.rb
Normal 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
|
||||
Loading…
Add table
Reference in a new issue