aboutsummaryrefslogtreecommitdiff
path: root/src/jsifier.js
diff options
context:
space:
mode:
authorAlon Zakai <azakai@mozilla.com>2010-12-12 15:05:22 -0800
committerAlon Zakai <azakai@mozilla.com>2010-12-12 15:05:22 -0800
commit6d83c785fb2f9befb0af92f57b5c5f8e5242ba49 (patch)
treeda83e3cb3126df53ddb0aed7f45430330a0f5b07 /src/jsifier.js
parent240ff2ff8e8d797740a6ee1dd534240afed6d6e5 (diff)
support for library dependencies +misc python float fixes
Diffstat (limited to 'src/jsifier.js')
-rw-r--r--src/jsifier.js18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/jsifier.js b/src/jsifier.js
index ed42dae7..90b155e7 100644
--- a/src/jsifier.js
+++ b/src/jsifier.js
@@ -270,13 +270,21 @@ function JSify(data, functionsOnly, givenTypes, givenFunctions) {
processItem: function(item) {
var shortident = item.ident.substr(1);
if (shortident in Library) {
- var snippet = Library[shortident];
- if (typeof snippet === 'string') {
- if (Library[snippet]) {
- snippet = Library[snippet]; // redirection for aliases
+ function addFromLibrary(ident) {
+ var me = arguments.callee;
+ if (!me.added) me.added = {};
+ if (ident in me.added) return '';
+ me.added[ident] = true;
+ var snippet = Library[ident];
+ if (typeof snippet === 'string') {
+ if (Library[snippet]) {
+ snippet = Library[snippet]; // redirection for aliases
+ }
}
+ var deps = Library[ident + '__deps'];
+ return '_' + ident + ' = ' + snippet.toString() + (deps ? '\n' + deps.map(addFromLibrary).join('\n') : '');
}
- item.JS = item.ident + ' = ' + snippet.toString();
+ item.JS = addFromLibrary(shortident);
} else {
item.JS = '// stub for ' + item.ident;
}