All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax0.jamal.builtins.Script Maven / Gradle / Ivy

package javax0.jamal.builtins;

import javax0.jamal.api.*;

import static javax0.jamal.tools.InputHandler.*;

public class Script implements Macro {
    @Override
    public String evaluate(Input input, Processor processor) throws BadSyntaxAt {
        Position ref = input.getPosition();
        skipWhiteSpaces(input);
        String id = fetchId(input);
        skipWhiteSpaces(input);
        final String scriptType;
        if (input.length() > 0 && input.charAt(0) == '/') {
            skip(input, 1);
            scriptType = fetchId(input);
        } else {
            scriptType = "JavaScript";
        }
        skipWhiteSpaces(input);
        final String[] params = getParameters(input, id);
        if (!firstCharIs(input, '=')) {
            throw new BadSyntaxAt("script '" + id + "' has no '=' to body", ref);
        }
        skip(input, 1);
        final UserDefinedMacro macro;
        try {
            macro = processor.newUserDefinedMacro(id, input.toString(), params);
        } catch (BadSyntax bs) {
            throw bs instanceof BadSyntaxAt ?  (BadSyntaxAt)bs : new BadSyntaxAt(bs, ref);
        }
        macro.setScriptType(scriptType);
        if (isGlobalMacro(id)) {
            processor.getRegister().global(macro);
        } else {
            processor.getRegister().define(macro);
        }
        return "";
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy