mirror of
https://github.com/SharpeTronics/jekyll-spaceship.git
synced 2025-12-21 00:03:17 -05:00
refactor: revise pre-fetch mode of mermaid
This commit is contained in:
parent
a3cc560007
commit
7e495e9468
@ -20,7 +20,7 @@ module Jekyll::Spaceship
|
|||||||
'config': {
|
'config': {
|
||||||
'theme' => 'default'
|
'theme' => 'default'
|
||||||
},
|
},
|
||||||
'src' => 'https://mermaid.ink/img/'
|
'src' => 'https://mermaid.ink/svg/'
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -63,14 +63,6 @@ module Jekyll::Spaceship
|
|||||||
# encode to UTF-8
|
# encode to UTF-8
|
||||||
code = code.encode('UTF-8')
|
code = code.encode('UTF-8')
|
||||||
|
|
||||||
# wrap code
|
|
||||||
code = {
|
|
||||||
'code' => code.gsub(/^\s*|\s*$/, ''),
|
|
||||||
'mermaid' => config['config']
|
|
||||||
}.to_json
|
|
||||||
|
|
||||||
# encode to base64 string
|
|
||||||
code = Base64.urlsafe_encode64(code, padding: false)
|
|
||||||
url = get_url(code)
|
url = get_url(code)
|
||||||
|
|
||||||
# render mode
|
# render mode
|
||||||
@ -85,15 +77,35 @@ module Jekyll::Spaceship
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_url(code)
|
def get_url(code)
|
||||||
"#{config['src']}#{code}"
|
src = self.config['src']
|
||||||
|
|
||||||
|
# wrap code
|
||||||
|
code = {
|
||||||
|
'code' => code.gsub(/^\s*|\s*$/, ''),
|
||||||
|
'mermaid' => config['config']
|
||||||
|
}.to_json
|
||||||
|
|
||||||
|
# set default method
|
||||||
|
src += '{code}' if src.match(/\{.*\}/).nil?
|
||||||
|
|
||||||
|
# encode to base64 string
|
||||||
|
if src.include?('{code}')
|
||||||
|
code = Base64.urlsafe_encode64(code, padding: false)
|
||||||
|
return src.gsub('{code}', code)
|
||||||
|
else
|
||||||
|
raise "No supported src ! #{src}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_mermaid_img_data(url)
|
def get_mermaid_img_data(url)
|
||||||
data = ''
|
data = ''
|
||||||
begin
|
begin
|
||||||
data = Net::HTTP.get URI(url)
|
res = Net::HTTP.get_response URI(url)
|
||||||
data = Base64.encode64(data)
|
raise res.body unless res.is_a?(Net::HTTPSuccess)
|
||||||
data = "data:image/png;base64, #{data}"
|
data = Base64.encode64(res.body)
|
||||||
|
content_type = res.header['Content-Type']
|
||||||
|
raise 'Unknown content type!' if content_type.nil?
|
||||||
|
data = "data:#{content_type};base64, #{data}"
|
||||||
rescue StandardError => msg
|
rescue StandardError => msg
|
||||||
data = url
|
data = url
|
||||||
logger.log msg
|
logger.log msg
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user