Add caption to Liquid highlight tags
This commit is contained in:
		
							parent
							
								
									129eb8bb5a
								
							
						
					
					
						commit
						d769d59c85
					
				
							
								
								
									
										31
									
								
								_plugins/highlight-capion-options.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								_plugins/highlight-capion-options.rb
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					# Extend Jekyll 'highlight' tag to allow captions.
 | 
				
			||||||
 | 
					# You can use following options:
 | 
				
			||||||
 | 
					# 1. {% highlight <lang> [linenos] [caption] %}
 | 
				
			||||||
 | 
					# 2. {% highlight <lang> [linenos] [caption=some-text_without.duble/quotes] %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module JekyllTagsExtensions
 | 
				
			||||||
 | 
					  module HighlightCaption
 | 
				
			||||||
 | 
					    def self.prepended(mod)
 | 
				
			||||||
 | 
					      syntax = mod.send(:remove_const, :SYNTAX).source.gsub('\\w', '[^[:^graph:]"]')
 | 
				
			||||||
 | 
					      mod.const_set(:SYNTAX, Regexp.new(syntax))
 | 
				
			||||||
 | 
					      options = mod.send(:remove_const, :OPTIONS_REGEX).source.gsub('\\w', '[^[:^graph:]"]')
 | 
				
			||||||
 | 
					      mod.const_set(:OPTIONS_REGEX, Regexp.new(options))
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def render(*args)
 | 
				
			||||||
 | 
					      caption = "<figcaption>"
 | 
				
			||||||
 | 
					      caption << "<span class=\"lang\">#{@lang.upcase}#{@highlight_options[:caption] ? ":" : ""}</span>"
 | 
				
			||||||
 | 
					      if @highlight_options[:caption].is_a? String
 | 
				
			||||||
 | 
					        caption << "<em>#{@highlight_options[:caption]}</em>" 
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      caption << "</figcaption>"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      match = super.match('<figure[^>]*>')
 | 
				
			||||||
 | 
					      match.pre_match + match.to_s + caption + match.post_match
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Jekyll::Hooks.register :site, :pre_render do |site|
 | 
				
			||||||
 | 
					  Jekyll::Tags::HighlightBlock.prepend JekyllTagsExtensions::HighlightCaption
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@ -30,16 +30,31 @@ h3 {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
figure {
 | 
					figure {
 | 
				
			||||||
  background-color: black;
 | 
					 | 
				
			||||||
  border: 1px solid lightgray;
 | 
					 | 
				
			||||||
  border-radius: 0.2rem;
 | 
					  border-radius: 0.2rem;
 | 
				
			||||||
  margin: 0;
 | 
					  margin: 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					figcaption {
 | 
				
			||||||
 | 
					  background-color: #f0f0f0;
 | 
				
			||||||
 | 
					  border: 1px solid lightgray;
 | 
				
			||||||
 | 
					  border-bottom: none;
 | 
				
			||||||
 | 
					  border-top-left-radius: 0.2rem;
 | 
				
			||||||
 | 
					  border-top-right-radius: 0.2rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					figcaption .lang {
 | 
				
			||||||
 | 
					  color: #606060;
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  font-size: 0.8rem;
 | 
				
			||||||
 | 
					  line-height: 1.4rem;
 | 
				
			||||||
 | 
					  padding: 0 0.4rem;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
pre {
 | 
					pre {
 | 
				
			||||||
 | 
					  background-color: black;
 | 
				
			||||||
 | 
					  border-bottom-left-radius: 0.2rem;
 | 
				
			||||||
 | 
					  border-bottom-right-radius: 0.2rem;
 | 
				
			||||||
  font-size: 0.85rem;
 | 
					  font-size: 0.85rem;
 | 
				
			||||||
  line-height: 1.3rem;
 | 
					  line-height: 1.3rem;
 | 
				
			||||||
  margin: 0;
 | 
					  margin: 0;
 | 
				
			||||||
  padding: 0.5rem;
 | 
					  padding: 0.25rem;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
pre > code {
 | 
					pre > code {
 | 
				
			||||||
  background-color: black;
 | 
					  background-color: black;
 | 
				
			||||||
@ -50,6 +65,7 @@ pre > code.language-bash {
 | 
				
			|||||||
  background-color: black;
 | 
					  background-color: black;
 | 
				
			||||||
  color: #00d700;
 | 
					  color: #00d700;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
code {
 | 
					code {
 | 
				
			||||||
  background-color: #9f54aa;
 | 
					  background-color: #9f54aa;
 | 
				
			||||||
  border-radius: 0.2rem;
 | 
					  border-radius: 0.2rem;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user