コード例 #1
0
def encode(doc):
    """Encodes a document.

    :param doc: Document being encoded.
    :type doc: object

    :returns: An encoded document representation.
    :rtype: unicode

    """
    # Encode as a dictionary.
    as_dict = dict_encoder.encode(doc)

    # Format dictionary keys.
    as_dict = convert.dict_keys(as_dict, convert.str_to_camel_case)

    # Encode to an etree xml element.
    tag = _get_xml_tag(doc)
    xml = _encode_complex(ET.Element(tag), as_dict)

    return ET.tostring(xml, _UNICODE)
コード例 #2
0
ファイル: encoder.py プロジェクト: ES-DOC/esdoc-py-client
def encode(doc):
    """Encodes a document.

    :param doc: Document being encoded.
    :type doc: object

    :returns: An encoded document representation.
    :rtype: unicode

    """
    # Encode as a dictionary.
    as_dict = dict_encoder.encode(doc)

    # Format dictionary keys.
    as_dict = convert.dict_keys(as_dict, convert.str_to_camel_case)

    # Encode to an etree xml element.
    tag = _get_xml_tag(doc)
    xml = _encode_complex(ET.Element(tag), as_dict)

    return ET.tostring(xml, _UNICODE)
コード例 #3
0
ファイル: decoder.py プロジェクト: ceblanton/esdoc-py-client
def decode(as_json):
    """Decodes a document from a UTF-8 encoded json text blob.

    :param as_json: Document json representation.
    :type as_json: unicode | str

    :returns: A pyesdoc document instance.
    :rtype: object

    """
    # Convert to unicode.
    as_json = convert.str_to_unicode(as_json)

    # Convert to dictionary.
    as_dict = convert.json_to_dict(as_json)

    # Format dictionary keys.
    as_dict = convert.dict_keys(as_dict, convert.str_to_underscore_case)

    # Decode from dictionary.
    return dict_decoder.decode(as_dict)
コード例 #4
0
ファイル: decoder.py プロジェクト: ceblanton/esdoc-py-client
def decode(as_dict):
    """Decodes a document from a dictionary.

    :param dict as_dict: A document in dictionary format.

    :returns: A pyesdoc document instance.
    :rtype: object

    """
    # Format keys.
    as_dict = convert.dict_keys(as_dict, convert.str_to_underscore_case)

    # Get document type key.
    try:
        doc_type_key = as_dict['ontology_type_key']
    except KeyError:
        raise KeyError('ontology_type_key is unspecified and therefore the document cannot be decoded.')

    # Get document type.
    doc_type = ontologies.get_type_from_key(doc_type_key)
    if doc_type is None:
        raise ValueError('ontology_type_key cannot be mapped to a supported ontology type.')

    return _decode(as_dict, doc_type, False)
コード例 #5
0
ファイル: decoder.py プロジェクト: ES-DOC/esdoc-py-client
def decode(as_dict):
    """Decodes a document from a dictionary.

    :param dict as_dict: A document in dictionary format.

    :returns: A pyesdoc document instance.
    :rtype: object

    """
    # Format keys.
    as_dict = convert.dict_keys(as_dict, convert.str_to_underscore_case)

    # Get document type key.
    try:
        doc_type_key = as_dict['meta']['type']
    except KeyError:
        raise KeyError('Document pyesdoc type key is invalid.')

    # Get document type.
    doc_type = ontologies.get_type_from_key(doc_type_key)
    if doc_type is None:
        raise ValueError('Document pyesdoc type key is invalid.')

    return _decode(as_dict, doc_type, False)
コード例 #6
0
def decode(as_dict):
    """Decodes a document from a dictionary.

    :param dict as_dict: A document in dictionary format.

    :returns: A pyesdoc document instance.
    :rtype: object

    """
    # Format keys.
    as_dict = convert.dict_keys(as_dict, convert.str_to_underscore_case)

    # Get document type key.
    try:
        doc_type_key = as_dict['meta']['type']
    except KeyError:
        raise KeyError('Document pyesdoc type key is invalid.')

    # Get document type.
    doc_type = ontologies.get_type_from_key(doc_type_key)
    if doc_type is None:
        raise ValueError('Document pyesdoc type key is invalid.')

    return _decode(as_dict, doc_type, False)