configuration (empty) → 0.1
raw patch · 4 files changed
+123/−0 lines, 4 filesdep +basedep +containerssetup-changed
Dependencies added: base, containers
Files
- Data/Configuration.hs +32/−0
- LICENSE +30/−0
- Setup.hs +2/−0
- configuration.cabal +59/−0
+ Data/Configuration.hs view
@@ -0,0 +1,32 @@+{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}+module Data.Configuration ( Conf, as, valueForKey, (<@>), keys+ , (!), toConf, toDyn, toMap) where+import Data.Map hiding ((!), keys)+import qualified Data.Map as M+import Data.Dynamic+import Prelude hiding (lookup)+import Control.Applicative+import Data.Maybe+import Data.Data++newtype Conf = Conf { toMap :: Map String Dynamic } deriving (Typeable)+toConf :: [(String, Dynamic)] -> Conf+toConf = Conf . fromList++as :: a+as = undefined++keys :: Conf -> [String]+keys = M.keys . toMap++valueForKey :: Typeable a => String -> Conf -> a -> Maybe a+valueForKey key conf _ = fromDynamic =<< lookup key (toMap conf)++(!) :: Typeable a => Conf -> String -> a+conf ! key = case valueForKey key conf undefined of+ Just val -> val+ Nothing -> error $ "no such key: " ++ key++(<@>) :: Typeable a => String -> a -> (String, Dynamic)+key <@> val = (key, toDyn val)+
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c)2011, Hiromi ISHII++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Hiromi ISHII nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ configuration.cabal view
@@ -0,0 +1,59 @@+-- configuration.cabal auto-generated by cabal init. For additional+-- options, see+-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.+-- The name of the package.+Name: configuration++-- The package version. See the Haskell package versioning policy+-- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for+-- standards guiding when and how versions should be incremented.+Version: 0.1++-- A short (one-line) description of the package.+Synopsis: Simple data type for application configuration.++-- A longer description of the package.+Description: Simple data type to store Typeable values.++-- The license under which the package is released.+License: BSD3++-- The file containing the license text.+License-file: LICENSE++-- The package author(s).+Author: Hiromi ISHII++-- An email address to which users can send suggestions, bug reports,+-- and patches.+Maintainer: konn.jinro_at_gmail.com++-- A copyright notice.+Copyright: (c) Hiromi ISHII 2011++Category: Data++Build-type: Simple++-- Extra files to be distributed with the package, such as examples or+-- a README.+-- Extra-source-files: ++-- Constraint on the version of Cabal needed to build this package.+Cabal-version: >=1.2+++Library+ -- Modules exported by the library.+ Exposed-modules: Data.Configuration+ + -- Packages needed in order to build this package.+ Build-depends: base >= 4.0 && < 5+ , containers >= 0.3 && < 0.5+ + -- Modules not exported by this package.+ -- Other-modules: + + -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.+ -- Build-tools: +