packages feed

ribosome-0.9.9.9: lib/Ribosome/PluginName.hs

-- |Combinators for 'PluginName'.
module Ribosome.PluginName where

import Exon (exon)

import Ribosome.Data.PluginName (PluginName (PluginName))
import Ribosome.Host.Text (pascalCase)

-- |Get the 'PluginName' from a 'Reader'.
pluginName ::
  Member (Reader PluginName) r =>
  Sem r PluginName
pluginName =
  ask

-- |Get the 'PluginName' from a 'Reader' and prefix the given string with it, followed by a colon..
pluginNamePrefixed ::
  Member (Reader PluginName) r =>
  Text ->
  Sem r Text
pluginNamePrefixed msg = do
  PluginName name <- pluginName
  pure [exon|#{name}: #{msg}|]

-- |Get the 'PluginName' from a 'Reader' and convert it to PascalCase.
pluginNamePascalCase ::
  Member (Reader PluginName) r =>
  Sem r PluginName
pluginNamePascalCase = do
  PluginName n <- pluginName
  pure (PluginName (pascalCase n))