text_opt :: [T.Text] -> (T.Text->a,a->T.Text) -> a -> OptEnum -> Opt a
text_opt hp (inj,prj) x0 ce =
    Opt
        { opt_enum    = ce
        , opt_default = x0
        , opt_from    = frm
        , opt_to      = String . prj
        , opt_help    = Help hp "<string>"
        }
  where
    frm v =
        case v of
          String t -> inj t
          _        -> x0
text_opt :: [T.Text] -> (T.Text->a,a->T.Text) -> a -> OptEnum -> Opt a
text_opt hp (inj,prj) x0 ce =
    Opt
        { opt_enum    = ce
        , opt_default = x0
        , opt_from    = frm
        , opt_to      = String . prj
        , opt_help    = Help hp "<string>"
        }
  where
    frm v =
        case v of
          String t -> inj t
          _        -> x0
text_opt hp (inj,prj) x0 ce =
    Opt
        { opt_enum    = ce
        , opt_default = x0
        , opt_from    = frm
        , opt_to      = String . prj
        , opt_help    = Help hp "<string>"
        }
  where
    frm v =
        case v of
          String t -> inj t
          _        -> x0