Merge pull request #2469 from jekyll/extract-gist-tag
This commit is contained in:
		
						commit
						781e606e5a
					
				|  | @ -39,6 +39,7 @@ Gem::Specification.new do |s| | ||||||
|   s.add_runtime_dependency('redcarpet', "~> 3.1") |   s.add_runtime_dependency('redcarpet', "~> 3.1") | ||||||
|   s.add_runtime_dependency('toml', '~> 0.1.0') |   s.add_runtime_dependency('toml', '~> 0.1.0') | ||||||
|   s.add_runtime_dependency('jekyll-paginate', '~> 1.0') |   s.add_runtime_dependency('jekyll-paginate', '~> 1.0') | ||||||
|  |   s.add_runtime_dependency('jekyll-gist', '~> 1.0') | ||||||
|   s.add_runtime_dependency('jekyll-coffeescript', '~> 1.0') |   s.add_runtime_dependency('jekyll-coffeescript', '~> 1.0') | ||||||
|   s.add_runtime_dependency('jekyll-sass-converter', '~> 1.0') |   s.add_runtime_dependency('jekyll-sass-converter', '~> 1.0') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -75,6 +75,7 @@ require_all 'jekyll/tags' | ||||||
| require 'jekyll-coffeescript' | require 'jekyll-coffeescript' | ||||||
| require 'jekyll-sass-converter' | require 'jekyll-sass-converter' | ||||||
| require 'jekyll-paginate' | require 'jekyll-paginate' | ||||||
|  | require 'jekyll-gist' | ||||||
| 
 | 
 | ||||||
| SafeYAML::OPTIONS[:suppress_warnings] = true | SafeYAML::OPTIONS[:suppress_warnings] = true | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,47 +0,0 @@ | ||||||
| # Gist Liquid Tag |  | ||||||
| # |  | ||||||
| # Example: |  | ||||||
| #    {% gist username/1234567 %} |  | ||||||
| #    {% gist username/1234567 file.rb %} |  | ||||||
| 
 |  | ||||||
| module Jekyll |  | ||||||
|   class GistTag < Liquid::Tag |  | ||||||
| 
 |  | ||||||
|     def render(context) |  | ||||||
|       if tag_contents = determine_arguments(@markup.strip) |  | ||||||
|         gist_id, filename = tag_contents[0], tag_contents[1] |  | ||||||
|         gist_script_tag(gist_id, filename) |  | ||||||
|       else |  | ||||||
|         raise ArgumentError.new <<-eos |  | ||||||
| Syntax error in tag 'gist' while parsing the following markup: |  | ||||||
| 
 |  | ||||||
|   #{@markup} |  | ||||||
| 
 |  | ||||||
| Valid syntax: |  | ||||||
|   for all gists: {% gist user/1234567 %} |  | ||||||
| eos |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     private |  | ||||||
| 
 |  | ||||||
|     def determine_arguments(input) |  | ||||||
|       matched = if input.include?("/") |  | ||||||
|         input.match(/\A([a-zA-Z0-9\/\-_]+) ?(\S*)\Z/) |  | ||||||
|       else |  | ||||||
|         input.match(/\A(\d+) ?(\S*)\Z/) |  | ||||||
|       end |  | ||||||
|       [matched[1].strip, matched[2].strip] if matched && matched.length >= 3 |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     def gist_script_tag(gist_id, filename = nil) |  | ||||||
|       if filename.empty? |  | ||||||
|         "<script src=\"https://gist.github.com/#{gist_id}.js\"> </script>" |  | ||||||
|       else |  | ||||||
|         "<script src=\"https://gist.github.com/#{gist_id}.js?file=#{filename}\"> </script>" |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| Liquid::Template.register_tag('gist', Jekyll::GistTag) |  | ||||||
|  | @ -259,115 +259,6 @@ CONTENT | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   context "gist tag" do |  | ||||||
|     context "simple" do |  | ||||||
|       setup do |  | ||||||
|         @gist = 358471 |  | ||||||
|         content = <<CONTENT |  | ||||||
| --- |  | ||||||
| title: My Cool Gist |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| {% gist #{@gist} %} |  | ||||||
| CONTENT |  | ||||||
|         create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       should "write script tag" do |  | ||||||
|         assert_match "<script src=\"https://gist.github.com/#{@gist}.js\">\s</script>", @result |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     context "for private gist" do |  | ||||||
|       context "when valid" do |  | ||||||
|         setup do |  | ||||||
|           @gist = "mattr-/24081a1d93d2898ecf0f" |  | ||||||
|           @filename = "myfile.ext" |  | ||||||
|           content = <<CONTENT |  | ||||||
|   --- |  | ||||||
|   title: My Cool Gist |  | ||||||
|   --- |  | ||||||
| 
 |  | ||||||
|   {% gist #{@gist} #{@filename} %} |  | ||||||
| CONTENT |  | ||||||
|           create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) |  | ||||||
|         end |  | ||||||
| 
 |  | ||||||
|         should "write script tag with specific file in gist" do |  | ||||||
|           assert_match "<script src=\"https://gist.github.com/#{@gist}.js?file=#{@filename}\">\s</script>", @result |  | ||||||
|         end |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       should "raise ArgumentError when invalid" do |  | ||||||
|         @gist = "mattr-24081a1d93d2898ecf0f" |  | ||||||
|         @filename = "myfile.ext" |  | ||||||
|         content = <<CONTENT |  | ||||||
|   --- |  | ||||||
|   title: My Cool Gist |  | ||||||
|   --- |  | ||||||
| 
 |  | ||||||
|   {% gist #{@gist} #{@filename} %} |  | ||||||
| CONTENT |  | ||||||
| 
 |  | ||||||
|         assert_raise ArgumentError do |  | ||||||
|           create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) |  | ||||||
|         end |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     context "with specific file" do |  | ||||||
|       setup do |  | ||||||
|         @gist = 358471 |  | ||||||
|         @filename = 'somefile.rb' |  | ||||||
|         content = <<CONTENT |  | ||||||
| --- |  | ||||||
| title: My Cool Gist |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| {% gist #{@gist} #{@filename} %} |  | ||||||
| CONTENT |  | ||||||
|         create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       should "write script tag with specific file in gist" do |  | ||||||
|         assert_match "<script src=\"https://gist.github.com/#{@gist}.js?file=#{@filename}\">\s</script>", @result |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     context "with blank gist id" do |  | ||||||
|       should "raise ArgumentError" do |  | ||||||
|         content = <<CONTENT |  | ||||||
| --- |  | ||||||
| title: My Cool Gist |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| {% gist %} |  | ||||||
| CONTENT |  | ||||||
| 
 |  | ||||||
|         assert_raise ArgumentError do |  | ||||||
|           create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) |  | ||||||
|         end |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
| 
 |  | ||||||
|     context "with invalid gist id" do |  | ||||||
|       should "raise ArgumentError" do |  | ||||||
|         invalid_gist = 'invalid' |  | ||||||
|         content = <<CONTENT |  | ||||||
| --- |  | ||||||
| title: My Cool Gist |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| {% gist #{invalid_gist} %} |  | ||||||
| CONTENT |  | ||||||
| 
 |  | ||||||
|         assert_raise ArgumentError do |  | ||||||
|           create_post(content, {'permalink' => 'pretty', 'source' => source_dir, 'destination' => dest_dir, 'read_posts' => true}) |  | ||||||
|         end |  | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   context "include tag with parameters" do |   context "include tag with parameters" do | ||||||
| 
 | 
 | ||||||
|     context "with symlink'd include" do |     context "with symlink'd include" do | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue