var Stmt = require('./stmt'); var Holder = require('./holder'); /** * Literal SQL string. */ module.exports = new Class({ Extends: Stmt ,Tag: 'sql-string' ,Properties: { query: { type: String ,value: null } } ,regexp: /#\w+/g ,appendChild: function(child) { if (child.nodeType === Node.TEXT_NODE) this.query = child.textContent; } ,render: function(params) { if (!this.query) return null; function replaceFunc(token) { var holder = new Holder({id: token.substr(1)}); return holder.render(params); } return this.query.replace(this.regexp, replaceFunc); } ,findHolders: function() { var ids = this.query.match(this.regexp); if (ids) for (var i = 0; i < ids.length; i++) ids[i] = ids[i].substr(1); return ids; } });