Here is a little JavaScript trick I did to randomly include LeanPub embed (e.g., like the one in the right sidebar).
Continue reading “Not Everything has to be done Server-side”
Book author Azat Mardan writes about apps, startups and technology
Here is a little JavaScript trick I did to randomly include LeanPub embed (e.g., like the one in the right sidebar
Here is a little JavaScript trick I did to randomly include LeanPub embed (e.g., like the one in the right sidebar).
Continue reading “Not Everything has to be done Server-side”
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 app and convert to HTML 3. open HTML in MS Word and enjoy.
LeanPub is an awesome publishing platform, but often we need to communicate with other team members involved in the book production, e.g., content and copy editors. In such times, I’ve learned that Guy Kawasaki was right — when we suggested in his book APE: Author, Publisher, Entrepreneur — that author must use MS Word!
The problem is that LeanPub uses multi-file book format and a special markdown markup (that confuses Marked app). I was wrapping up a new revision of the Rapid Prototyping with JS book and previous experience of handing a txt file to an editor was poor. Luckily, Node.js came to help! Through some trail and error attempts, I found this workflow to be the best for converting LeanPub manuscript to a one MS Word file (for editing and other needs):
The full code of leanpub-tool.js which is also available at https://gist.github.com/azat-co/5674684:
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);