module Codec.Xlsx.Lens ( ixSheet , atSheet , ixCell , atCell , cellValueAt ) where import Codec.Xlsx.Types import Control.Applicative import Control.Lens import Data.Text ixSheet :: Applicative f => Text -> (Worksheet -> f Worksheet) -> Xlsx -> f Xlsx ixSheet s = xlSheets . ix s atSheet :: Functor f => Text -> (Maybe Worksheet -> f (Maybe Worksheet)) -> Xlsx -> f Xlsx atSheet s = xlSheets . at s ixCell :: Applicative f => (Int, Int) -> (Cell -> f Cell) -> Worksheet -> f Worksheet ixCell i = wsCells . ix i atCell :: Functor f => (Int, Int) -> (Maybe Cell -> f (Maybe Cell)) -> Worksheet -> f Worksheet atCell i = wsCells . at i cellValueAt :: Functor f => (Int, Int) -> (Maybe CellValue -> f (Maybe CellValue)) -> Worksheet -> f Worksheet cellValueAt i = atCell i . non def . cellValue