Example #1
0
def sub_english(log):
    """Translate the log file and return a dict of info and log."""
    english = open_json('eac', 'english.json')['translation']
    foreign = open_json('eac', '{}.json'.format(log.language))['translation']

    # Sort foreign lines from longest to shortest
    foreign = OrderedDict(
        sorted(foreign.items(), key=lambda t: len(t[1][0]), reverse=True))

    # Compile all the regex now instead of repeating.
    for key, value in foreign.items():
        for i, v in enumerate(value):
            value[i] = re.escape(v)
        foreign[key] = re.compile('|'.join(value), flags=re.IGNORECASE)

    # Iterate through each line and find/replace each string.
    new_log = []
    for line in log.full_contents:
        if not line:  # No use wasting time here.
            new_log.append('')
        else:
            for key, regex in foreign.items():
                if regex.search(line):
                    for value in english[key]:
                        line = regex.sub(value, line)
            new_log.append(line)

    re_space_settings(new_log)
    new_log = ''.join(new_log)

    return {
        'unrecognized': False,
        'language': log.language,
        'log': html.escape(new_log)
    }
Example #2
0
def score_wrapper(log, markup=False):
    """Determine the type of log file and passes the log to the appropriate logchecker."""

    try:
        analyze_log(log)
    except UnrecognizedException as exception:
        log.unrecognized = str(exception)
        log.full_contents = [html.escape(line) for line in log.full_contents]
        return log

    if log.ripper == 'EAC':
        info_json = open_json('eac', '{}.json'.format(log.language))
        logchecker = eac.EACChecker(info_json['patterns'], info_json['translation'], markup)
    elif log.ripper == 'XLD':
        patterns = open_json('xld.json')
        logchecker = xld.XLDChecker(patterns, markup=markup)
    elif log.ripper == 'EAC95':
        info_json = open_json('eac95', '{}.json'.format(log.language))
        logchecker = eac95.EAC95Checker(info_json['patterns'], info_json['translation'], markup)

    try:
        log = logchecker.check(log)
    except UnrecognizedException as exception:
        log.unrecognized = str(exception)
        log.full_contents = [html.escape(line) for line in log.full_contents]

    return log