def lint(fname, options, out=stdPrint): output = None opts = {} for o in options: out(o) if '=' in o: k, v = o.split('=', 1) opts[k] = v else: opts[o] = None if opts.has_key('output'): output = open(opts['output'], 'w') maxage = None if opts.has_key('maxage'): maxage = float(opts['maxage']) g = gedcom.Gedcom(fname) llg = gedcom.LineageLinkedGedcom(g) if output is not None: output.write('<html><body>\n') output.write( '<h1><a href="http://www.wikitree.com">WikiTree</a> Lint</h1>\n') output.write('<p>Report run at: ' + str(datetime.datetime.now()) + '</p>\n') output.write('<p>input: ' + fname + '</p>\n') output.write('<el>Lint options\n') for k, v in opts.iteritems(): output.write('<li>' + k) if v is not None: output.write(': ' + v) output.write('</li>\n') output.write('</el>\n') for i in llg.individuals: if i.records.has_key('WWW'): problems = [] if maxage is not None and i.getAge( ) is not None and i.getAge() > maxage: problems.append('age {0} greater than maximum age {1}'.format( i.getAge(), maxage)) if opts.has_key('birth') and i.get('BIRT').get('DATE') is None: problems.append('missing birth date') if opts.has_key('death') and i.get('DEAT') is None: problems.append('missing date of death') if i.get('SEX') is None: problems.append('sex not defined') for obj in i.getAll('OBJE'): if obj.get('FORM').value == 'Message': if obj.get('TEXT').value.lower().find('todo') != -1: problems.append('todo found in message') if i.get('NOTE').get('TEXT').value.lower().find('todo') != -1: problems.append('todo found in bio') if len(problems): if output is not None: output.write(i.html() + '\n') output.write('<h3>Problems:</h3>\n') output.write('<e1>\n') for p in problems: output.write('<li>' + p + '</li>\n') output.write('</e1>\n') out('') out('\n'.join(problems)) out(i) for obj in i.getAll('OBJE'): if obj.get('FORM').value == 'Message': out(obj.get('TEXT').value) if output is not None: output.write('</body></html>\n')
print ' defaults to only listing the urls, add check to actually check if they are valid' exit(1) if len(sys.argv) not in [2, 3]: usage() check = False if len(sys.argv) == 3: if sys.argv[2] == 'check': check = True else: usage() g = gedcom.Gedcom(sys.argv[1]) llg = gedcom.LineageLinkedGedcom(g) urls = {} for i in llg.individuals: if i.get('NOTE') is not None: for l in i.get('NOTE').get('TEXT').value.splitlines(): start = l.find('http') if start != -1: #print l url = l[start:].split()[0] if '<' in url: url = url[:url.find('<')] if ']' in url: url = url[:url.find(']')]
def __init__(self, g): if type(g) == str: gedcom.LineageLinkedGedcom.__init__(self, gedcom.Gedcom(g), handlers) else: gedcom.LineageLinkedGedcom.__init__(self, g, handlers)
def __init__(self): """ Initialize test class.""" self.parse_options() self.filename = self.options.filename self.g = gedcom.Gedcom(self.filename) self.info = 'names'
def __init__(self): """ Initialize test class.""" self.parse_options() self.filename = self.options.filename self.g = gedcom.Gedcom(getLinesFromFile(self.filename, encoding='utf-8')) self.info = 'names'