Что такое AttrSplices по умолчанию для Heist-0.13?

Я работаю над проектом, использующим Heist, и, поскольку он недавно обновился до версии 0.13, я попробовал его и обнаружил, что оригинальный HeistConfig сильно изменился.

data HeistConfig m = HeistConfig
    { hcInterpretedSplices :: Splices (I.Splice m)
        -- ^ Interpreted splices are the splices that Heist has always had.  They
        -- return a list of nodes and are processed at runtime.
    , hcLoadTimeSplices    :: Splices (I.Splice IO)
        -- ^ Load time splices are like interpreted splices because they return a
        -- list of nodes.  But they are like compiled splices because they are
        -- processed once at load time.  All of Heist's built-in splices should be
        -- used as load time splices.
    , hcCompiledSplices    :: Splices (C.Splice m)
        -- ^ Compiled splices return a DList of Chunks and are processed at load
        -- time to generate a runtime monad action that will be used to render the
        -- template.
    , hcAttributeSplices   :: Splices (AttrSplice m)
        -- ^ Attribute splices are bound to attribute names and return a list of
        -- attributes.
    , hcTemplateLocations  :: [TemplateLocation]
        -- ^ A list of all the locations that Heist should get its templates
    }

Так что теперь я больше не мог использовать [] в качестве Сплайсов по умолчанию, так как есть defaultInterpretedSplices и defaultLoadTimeSplices, я нахожу, что DefaultAttrSplices просто пропущен, так как же мне его определить?

1 ответ

Решение

Я думаю, что нет встроенных AttrSplices. Вы должны быть в состоянии не связывать никакие соединения, используя один из mempty, return () или же noSplices от Heist.SpliceAPI,

Splices s это псевдоним типа для SplicesM s (), который просто State завернутый в новый тип.Slices s также является экземпляром класса Monoid, так что вы можете использовать mempty здесь.

newtype SplicesM s a = SplicesM { unSplices :: State (Map Text s) a }
  deriving (Monad, MonadState (Map Text s))

type Splices s = SplicesM s ()

instance Monoid (Splices s) where
  mempty = noSplices
  mappend = unionWithS (\_ b -> b)
Другие вопросы по тегам