|
|
|
|
Re: Controlling generator behavior with parameters [message #1790299 is a reply to message #1790245] |
Fri, 08 June 2018 07:16 |
Uli Merkel Messages: 250 Registered: June 2013 |
Senior Member |
|
|
I just extended my grammar as:
Model: {Model}
('generator_options' options+=Option? (',' options+=Option)*)+;
Option: name=ID ('=' value=STRING)?;
In the Generator, I added some Utilities:
// *** advanced Option utilities
static Map<String, String> myOptions = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);
def loadMyOptions(EList<Option> options) {
myOptions.clear
for (Option option : options) {
myOptions.put(option.name, option.value ?: "")
}
return ("")
}
def getMyOption(String key) {
return myOptions.get(key) ?: ""
}
def boolean isMyOption(String key) {
return myOptions.containsKey(key)
}
def boolean isMyOption(String key, String compareValue) {
compareValue.equals(getMyOption(key))
}
def boolean isMyOptionIgnoreCase(String key, String compareValue) {
compareValue.equalsIgnoreCase(getMyOption(key))
}
...
def universalPreparation(Model sm) {
loadMyOptions(sm.options)
return ""
}
and activated this with:
override void doGenerate(Resource resource, IFileSystemAccess fsa) {
var String scriptFileName = resource.getURI().lastSegment.toString();
scriptfileName = scriptFileName;
outFileBase = scriptFileName.substring(0, scriptFileName.lastIndexOf("."));
universalPreparation(resource.contents.head as Model)
fsa.generateFile('DEMO.umevis0.graphml',genDemoVisout())
....
HIH, Uli
|
|
|
Powered by
FUDForum. Page generated in 0.03012 seconds