packages feed

caml-parser-0.1.0.0: src/CamlParser/Plugin/Registry.hs

module CamlParser.Plugin.Registry where

import Data.Map (Map)
import qualified Data.Map as Map
import CamlParser.Lexer.Token
import CamlParser.Plugin.Interface

newtype PluginRegistry = PluginRegistry
  { registryPlugins :: [CamlParserPlugin]
  }

emptyRegistry :: PluginRegistry
emptyRegistry = PluginRegistry []

registerPlugin :: CamlParserPlugin -> PluginRegistry -> PluginRegistry
registerPlugin p (PluginRegistry ps) = PluginRegistry (p : ps)

registryKeywords :: PluginRegistry -> Map String Token
registryKeywords (PluginRegistry ps) = Map.unions (map pluginKeywords ps)