
com.structurizr.dsl.InlineScriptDslContext Maven / Gradle / Ivy
The newest version!
package com.structurizr.dsl;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class InlineScriptDslContext extends ScriptDslContext {
static final Map SUPPORTED_LANGUAGES = new HashMap<>();
private final String language;
private final List lines = new ArrayList<>();
static {
SUPPORTED_LANGUAGES.put("javascript", "js");
SUPPORTED_LANGUAGES.put("groovy", "groovy");
SUPPORTED_LANGUAGES.put("kotlin", "kts");
SUPPORTED_LANGUAGES.put("ruby", "rb");
}
InlineScriptDslContext(DslContext parentContext, File dslFile, StructurizrDslParser dslParser, String language) {
super(parentContext, dslFile, dslParser);
this.language = language.toLowerCase();
}
void addLine(String line) {
lines.add(line);
}
@Override
void end() {
try {
String fileExtension;
if (SUPPORTED_LANGUAGES.containsKey(language)) {
fileExtension = SUPPORTED_LANGUAGES.get(language);
} else {
throw new RuntimeException("Unsupported scripting language \"" + language + "\"");
}
run(this, fileExtension, lines);
} catch (Exception e) {
throw new RuntimeException("Error running inline script, caused by " + e.getClass().getName() + ": " + e.getMessage(), e);
}
}
@Override
protected String[] getPermittedTokens() {
return new String[0];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy