Source code for sphinx_gherkindoc.parsers.behave

"""Helper functions for writing rST files with behave parser."""
from typing import List, Optional, Union

import behave.parser

from .base import BaseModel


[docs]class BehaveModel(BaseModel): """Custom model for Behave-parsed objects.""" @property def description(self) -> Optional[List[str]]: """Add some reasonable assumptions about line breaks into descriptions. Any line that ends in a period will have a newline added for separation. Additionally, a newline will be added after the final line. """ raw_description_lines = self._data.description processed_description_lines = [] for idx, line in enumerate(raw_description_lines, start=1): processed_description_lines.append(line) if line.endswith(".") or idx == len(raw_description_lines): processed_description_lines.append("") return processed_description_lines
[docs]class Scenario(BehaveModel): """Make Scenarios inherit the ``BehaveModel`` description property.""" pass
[docs]class Feature(BehaveModel): """Feature model for Behave.""" def __init__(self, root_path: str, source_path: str): self._data = behave.parser.parse_file(source_path) @property def scenarios(self) -> List[Scenario]: """Wrap Behave Scenarios to include description processing.""" return [Scenario(s) for s in self._data.scenarios] @property def examples(self) -> Union[behave.model.Examples, List]: """Supports dummy feature-level examples.""" return []