# Import from itools from itools.csv import CSVFile, Table, UniqueError from itools.csv.table import parse_table, unfold_lines from itools.datatypes import Date, Integer, Unicode, URI, String from itools.fs import lfs from itools.handlers import RODatabase TEST_DATA_1 = """python,http://python.org/,52343,2003-10-23 ruby,http://ruby-lang.org/,42352,2001-03-28""" TEST_DATA_2 = 'one,two,three\nfour,five,six\nseven,eight,nine' TEST_SYNTAX_ERROR = '"one",,\n,"two",,\n,,"three"' ro_database = RODatabase(fs=lfs) class Languages(CSVFile): columns = ['name', 'url', 'number', 'date'] schema = {'name': Unicode, 'url': URI, 'number': Integer, 'date': Date} class Numbers(CSVFile): columns = ['one', 'two', 'three'] schema = {'one': Unicode, 'two': Unicode, 'three': Unicode} class CSVTestCase(TestCase):
# XXX This code does not take into account changes in the filesystem once a # domain has been registered/loaded. domains = {} def register_domain(name, locale_path): if name not in domains: domains[name] = Domain(locale_path) def get_domain(name): return domains[name] database = RODatabase() class Domain(dict): def __init__(self, uri): folder = database.get_handler(uri) for key in folder.get_handler_names(): if key[-3:] == '.mo': language = key[:-3] self[language] = folder.get_handler(key) def gettext(self, message, language): if language not in self: return message handler = self[language] return handler.gettext(message)