{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE TemplateHaskell #-} module Plots.Name where -- import Control.Lens -- -- import Data.Map (Map) -- import Data.Ord (comparing) -- import Data.Function -- import Data.Typeable -- import Diagrams.Types.Names -- import Diagrams.Prelude hiding (view) -- data PlotName = PlotName -- { _plotName :: String -- , _namedSize2D :: SizeSpec V2 Double -- , _namedT2 :: T2 Double -- } deriving Typeable -- makeLenses ''PlotName -- instance Show PlotName where -- show pn = "Plot: " ++ view plotName pn -- -- equating :: Eq b => (a -> b) -> a -> a -> Bool -- -- equating = on (==) -- instance Eq PlotName where -- (==) = on (==) (view plotName) -- instance Ord PlotName where -- compare = comparing (view plotName) -- instance IsName PlotName -- -- _AName :: IsName a => Prism' AName a -- -- _AName = prism' AName (\(AName a) -> cast a) -- -- _Names :: IsName a => Traversal' Name a -- -- _Names = _Wrapped' . traverse . _AName -- -- _NamedString :: Traversal' Name String -- -- _NamedString = _Names -- -- _NamedPlot :: Typeable n => Traversal' Name (PlotName n) -- -- _NamedPlot = _Names -- -- diaNames :: OrderedField n => QDiagram b V2 n Any -> Map Name [P2 n] -- -- diaNames = over (mapped . traversed) location . view (subMap . _Wrapped')