diff options
Diffstat (limited to 'scripts/lint-project-xml.py')
-rwxr-xr-x | scripts/lint-project-xml.py | 70 |
1 files changed, 2 insertions, 68 deletions
diff --git a/scripts/lint-project-xml.py b/scripts/lint-project-xml.py index 38c57cadf..f1ef85dcc 100755 --- a/scripts/lint-project-xml.py +++ b/scripts/lint-project-xml.py @@ -19,6 +19,8 @@ import argparse +from ninja_rsp import NinjaRspFileReader + def check_action(check_type): """ @@ -91,74 +93,6 @@ def parse_args(): return parser.parse_args() -class NinjaRspFileReader: - """ - Reads entries from a Ninja rsp file. Ninja escapes any entries in the file that contain a - non-standard character by surrounding the whole entry with single quotes, and then replacing - any single quotes in the entry with the escape sequence '\''. - """ - - def __init__(self, filename): - self.f = open(filename, 'r') - self.r = self.character_reader(self.f) - - def __iter__(self): - return self - - def character_reader(self, f): - """Turns a file into a generator that returns one character at a time.""" - while True: - c = f.read(1) - if c: - yield c - else: - return - - def __next__(self): - entry = self.read_entry() - if entry: - return entry - else: - raise StopIteration - - def read_entry(self): - c = next(self.r, "") - if not c: - return "" - elif c == "'": - return self.read_quoted_entry() - else: - entry = c - for c in self.r: - if c == " " or c == "\n": - break - entry += c - return entry - - def read_quoted_entry(self): - entry = "" - for c in self.r: - if c == "'": - # Either the end of the quoted entry, or the beginning of an escape sequence, read the next - # character to find out. - c = next(self.r) - if not c or c == " " or c == "\n": - # End of the item - return entry - elif c == "\\": - # Escape sequence, expect a ' - c = next(self.r) - if c != "'": - # Malformed escape sequence - raise "malformed escape sequence %s'\\%s" % (entry, c) - entry += "'" - else: - raise "malformed escape sequence %s'%s" % (entry, c) - else: - entry += c - raise "unterminated quoted entry %s" % entry - - def write_project_xml(f, args): test_attr = "test='true' " if args.test else "" |