module DocuSign.Base.Fields
  ( removeFieldLabelPrefix
  , modifyFieldLabel
  ) where

import Control.Lens.Cons    ( _head )
import Control.Lens.Setter  ( over )
import Data.Aeson.Types     ( Options (..)
                            , defaultOptions )

import qualified Data.Char as C

removeFieldLabelPrefix :: String -> Options
removeFieldLabelPrefix p =
  modifyFieldLabel (decapitalizeInitialChar . (drop $ length p)) defaultOptions

modifyFieldLabel :: (String -> String) -> Options -> Options
modifyFieldLabel m o = o { fieldLabelModifier = m . fieldLabelModifier o }

decapitalizeInitialChar :: String -> String
decapitalizeInitialChar = (over _head) C.toLower