Exemplo n.º 1
0
def _AddFullPattern(full_pattern, metre_name):
    if full_pattern in known_full_patterns:
        # TODO(shreevatsa): Figure out what exactly to do in this case
        Print('Error: full pattern already present')
        Print(metre_name)
        Print(full_pattern)
        Print(known_full_patterns[full_pattern])
        return False
    assert full_pattern not in known_full_patterns
    known_full_patterns[full_pattern] = {metre_name: True}
    return True
Exemplo n.º 2
0
def _AddPatternForMetre(metre_name, pada_patterns):
    if metre_name in pattern_for_metre:
        if pattern_for_metre[metre_name] != pada_patterns:
            Print('Mismatch for %s' % metre_name)
            Print(pattern_for_metre[metre_name])
            Print('   vs   ')
            Print(pada_patterns)
            assert False
        # Print('Not adding duplicate as already present: %s' % metre_name)
        return
    pattern_for_metre[metre_name] = pada_patterns
Exemplo n.º 3
0
def _AddArdhasamavrttaPattern(metre_name, odd_and_even_pada_patterns):
    """Given an ardha-sama-vṛtta's pattern, add it."""
    (odd_pada_pattern, even_pada_pattern) = odd_and_even_pada_patterns
    clean_odd = _CleanUpPattern(odd_pada_pattern)
    assert re.match(r'^[LG]*$', clean_odd)
    clean_even = _CleanUpPattern(even_pada_pattern)
    if clean_even.endswith('L'):
        Print('Not adding %s for now, as %s ends with laghu' %
              (metre_name, clean_even))
        return
    assert re.match(r'^[LG]*G$', clean_even), (metre_name, clean_even)
    _AddPatternForMetre(metre_name, [clean_odd, clean_even] * 2)

    patterns_odd = [clean_odd[:-1] + 'G', clean_odd[:-1] + 'L']
    patterns_even = [clean_even[:-1] + 'G', clean_even[:-1] + 'L']
    for (a, b, c, d) in itertools.product(patterns_odd,
                                          patterns_even,
                                          repeat=2):
        _AddFullPattern(a + b + c + d, metre_name)
    for (a, b) in itertools.product(patterns_odd, patterns_even):
        _AddHalfPattern(a + b, metre_name, {1, 2})
    for a in patterns_odd:
        _AddPadaPattern(a, metre_name, {1, 3})
    for b in patterns_even:
        _AddPadaPattern(b, metre_name, {2, 4})
def _AddPatternForMetre(metre_name, pada_patterns):
    if metre_name in pattern_for_metre:
        if pattern_for_metre[metre_name] != pada_patterns:
            # Print('Mismatch for %s' % metre_name)
            # Print(pattern_for_metre[metre_name])
            # Print('   vs   ')
            # Print(pada_patterns)
            # assert False
            Print('Not overwriting as already present: %s' % metre_name)
        return
    pattern_for_metre[metre_name] = pada_patterns
Exemplo n.º 5
0
def set_up_logger(input_file_name):
    logger = logging.getLogger()
    log_file = tempfile.NamedTemporaryFile(prefix='read_gretil_%s_' %
                                           os.path.basename(input_file_name),
                                           delete=False)
    Print('Logging to %s' % log_file.name)
    handler = logging.FileHandler(log_file.name)
    handler.setFormatter(
        logging.Formatter(
            '%(levelname)s\t%(asctime)s %(filename)s:%(lineno)d] %(message)s'))
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)
Exemplo n.º 6
0
 def post(self):
     verse_text = self.request.get('verse_text')
     assert type(verse_text) == type('unicode literal')
     metre_name = self.request.get('metre_name')
     Print('Type of metre_name is ' +
           ('bytes' if type(metre_name) else 'unicode'))
     if isinstance(metre_name, bytes):
         metre_name = metre_name.decode('utf-8')
     print('Type of metre_name is now ', type(metre_name))
     (alignment, table) = find_alignment(verse_text, metre_name)
     ret = {'alignment': alignment, 'table': table}
     self.response.content_type = b'application/json'
     self.response.write(json.dumps(ret))
Exemplo n.º 7
0
            '%(levelname)s\t%(asctime)s %(filename)s:%(lineno)d] %(message)s'))
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)


if __name__ == '__main__':
    args = get_args()
    input_file_name = args.input_file
    set_up_logger(input_file_name)

    text = codecs.open(input_file_name, 'r', 'utf-8').read()
    custom_splitter = read.split_gretil.mss_splitter if 'msubhs_u.htm' in input_file_name else None
    (verses, text) = read.split_gretil.split(text,
                                             custom_splitter=custom_splitter)
    # blocks = list(read.split_gretil.blocks_of_verses_in_text(verses, text))
    Print('There are %d verses.' % len(verses))

    identifier = identifier_pipeline.IdentifierPipeline()
    table = {}
    for (verse_number, verse) in enumerate(verses):
        verse_number += 1
        Print('\nVerse %d is:' % verse_number)
        Print('\n    '.join(('    ' + verse).splitlines()))
        Print('End Verse %d' % verse_number)
        ok_and_results = identifier.IdentifyFromText(verse)
        if not ok_and_results:  # None for lines that contain no syllables
            continue
        (perfect, results) = ok_and_results
        if not results:
            table['unknown'] = table.get('unknown', 0) + 1
            if args.print_unidentified_verses != 'none':
Exemplo n.º 8
0
 def __init__(self):
     global Print
     Print = Print()
     os.system('clear')
     self.do_initial_setup()
     self.show_option_list()