Mercurial > repos > guerler > springsuite
diff planemo/lib/python3.7/site-packages/rdflib/plugins/sparql/results/txtresults.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo/lib/python3.7/site-packages/rdflib/plugins/sparql/results/txtresults.py Fri Jul 31 00:32:28 2020 -0400 @@ -0,0 +1,60 @@ + +from rdflib import URIRef, BNode, Literal +from rdflib.query import ResultSerializer + +def _termString(t, namespace_manager): + if t == None: + return "-" + if namespace_manager: + if isinstance(t, URIRef): + return namespace_manager.normalizeUri(t) + elif isinstance(t, BNode): + return t.n3() + elif isinstance(t, Literal): + return t._literal_n3(qname_callback=namespace_manager.normalizeUri) + else: + return t.n3() + + +class TXTResultSerializer(ResultSerializer): + """ + A write only QueryResult serializer for text/ascii tables + """ + + def serialize(self, stream, encoding, namespace_manager = None): + + """ + return a text table of query results + """ + + + def c(s, w): + """ + center the string s in w wide string + """ + w -= len(s) + h1 = h2 = w // 2 + if w % 2: h2 += 1 + return " " * h1 + s + " " * h2 + + if self.result.type!='SELECT': + raise Exception("Can only pretty print SELECT results!") + + if not self.result: + return "(no results)\n" + else: + + keys = sorted(self.result.vars) + maxlen = [0] * len(keys) + b = [[_termString(r[k], namespace_manager) for k in keys] for r in self.result] + for r in b: + for i in range(len(keys)): + maxlen[i] = max(maxlen[i], len(r[i])) + + stream.write( + "|".join([c(k, maxlen[i]) for i, k in enumerate(keys)]) + "\n") + stream.write("-" * (len(maxlen)+sum(maxlen)) + "\n") + for r in sorted(b): + stream.write("|".join( + [t + " " * (i - len(t)) for i, t in zip(maxlen, r)]) + "\n") +