@ -55,20 +55,23 @@ def get_style():
|
|||||||
return content
|
return content
|
||||||
|
|
||||||
def markdown2html(md, basepath):
|
def markdown2html(md, basepath):
|
||||||
html = ''
|
html = '<style>\n{}\n</style>\n'.format(get_style())
|
||||||
html += '<style>\n{}\n</style>\n'.format(get_style())
|
|
||||||
# pre_with_br
|
# pre_with_br
|
||||||
html += pre_with_br(pre_tables(md2.markdown(md, extras=['fenced-code-blocks',
|
html += pre_with_br(pre_tables(md2.markdown(md, extras=['fenced-code-blocks',
|
||||||
'no-code-highlighting', 'tables'])))
|
'no-code-highlighting', 'tables'])))
|
||||||
# the option no-code-highlighting does not exists in the official version of markdown2 for now
|
# the option no-code-highlighting does not exists in the official version of markdown2 for now
|
||||||
# I personaly edited the file (markdown2.py:1743)
|
# I personaly edited the file (markdown2.py:1743)
|
||||||
|
html = strip_html_comments(html)
|
||||||
|
|
||||||
|
# Beautiful uses the <br/> but the sublime phantoms do not support them...
|
||||||
|
html = html.replace('<br/>', '<br />')
|
||||||
|
|
||||||
html = html.replace(' ', ' espace;') # save where are the spaces
|
html = html.replace(' ', ' espace;') # save where are the spaces
|
||||||
|
|
||||||
|
|
||||||
# exception, again, because <pre> aren't supported by the phantoms
|
# exception, again, because <pre> aren't supported by the phantoms
|
||||||
html = html.replace(' espace;', '<i class="space">.</i>')
|
html = html.replace(' espace;', '<i class="space">.</i>')
|
||||||
html = replace_img_src_base64(html, basepath=os.path.dirname(basepath))
|
html = replace_img_src_base64(html, basepath=os.path.dirname(basepath))
|
||||||
|
sublime.set_clipboard(html)
|
||||||
return html
|
return html
|
||||||
|
|
||||||
def show_html(md_view, preview):
|
def show_html(md_view, preview):
|
||||||
|
|||||||
@ -4,13 +4,18 @@ import os.path
|
|||||||
import sublime
|
import sublime
|
||||||
import re
|
import re
|
||||||
from .image_manager import ImageManager
|
from .image_manager import ImageManager
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup, Comment as html_comment
|
||||||
|
|
||||||
def plugin_loaded():
|
def plugin_loaded():
|
||||||
global error404, loading
|
global error404, loading
|
||||||
loading = sublime.load_resource('Packages/MarkdownLivePreview/loading.txt')
|
loading = sublime.load_resource('Packages/MarkdownLivePreview/loading.txt')
|
||||||
error404 = sublime.load_resource('Packages/MarkdownLivePreview/404.txt')
|
error404 = sublime.load_resource('Packages/MarkdownLivePreview/404.txt')
|
||||||
|
|
||||||
|
def strip_html_comments(html):
|
||||||
|
soup = BeautifulSoup(html, 'html.parser')
|
||||||
|
for element in soup.find_all(text=lambda text: isinstance(text, html_comment)):
|
||||||
|
element.extract()
|
||||||
|
return str(soup)
|
||||||
|
|
||||||
def replace_img_src_base64(html, basepath):
|
def replace_img_src_base64(html, basepath):
|
||||||
"""Really messy, but it works (should be updated)"""
|
"""Really messy, but it works (should be updated)"""
|
||||||
@ -95,4 +100,4 @@ def pre_with_br(html):
|
|||||||
code = pre.find('code')
|
code = pre.find('code')
|
||||||
code.replaceWith(BeautifulSoup(''.join(str(node) for node in pre.contents) \
|
code.replaceWith(BeautifulSoup(''.join(str(node) for node in pre.contents) \
|
||||||
.replace('\n', '<br/>').replace(' ', '<i class="space">.</i>'), 'html.parser'))
|
.replace('\n', '<br/>').replace(' ', '<i class="space">.</i>'), 'html.parser'))
|
||||||
return str(soup).replace('<br/>', '<br />')
|
return str(soup)
|
||||||
|
|||||||
Reference in New Issue
Block a user