#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# This file synchronises the .typos files in $GTFREE
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this file. If not, see .
#
# Copyright 2012 Børre Gaup
#
import subprocess
import os
import fileinput
import sys
sys.path.append(os.environ['GTHOME'] + '/gt/script/langTools')
import typosfile
def findTyposFiles():
"""
Find the typos files in dirname, return them as a list
"""
subp = subprocess.Popen(['find', os.path.join(os.environ['GTFREE'], 'prestable/converted'), '-name', '*.typos', '-print' ], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
(output, error) = subp.communicate()
if subp.returncode != 0:
print >>sys.stderr, 'Error when searching for typos docs'
print >>sys.stderr, error
sys.exit(1)
else:
files = output.split('\n')
return files[:-1]
def main():
files = findTyposFiles()
typos = {}
for typoname in files:
# Read typos from a .typos file
typosInstance = typosfile.Typos(typoname)
# Add the typos found to a the typos dict
typos.update(typosInstance.getTypos())
for typoname in files:
for line in fileinput.FileInput(typoname, inplace = 1):
line = line.rstrip()
if line:
tl = typosfile.Typoline(line)
if tl.getTypo() in typos:
tl.setCorrection(typos[tl.getTypo()])
line = tl.makeTypoline()
print line
if __name__ == '__main__':
main()