передача определений через Java в компилятор Google Closure - PullRequest
0 голосов
/ 09 июля 2011

Как видно из заголовка, я хотел бы передать определения программно через Java API компилятору Google Closure.

Это мой текущий код:

com.google.javascript.jscomp.Compiler.setLoggingLevel(Level.INFO);
com.google.javascript.jscomp.Compiler compiler = new com.google.javascript.jscomp.Compiler();
CompilerOptions options = new CompilerOptions();
CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
WarningLevel.VERBOSE.setOptionsForWarningLevel(options);

List<JSSourceFile> externs = new ArrayList<JSSourceFile>();
externs.add(JSSourceFile.fromFile(extern_src));

List<JSSourceFile> primary = new ArrayList<JSSourceFile>();
primary.add(JSSourceFile.fromFile(tmp));
compiler.compile(externs, primary, options);
for (JSError message : compiler.getWarnings()) {
    System.err.println("Warning message: " + message.toString());
}

for (JSError message : compiler.getErrors()) {
    System.err.println("Error message: " + message.toString());
}

1 Ответ

0 голосов
/ 10 июля 2011

Вы хотите заполнить карту определения замен .

options.getDefineReplacements().put("myDefineVarName", value);

Значение должно быть Node, которое является логическим, числовым или строковым литералом. Чтобы создать значение для логического литерала, используйте значение типа

new Node(Token.TRUE)

где Node и Token из пакета com.google.javascript.jscomp.rhino.

Я считаю, Token.STRING и Token.NUMBER - это типы токенов для других типов значений, но не указывайте меня на этом.

...