Coverage for src/castep_linter/fortran/identifier.py: 100%
20 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-23 18:07 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-23 18:07 +0000
1"""Fortran identifier Class Module"""
2from castep_linter.fortran.fortran_node import FortranNode
5class Identifier:
6 """Represents a type insensitive identifier in Fortran"""
8 def __init__(self, name: str):
9 self.lower_name = name.lower()
11 @classmethod
12 def from_node(cls, node: FortranNode) -> "Identifier":
13 """Create an identifier directly from a node"""
14 return Identifier(node.raw)
16 def __repr__(self):
17 return self.lower_name
19 def __hash__(self):
20 return hash(self.lower_name)
22 def __eq__(self, other):
23 if other is None:
24 return False
25 if isinstance(other, str):
26 return self.lower_name == other.lower()
27 if isinstance(other, Identifier):
28 return self.lower_name == other.lower_name.lower()
29 err = "Can only compare identifiers with other identifiers"
30 raise TypeError(err)