Revision d34c79b6

b/Makefile.am
630 630
	src/Ganeti/Hypervisor/Xen/XmParser.hs \
631 631
	src/Ganeti/Hypervisor/Xen/Types.hs \
632 632
	src/Ganeti/Hash.hs \
633
	src/Ganeti/Hs2Py/GenConstants.hs \
633 634
	src/Ganeti/Hs2Py/GenOpCodes.hs \
634 635
	src/Ganeti/Hs2Py/OpDoc.hs \
635 636
	src/Ganeti/JQueue.hs \
b/src/Ganeti/Hs2Py/GenConstants.hs
1
{-| Template Haskell code for Haskell to Python constants.
2

  
3
-}
4

  
5
{-
6

  
7
Copyright (C) 2013 Google Inc.
8

  
9
This program is free software; you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation; either version 2 of the License, or
12
(at your option) any later version.
13

  
14
This program is distributed in the hope that it will be useful, but
15
WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
General Public License for more details.
18

  
19
You should have received a copy of the GNU General Public License
20
along with this program; if not, write to the Free Software
21
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22
02110-1301, USA.
23

  
24
-}
25
{-# LANGUAGE TemplateHaskell #-}
26
module Ganeti.Hs2Py.GenConstants (genPyConstants) where
27

  
28
import Language.Haskell.TH
29

  
30
import Ganeti.THH
31

  
32
genList :: Name -> [Name] -> Q [Dec]
33
genList name consNames = do
34
  let cons = listE $ map (\n -> tupE [mkString n, mkPyValueEx n]) consNames
35
  sig <- sigD name [t| [(String, String)] |]
36
  fun <- funD name [clause [] (normalB cons) []]
37
  return [sig, fun]
38
  where mkString n = stringE (deCamelCase (nameBase n))
39
        mkPyValueEx n = [| showValue $(varE n) |]
40

  
41
genPyConstants :: String -> [Name] -> Q [Dec]
42
genPyConstants name = genList (mkName name)
b/src/Ganeti/THH.hs
32 32
module Ganeti.THH ( declareSADT
33 33
                  , declareIADT
34 34
                  , makeJSONInstance
35
                  , deCamelCase
35 36
                  , genOpID
36 37
                  , genAllConstr
37 38
                  , genAllOpIDs

Also available in: Unified diff