файл ввода / вывода в Spidermonkey - PullRequest
2 голосов
/ 29 июня 2009

Благодаря python-spidermonkey использовать код JavaScript из Python действительно просто.

Однако вместо использования Python для чтения кода JS из файла и передачи строки в Spidermonkey, есть ли способ прочитать файл из Spidermonkey (или передать путь к файлу в качестве аргумента, как в Rhino)?

Ответы [ 2 ]

2 голосов
/ 06 июля 2009

Оказывается, вы можете просто связать функцию Python и использовать ее из Spidermonkey: http://davisp.lighthouseapp.com/projects/26898/tickets/23-support-for-file-io-js_evaluatescript

import spidermonkey

def loadfile(fname):
    return open(fname).read()

rt = spidermonkey.Runtime()
cx = rt.new_context()
cx.add_global("loadfile", loadfile)
ret = cx.execute('var contents = loadfile("foo.js"); eval(contents);')
2 голосов
/ 29 июня 2009

SpiderMonkey как библиотека позволяет это сделать, вызвав JS_EvaluateScript с аргументом, отличным от NULL filename.

Однако, код интерфейса из python-spidermonkey вызывает JS_EvaluateScript только внутри метода eval_script, который в качестве закодированного предоставляет источник только в виде строки.

Вам следует обратиться к разработчику python-spidermonkey или, если возможно, лучше - предоставить патч для, скажем, eval_file_script method:)

...