Source code for projectreport.analyzer.parsers.javascript

import json
import warnings
from pathlib import Path
from typing import Any, Dict, List, Optional

from cached_property import cached_property

from projectreport.analyzer.parsers.file import SingleFileParser
from projectreport.version import Version


[docs]class PackageJSONParser(SingleFileParser): @cached_property def parsed(self) -> Optional[Dict[str, Any]]: try: return json.loads(self.contents) except SyntaxError: warnings.warn(f"Could not parse {self.path} due to SyntaxError") return None @cached_property def docstring(self) -> Optional[str]: if self.parsed is None: return None return self.parsed.get("description") @cached_property def version(self) -> Optional[Version]: if self.parsed is None: return None version_str = self.parsed.get("version") if version_str is None: return None return Version.from_str(version_str) @cached_property def topics(self) -> Optional[List[str]]: if self.parsed is None: return None return self.parsed.get("keywords")
[docs] @classmethod def matches_path(cls, path: str) -> bool: return Path(path).name == "package.json"