Source code for yael.opfmeta3
#!/usr/bin/env python
# coding=utf-8
"""
An OPF `<meta>` EPUB 3 metadatum, child of `<metadata>`.
"""
from yael.jsonable import JSONAble
from yael.namespace import Namespace
from yael.opfmetadatum import OPFMetadatum
import yael.util
__author__ = "Alberto Pettarin"
__copyright__ = "Copyright 2015, Alberto Pettarin (www.albertopettarin.it)"
__license__ = "MIT"
__version__ = "0.0.6"
__email__ = "alberto@albertopettarin.it"
__status__ = "Development"
[docs]class OPFMeta3(OPFMetadatum):
"""
Build an OPF `<meta>` EPUB 3 metadatum or
parse it from `obj` or `string`.
"""
A_DIR = "dir"
A_ID = "id"
A_LANG = "lang"
A_PROPERTY = "property"
A_REFINES = "refines"
A_SCHEME = "scheme"
A_NS_LANG = "{{{0}}}{1}".format(Namespace.XML, A_LANG)
V_ALTERNATE_SCRIPT = "alternate-script"
V_BELONGS_TO_COLLECTION = "belongs-to-collection"
V_COLLECTION_TYPE = "collection-type"
V_COLLECTION_TYPE_SERIES = "series"
V_COLLECTION_TYPE_SET = "set"
V_DISPLAY_SEQ = "display-seq"
V_FILE_AS = "file-as"
V_GROUP_POSITION = "group-position"
V_IDENTIFIER_TYPE = "identifier-type"
V_MEDIA_ACTIVE_CLASS = "media:active-class"
V_MEDIA_DURATION = "media:duration"
V_MEDIA_NARRATOR = "media:narrator"
V_MEDIA_PAUSED_CLASS = "media:paused-class"
V_MEDIA_PLAYBACK_ACTIVE_CLASS = "media:playback-active-class"
V_META_AUTH = "meta-auth"
V_ORIENTATION_AUTO = "auto"
V_ORIENTATION_LANDSCAPE = "landscape"
V_ORIENTATION_PORTRAIT = "portrait"
V_RENDITION_FLOW = "rendition:flow"
V_RENDITION_FLOW_AUTO = "auto"
V_RENDITION_FLOW_PAGINATED = "paginated"
V_RENDITION_FLOW_SCROLLED_CONTINUOUS = "scrolled-continuous"
V_RENDITION_FLOW_SCROLLED_DOC = "scrolled-doc"
V_RENDITION_LAYOUT = "rendition:layout"
V_RENDITION_LAYOUT_PRE_PAGINATED = "pre-paginated"
V_RENDITION_LAYOUT_REFLOWABLE = "reflowable"
V_RENDITION_ORIENTATION = "rendition:orientation"
V_RENDITION_SPREAD = "rendition:spread"
V_RENDITION_SPREAD_AUTO = "auto"
V_RENDITION_SPREAD_BOTH = "both"
V_RENDITION_SPREAD_LANDSCAPE = "landscape"
V_RENDITION_SPREAD_NONE = "none"
V_RENDITION_SPREAD_PORTRAIT = "portrait"
V_RENDITION_VIEWPORT = "rendition:viewport"
V_ROLE = "role"
V_SOURCE_OF = "source-of"
V_SOURCE_OF_PAGINATION = "pagination"
V_TITLE_TYPE = "title-type"
def __init__(self, internal_path=None, obj=None, string=None):
self.v_dir = None
self.v_id = None
self.v_property = None
self.v_refines = None
self.v_scheme = None
self.v_tag = None
self.v_text = None
self.v_xml_lang = None
OPFMetadatum.__init__(
self,
internal_path=internal_path,
obj=obj,
string=string)
def json_object(self, recursive=True):
obj = {
"dir": self.v_dir,
"id": self.v_id,
"property": self.v_property,
"refines": self.v_refines,
"scheme": self.v_scheme,
"tag": self.v_tag,
"text": self.v_text,
"xml_lang": self.v_xml_lang,
"refinements": len(self.refinements),
}
if recursive:
obj["refinements"] = JSONAble.safe(self.refinements)
return obj
def parse_object(self, obj):
self.v_dir = obj.get(OPFMeta3.A_DIR)
self.v_id = obj.get(OPFMeta3.A_ID)
self.v_property = obj.get(OPFMeta3.A_PROPERTY)
self.v_refines = obj.get(OPFMeta3.A_REFINES)
self.v_scheme = obj.get(OPFMeta3.A_SCHEME)
self.v_tag = obj.tag
self.v_text = yael.util.safe_strip(obj.text)
self.v_xml_lang = obj.get(OPFMeta3.A_NS_LANG)
@property
def v_dir(self):
"""
The value of the `dir` attribute.
:rtype: str
"""
return self.__v_dir
@v_dir.setter
def v_dir(self, v_dir):
self.__v_dir = v_dir
@property
def v_id(self):
"""
The value of the `id` attribute.
:rtype: str
"""
return self.__v_id
@v_id.setter
def v_id(self, v_id):
self.__v_id = v_id
@property
def v_property(self):
"""
The value of the `property` attribute.
:rtype: str
"""
return self.__v_property
@v_property.setter
def v_property(self, v_property):
self.__v_property = v_property
@property
def v_refines(self):
"""
The value of the `refines` attribute.
:rtype: str
"""
return self.__v_refines
@v_refines.setter
def v_refines(self, v_refines):
self.__v_refines = v_refines
@property
def v_scheme(self):
"""
The value of the `scheme` attribute.
:rtype: str
"""
return self.__v_scheme
@v_scheme.setter
def v_scheme(self, v_scheme):
self.__v_scheme = v_scheme
@property
def v_tag(self):
"""
The tag of this metadatum.
:rtype: str
"""
return self.__v_tag
@v_tag.setter
def v_tag(self, v_tag):
self.__v_tag = v_tag
@property
def v_text(self):
"""
The text of this metadatum.
:rtype: str
"""
return self.__v_text
@v_text.setter
def v_text(self, v_text):
self.__v_text = v_text
@property
def v_xml_lang(self):
"""
The value of the `xml:lang` attribute.
:rtype: str
"""
return self.__v_xml_lang
@v_xml_lang.setter
def v_xml_lang(self, v_xml_lang):
self.__v_xml_lang = v_xml_lang