def parse_bool(string): boolean = False if string == 'True' or string == 'true' or string == '1': boolean = True elif string == 'False' or string == 'false' or string =='0': boolean = False else: syntax_error('Boolean expected (True/true/1 or False/false/0)', string) return boolean
def parse_usepackage(usepackage): """ @param usepackage (str) the unparsed usepackage string in the form [options]{name} @return (tuple) (name(str), options(str)) """ p = re.compile(r'^\s*(\[.*\])?\s*\{(.*)\}\s*$') m = p.match(usepackage) g = m.groups() if len(g)<2 or len(g)>2: syntax_error('usepackage specifications have to be of the form [%s]{%s}', usepackage) elif g[1]==None and g[1].strip()!='': syntax_error('usepackage specifications have to be of the form [%s]{%s}', usepackage) else: options = g[0] name = g[1].strip() return (name, options)
def parse_autotemplate(autotemplatebuffer): """ @param autotemplatebuffer (list) a list of lines found in the autotemplate section @return (list) a list of tuples of the form (string, string) with \command.parameters pairs """ result=[] for line in autotemplatebuffer: if len(line.lstrip())==0: #ignore empty lines continue if len(line.lstrip())>0 and line.lstrip().startswith('%'): #ignore lines starting with % as comments continue tokens = line.split('=', 1) if len(tokens)<2: syntax_error('lines in the autotemplate section have to be of the form key=value', line) result.append((tokens[0], tokens[1])) return result