comparison 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
comparison
equal deleted inserted replaced
0:d30785e31577 1:56ad4e20f292
1
2 from rdflib import URIRef, BNode, Literal
3 from rdflib.query import ResultSerializer
4
5 def _termString(t, namespace_manager):
6 if t == None:
7 return "-"
8 if namespace_manager:
9 if isinstance(t, URIRef):
10 return namespace_manager.normalizeUri(t)
11 elif isinstance(t, BNode):
12 return t.n3()
13 elif isinstance(t, Literal):
14 return t._literal_n3(qname_callback=namespace_manager.normalizeUri)
15 else:
16 return t.n3()
17
18
19 class TXTResultSerializer(ResultSerializer):
20 """
21 A write only QueryResult serializer for text/ascii tables
22 """
23
24 def serialize(self, stream, encoding, namespace_manager = None):
25
26 """
27 return a text table of query results
28 """
29
30
31 def c(s, w):
32 """
33 center the string s in w wide string
34 """
35 w -= len(s)
36 h1 = h2 = w // 2
37 if w % 2: h2 += 1
38 return " " * h1 + s + " " * h2
39
40 if self.result.type!='SELECT':
41 raise Exception("Can only pretty print SELECT results!")
42
43 if not self.result:
44 return "(no results)\n"
45 else:
46
47 keys = sorted(self.result.vars)
48 maxlen = [0] * len(keys)
49 b = [[_termString(r[k], namespace_manager) for k in keys] for r in self.result]
50 for r in b:
51 for i in range(len(keys)):
52 maxlen[i] = max(maxlen[i], len(r[i]))
53
54 stream.write(
55 "|".join([c(k, maxlen[i]) for i, k in enumerate(keys)]) + "\n")
56 stream.write("-" * (len(maxlen)+sum(maxlen)) + "\n")
57 for r in sorted(b):
58 stream.write("|".join(
59 [t + " " * (i - len(t)) for i, t in zip(maxlen, r)]) + "\n")
60