diff options
author | James Henstridge <james@daa.com.au> | 2001-10-06 10:35:39 +0000 |
---|---|---|
committer | James Henstridge <jamesh@src.gnome.org> | 2001-10-06 10:35:39 +0000 |
commit | 083a0afb3c7a62ad05ba189239f58522cf9f7633 (patch) | |
tree | 59810a399518e2bd9362843c7f3536b6ef7c9ae5 /codegen/override.py | |
parent | 235393696e6f58c8fe2b5a0e3c0d6ba43f374455 (diff) | |
download | pygtk-083a0afb3c7a62ad05ba189239f58522cf9f7633.tar.gz |
pass the filename to overrides.
2001-10-06 James Henstridge <james@daa.com.au>
* codegen/codegen.py (main): pass the filename to overrides.
* codegen/override.py (Overrides.__init__): rewrite the code that
reads in the overrides file, so it only splits on lines with only
'%%' in them. Also keep track of line numbers, so we know where
each section starts.
(Overrides.__parse_override): save the start line for 'override'
sections and 'override-attr' sections.
(Overrides.getstartline): new function to retrieve the start line
for a .overrides section.
(Overrides.__init__): take the filename rather than file handle as
argument.
Diffstat (limited to 'codegen/override.py')
-rw-r--r-- | codegen/override.py | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/codegen/override.py b/codegen/override.py index bfd581ac..cd6957de 100644 --- a/codegen/override.py +++ b/codegen/override.py @@ -7,21 +7,43 @@ import sys, string, fnmatch class Overrides: - def __init__(self, fp=sys.stdin): + def __init__(self, filename=None): self.ignores = {} self.glob_ignores = [] self.overrides = {} self.kwargs = {} + self.startlines = {} self.override_attrs = {} self.headers = '' self.init = '' - if fp == None: return + if filename: self.__handle_file(filename) + + def __handle_file(self, filename): + fp = open(filename, 'r') # read all the components of the file ... - bufs = map(string.strip, string.split(fp.read(), '%%')) - if bufs == ['']: return - for buf in bufs: - self.__parse_override(buf) - def __parse_override(self, buffer): + bufs = [] + startline = 1 + lines = [] + line = fp.readline() + linenum = 1 + while line: + if line == '%%\n' or line == '%%': + if lines: + bufs.append((string.join(lines, ''), startline)) + startline = linenum + 1 + lines = [] + else: + lines.append(line) + line = fp.readline() + linenum = linenum + 1 + if lines: + bufs.append((string.join(lines, ''), startline)) + if not bufs: return + + for buf, startline in bufs: + self.__parse_override(buf, startline) + + def __parse_override(self, buffer, startline): pos = string.find(buffer, '\n') if pos >= 0: line = buffer[:pos] @@ -41,9 +63,11 @@ class Overrides: if 'kwargs' in words[1:]: self.kwargs[func] = 1 self.overrides[func] = rest + self.startlines[func] = startline + 1 elif words[0] == 'override-attr': attr = words[1] self.override_attrs[attr] = rest + self.startlines[attr] = startline + 1 elif words[0] == 'headers': self.headers = self.headers + '\n' + rest elif words[0] == 'init': @@ -60,6 +84,8 @@ class Overrides: return self.overrides.has_key(name) def override(self, name): return self.overrides[name] + def getstartline(self, name): + return self.startlines[name] def wants_kwargs(self, name): return self.kwargs.has_key(name) def attr_is_overriden(self, attr): |