def test_line(self, number, min_len = None, max_len = None): if self.content is None: return False error = None line = self.get_line(number) if line is None: error = '{}:{} line not found'.format(self.path, number) else: if min_len and len(line) < min_len: error = '{}:{} length must be at least {}, is {}: "{}"' \ .format(self.path, number, min_len, len(line), line) elif max_len and len(line) > max_len: error = '{}:{} length must not exceed {}, is {}: "{}"' \ .format(self.path, number, max_len, len(line), line) if error: if self.mode is FileMode.Optional: Util.warning(error) else: Util.error(error) return False return True
def __make_block_tokens(self, flat_tokens): stack = [] block_tokens = TokenCollection() for token in flat_tokens: if token.t_type is TokenType.TagOpen: # Subsequent tokens will be added to this new block stack.append(BlockToken(self.special_tokens[TokenType.TagOpen], self.special_tokens[TokenType.TagClose], None)) else: if token.t_type is TokenType.TagClose: if len(stack) == 0: Util.error("Found extra closing tag") # Got the closing tag, pop the block from the stack token = stack.pop() if len(stack) > 0: stack[-1].tokens.add_token(token) else: block_tokens.add_token(token) if len(stack) > 0: Util.error("Missing closing tag") return block_tokens
def __init__(self, path, mode): File.__init__(self, path, mode) self.content = None self.lines = None if self.mode is not FileMode.Create: try: with open(self.path, 'rU') as f: self.content = f.read() except FileNotFoundError: if self.mode is not FileMode.Optional: Util.error('Required file {} not found'.format(self.path))
def get(self, name): if name not in self.bindings: Util.error('{} not in bindings'.format(name)) return self.bindings[name]
def __add(self, name, binding, protected): if self.contains(name) and self.get(name).protected: Util.error('Cannot overwrite binding {}'.format(name)) binding.protected = protected self.bindings[name] = binding
def __init__(self, path, mode): self.path = os.path.abspath(path) self.mode = mode if self.mode is FileMode.Required and not self.exists(): Util.error('Required file {} not found'.format(self.path))