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
def default_decode_metadata(elem): if elem is None: return None ns, tag = _qname_split(elem.tag) assert tag == 'metadata' metadata = Metadata( id=elem.get('id'), type=elem.get('type'), attributes=get_attributes(elem, ignore=('id', 'type')), metas=[decode_meta(meta) for meta in elem.findall('meta')], namespace=ns, nsmap=elem.attrib.nsmap) elem.clear() return metadata