Source code for aeolus.util.text

"""Text-related formatting functions."""
import itertools
import string

from LatLon23 import Latitude, Longitude

from ..exceptions import ArgumentError


__all__ = ("fmt_lonlat", "subplot_label_generator")


[docs]def fmt_lonlat(value, lon_or_lat, degree=False): r""" Convert longitude or latitude value to string with a hemisphere identifier. Parameters ---------- value: int Value of longitude or latitude. Note that this function is only for integer values. lon_or_lat: str Longitude or latitude degree: bool, optional If true, a TeX degree symbol is included Returns ------- str Examples -------- >>> fmt_lonlat(-25, "lon") '25W' >>> fmt_lonlat(89, "lat", degree=True) '89$^\\degree$N' >>> fmt_lonlat(0, "lon") '0' """ if lon_or_lat.lower().startswith("lat"): res = Latitude(value) elif lon_or_lat.lower().startswith("lon"): res = Longitude(value) else: raise ArgumentError("2nd arg or the function should start with `lon` or `lat`") out = res.to_string("%d%H") if degree: out = out[:-1] + r"$^\degree$" + out[-1] if value == 0: out = out[:-1] return out
def subplot_label_generator(): """Return generator of alphabetic labelling of subplots.""" for i in itertools.count(1): for p in itertools.product(string.ascii_lowercase, repeat=i): yield "".join(p)