UNPKG

ractive

Version:

Next-generation DOM manipulation

31 lines (24 loc) 709 B
var pattern = /\$\{([^\}]+)\}/g; export default function ( signature ) { if ( typeof signature === 'function' ) { return { get: signature }; } if ( typeof signature === 'string' ) { return { get: createFunctionFromString( signature ) }; } if ( typeof signature === 'object' && typeof signature.get === 'string' ) { signature = { get: createFunctionFromString( signature.get ), set: signature.set }; } return signature; } function createFunctionFromString ( signature ) { var functionBody = 'var __ractive=this;return(' + signature.replace( pattern, function ( match, keypath ) { return '__ractive.get("' + keypath + '")'; }) + ')'; return new Function ( functionBody ); }