def generate(self): logger = self.logger outputter = self.OutputType() outputter.make_runner(parser=self.parser, dry_run=self.dry_run, setarith=self.setarith) con = fileless_context(scopes=[self.parse_result], verbose=self.verbose, logger=logger, run_mode=self.run_mode) self.make_more(self.parse_result, con)
def get_string(self, varname): """!Resolves the given variable reference within the global scope @param varname a variable reference, such as "plat%BASELINE" to send to self.scope.resolve(). @returns the string value of the varname @raise KeyError if the variable does not exist""" var = self.scope.resolve(varname) con = fileless_context(verbose=self.verbose) return var.string_context(con)
def generate(self): """!Generates the on-disk files used to run the workflow.""" logger = self.logger outputter = self.OutputType() outputter.make_runner(parser=self.parser, dry_run=self.dry_run, setarith=self.setarith) con = fileless_context(scopes=[self.parse_result], verbose=self.verbose, logger=logger, run_mode=self.run_mode) self.make_more(self.parse_result, con)
def get_string(self, varname): var = self.scope.resolve(varname) con = fileless_context(verbose=self.verbose) return var.string_context(con)
gfsvars={ use gfspaths use plat use enable_ndslfv nam_dyn=[[[ &nam_dyn # there would be many more variables here ... ndslfv=@[NDSLFV], mass_dp=@[MASS_DP], process_split=@[PROCESS_SPLIT], / ]]] GFS_VERSION="v13.0.4" } ''' tokenizer = Tokenizer() parser = Parser() context = fileless_context() scope = Scope() parser.parse(tokenizer.tokenize(mystring, filename="(mystring)"), scope) def get(var): return scope.resolve(var).string_context(context) print "nam_dyn = \n%s\n" % (get('gfsvars%nam_dyn'), ) print "NWPROD = %s\n" % (get('plat%NWPROD'), ) print "FIXGLOBAL = %s\n" % (get('gfsvars%FIXGLOBAL'), )