Sun, 29 Jan 2017 15:05:14 +0200
Major overhaul of object→document relationship: added the Model class which models the object buffer. Each object is to be included in a model (an invariant that currently does not hold). A document is a subclass of a model. The LDObject is also now agnostic about selection, and the selection is now a set. A lot of things are probably broken now but it's a major step forward.
The LDObject::destroy method is also now gone. The model decides when objects are destroyed and calls the destructor directly. The end result removes a lot of cruft and adds structure to LDObject relations.
Notes:
- Inlining does not currently work (nothing simply gets inlined in)
- More work is required to ensure that each object actually goes into a model
#!/usr/bin/env python3 from sys import argv, stderr from os.path import realpath for filename in argv[1:]: with open(filename, 'r') as fp: try: exceeders = [(i + 1) for i, ln in enumerate(fp.read().splitlines()) if len(ln.replace('\t', ' ')) > 140] for linenumber in exceeders: stderr.write('%s:%d: warning: line length exceeds 120 characters\n' % (realpath(filename), linenumber)) except Exception as e: stderr.write('%s: warning: %s: %s\n' % (realpath(filename), type(e).__name__, e))