she 0.2 → 0.3
raw patch · 3 files changed
+12/−4 lines, 3 files
Files
- she.cabal +1/−1
- src/HaLay.lhs +8/−1
- src/Superclass.lhs +3/−2
she.cabal view
@@ -1,5 +1,5 @@ name: she-version: 0.2+version: 0.3 homepage: http://personal.cis.strath.ac.uk/~conor/pub/she synopsis: A Haskell preprocessor adding miscellaneous features description:
src/HaLay.lhs view
@@ -251,9 +251,15 @@ > tender (L _ _ ) = True > tender t = elem t [Semi, Sym "=", Sym ",", Sym "|", KW "in", KW "deriving"] +> tender' :: Tok -> Bool -- class and instance headers ended by where or eol+> tender' (L _ _ ) = True+> tender' _ = False+ > exTyMu :: [Tok] -> Maybe [Tok] > exTyMu (t : ts)-> | elem t [Sym "::", KW "class", KW "instance"]+> | elem t [KW "class", KW "instance"]+> = Just $ t : u' : munge exTyMu vs'+> | elem t [Sym "::"] > = Just $ t : u : munge exTyMu vs > | elem t [KW "data", KW "newtype"] > = Just $ case vs of@@ -265,6 +271,7 @@ > _ -> t : u : munge exTyMu vs > where > (u, vs) = first (T Ty . munge tyMu) (span (not . tender) ts)+> (u', vs') = first (T Ty . munge tyMu) (span (not . tender') ts) > exTyMu _ = Nothing > oldStyle :: [Tok] -> [Tok]
src/Superclass.lhs view
@@ -101,14 +101,15 @@ > [NL ("Dunno.lhs", 0)]]) > , [KW "class" : T Ty h : L "where" residue : rest]) > where-> pHdr = (,,) <$> pCxt <* spc <*> uid <*> some (spc *> lid) <* spc+> pHdr = (,,) <$> pCxt <* spc <*> uid <*> some (spc *> lid) <* pRest > pCxt = some (tok (/= Sym "=>")) <* teq (Sym "=>") > <|> [] <$ spc > nl = nool tss > nool [] = [] > nool (t : _) | isNool t = t > nool (_ : tss) = nool tss-> (filtrate, residue) = partition isInstance tss+> filtrate = filter (\ ts -> isNool ts || isInstance ts) tss+> residue = filter (not . isInstance) tss > stuff = residue >>= declares > dstuff = intercalate [Sym ",", Spc " "] (map (return . Lid) stuff) > isInstance (KW "instance" : _) = True