ron-hs-0.4.0: src/Data/Ron.hs
-- | Most common ron definitions are collected in this module
--
-- == Quick start
--
-- 1. Define a datatype which supports Ron serialization:
--
-- @
-- data MyType
-- = Cons1
-- { _mtBool :: !Bool
-- , _mtList :: ![Text]
-- , _mtOtherValue :: !OtherType
-- }
-- | Cons2 Text Int
-- deriving (Generic)
-- deriving ('ToRon', 'FromRon')
-- via 'RonWith' '['FieldsDropPrefix'] MyType
-- @
--
-- For more options, see "Data.Ron.Class".
--
-- You will need to set @DerivingStrategies, DerivingVia, DeriveGeneric,
-- DataKinds@ for this to compile.
--
-- 2. Read a value of this type from a file with 'decodeFile':
--
-- @
-- myValue <- 'decodeFile' "path\/to\/file"
-- useMyValue myValue
-- @
--
-- 3. Write your value to a file with 'encodeFile'
--
-- @
-- 'encodeFile' 'haskellStyle' "path\/to\/file" myValue
-- @
--
-- For a type defined above, you can expect the serialized form to look like this:
--
-- @
-- Cons1
-- ( bool: false
-- , list:
-- [ "list"
-- , "of"
-- , "strings"
-- ]
-- , otherValue: OtherType (/* something here */)
-- )
-- @
module Data.Ron
( -- * Serialize and deserialize
encode, encodeFile
, decode, decodeLazy, decodeFile
-- ** Style options
, haskellStyle, rustStyle, compactStyle
-- * Ron class and deriving
, ToRon (..), FromRon (..)
, RonWith (..)
-- ** Settings for deriving
, UseStrict
, EncodeWith
, DecodeWith
, ConvertWith
, FieldsToSnakeCase
, FieldsDropPrefix
, ImplicitSome
, NoImplicitSome
, SkipSingleConstructor
, NoSkipSingleConstructor
) where
import Data.Ron.Class
import Data.Ron.Class.Deriving
import Data.Ron.Serialize
import Data.Ron.Deserialize