UNPKG

dynatrace-cordova-outsystems-plugin

Version:

This plugin gives you the ability to use the Dynatrace instrumentation in your hybrid application (Cordova, Ionic, ..). It uses the Mobile Agent, the JavaScript Agent and the Javascript Bridge. The Mobile Agent will give you all device specific values con

90 lines (60 loc) 2.22 kB
# generate-function Module that helps you write generated functions in Node ``` npm install generate-function ``` [![build status](http://img.shields.io/travis/mafintosh/generate-function.svg?style=flat)](http://travis-ci.org/mafintosh/generate-function) ## Disclamer Writing code that generates code is hard. You should only use this if you really, really, really need this for performance reasons (like schema validators / parsers etc). ## Usage ``` js const genfun = require('generate-function') const { d } = genfun.formats function addNumber (val) { const gen = genfun() gen(` function add (n) {') return n + ${d(val)}) // supports format strings to insert values } `) return gen.toFunction() // will compile the function } const add2 = addNumber(2) console.log('1 + 2 =', add2(1)) console.log(add2.toString()) // prints the generated function ``` If you need to close over variables in your generated function pass them to `toFunction(scope)` ``` js function multiply (a, b) { return a * b } function addAndMultiplyNumber (val) { const gen = genfun() gen(` function (n) { if (typeof n !== 'number') { throw new Error('argument should be a number') } const result = multiply(${d(val)}, n + ${d(val)}) return result } `) // use gen.toString() if you want to see the generated source return gen.toFunction({multiply}) } const addAndMultiply2 = addAndMultiplyNumber(2) console.log(addAndMultiply2.toString()) console.log('(3 + 2) * 2 =', addAndMultiply2(3)) ``` You can call `gen(src)` as many times as you want to append more source code to the function. ## Variables If you need a unique safe identifier for the scope of the generated function call `str = gen.sym('friendlyName')`. These are safe to use for variable names etc. ## Object properties If you need to access an object property use the `str = gen.property('objectName', 'propertyName')`. This returns `'objectName.propertyName'` if `propertyName` is safe to use as a variable. Otherwise it returns `objectName[propertyNameAsString]`. If you only pass `gen.property('propertyName')` it will only return the `propertyName` part safely ## License MIT