pseudomacros (empty) → 0.0.1
raw patch · 4 files changed
+124/−0 lines, 4 filesdep +basedep +old-localedep +template-haskellsetup-changed
Dependencies added: base, old-locale, template-haskell, time
Files
- LICENSE +26/−0
- PseudoMacros.hs +72/−0
- Setup.lhs +4/−0
- pseudomacros.cabal +22/−0
+ LICENSE view
@@ -0,0 +1,26 @@+Copyright (c) 2013 Lukas Mai++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 the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY LUKAS MAI 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 REGENTS 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.
+ PseudoMacros.hs view
@@ -0,0 +1,72 @@+{-++Copyright (c) 2013 Lukas Mai++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 the author nor the names of his contributors+ may be used to endorse or promote products derived from this software+ without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY LUKAS MAI 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 REGENTS 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.++-}++-- | The pseudo-macros in this module are meant to be used via Template+-- Haskell (see <http://www.haskell.org/ghc/docs/latest/html/users_guide/template-haskell.html> for more information).+-- +-- Example:+--+-- > {-# LANGUAGE TemplateHaskell #-}+-- > import PseudoMacros+-- >+-- > main :: IO ()+-- > main = putStrLn ("Hello from " ++ $__FILE__ ++ ", line " ++ show $__LINE__ ++ "!")+--+-- That is, enable the @TemplateHaskell@ extension and put a @$@ before each+-- pseudo-macro.+module PseudoMacros (+ __FILE__,+ __LINE__,+ __MODULE__,+ __PACKAGE__,+ __DATE__,+ __TIME__+) where++import Language.Haskell.TH.Syntax+import Data.Time (formatTime, getZonedTime)+import System.Locale (defaultTimeLocale)++__FILE__, __LINE__ , __MODULE__, __PACKAGE__ :: Q Exp+__FILE__ = lift . loc_filename =<< location+-- ^ A string containing the current file name.+__LINE__ = lift . fst . loc_start =<< location+-- ^ An integer containing the current line number.+__MODULE__ = lift . loc_module =<< location+-- ^ A string containing the current module name.+__PACKAGE__ = lift . loc_package =<< location+-- ^ A string containing the current package name.++__DATE__, __TIME__ :: Q Exp+__DATE__ = lift . formatTime defaultTimeLocale "%Y-%m-%d" =<< runIO getZonedTime+-- ^ A string containing the current date in the format /YYYY-MM-DD/.+__TIME__ = lift . formatTime defaultTimeLocale "%H:%M:%S" =<< runIO getZonedTime+-- ^ A string containing the current time in the format /HH:MM:SS/.
+ Setup.lhs view
@@ -0,0 +1,4 @@+#!/usr/bin/env runhaskell+> import Distribution.Simple+> main :: IO ()+> main = defaultMain
+ pseudomacros.cabal view
@@ -0,0 +1,22 @@+Name: pseudomacros+Version: 0.0.1+Cabal-Version: >= 1.6+Category: Development, Template Haskell+Synopsis: cpp-style built-in macros using Template Haskell+Description:+ This package provides Template Haskell pseudo-constants describing the time+ and place of their use, similar to @__FILE__@, @__LINE__@, @__DATE__@, etc.+ in the C preprocessor.+Build-Type: Simple+License: BSD3+License-File: LICENSE+Author: Lukas Mai+Maintainer: <l.mai@web.de>++source-repository head+ type: git+ location: https://github.com/mauke/pseudomacros++Library+ Build-Depends: base >=2 && <5, old-locale >=1, time >=1, template-haskell >=2.3+ Exposed-Modules: PseudoMacros