def parseRaw(data, node): """Parse and process a simple DSL to handle creation of flowables. Supported (can add others on request): * PageBreak * EvenPageBreak * OddPageBreak * FrameBreak * Spacer width, height * Transition * SetPageCounter * TextAnnotation "text of annotation" x_begin=-1 y_begin=-1 x_end=-1 y_end=-1 """ elements = [] lines = data.splitlines() for line in lines: lexer = shlex.shlex(line) lexer.whitespace += ',' tokens = list(lexer) if not tokens: continue # Empty line command = tokens[0] if command == 'PageBreak': if len(tokens) == 1: elements.append(MyPageBreak()) else: elements.append(MyPageBreak(tokens[1])) elif command == 'EvenPageBreak': if len(tokens) == 1: elements.append(MyPageBreak(breakTo='even')) else: elements.append(MyPageBreak(tokens[1], breakTo='even')) elif command == 'OddPageBreak': if len(tokens) == 1: elements.append(MyPageBreak(breakTo='odd')) else: elements.append(MyPageBreak(tokens[1], breakTo='odd')) elif command == 'FrameBreak': if len(tokens) == 1: elements.append(CondPageBreak(99999)) else: elements.append(CondPageBreak(float(tokens[1]))) elif command == 'Spacer': elements.append( MySpacer(adjustUnits(tokens[1]), adjustUnits(tokens[2]))) elif command == 'Transition': elements.append(Transition(*tokens[1:])) elif command == 'SetPageCounter': elements.append(flowables.PageCounter(*tokens[1:])) elif command == 'TextAnnotation': elements.append(TextAnnotation(*tokens[1:])) else: log.error('Unknown command %s in raw pdf directive [%s]' % (command, nodeid(node))) return elements
def parseRaw(data): """Parse and process a simple DSL to handle creation of flowables. Supported (can add others on request): * PageBreak * Spacer width, height """ elements = [] lines = data.splitlines() for line in lines: lexer = shlex.shlex(line) lexer.whitespace += ',' tokens = list(lexer) command = tokens[0] if command == 'PageBreak': if len(tokens) == 1: elements.append(MyPageBreak()) else: elements.append(MyPageBreak(tokens[1])) elif command == 'EvenPageBreak': if len(tokens) == 1: elements.append(MyPageBreak(breakTo='even')) else: elements.append(MyPageBreak(tokens[1], breakTo='even')) elif command == 'OddPageBreak': if len(tokens) == 1: elements.append(MyPageBreak(breakTo='odd')) else: elements.append(MyPageBreak(tokens[1], breakTo='odd')) elif command == 'Spacer': elements.append( Spacer(adjustUnits(tokens[1]), adjustUnits(tokens[2]))) elif command == 'Transition': elements.append(Transition(*tokens[1:])) elif command == 'SetPageCounter': elements.append(flowables.PageCounter(*tokens[1:])) else: log.error('Unknown command %s in raw pdf directive' % command) return elements