module HsDev.Symbols.Class ( Sourced(..), sourcedModuleName, module HsDev.Symbols.Location ) where import Control.Lens (Lens', Traversal') import Data.Text (Text) import HsDev.Symbols.Location class Sourced a where sourcedName :: Lens' a Text sourcedDocs :: Traversal' a Text sourcedModule :: Lens' a ModuleId sourcedLocation :: Traversal' a Position sourcedDocs _ = pure sourcedLocation _ = pure instance Sourced ModuleId where sourcedName = moduleName sourcedModule = id instance Sourced SymbolId where sourcedName = symbolName sourcedModule = symbolModule sourcedModuleName :: Sourced a => Lens' a Text sourcedModuleName = sourcedModule . sourcedName