CLI to convert Scrapbox page to Markdown. Contribute to kondoumh/sb2md development by creating an account on GitHub. HackMD offers a great unified Markdown editor/preview which is familiar and well-suited to our needs. Our meeting records have improved a lot over a short period and as a result we are able to be better accountable to each other as a team. Bryan Van de Ven Co-creator and Project Lead of Bokeh. Fallout 76 Subscription Launches Broken, Scrapbox Deletes Items, Private Servers Not Private. Trello, MediaWiki, Slite, Feedly, and Nuclino are the most popular alternatives and competitors to Scrapbox. 'Great for collaboration' is the primary reason why developers choose Trello. Great onboarding, the familiar interface in Slack style, useful shortcuts, nice code snippets, support of Markdown. Now writing instructions and team notes.
The course contains the first 10 hours of the Complete Flutter Development Bootcamp and will teach you all the fundamentals of Flutter development to get you started. We built this course over months, perfecting the curriculum together with the Flutter team to teach you Flutter from scratch. Homebrew's package index. Name: Flutter SDK UI toolkit for building applications for mobile, web and desktop.
Scrapbox Markdown Table
Scrapbox Markdown Table
if(!Object.prototype.then){ |
Object.prototype.then=function(f){returnf.call(null,this);} |
} |
process.stdin.resume(); |
process.stdin.setEncoding('utf8'); |
letinput_string='; |
process.stdin.on('data',chunk=>{ |
input_string+=chunk; |
}); |
process.stdin.on('end',()=>{ |
consttext=input_string; |
console.log(sb2md(text)); |
}); |
functionsb2md(text){ |
// code block |
constescapeCodeBlocks=s=>s.replace( |
/^code:(.+)$((n^[t].*$)+)/mg, |
(_,p1,p2)=> |
'```'+p1+p2.replace(/^[t]/mg,').replace(/r|n|rn/g,'+++')+'+++```' |
); |
constunescapeCodeBlocks=s=>s.replace(/+{3}/g,'n'); |
constreplaceLine=line=> |
/^`{3}/.test(line) ? line : |
// level 2 heading |
line.replace(/^[[([^[]]+)]]$/,'## $1') |
.replace(/^[*s+(S[^[]]*)]$/,'## $1') |
// anchor link |
.replace(/[(S.*)s+(https?://S+)]/g,'[$1]($2)') |
.replace(/[(https?://S+)s+(S.*)]/g,'[$2]($1)') |
// image block |
.replace(/^[(https?://S+.(png|gif|jpe?g))]$/,'![]($1)') |
.replace(/^[(https://gyazo.com/S+)]$/,'![]($1.png)') |
// unordered list |
.replace(/^s(S.*)$/,'- $1') |
.replace(/^s{2}(S.*)$/,' - $1') |
.replace(/^s{3}(S.*)$/,' - $1') |
// bold text |
.replace(/[[([^[]]+)]]/g,'**$1**') |
.replace(/[*s+([^[]]+)]/g,'**$1**') |
// italic text |
.replace(/[/s+([^[]]+)]/g,'*$1*'); |
returntext |
.then(escapeCodeBlocks) |
.split(/r|n|rn/) |
// first line is level 1 heading |
.then(lines=>[lines[0].replace(/^(.+)$/,'# $1')].concat(lines.slice(1))) |
.map(replaceLine) |
.join('n') |
.then(unescapeCodeBlocks); |
} |