Skip to content

Header

Header

Bases: BaseModel

Header Task file class

Source code in src/task2md/template/header.py
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class Header(BaseModel):
    """Header Task file class"""

    PATTERN: ClassVar[str] = r"@([\w-]+): (.*)"

    description: str = "-"
    tags: list[str] = []
    authors: list[str] = []
    file_raw: str = ""
    file_ui: str = ""
    home: str = ""
    links: list[str] = []
    license: str = ""
    status: str = ""
    deprecated_tasks: list[str] = []

    def parse(self, header_lines: list[str]) -> None:
        """Parse the header comment of a Task file

        Args:
            header_lines (List[str]): List of header lines
        """
        for line in header_lines:
            match = re.search(Header.PATTERN, line)
            if match:
                label, value = match.groups()
                match label.strip():
                    case "description":
                        self.description = value.strip()
                    case "tags":
                        self.tags = Header.string2list(value)
                    case "authors":
                        self.authors = Header.string2list(value)
                    case "file-raw":
                        self.file_raw = value.strip()
                    case "file-ui":
                        self.file_ui = value.strip()
                    case "home":
                        self.home = value.strip()
                    case "links":
                        self.links = Header.string2list(value)
                    case "license":
                        self.license = value.strip()
                    case "status":
                        self.status = value.strip()
                    case "deprecated-tasks":
                        self.deprecated_tasks = Header.string2list(value)

    @classmethod
    def string2list(cls, value: str) -> list[str]:
        """Split a string with comma separator

        Args:
            value (str): string to split

        Returns:
            list[str]: A list of string
        """
        return [element.strip() for element in value.split(",")]

parse(header_lines)

Parse the header comment of a Task file

Parameters:

Name Type Description Default
header_lines List[str]

List of header lines

required
Source code in src/task2md/template/header.py
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
def parse(self, header_lines: list[str]) -> None:
    """Parse the header comment of a Task file

    Args:
        header_lines (List[str]): List of header lines
    """
    for line in header_lines:
        match = re.search(Header.PATTERN, line)
        if match:
            label, value = match.groups()
            match label.strip():
                case "description":
                    self.description = value.strip()
                case "tags":
                    self.tags = Header.string2list(value)
                case "authors":
                    self.authors = Header.string2list(value)
                case "file-raw":
                    self.file_raw = value.strip()
                case "file-ui":
                    self.file_ui = value.strip()
                case "home":
                    self.home = value.strip()
                case "links":
                    self.links = Header.string2list(value)
                case "license":
                    self.license = value.strip()
                case "status":
                    self.status = value.strip()
                case "deprecated-tasks":
                    self.deprecated_tasks = Header.string2list(value)

string2list(value) classmethod

Split a string with comma separator

Parameters:

Name Type Description Default
value str

string to split

required

Returns:

Type Description
list[str]

list[str]: A list of string

Source code in src/task2md/template/header.py
55
56
57
58
59
60
61
62
63
64
65
@classmethod
def string2list(cls, value: str) -> list[str]:
    """Split a string with comma separator

    Args:
        value (str): string to split

    Returns:
        list[str]: A list of string
    """
    return [element.strip() for element in value.split(",")]