Mercurial > repos > guerler > springsuite
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 |