updated doc strings
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
"""
|
||||
This module defines the NavSpec class, which represents the user's intent for
|
||||
documentation navigation as defined in a YAML specification (usually
|
||||
docforge.nav.yml).
|
||||
Navigation specification model.
|
||||
|
||||
This module defines the ``NavSpec`` class, which represents the navigation
|
||||
structure defined by the user in the doc-forge navigation specification
|
||||
(typically ``docforge.nav.yml``).
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
@@ -12,11 +14,16 @@ import yaml
|
||||
|
||||
class NavSpec:
|
||||
"""
|
||||
Parsed representation of the docforge navigation specification file.
|
||||
Parsed representation of a navigation specification.
|
||||
|
||||
A ``NavSpec`` describes the intended documentation navigation layout before
|
||||
it is resolved against the filesystem.
|
||||
|
||||
Attributes:
|
||||
home: Path to the home document (e.g., 'index.md').
|
||||
groups: Mapping of group titles to lists of path patterns/globs.
|
||||
home: Relative path to the documentation home page (for example
|
||||
``index.md``).
|
||||
groups: Mapping of navigation group titles to lists of file patterns
|
||||
or glob expressions.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
@@ -25,11 +32,12 @@ class NavSpec:
|
||||
groups: Dict[str, List[str]],
|
||||
) -> None:
|
||||
"""
|
||||
Initialize a NavSpec.
|
||||
Initialize a NavSpec instance.
|
||||
|
||||
Args:
|
||||
home: The path to the home document.
|
||||
groups: A mapping of group names to lists of path patterns (globs).
|
||||
home: Relative path to the home document.
|
||||
groups: Mapping of group names to lists of path patterns
|
||||
(glob expressions).
|
||||
"""
|
||||
self.home = home
|
||||
self.groups = groups
|
||||
@@ -37,17 +45,18 @@ class NavSpec:
|
||||
@classmethod
|
||||
def load(cls, path: Path) -> "NavSpec":
|
||||
"""
|
||||
Load a NavSpec from a YAML file.
|
||||
Load a navigation specification from a YAML file.
|
||||
|
||||
Args:
|
||||
path: The filesystem path to the YAML file.
|
||||
path: Filesystem path to the navigation specification file.
|
||||
|
||||
Returns:
|
||||
A NavSpec instance.
|
||||
A ``NavSpec`` instance representing the parsed configuration.
|
||||
|
||||
Raises:
|
||||
FileNotFoundError: If the path does not exist.
|
||||
ValueError: If the file content is not a valid NavSpec mapping.
|
||||
FileNotFoundError: If the specified file does not exist.
|
||||
ValueError: If the file contents are not a valid navigation
|
||||
specification.
|
||||
"""
|
||||
if not path.exists():
|
||||
raise FileNotFoundError(path)
|
||||
@@ -78,33 +87,45 @@ class NavSpec:
|
||||
|
||||
def all_patterns(self) -> List[str]:
|
||||
"""
|
||||
Get all path patterns referenced in the specification.
|
||||
Return all path patterns referenced by the specification.
|
||||
|
||||
Returns:
|
||||
A list of all patterns (home plus all groups).
|
||||
A list containing the home document (if defined) and all
|
||||
group pattern entries.
|
||||
"""
|
||||
patterns: List[str] = []
|
||||
|
||||
if self.home:
|
||||
patterns.append(self.home)
|
||||
|
||||
for items in self.groups.values():
|
||||
patterns.extend(items)
|
||||
|
||||
return patterns
|
||||
|
||||
|
||||
def load_nav_spec(path: Path) -> NavSpec:
|
||||
"""
|
||||
Utility function to load a NavSpec from a file.
|
||||
Load a navigation specification file.
|
||||
|
||||
This helper function reads a YAML navigation file and constructs a
|
||||
corresponding ``NavSpec`` instance.
|
||||
|
||||
Args:
|
||||
path: Path to the navigation specification file.
|
||||
|
||||
Returns:
|
||||
A loaded NavSpec instance.
|
||||
A ``NavSpec`` instance representing the parsed specification.
|
||||
|
||||
Raises:
|
||||
FileNotFoundError: If the specification file does not exist.
|
||||
ValueError: If the YAML structure is invalid.
|
||||
"""
|
||||
if not path.exists():
|
||||
raise FileNotFoundError(path)
|
||||
|
||||
data = yaml.safe_load(path.read_text(encoding="utf-8"))
|
||||
|
||||
if not isinstance(data, dict):
|
||||
raise ValueError("Nav spec must be a YAML mapping")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user