1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 17:56:25 +00:00

Merge pull request #1533 from forestail/display-filename-in-codeblock

Display filename in codeblock (resend)
This commit is contained in:
Junyoung Choi (Sai)
2018-02-22 11:06:20 +09:00
committed by GitHub
2 changed files with 23 additions and 7 deletions

View File

@@ -220,6 +220,7 @@ pre
background-color white background-color white
&.CodeMirror &.CodeMirror
height initial height initial
flex-wrap wrap
&>code &>code
flex 1 flex 1
overflow-x auto overflow-x auto
@@ -229,6 +230,13 @@ pre
padding 0 padding 0
border none border none
border-radius 0 border-radius 0
&>span.filename
width 100%
border-radius: 5px 0px 0px 0px
margin -8px 100% 8px -8px
padding 0px 6px
background-color #777;
color white
&>span.lineNumber &>span.lineNumber
display none display none
font-size 1em font-size 1em

View File

@@ -9,10 +9,11 @@ import {lastFindInArray} from './utils'
const katex = window.katex const katex = window.katex
const config = ConfigManager.get() const config = ConfigManager.get()
function createGutter (str) { function createGutter (str, firstLineNumber) {
const lc = (str.match(/\n/g) || []).length if (Number.isNaN(firstLineNumber)) firstLineNumber = 1
const lastLineNumber = (str.match(/\n/g) || []).length + firstLineNumber - 1
const lines = [] const lines = []
for (let i = 1; i <= lc; i++) { for (let i = firstLineNumber; i <= lastLineNumber; i++) {
lines.push('<span class="CodeMirror-linenumber">' + i + '</span>') lines.push('<span class="CodeMirror-linenumber">' + i + '</span>')
} }
return '<span class="lineNumber CodeMirror-gutters">' + lines.join('') + '</span>' return '<span class="lineNumber CodeMirror-gutters">' + lines.join('') + '</span>'
@@ -25,15 +26,22 @@ var md = markdownit({
xhtmlOut: true, xhtmlOut: true,
breaks: true, breaks: true,
highlight: function (str, lang) { highlight: function (str, lang) {
if (lang === 'flowchart') { const delimiter = ':'
const langInfo = lang.split(delimiter)
const langType = langInfo[0]
const fileName = langInfo[1] || ''
const firstLineNumber = parseInt(langInfo[2], 10)
if (langType === 'flowchart') {
return `<pre class="flowchart">${str}</pre>` return `<pre class="flowchart">${str}</pre>`
} }
if (lang === 'sequence') { if (langType === 'sequence') {
return `<pre class="sequence">${str}</pre>` return `<pre class="sequence">${str}</pre>`
} }
return '<pre class="code">' + return '<pre class="code">' +
createGutter(str) + '<span class="filename">' + fileName + '</span>' +
'<code class="' + lang + '">' + createGutter(str, firstLineNumber) +
'<code class="' + langType + '">' +
str + str +
'</code></pre>' '</code></pre>'
} }