|
3 | 3 | # SPDX-License-Identifier: Apache-2.0 |
4 | 4 |
|
5 | 5 | # SPDX-FileContributor: Michael Meinel |
6 | | - |
7 | | -from datetime import date, time, datetime |
| 6 | +# SPDX-FileContributor: Michael Fritzsche |
8 | 7 |
|
9 | 8 | from .ld_container import ld_container |
10 | | -from .ld_list import ld_list |
11 | 9 | from .ld_dict import ld_dict |
12 | | -from .ld_context import iri_map |
| 10 | +from .ld_list import ld_list |
13 | 11 | from .pyld_util import JsonLdProcessor |
14 | 12 |
|
15 | 13 |
|
16 | 14 | _TYPEMAP = [ |
17 | | - # Conversion routines for ld_container |
18 | | - ( |
19 | | - lambda c: isinstance(c, ld_container), |
20 | | - { |
21 | | - "ld_container": lambda c, **_: c, |
22 | | - "json": lambda c, **_: c.compact(), |
23 | | - "expanded_json": lambda c, **_: c.ld_value, |
24 | | - }, |
25 | | - ), |
| 15 | + # Conversion routine for ld_container |
| 16 | + (lambda c: isinstance(c, ld_container), {"ld_container": lambda c, **_: c}), |
26 | 17 |
|
27 | 18 | # Wrap item from ld_dict in ld_list |
28 | | - (ld_list.is_ld_list, dict(ld_container=ld_list)), |
29 | | - ( |
30 | | - lambda c: isinstance(c, list) and all(isinstance(item, dict) for item in c), |
31 | | - dict(ld_container=lambda c, **kw: ld_list([{"@list": c}], **kw)) |
32 | | - ), |
| 19 | + (ld_list.is_ld_list, {"ld_container": ld_list}), |
| 20 | + (lambda c: isinstance(c, list), {"ld_container": ld_list}), |
33 | 21 |
|
34 | 22 | # pythonize items from lists (expanded set is already handled above) |
35 | | - (ld_container.is_json_id, dict(python=lambda c, **_: c["@id"])), |
36 | | - (ld_container.is_typed_json_value, dict(python=ld_container.typed_ld_to_py)), |
37 | | - (ld_container.is_json_value, dict(python=lambda c, **_: c["@value"])), |
38 | | - (ld_list.is_container, dict(ld_container=lambda c, **kw: ld_list([c], **kw))), |
39 | | - (ld_dict.is_json_dict, dict(ld_container=lambda c, **kw: ld_dict([c], **kw))), |
40 | | - |
41 | | - # Convert internal data types to expanded_json |
42 | | - (lambda c: ld_container.is_json_id(c) or ld_container.is_json_value(c), dict(expanded_json=lambda c, **_: [c])), |
43 | | - (ld_dict.is_json_dict, dict(expanded_json=lambda c, **kw: ld_dict.from_dict(c, **kw).ld_value)), |
44 | | - (ld_dict.is_ld_dict, dict(expanded_json=lambda c, **kw: ld_dict.from_dict(c[0], **kw).ld_value)), |
45 | | - ( |
46 | | - ld_list.is_container, |
47 | | - dict( |
48 | | - expanded_json=lambda c, **kw: ld_list.from_list( |
49 | | - ld_list([c]).item_list, container=ld_list([c]).container, **kw |
50 | | - ).ld_value |
51 | | - ), |
52 | | - ), |
53 | | - ( |
54 | | - ld_list.is_ld_list, |
55 | | - dict( |
56 | | - expanded_json=lambda c, **kw: ld_list.from_list( |
57 | | - ld_list(c).item_list, container=ld_list(c).container, **kw |
58 | | - ).ld_value |
59 | | - ), |
60 | | - ), |
61 | | - (lambda c: isinstance(c, list), dict(expanded_json=lambda c, **kw: ld_list.from_list(c, **kw).ld_value)), |
62 | | - (lambda v: isinstance(v, (int, float, str, bool)), dict(expanded_json=lambda v, **_: [{"@value": v}])), |
63 | | - ( |
64 | | - lambda v: isinstance(v, datetime), |
65 | | - dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:DateTime"]}]), |
66 | | - ), |
67 | | - ( |
68 | | - lambda v: isinstance(v, date), |
69 | | - dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Date"]}]), |
70 | | - ), |
71 | | - ( |
72 | | - lambda v: isinstance(v, time), |
73 | | - dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Time"]}]), |
74 | | - ), |
| 23 | + (ld_container.is_json_id, {"python": lambda c, **_: c["@id"]}), |
| 24 | + (ld_container.is_typed_json_value, {"python": lambda c, **kw: ld_container.typed_ld_to_py([c], **kw)}), |
| 25 | + (ld_container.is_json_value, {"python": lambda c, **_: c["@value"]}), |
| 26 | + (ld_list.is_container, {"ld_container": lambda c, **kw: ld_list([c], **kw)}), |
| 27 | + (ld_dict.is_json_dict, {"ld_container": lambda c, **kw: ld_dict([c], **kw)}), |
| 28 | + (lambda v: isinstance(v, str), {"python": lambda v, parent, **_: parent.ld_proc.compact_iri(parent.active_ctx, v)}), |
75 | 29 | ] |
76 | 30 |
|
77 | 31 |
|
|
0 commit comments