Skip to content

Instantly share code, notes, and snippets.

@azat-co
Created May 29, 2013 23:38
Show Gist options
  • Save azat-co/5674684 to your computer and use it in GitHub Desktop.
Save azat-co/5674684 to your computer and use it in GitHub Desktop.
LeanPub Tool — Node.js script for sanitizing and compiling a book's manuscript. LeanPub uses multi-file book format and a special markdown markup (that confuses Marked app). I found that to convert to MS Word (for editing and other needs) this workflow is the best: 1. run leanpub-tool.js with node.js (node leanpub-tool.js) 2. open file in Marked…
var fs = require('fs');
//change these to YOUR filenames
//probably we can read it from Book.txt but I was too lazy to implement it :-) and somebody might want to compile only sertain parts of the book
var book =[
"frontmatter.txt",
"mainmatter.txt",
"part1.txt",
"chapter1.txt",
"part2.txt",
"chapter2.txt",
"backmatter.txt",
"acknowledgment.txt"
];
var sanitizeText = [
'{frontmatter}',
'{backmatter}',
'{mainmatter}',
"I>## Note",
"T>## Tip",
"W>## Warning",
'{lang="javascript"}',
'{:lang="javascript"}',
'{lang="css"}',
'{:lang="css"}',
'{lang="json"}',
'{lang="ruby"}',
'{lang="php"}',
'{lang="text"}',
'{lang="bash"}',
'{lang="html"}',
"I>",
"T>",
"W>"
]
var str = '';
//read files
book.forEach(function(chapter){
str += fs.readFileSync(chapter,'utf8');
})
//sanitize LeanPub specific Markdown tags
sanitizeText.forEach(function(text){
// console.log(text)
//this loops through while there is not matches
while (new RegExp (text).test(str)) {
str = str.replace(text,'','gm')
};
})
//write output to a file
fs.writeFileSync('leanpub-tool.txt',str);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment