Skip to content

Commit

Permalink
Add subelement_text_kwarg helper function to fastkml/helpers.py
Browse files Browse the repository at this point in the history
  • Loading branch information
cleder committed Dec 19, 2023
1 parent 81c6366 commit 7a856c6
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
18 changes: 6 additions & 12 deletions fastkml/features.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
from fastkml.geometry import create_kml_geometry
from fastkml.helpers import bool_subelement
from fastkml.helpers import simple_text_subelement
from fastkml.helpers import subelement_text_kwarg
from fastkml.links import Link
from fastkml.mixins import TimeMixin
from fastkml.styles import Style
Expand Down Expand Up @@ -437,24 +438,17 @@ def _get_kwargs(
kwargs["snippet"] = Snippet( # type: ignore[unreachable]
text=snippet.text,
)
name = element.find(f"{ns}name")
if name is not None:
kwargs["name"] = name.text
description = element.find(f"{ns}description")
if description is not None:
kwargs["description"] = description.text
kwargs.update(subelement_text_kwarg(element, ns, "address", "address"))
kwargs.update(subelement_text_kwarg(element, ns, "phoneNumber", "phone_number"))
kwargs.update(subelement_text_kwarg(element, ns, "description", "description"))
kwargs.update(subelement_text_kwarg(element, ns, "name", "name"))

visibility = element.find(f"{ns}visibility")
phone_number = element.find(f"{ns}phoneNumber")
if phone_number is not None:
kwargs["phone_number"] = phone_number.text
if visibility is not None and visibility.text:
kwargs["visibility"] = visibility.text in {"1", "true"}
isopen = element.find(f"{ns}open")
if isopen is not None:
kwargs["isopen"] = isopen.text in {"1", "true"}
address = element.find(f"{ns}address")
if address is not None:
kwargs["address"] = address.text
return kwargs


Expand Down
17 changes: 17 additions & 0 deletions fastkml/helpers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"""Helper functions for fastkml."""

from typing import Dict

from fastkml import config
from fastkml.base import _BaseObject
from fastkml.types import Element
Expand Down Expand Up @@ -33,3 +35,18 @@ def bool_subelement(
f"{obj.ns}{node_name}",
)
subelement.text = str(int(getattr(obj, attr_name)))


def subelement_text_kwarg(
element: Element,
ns: str,
node_name: str,
kwarg: str,
) -> Dict[str, str]:
kwargs = {}
node = element.find(f"{ns}{node_name}")
if node is None:
return {}
if node.text and node.text.strip():
kwargs[kwarg] = node.text.strip()
return kwargs

0 comments on commit 7a856c6

Please sign in to comment.