|
3 | 3 | # SPDX-License-Identifier: Apache-2.0 |
4 | 4 |
|
5 | 5 | # SPDX-FileContributor: Michael Meinel |
| 6 | +# SPDX-FileContributor: Michael Fritzsche |
6 | 7 |
|
7 | 8 | from datetime import date, time, datetime |
8 | 9 |
|
|
19 | 20 | lambda c: isinstance(c, ld_container), |
20 | 21 | { |
21 | 22 | "ld_container": lambda c, **_: c, |
22 | | - |
23 | 23 | "json": lambda c, **_: c.compact(), |
24 | 24 | "expanded_json": lambda c, **_: c.ld_value, |
25 | 25 | } |
26 | 26 | ), |
27 | 27 |
|
28 | | - # Wrap expanded_json to ld_container |
29 | | - (ld_container.is_ld_id, dict(python=lambda c, **_: c[0]['@id'])), |
30 | | - (ld_container.is_typed_ld_value, dict(python=ld_container.typed_ld_to_py)), |
31 | | - (ld_container.is_ld_value, dict(python=lambda c, **_: c[0]['@value'])), |
32 | | - (ld_list.is_ld_list, dict(ld_container=ld_list)), |
33 | | - (ld_dict.is_ld_dict, dict(ld_container=ld_dict)), |
34 | | - |
35 | | - # Expand and access JSON data |
36 | | - (ld_container.is_json_id, dict(python=lambda c, **_: c["@id"], expanded_json=lambda c, **_: [c])), |
37 | | - (ld_container.is_typed_json_value, dict(python=ld_container.typed_ld_to_py)), |
38 | | - (ld_container.is_json_value, dict(python=lambda c, **_: c["@value"], expanded_json=lambda c, **_: [c])), |
39 | | - (ld_list.is_container, dict(ld_container=lambda c, **kw: ld_list([c], **kw))), |
40 | | - |
41 | | - # FIXME: add conversion from list and json dict to expanded_json |
42 | | - # to parse nested dicts and lists when using for example __setitem__(key, value) from ld_dict |
43 | | - # where value is converted to expanded_json bevor adding it to data_dict |
44 | | - # Suggested: |
45 | | - # ( |
46 | | - # ld_dict.is_json_dict, |
47 | | - # { |
48 | | - # "ld_container": ld_dict.from_dict, |
49 | | - # "expanded_json": lambda c, **kw: kw["parent"]._to_expanded_json(kw["key"], ld_dict.from_dict(c, **kw)) |
50 | | - # } |
51 | | - # ), |
52 | | - # |
53 | | - # ( |
54 | | - # lambda c: isinstance(c, list), |
55 | | - # { |
56 | | - # "ld_container": ld_list.from_list, |
57 | | - # "expanded_json": lambda c, **kw: kw["parent"]._to_expanded_json(kw["key"], ld_list.from_list(c, **kw)) |
58 | | - # } |
59 | | - # ), |
60 | | - (ld_dict.is_json_dict, dict(ld_container=ld_dict.from_dict)), |
61 | | - |
62 | | - (lambda c: isinstance(c, list), dict(ld_container=ld_list.from_list)), |
63 | | - |
64 | | - # Wrap internal data types |
65 | | - (lambda v: isinstance(v, (int, float, str, bool)), dict(expanded_json=lambda v, **_: [{"@value": v}])), |
66 | | - |
67 | | - (lambda v: isinstance(v, datetime), |
68 | | - dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:DateTime"]}])), |
69 | | - (lambda v: isinstance(v, date), |
70 | | - dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Date"]}])), |
71 | | - (lambda v: isinstance(v, time), |
72 | | - dict(expanded_json=lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Time"]}])), |
| 28 | + # Wrap item from ld_dict in ld_list |
| 29 | + (ld_list.is_ld_list, {"ld_container": ld_list}), |
| 30 | + (lambda c: isinstance(c, list), {"ld_container": lambda c, **kw: ld_list(c, **kw)}), |
| 31 | + |
| 32 | + # pythonize items from lists (expanded set is already handled above) |
| 33 | + (ld_container.is_json_id, {"python": lambda c, **_: c["@id"]}), |
| 34 | + (ld_container.is_typed_json_value, {"python": lambda c, **kw: ld_container.typed_ld_to_py([c], **kw)}), |
| 35 | + (ld_container.is_json_value, {"python": lambda c, **_: c["@value"]}), |
| 36 | + (ld_list.is_container, {"ld_container": lambda c, **kw: ld_list([c], **kw)}), |
| 37 | + (ld_dict.is_json_dict, {"ld_container": lambda c, **kw: ld_dict([c], **kw)}), |
| 38 | + (lambda v: isinstance(v, str), {"python": lambda v, parent, **_: parent.ld_proc.compact_iri(parent.active_ctx, v)}), |
| 39 | + |
| 40 | + # Convert internal data types to expanded_json |
| 41 | + (ld_container.is_json_id, {"expanded_json": lambda c, **_: [c]}), |
| 42 | + (ld_container.is_ld_id, {"expanded_json": lambda c, **_: c}), |
| 43 | + (ld_container.is_json_value, {"expanded_json": lambda c, **_: [c]}), |
| 44 | + (ld_container.is_ld_value, {"expanded_json": lambda c, **_: c}), |
| 45 | + (ld_dict.is_json_dict, {"expanded_json": lambda c, **kw: ld_dict.from_dict(c, **kw).ld_value}), |
| 46 | + ( |
| 47 | + ld_list.is_container, |
| 48 | + {"expanded_json": lambda c, **kw: ld_list.from_list(ld_list.get_item_list_from_container(c), **kw).ld_value} |
| 49 | + ), |
| 50 | + ( |
| 51 | + ld_list.is_ld_list, |
| 52 | + {"expanded_json": lambda c, **kw: ld_list.from_list(ld_list.get_item_list_from_container(c[0]), **kw).ld_value} |
| 53 | + ), |
| 54 | + (lambda c: isinstance(c, list), {"expanded_json": lambda c, **kw: ld_list.from_list(c, **kw).ld_value}), |
| 55 | + (lambda v: isinstance(v, (int, float, str, bool)), {"expanded_json": lambda v, **_: [{"@value": v}]}), |
| 56 | + ( |
| 57 | + lambda v: isinstance(v, datetime), |
| 58 | + {"expanded_json": lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:DateTime"]}]} |
| 59 | + ), |
| 60 | + ( |
| 61 | + lambda v: isinstance(v, date), |
| 62 | + {"expanded_json": lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Date"]}]} |
| 63 | + ), |
| 64 | + ( |
| 65 | + lambda v: isinstance(v, time), |
| 66 | + {"expanded_json": lambda v, **_: [{"@value": v.isoformat(), "@type": iri_map["schema:Time"]}]} |
| 67 | + ), |
73 | 68 | ] |
74 | 69 |
|
75 | 70 |
|
|
0 commit comments