forked from enviPath/enviPy
Current Dev State
This commit is contained in:
61
static/js/ketcher2/node_modules/generate-function/index.js
generated
vendored
Normal file
61
static/js/ketcher2/node_modules/generate-function/index.js
generated
vendored
Normal file
@ -0,0 +1,61 @@
|
||||
var util = require('util')
|
||||
|
||||
var INDENT_START = /[\{\[]/
|
||||
var INDENT_END = /[\}\]]/
|
||||
|
||||
module.exports = function() {
|
||||
var lines = []
|
||||
var indent = 0
|
||||
|
||||
var push = function(str) {
|
||||
var spaces = ''
|
||||
while (spaces.length < indent*2) spaces += ' '
|
||||
lines.push(spaces+str)
|
||||
}
|
||||
|
||||
var line = function(fmt) {
|
||||
if (!fmt) return line
|
||||
|
||||
if (INDENT_END.test(fmt.trim()[0]) && INDENT_START.test(fmt[fmt.length-1])) {
|
||||
indent--
|
||||
push(util.format.apply(util, arguments))
|
||||
indent++
|
||||
return line
|
||||
}
|
||||
if (INDENT_START.test(fmt[fmt.length-1])) {
|
||||
push(util.format.apply(util, arguments))
|
||||
indent++
|
||||
return line
|
||||
}
|
||||
if (INDENT_END.test(fmt.trim()[0])) {
|
||||
indent--
|
||||
push(util.format.apply(util, arguments))
|
||||
return line
|
||||
}
|
||||
|
||||
push(util.format.apply(util, arguments))
|
||||
return line
|
||||
}
|
||||
|
||||
line.toString = function() {
|
||||
return lines.join('\n')
|
||||
}
|
||||
|
||||
line.toFunction = function(scope) {
|
||||
var src = 'return ('+line.toString()+')'
|
||||
|
||||
var keys = Object.keys(scope || {}).map(function(key) {
|
||||
return key
|
||||
})
|
||||
|
||||
var vals = keys.map(function(key) {
|
||||
return scope[key]
|
||||
})
|
||||
|
||||
return Function.apply(null, keys.concat(src)).apply(null, vals)
|
||||
}
|
||||
|
||||
if (arguments.length) line.apply(null, arguments)
|
||||
|
||||
return line
|
||||
}
|
||||
Reference in New Issue
Block a user