aboutsummaryrefslogtreecommitdiff
path: root/node_modules/generate-function/index.js
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
commit5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch)
tree360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/generate-function/index.js
parentb500a50f1b97d93c98b36ed9a980f8188d648147 (diff)
downloadLYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz
LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/generate-function/index.js')
-rw-r--r--node_modules/generate-function/index.js181
1 files changed, 181 insertions, 0 deletions
diff --git a/node_modules/generate-function/index.js b/node_modules/generate-function/index.js
new file mode 100644
index 0000000..8105dc0
--- /dev/null
+++ b/node_modules/generate-function/index.js
@@ -0,0 +1,181 @@
+var util = require('util')
+var isProperty = require('is-property')
+
+var INDENT_START = /[\{\[]/
+var INDENT_END = /[\}\]]/
+
+// from https://mathiasbynens.be/notes/reserved-keywords
+var RESERVED = [
+ 'do',
+ 'if',
+ 'in',
+ 'for',
+ 'let',
+ 'new',
+ 'try',
+ 'var',
+ 'case',
+ 'else',
+ 'enum',
+ 'eval',
+ 'null',
+ 'this',
+ 'true',
+ 'void',
+ 'with',
+ 'await',
+ 'break',
+ 'catch',
+ 'class',
+ 'const',
+ 'false',
+ 'super',
+ 'throw',
+ 'while',
+ 'yield',
+ 'delete',
+ 'export',
+ 'import',
+ 'public',
+ 'return',
+ 'static',
+ 'switch',
+ 'typeof',
+ 'default',
+ 'extends',
+ 'finally',
+ 'package',
+ 'private',
+ 'continue',
+ 'debugger',
+ 'function',
+ 'arguments',
+ 'interface',
+ 'protected',
+ 'implements',
+ 'instanceof',
+ 'NaN',
+ 'undefined'
+]
+
+var RESERVED_MAP = {}
+
+for (var i = 0; i < RESERVED.length; i++) {
+ RESERVED_MAP[RESERVED[i]] = true
+}
+
+var isVariable = function (name) {
+ return isProperty(name) && !RESERVED_MAP.hasOwnProperty(name)
+}
+
+var formats = {
+ s: function(s) {
+ return '' + s
+ },
+ d: function(d) {
+ return '' + Number(d)
+ },
+ o: function(o) {
+ return JSON.stringify(o)
+ }
+}
+
+var genfun = function() {
+ var lines = []
+ var indent = 0
+ var vars = {}
+
+ var push = function(str) {
+ var spaces = ''
+ while (spaces.length < indent*2) spaces += ' '
+ lines.push(spaces+str)
+ }
+
+ var pushLine = function(line) {
+ if (INDENT_END.test(line.trim()[0]) && INDENT_START.test(line[line.length-1])) {
+ indent--
+ push(line)
+ indent++
+ return
+ }
+ if (INDENT_START.test(line[line.length-1])) {
+ push(line)
+ indent++
+ return
+ }
+ if (INDENT_END.test(line.trim()[0])) {
+ indent--
+ push(line)
+ return
+ }
+
+ push(line)
+ }
+
+ var line = function(fmt) {
+ if (!fmt) return line
+
+ if (arguments.length === 1 && fmt.indexOf('\n') > -1) {
+ var lines = fmt.trim().split('\n')
+ for (var i = 0; i < lines.length; i++) {
+ pushLine(lines[i].trim())
+ }
+ } else {
+ pushLine(util.format.apply(util, arguments))
+ }
+
+ return line
+ }
+
+ line.scope = {}
+ line.formats = formats
+
+ line.sym = function(name) {
+ if (!name || !isVariable(name)) name = 'tmp'
+ if (!vars[name]) vars[name] = 0
+ return name + (vars[name]++ || '')
+ }
+
+ line.property = function(obj, name) {
+ if (arguments.length === 1) {
+ name = obj
+ obj = ''
+ }
+
+ name = name + ''
+
+ if (isProperty(name)) return (obj ? obj + '.' + name : name)
+ return obj ? obj + '[' + JSON.stringify(name) + ']' : JSON.stringify(name)
+ }
+
+ line.toString = function() {
+ return lines.join('\n')
+ }
+
+ line.toFunction = function(scope) {
+ if (!scope) scope = {}
+
+ var src = 'return ('+line.toString()+')'
+
+ Object.keys(line.scope).forEach(function (key) {
+ if (!scope[key]) scope[key] = line.scope[key]
+ })
+
+ 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
+}
+
+genfun.formats = formats
+module.exports = genfun