keet
Version:
Minimalist view layer for the web
193 lines (156 loc) • 5.18 kB
JavaScript
/* CLI markdown.config.js file */
var fs = require('fs')
var path = require('path')
var markdownMagic = require('markdown-magic')
var readline = require('readline')
var pkg = fs.readFileSync('package.json', 'utf8')
var ver = JSON.parse(pkg).version
var git_branch = JSON.parse(pkg).git_branch
var c = [
`[](https://www.npmjs.com/package/keet)`,
`[](https://cdn.rawgit.com/syarul/keet/${git_branch}/keet-min.js)`,
`[](https://www.npmjs.com/package/keet)`,
`[](https://travis-ci.org/syarul/keet)`,
`[](https://coveralls.io/github/syarul/keet?branch=${git_branch})`,
`[](https://standardjs.com)`
]
var files = ['hello', 'counter', 'conditional-nodes','model', 'sub-component']
var parse = {}
var config = {
transforms: {
/* Match <!-- AUTO-GENERATED-CONTENT:START (SHEILDS) --> */
SHEILDS (content, options) {
return c.join(' ')
},
VER () {
return `# Keet v${ver}`
},
RESOURCES () {
return `- Usage/API Examples - https://github.com/syarul/keet/tree/esm-5/examples
- TodoMVC Implementation - https://github.com/syarul/keetjs-todomvc
- Performance (opinionated) - https://github.com/syarul/preact-perf`
},
HELLO () {
return `\`\`\`js\n${parse['hello']}\`\`\``
},
COUNTER () {
return `\`\`\`js\n${parse['counter']}\`\`\``
},
CONDITIONAL_NODES () {
return `\`\`\`js\n${parse['conditional-nodes']}\`\`\``
},
MODEL () {
return `\`\`\`js\n${parse['model']}\`\`\``
},
SUB_COMPONENT () {
return `\`\`\`js\n${parse['sub-component']}\`\`\``
},
HTML () {
return
`\`\`\`html
<html>
<head>
<script src="//cdn.rawgit.com/syarul/keet/${git_branch}/keet-min.js"></script>
</head>
<body>
<div id="app"></div>
</body>
<script>
// your codes goes here
</script>
</html>
\`\`\``
}
}
}
var markdownPath = path.join(__dirname, 'README_old.md')
function next(i, files){
if(i < files.length){
var file = files[i]
var rd = readline.createInterface({
input: fs.createReadStream(`examples/${file}.js`),
output: process.stdout,
terminal: false
})
parse[file] = ''
rd.on('line', function (line) {
if(!line.match('// rem')){
if(line.match(/\.\.\/\'/g)){
line = line.replace(/\.\.\/\'/, 'keet\'')
} else if(line.match(/\.\.\/utils/g)){
line = line.replace(/\.\.\/utils/, 'keet\/utils')
if(line.match(', getId '))
line = line.replace(', getId ', ' ')
}
parse[file] += line + '\n'
}
})
rd.on('close', function(){
i++
next(i, files)
})
} else {
markdownMagic(markdownPath, config)
}
}
next(0, files)
String.prototype.replaceAt = function (index, replacement) {
return this.substr(0, index) + replacement + this.substr(index + replacement.length)
}
function ReadLine2 (file) {
var rd = readline.createInterface({
input: fs.createReadStream(file),
output: process.stdout,
terminal: false
})
var c = 0
file = file.replace(/([^:]\/)\/+/g, '$1')
console.log('\nparsing ' + file + '...')
var info = ''
rd.on('line', function (line) {
c++
if (c > 0 && c < 11) {
info += line + '\n'
if (c === 10) {
console.log(info)
var data = fs.readFileSync('./keet-min.js'); //read existing contents into data
var fd = fs.openSync('./keet-min.js', 'w+');
var buffer = new Buffer(info);
fs.writeSync(fd, buffer, 0, buffer.length, 0); //write new data
fs.writeSync(fd, data, 0, data.length, buffer.length); //append old data
fs.close(fd);
}
}
})
}
function ReadLine (file) {
var rd = readline.createInterface({
input: fs.createReadStream(file),
output: process.stdout,
terminal: false
})
var c = 0
file = file.replace(/([^:]\/)\/+/g, '$1')
console.log('\nparsing ' + file + '...')
rd.on('line', function (line) {
c++
if (c === 3) {
var newLine = line.replaceAt(11, ver)
fs.readFile(file, 'utf8', function (err, data) {
if (err) {
return console.log(err)
}
line = line.substr(3)
newLine = newLine.substr(3)
var re = new RegExp(line, 'g')
var result = data.replace(re, newLine)
console.log(re, newLine)
fs.writeFile(file, result, 'utf8', function (err) {
if (err) return console.log(err)
ReadLine2('./keet.js')
})
})
}
})
}
ReadLine('./keet.js')