|
|
@ -5,18 +5,19 @@ module BacktickCodeBlock |
|
|
|
AllOptions = /([^\s]+)\s+(.+?)(https?:\/\/\S+)\s*(.+)?/i |
|
|
|
LangCaption = /([^\s]+)\s*(.+)?/i |
|
|
|
def render_code_block(input) |
|
|
|
@options = nil |
|
|
|
@caption = nil |
|
|
|
@lang = nil |
|
|
|
@url = nil |
|
|
|
@title = nil |
|
|
|
input.gsub /^`{3} *([^\n]+)?\n(.+?)\n`{3}/m do |
|
|
|
options = $1 |
|
|
|
@options = $1 || '' |
|
|
|
str = $2 |
|
|
|
|
|
|
|
if options =~ AllOptions |
|
|
|
if @options =~ AllOptions |
|
|
|
@lang = $1 |
|
|
|
@caption = "<figcaption><span>#{$2}</span><a href='#{$3}'>#{$4 || 'link'}</a></figcaption>" |
|
|
|
elsif options =~ LangCaption |
|
|
|
elsif @options =~ LangCaption |
|
|
|
@lang = $1 |
|
|
|
@caption = "<figcaption><span>#{$2}</span></figcaption>" |
|
|
|
end |
|
|
@ -29,7 +30,7 @@ module BacktickCodeBlock |
|
|
|
"<figure role=code>#{@caption}#{code}</figure>" |
|
|
|
else |
|
|
|
if @lang.include? "-raw" |
|
|
|
raw = "``` #{@lang.sub('-raw', '')}\n" |
|
|
|
raw = "``` #{@options.sub('-raw', '')}\n" |
|
|
|
raw += str |
|
|
|
raw += "\n```\n" |
|
|
|
else |
|
|
|