Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/creactistore/_templates/lib/rdflib/plugins/parsers/rdfa/options.py
diff options
context:
space:
mode:
Diffstat (limited to 'creactistore/_templates/lib/rdflib/plugins/parsers/rdfa/options.py')
-rw-r--r--creactistore/_templates/lib/rdflib/plugins/parsers/rdfa/options.py173
1 files changed, 173 insertions, 0 deletions
diff --git a/creactistore/_templates/lib/rdflib/plugins/parsers/rdfa/options.py b/creactistore/_templates/lib/rdflib/plugins/parsers/rdfa/options.py
new file mode 100644
index 0000000..0329969
--- /dev/null
+++ b/creactistore/_templates/lib/rdflib/plugins/parsers/rdfa/options.py
@@ -0,0 +1,173 @@
+# -*- coding: utf-8 -*-
+"""
+
+Options class: collect the possible options that govern the parsing possibilities. It also includes a reference and
+handling of the extra Graph for warnings, informations, errors.
+
+
+@summary: RDFa parser (distiller)
+@requires: U{RDFLib<http://rdflib.net>}
+@requires: U{html5lib<http://code.google.com/p/html5lib/>} for the HTML5 parsing; note possible dependecies on Python's version on the project's web site
+@organization: U{World Wide Web Consortium<http://www.w3.org>}
+@author: U{Ivan Herman<a href="http://www.w3.org/People/Ivan/">}
+@license: This software is available for use under the
+U{W3C® SOFTWARE NOTICE AND LICENSE<href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">}
+
+"""
+
+import sys
+from rdflib.graph import Graph
+from rdflib.term import BNode, Literal, URIRef
+from rdflib.namespace import Namespace
+
+__all__ = ['CommentGraph', 'Options']
+
+DIST_URI = "http://www.w3.org/2007/08/pyRdfa/distiller"
+DIST_NS = DIST_URI + '#'
+
+ns_errors = Namespace(DIST_NS)
+distillerURI = URIRef(DIST_URI)
+
+WARNING = 'warning'
+ERROR = 'error'
+INFO = 'info'
+DEBUG = 'debug'
+
+_message_properties = {
+ WARNING: ns_errors["warning"],
+ ERROR: ns_errors["error"],
+ INFO: ns_errors["information"],
+ DEBUG: ns_errors["debug"]
+}
+
+def _add_to_comment_graph(graph, msg, prop, uri):
+ """
+ Add a distiller message to the graph.
+
+ @param graph: RDFLib Graph
+ @param msg: message of an exception
+ @type msg: RDFLIb Literal
+ @param prop: the property to be used
+ @type prop: string, must be one of 'warning', 'error', 'info', 'debug'
+ @param uri: the top URI used to invoke the distiller
+ @type uri: URIRef
+ """
+ bnode = BNode()
+ graph.add((distillerURI, _message_properties[prop], bnode))
+ graph.add((bnode, ns_errors["onURI"], uri))
+ graph.add((bnode, ns_errors["message"], msg))
+
+
+class CommentGraph(object):
+ """Class to handle the 'comment graph', ie, the (RDF) Graph containing the warnings,
+ error messages, and informational messages.
+ """
+ def __init__(self, warnings = False):
+ """
+ @param warnings: whether a graph should effectively be set up, or whether this
+ should just be an empty shell for the various calls to work (without effect)
+ """
+ if warnings:
+ self.graph = Graph()
+ else:
+ self.graph = None
+ self.accumulated_literals = []
+ self.baseURI = None
+
+ def _add_triple(self, msg, prop):
+ obj = Literal(msg)
+ if self.baseURI == None:
+ self.accumulated_literals.append((obj,prop))
+ elif self.graph != None:
+ _add_to_comment_graph(self.graph, obj, prop, self.baseURI)
+
+ def set_base_URI(self, URI):
+ """Set the base URI for the comment triples.
+
+ Note that this method I{must} be called at some point to complete the triples. Without it the triples
+ added via L{add_warning<CommentGraph.add_warning>}, L{add_info<CommentGraph.add_info>}, etc, will not be added to the final graph.
+
+ @param URI: URIRef for the subject of the comments
+ """
+ self.baseURI = URI
+ if self.graph != None:
+ for obj, prop in self.accumulated_literals:
+ _add_to_comment_graph(self.graph, obj, prop, self.baseURI)
+ self.accumulated_literals = []
+
+ def add_warning(self, txt):
+ """Add a warning. A comment triplet is added to the separate "warning" graph.
+ @param txt: the warning text. It will be preceded by the string "==== pyRdfa Warning ==== "
+ """
+ self._add_triple(txt, WARNING)
+
+ def add_info(self, txt):
+ """Add an informational comment. A comment triplet is added to the separate "warning" graph.
+ @param txt: the information text. It will be preceded by the string "==== pyRdfa information ==== "
+ """
+ self._add_triple(txt, INFO)
+
+ def add_error(self, txt):
+ """Add an error comment. A comment triplet is added to the separate "warning" graph.
+ @param txt: the information text. It will be preceded by the string "==== pyRdfa information ==== "
+ """
+ self._add_triple(txt, ERROR)
+
+ def _add_debug(self, txt):
+ self._add_triple(txt, DEBUG)
+
+
+GENERIC_XML = 0
+XHTML_RDFA = 1
+HTML5_RDFA = 2
+
+class Options(object):
+ """Settable options. An instance of this class is stored in
+ the L{execution context<ExecutionContext>} of the parser.
+
+ @ivar space_preserve: whether plain literals should preserve spaces at output or not
+ @type space_preserve: Boolean
+ @ivar comment_graph: Graph for the storage of warnings
+ @type comment_graph: L{CommentGraph}
+ @ivar warnings: whether warnings should be generated or not
+ @type warnings: Boolean
+ @ivar transformers: extra transformers
+ @type transformers: list
+ @type host_language: the host language for the RDFa attributes. Default is XHTML_RDFA, but it can be GENERIC_XML and HTML5_RDFA
+ @ivar host_language: integer (logically: an enumeration)
+ @ivar lax: whether a 'lax' parsing of XHTML (ie, HTML5) is allowed. This means that the value of the host language might change run time
+ @type lax: Boolean
+ """
+ def __init__(self, warnings=False, space_preserve=True, transformers=[], xhtml=True, lax=False):
+ """
+ @param space_preserve: whether plain literals should preserve spaces at output or not
+ @type space_preserve: Boolean
+ @param warnings: whether warnings should be generated or not
+ @type warnings: Boolean
+ @param transformers: extra transformers
+ @type transformers: list
+ @param xhtml: initial value for the host language. If True, the value is set to XHTML_RDFA. Note that run-time the class variable might be set ot HTML5_RDFA, depending on the value of the lax flag and the result of parsing.
+ @type xhtml: Booelan
+ @param lax: whether a 'lax' parsing of XHTML (ie, HTML5) is allowed. This means that the value of the host language might change run time
+ @type lax: Boolean
+ """
+ self.space_preserve = space_preserve
+ self.transformers = transformers
+ self.comment_graph = CommentGraph(warnings)
+ self.warnings = warnings
+ self.lax = lax
+ if xhtml:
+ self.host_language = XHTML_RDFA
+ else:
+ self.host_language = GENERIC_XML
+
+ def __str__(self):
+ retval = """Current options:
+ space_preserve : %s
+ warnings : %s
+ lax parsing : %s
+ host language : %s
+ """
+ return retval % (self.space_preserve, self.warnings, self.lax, self.host_language)
+
+