Skip to content

Commit

Permalink
Support alphanumeric asciicast IDs
Browse files Browse the repository at this point in the history
Closes #2.
  • Loading branch information
mnuessler committed Nov 21, 2021
1 parent aeeb8fa commit 487dd1c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 5 deletions.
4 changes: 2 additions & 2 deletions lib/jekyll/asciinema/asciicast_tag.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ def render(context)
private

def parse_tag(input)
matched = input.match(/\A\s*(\d+)\s*\Z/)
matched = input.match(/\A\s*'?(\w+)'?\s*\Z/)
[matched[1].strip] if matched && matched.length >= 2
end

def render_tag(asciicast_id)
%Q{<script type="text/javascript" src="https://asciinema.org/a/#{asciicast_id}.js" id="asciicast-#{asciicast_id}" async="async"></script>}
%Q{<script src="https://asciinema.org/a/#{asciicast_id}.js" id="asciicast-#{asciicast_id}" async="async"></script>}
end
end
end
Expand Down
37 changes: 34 additions & 3 deletions spec/asciicast_tag_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@
doc.output = Jekyll::Renderer.new(doc.site, doc).run
end

context "valid asciicast ID" do
context "numeric asciicast ID" do
let(:asciicast) { 1234 }

context "valid tag" do
let(:content) { "{% asciicast #{asciicast} %}" }

it "produces the correct script tag" do
expect(output.strip).to eq(%Q{<script type="text/javascript" src="https://asciinema.org/a/#{asciicast}.js" id="asciicast-#{asciicast}" async="async"></script>})
expect(output.strip).to eq(%Q{<script src="https://asciinema.org/a/#{asciicast}.js" id="asciicast-#{asciicast}" async="async"></script>})
end
end

Expand All @@ -29,11 +29,42 @@
let(:content) { "{% asciicast #{asciicast} %}" }

it "produces the correct script tag ignoring additional whitespace" do
expect(output.strip).to eq(%Q{<script type="text/javascript" src="https://asciinema.org/a/#{asciicast}.js" id="asciicast-#{asciicast}" async="async"></script>})
expect(output.strip).to eq(%Q{<script src="https://asciinema.org/a/#{asciicast}.js" id="asciicast-#{asciicast}" async="async"></script>})
end
end
end

context "alphanumeric asciicast ID" do
let(:asciicast) { 'HRNK602wzYvYY0VPA5yRAiuia' }

context "valid tag" do
let(:content) { "{% asciicast #{asciicast} %}" }

it "produces the correct script tag" do
expect(output.strip).to eq(%Q{<script src="https://asciinema.org/a/#{asciicast}.js" id="asciicast-#{asciicast}" async="async"></script>})
end
end

context "valid tag with quotes" do
let(:asciicast) { 'HRNK602wzYvYY0VPA5yRAiuia' }
let(:content) { "{% asciicast '#{asciicast}' %}" }

it "produces the correct script tag ignoring quotes" do
expect(output.strip).to eq(%Q{<script src="https://asciinema.org/a/#{asciicast}.js" id="asciicast-#{asciicast}" async="async"></script>})
end
end

context "valid tag with additional whitespace" do
let(:asciicast) { 'HRNK602wzYvYY0VPA5yRAiuia' }
let(:content) { "{% asciicast #{asciicast} %}" }

it "produces the correct script tag ignoring additional whitespace" do
expect(output.strip).to eq(%Q{<script src="https://asciinema.org/a/#{asciicast}.js" id="asciicast-#{asciicast}" async="async"></script>})
end
end

end

context "missing asciicast ID" do
let(:asciicast) { "" }
let(:content) { "{% asciicast #{asciicast} %}" }
Expand Down

0 comments on commit 487dd1c

Please sign in to comment.