Revision d8cb8e13
b/htools/Ganeti/THH.hs | ||
---|---|---|
131 | 131 |
fieldVariable f = |
132 | 132 |
case (fieldConstr f) of |
133 | 133 |
Just name -> ensureLower name |
134 |
_ -> fieldName f |
|
134 |
_ -> map (\c -> if c == '-' then '_' else c) $ fieldName f
|
|
135 | 135 |
|
136 | 136 |
actualFieldType :: Field -> Q Type |
137 | 137 |
actualFieldType f | fieldIsContainer f = [t| Container $t |] |
... | ... | |
390 | 390 |
-- | Transform an underscore_name into a CamelCase one. |
391 | 391 |
camelCase :: String -> String |
392 | 392 |
camelCase = concatMap (ensureUpper . drop 1) . |
393 |
groupBy (\_ b -> b /= '_') . ('_':) |
|
393 |
groupBy (\_ b -> b /= '_' && b /= '-') . ('_':)
|
|
394 | 394 |
|
395 | 395 |
-- | Computes the name of a given constructor. |
396 | 396 |
constructorName :: Con -> Q Name |
... | ... | |
463 | 463 |
-> Q Clause -- ^ Resulting clause |
464 | 464 |
saveConstructor sname fields = do |
465 | 465 |
let cname = mkName sname |
466 |
let fnames = map (mkName . fieldVariable) fields
|
|
466 |
fnames <- mapM (newName . fieldVariable) fields
|
|
467 | 467 |
let pat = conP cname (map varP fnames) |
468 | 468 |
let felems = map (uncurry saveObjectField) (zip fnames fields) |
469 | 469 |
-- now build the OP_ID serialisation |
... | ... | |
620 | 620 |
-> String -> [Field] -> Q [Dec] |
621 | 621 |
genSaveObject save_fn sname fields = do |
622 | 622 |
let name = mkName sname |
623 |
let fnames = map (mkName . fieldVariable) fields
|
|
623 |
fnames <- mapM (newName . fieldVariable) fields
|
|
624 | 624 |
let pat = conP name (map varP fnames) |
625 | 625 |
let tdname = mkName ("toDict" ++ sname) |
626 | 626 |
tdsigt <- [t| $(conT name) -> [(String, JSON.JSValue)] |] |
... | ... | |
680 | 680 |
loadObjectField :: Field -> Q (Name, Stmt) |
681 | 681 |
loadObjectField field = do |
682 | 682 |
let name = fieldVariable field |
683 |
fvar = mkName name
|
|
683 |
fvar <- newName name
|
|
684 | 684 |
-- these are used in all patterns below |
685 | 685 |
let objvar = varNameE "o" |
686 | 686 |
objfield = stringE (fieldName field) |
... | ... | |
772 | 772 |
loadPParamField field = do |
773 | 773 |
checkNonOptDef field |
774 | 774 |
let name = fieldName field |
775 |
fvar = mkName name
|
|
775 |
fvar <- newName name
|
|
776 | 776 |
-- these are used in all patterns below |
777 | 777 |
let objvar = varNameE "o" |
778 | 778 |
objfield = stringE name |
Also available in: Unified diff