Source code for ufoLib2.objects.features

from __future__ import annotations

import re
from typing import TYPE_CHECKING, Type

from attrs import define

from ufoLib2.serde import serde

if TYPE_CHECKING:
    from cattrs import Converter


RE_NEWLINES = re.compile(r"\r\n|\r")


[docs] @serde @define class Features: """A data class representing UFO features. See http://unifiedfontobject.org/versions/ufo3/features.fea/. """ text: str = "" """Holds the content of the features.fea file.""" def __bool__(self) -> bool: return bool(self.text) def __str__(self) -> str: return self.text
[docs] def normalize_newlines(self) -> Features: """Normalize CRLF and CR newlines to just LF.""" self.text = RE_NEWLINES.sub("\n", self.text) return self
def _unstructure(self, converter: Converter) -> str: del converter # unused return self.text @staticmethod def _structure(data: str, cls: Type[Features], converter: Converter) -> Features: del converter # unused return cls(data)