jekyll-gist 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.markdown +4 -0
- data/jekyll-gist.gemspec +1 -0
- data/lib/jekyll-gist/gist_tag.rb +29 -4
- data/lib/jekyll-gist/version.rb +1 -1
- data/spec/gist_tag_spec.rb +50 -4
- data/spec/spec_helper.rb +2 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a99d6197be7bf77cd1ce83e1df647719fe1e280c
|
4
|
+
data.tar.gz: 3efd76801e613587054fab6aea4733e8db3f68fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54b90840b261aae9fd31927bd9d6731caf5485079d478950b8cece2c18667116edc7a959527d6e80086a303db17524f2ba73700b32d61a725e56a355aba29f41
|
7
|
+
data.tar.gz: fe8c68f496c3228083ef3d513e36b813831725493031abd325688df8103df7dcb3f0c0f26bdb027049eae0e86dc1c1ea7b2e16a278cc0d72746bfb3240b5aa27
|
data/History.markdown
CHANGED
data/jekyll-gist.gemspec
CHANGED
@@ -20,5 +20,6 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.add_development_dependency "bundler", "~> 1.6"
|
21
21
|
spec.add_development_dependency "rake"
|
22
22
|
spec.add_development_dependency "rspec"
|
23
|
+
spec.add_development_dependency "webmock"
|
23
24
|
spec.add_development_dependency "jekyll", "~> 2.0"
|
24
25
|
end
|
data/lib/jekyll-gist/gist_tag.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'cgi'
|
2
|
+
require 'open-uri'
|
3
|
+
|
1
4
|
module Jekyll
|
2
5
|
module Gist
|
3
6
|
class GistTag < Liquid::Tag
|
@@ -11,7 +14,9 @@ module Jekyll
|
|
11
14
|
if context.has_key?(filename)
|
12
15
|
filename = context[filename]
|
13
16
|
end
|
14
|
-
|
17
|
+
noscript_tag = gist_noscript_tag(gist_id, filename)
|
18
|
+
script_tag = gist_script_tag(gist_id, filename)
|
19
|
+
"#{noscript_tag}#{script_tag}"
|
15
20
|
else
|
16
21
|
raise ArgumentError.new <<-eos
|
17
22
|
Syntax error in tag 'gist' while parsing the following markup:
|
@@ -35,13 +40,33 @@ module Jekyll
|
|
35
40
|
end
|
36
41
|
|
37
42
|
def gist_script_tag(gist_id, filename = nil)
|
38
|
-
|
39
|
-
|
43
|
+
url = "https://gist.github.com/#{gist_id}.js"
|
44
|
+
url = "#{url}?file=#{filename}" unless filename.empty?
|
45
|
+
"<script src=\"#{url}\"> </script>"
|
46
|
+
end
|
47
|
+
|
48
|
+
def gist_noscript_tag(gist_id, filename = nil)
|
49
|
+
code = fetch_raw_code(gist_id, filename)
|
50
|
+
if !code.nil?
|
51
|
+
"<noscript><pre>#{CGI.escapeHTML(code)}</pre></noscript>"
|
40
52
|
else
|
41
|
-
"<
|
53
|
+
Jekyll.logger.warn "Warning:", "The <noscript> tag for your gist #{gist_id} could not"
|
54
|
+
Jekyll.logger.warn "", "be generated. This will affect users who do not have"
|
55
|
+
Jekyll.logger.warn "", "JavaScript available or enabled in their browsers."
|
42
56
|
end
|
43
57
|
end
|
44
58
|
|
59
|
+
def fetch_raw_code(gist_id, filename = nil)
|
60
|
+
begin
|
61
|
+
url = "https://gist.githubusercontent.com/#{gist_id}/raw"
|
62
|
+
url = "#{url}/#{filename}" unless filename.empty?
|
63
|
+
open(url).read.chomp
|
64
|
+
rescue SocketError
|
65
|
+
nil
|
66
|
+
rescue OpenURI::HTTPError
|
67
|
+
nil
|
68
|
+
end
|
69
|
+
end
|
45
70
|
end
|
46
71
|
end
|
47
72
|
end
|
data/lib/jekyll-gist/version.rb
CHANGED
data/spec/gist_tag_spec.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe(Jekyll::Gist::GistTag) do
|
4
|
+
let(:http_output) { "<test>true</test>" }
|
4
5
|
let(:doc) { doc_with_content(content) }
|
5
6
|
let(:content) { "{% gist #{gist} %}" }
|
6
7
|
let(:output) do
|
@@ -11,30 +12,43 @@ describe(Jekyll::Gist::GistTag) do
|
|
11
12
|
|
12
13
|
context "valid gist" do
|
13
14
|
context "with user prefix" do
|
15
|
+
before { stub_request(:get, "https://gist.githubusercontent.com/#{gist}/raw").to_return(body: http_output) }
|
14
16
|
let(:gist) { "mattr-/24081a1d93d2898ecf0f" }
|
15
17
|
|
16
18
|
it "produces the correct script tag" do
|
17
19
|
expect(output).to match(/<script src="https:\/\/gist.github.com\/#{gist}.js">\s<\/script>/)
|
18
20
|
end
|
21
|
+
it "produces the correct noscript tag" do
|
22
|
+
expect(output).to match(/<noscript><pre><test>true<\/test><\/pre><\/noscript>\n/)
|
23
|
+
end
|
19
24
|
end
|
20
25
|
|
21
26
|
context "without user prefix" do
|
27
|
+
before { stub_request(:get, "https://gist.githubusercontent.com/#{gist}/raw").to_return(body: http_output) }
|
22
28
|
let(:gist) { "28949e1d5ee2273f9fd3" }
|
23
29
|
|
24
30
|
it "produces the correct script tag" do
|
25
31
|
expect(output).to match(/<script src="https:\/\/gist.github.com\/#{gist}.js">\s<\/script>/)
|
26
32
|
end
|
33
|
+
it "produces the correct noscript tag" do
|
34
|
+
expect(output).to match(/<noscript><pre><test>true<\/test><\/pre><\/noscript>\n/)
|
35
|
+
end
|
27
36
|
end
|
28
37
|
|
29
38
|
context "classic Gist id style" do
|
39
|
+
before { stub_request(:get, "https://gist.githubusercontent.com/#{gist}/raw").to_return(body: http_output) }
|
30
40
|
let(:gist) { "1234321" }
|
31
41
|
|
32
42
|
it "produces the correct script tag" do
|
33
43
|
expect(output).to match(/<script src="https:\/\/gist.github.com\/#{gist}.js">\s<\/script>/)
|
34
44
|
end
|
45
|
+
it "produces the correct noscript tag" do
|
46
|
+
expect(output).to match(/<noscript><pre><test>true<\/test><\/pre><\/noscript>\n/)
|
47
|
+
end
|
35
48
|
end
|
36
49
|
|
37
50
|
context "with file specified" do
|
51
|
+
before { stub_request(:get, "https://gist.githubusercontent.com/#{gist}/raw/#{filename}").to_return(body: http_output) }
|
38
52
|
let(:gist) { "mattr-/24081a1d93d2898ecf0f" }
|
39
53
|
let(:filename) { "myfile.ext" }
|
40
54
|
let(:content) { "{% gist #{gist} #{filename} %}" }
|
@@ -42,12 +56,17 @@ describe(Jekyll::Gist::GistTag) do
|
|
42
56
|
it "produces the correct script tag" do
|
43
57
|
expect(output).to match(/<script src="https:\/\/gist.github.com\/#{gist}.js\?file=#{filename}">\s<\/script>/)
|
44
58
|
end
|
59
|
+
it "produces the correct noscript tag" do
|
60
|
+
expect(output).to match(/<noscript><pre><test>true<\/test><\/pre><\/noscript>\n/)
|
61
|
+
end
|
45
62
|
end
|
46
63
|
|
47
64
|
context "with variable gist id" do
|
65
|
+
before { stub_request(:get, "https://gist.githubusercontent.com/#{gist_id}/raw").to_return(body: http_output) }
|
66
|
+
let(:gist_id) { "1342013" }
|
48
67
|
let(:gist) { "page.gist_id" }
|
49
68
|
let(:output) do
|
50
|
-
doc.data['gist_id'] =
|
69
|
+
doc.data['gist_id'] = gist_id
|
51
70
|
doc.content = content
|
52
71
|
doc.output = Jekyll::Renderer.new(doc.site, doc).run
|
53
72
|
end
|
@@ -55,12 +74,18 @@ describe(Jekyll::Gist::GistTag) do
|
|
55
74
|
it "produces the correct script tag" do
|
56
75
|
expect(output).to match(/<script src="https:\/\/gist.github.com\/#{doc.data['gist_id']}.js">\s<\/script>/)
|
57
76
|
end
|
77
|
+
it "produces the correct noscript tag" do
|
78
|
+
expect(output).to match(/<noscript><pre><test>true<\/test><\/pre><\/noscript>\n/)
|
79
|
+
end
|
58
80
|
end
|
59
81
|
|
60
82
|
context "with variable gist id and filename" do
|
61
|
-
|
62
|
-
let(:
|
63
|
-
let(:
|
83
|
+
before { stub_request(:get, "https://gist.githubusercontent.com/#{gist_id}/raw/#{gist_filename}").to_return(body: http_output) }
|
84
|
+
let(:gist_id) { "1342013" }
|
85
|
+
let(:gist_filename) { "atom.xml" }
|
86
|
+
let(:gist) { "page.gist_id" }
|
87
|
+
let(:filename) { "page.gist_filename" }
|
88
|
+
let(:content) { "{% gist #{gist} #{filename} %}" }
|
64
89
|
let(:output) do
|
65
90
|
doc.data['gist_id'] = "1342013"
|
66
91
|
doc.data['gist_filename'] = "atom.xml"
|
@@ -71,7 +96,28 @@ describe(Jekyll::Gist::GistTag) do
|
|
71
96
|
it "produces the correct script tag" do
|
72
97
|
expect(output).to match(/<script src="https:\/\/gist.github.com\/#{doc.data['gist_id']}.js\?file=#{doc.data['gist_filename']}">\s<\/script>/)
|
73
98
|
end
|
99
|
+
|
100
|
+
it "produces the correct noscript tag" do
|
101
|
+
expect(output).to match(/<noscript><pre><test>true<\/test><\/pre><\/noscript>\n/)
|
102
|
+
end
|
74
103
|
end
|
104
|
+
|
105
|
+
context "with valid gist id and invalid filename" do
|
106
|
+
before { stub_request(:get, "https://gist.githubusercontent.com/#{gist_id}/raw/#{gist_filename}").to_return(status: 404) }
|
107
|
+
let(:gist_id) { "mattr-/24081a1d93d2898ecf0f" }
|
108
|
+
let(:gist_filename) { "myfile.ext" }
|
109
|
+
let(:content) { "{% gist #{gist_id} #{gist_filename} %}" }
|
110
|
+
|
111
|
+
it "produces the correct script tag" do
|
112
|
+
expect(output).to match(/<script src="https:\/\/gist.github.com\/#{gist_id}.js\?file=#{gist_filename}">\s<\/script>/)
|
113
|
+
end
|
114
|
+
|
115
|
+
it "does not produce the noscript tag" do
|
116
|
+
expect(output).to_not match(/<noscript><pre><test>true<\/test><\/pre><\/noscript>\n/)
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
75
121
|
end
|
76
122
|
|
77
123
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-gist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Parker Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: jekyll
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
123
|
version: '0'
|
110
124
|
requirements: []
|
111
125
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.2.
|
126
|
+
rubygems_version: 2.2.3
|
113
127
|
signing_key:
|
114
128
|
specification_version: 4
|
115
129
|
summary: Liquid tag for displaying GitHub Gists in Jekyll sites.
|