On Sat, Nov 8, 2014 at 12:13 PM, Jon Erdman <postgre...@thewickedtribe.net> wrote: > > So, I was trying to use mustache.js in PG by defining a V8 function that > imports it. Older versions worked fine, but in newer versions they use a > class factory and I can't figure out how to reference the mustache stuff that > it creates. Apparently I need to know how our V8 implementation does exports.
If you define a variable named "exports" before the Mustache factory code then it'll make it think it's loading in a CommonJS environment and the "exports" variable will be populated with the Mustache methods. I'm not too familiar with PLV8 (so I'm not sure if there's a better/direct way to support modules) but the following works fine: CREATE OR REPLACE FUNCTION mustache(template text, view json) RETURNS TEXT LANGUAGE plv8 IMMUTABLE STRICT AS $BODY$ var exports = {}; // Copy/paste https://raw.githubusercontent.com/janl/mustache.js/master/mustache.js var Mustache = exports; return Mustache.render(template, view); $BODY$; test=> SELECT mustache('test: {{foo}}', '{"foo": "bar"}'::json); mustache ----------- test: bar (1 row) Regards, -- Sehrope Sarkuni Founder & CEO | JackDB, Inc. | https://www.jackdb.com/ -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers