Source code for yael.opfitem
#!/usr/bin/env python
# coding=utf-8
"""
An OPF `<item>` element, that is, a child of the `<manifest>`.
"""
from yael.element import Element
from yael.jsonable import JSONAble
__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 OPFItem(Element):
"""
Build an OPF `<item>` element or
parse it from `obj` or `string`.
"""
A_FALLBACK = "fallback"
A_HREF = "href"
A_ID = "id"
A_MEDIA_OVERLAY = "media-overlay"
A_MEDIA_TYPE = "media-type"
A_PROPERTIES = "properties"
V_COVER_IMAGE = "cover-image"
V_MATHML = "mathml"
V_NAV = "nav"
V_REMOTE_RESOURCES = "remote-resources"
V_SCRIPTED = "scripted"
V_SVG = "svg"
V_SWITCH = "switch"
def __init__(self, internal_path=None, obj=None, string=None):
self.v_fallback = None
self.v_href = None
self.v_id = None
self.v_media_overlay = None
self.v_media_type = None
self.v_properties = None
self.refinements = []
Element.__init__(
self,
internal_path=internal_path,
obj=obj,
string=string)
def json_object(self, recursive=True):
obj = {
"fallback": self.v_fallback,
"href": self.v_href,
"id": self.v_id,
"media_overlay": self.v_media_overlay,
"media_type": self.v_media_type,
"properties": self.v_properties,
"refinements": len(self.refinements),
}
if recursive:
obj["refinements"] = JSONAble.safe(self.refinements)
return obj
def parse_object(self, obj):
self.v_fallback = obj.get(OPFItem.A_FALLBACK)
self.v_href = obj.get(OPFItem.A_HREF)
self.v_id = obj.get(OPFItem.A_ID)
self.v_media_overlay = obj.get(OPFItem.A_MEDIA_OVERLAY)
self.v_media_type = obj.get(OPFItem.A_MEDIA_TYPE)
self.v_properties = obj.get(OPFItem.A_PROPERTIES)
[docs] def add_refinement(self, refinement):
"""
Add a refinement, that is,
store a reference to the refinement metadatum.
:param refinement: the refinement metadatum
:type refinement: :class:`yael.opfmetadatum.OPFMetadatum`
"""
self.refinements.append(refinement)
[docs] def has_property(self, v_property):
"""
Return True if this item has the given property.
:param v_property: a property name
:type v_property: str
:returns: True if the item has the property
:rtype: bool
"""
if self.v_properties != None:
return v_property in self.v_properties.split(" ")
return False
@property
def v_fallback(self):
"""
The value of the `fallback` attribute.
:rtype: str
"""
return self.__v_fallback
@v_fallback.setter
def v_fallback(self, v_fallback):
self.__v_fallback = v_fallback
@property
def v_href(self):
"""
The value of the `href` attribute.
:rtype: str
"""
return self.__v_href
@v_href.setter
def v_href(self, v_href):
self.__v_href = v_href
@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_media_overlay(self):
"""
The value of the `media-overlay` attribute.
:rtype: str
"""
return self.__v_media_overlay
@v_media_overlay.setter
def v_media_overlay(self, v_media_overlay):
self.__v_media_overlay = v_media_overlay
@property
def v_media_type(self):
"""
The value of the `media-type` attribute.
:rtype: str
"""
return self.__v_media_type
@v_media_type.setter
def v_media_type(self, v_media_type):
self.__v_media_type = v_media_type
@property
def v_properties(self):
"""
The value of the `properties` attribute.
:rtype: str
"""
return self.__v_properties
@v_properties.setter
def v_properties(self, v_properties):
self.__v_properties = v_properties