Esempio n. 1
0
def make_igt_metadata(block, options):
    md = Metadata()
    mi = 1

    if options['keep_headers'] and block.get('header_lines'):
        md.append(
            Meta(id='meta{}'.format(mi),
                 type='odin-header',
                 text='\n'.join(block.get('header_lines', []))))
        mi += 1

    lg_code = block.get('iso-639-3')
    if lg_code is None:
        lg_code = 'und'  # undetermined
    # should we title-case language?
    # language = (block.get('language') or '').strip().title()
    language = (block.get('language') or '').strip()

    subj = MetaChild('subject',
                     attributes={
                         qattrname('type', 'xsi'): 'olac:language',
                         qattrname('code', 'olac'): lg_code.strip()
                     },
                     text=language.title(),
                     namespace=_nsmap['dc'])
    lang = MetaChild('language',
                     attributes={
                         qattrname('type', 'xsi'): 'olac:language',
                         qattrname('code', 'olac'): 'en'
                     },
                     text='English',
                     namespace=_nsmap['dc'])
    md.append(Meta(id='meta{}'.format(mi), children=[subj, lang]))

    return md
Esempio n. 2
0
def default_decode_meta(elem):
    # a meta can simply have text, which is the easy case, or it can
    # have nested XML. In the latter case, store the XML in very basic
    # MetaChild objects
    ns, tag = _qname_split(elem.tag)
    assert tag == 'meta'
    text = elem.text or ''
    meta = Meta(id=elem.get('id'),
                type=elem.get('type'),
                attributes=get_attributes(elem, ignore=('id', 'type')),
                text=text if text.strip() else None,
                children=[decode_metachild(mc) for mc in elem],
                namespace=ns,
                nsmap=elem.attrib.nsmap)
    elem.clear()
    return meta