packages feed

vcd 0.2.1 → 0.2.2

raw patch · 6 files changed

+66/−21 lines, 6 filesdep −improvedep ~polyparsesetup-changed

Dependencies removed: improve

Dependency ranges changed: polyparse

Files

Data/VCD.hs view
@@ -22,10 +22,11 @@ import Data.Int import Data.IORef import Data.Word-import Language.ImProve.Tree import System.IO import Text.ParserCombinators.Poly.Lazy import Text.Printf++import Data.VCD.Tree  -- | The VCDHandle keeps track of generation state and the output handle. data VCDHandle = VCDHandle
+ Data/VCD/Tree.hs view
@@ -0,0 +1,46 @@+-- | Building hierarchy from unstructured hierarchical paths.+module Data.VCD.Tree+  ( Tree (..)+  , tree+  ) where++import Data.Function+import Data.List++data Tree a b+  = Branch a [Tree a b]+  | Leaf   a b++tree :: (Eq a, Ord a) => (b -> [a]) -> [b] -> [Tree a b]+tree path leaves = foldl mergeTrees [] [ singleTree (path leaf) leaf | leaf <- leaves ]++label :: Tree a b -> a+label (Branch a _) = a+label (Leaf   a _) = a++isBranch :: Tree a b -> Bool+isBranch (Branch _ _) = True+isBranch _ = False++singleTree :: [a] -> b -> Tree a b+singleTree [] _ = undefined+singleTree [a] b = Leaf a b+singleTree (a:b) c = Branch a [singleTree b c]++mergeTrees :: (Eq a, Ord a) => [Tree a b] -> Tree a b -> [Tree a b]+mergeTrees trees t@(Leaf _ _) = insertTree t trees+mergeTrees trees t@(Branch n branches) = case find' (\ t -> isBranch t && label t == n) trees of+    Nothing -> insertTree t trees+    Just (Branch n trees1, trees2) -> insertTree (Branch n (foldl mergeTrees trees1 branches)) trees2+    Just (Leaf _ _, _) -> undefined++insertTree :: Ord a => Tree a b -> [Tree a b] -> [Tree a b]+insertTree a b = insertBy (compare `on` label) a b++find' :: (a -> Bool) -> [a] -> Maybe (a, [a])+find' _ [] = Nothing+find' f (a:b) | f a = Just (a, b)+              | otherwise = do+  (found, rest) <- find' f b+  return (found, a : rest)+
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) Tom Hawkins 2010+Copyright (c) Tom Hawkins 2010 - 2012  All rights reserved. 
+ Setup.hs view
@@ -0,0 +1,6 @@+module Main (main) where++import Distribution.Simple (defaultMain)++main :: IO ()+main = defaultMain
− Setup.lhs
@@ -1,8 +0,0 @@-#! /usr/bin/env runhaskell--> module Main (main) where->-> import Distribution.Simple (defaultMain)->-> main :: IO ()-> main = defaultMain
vcd.cabal view
@@ -1,5 +1,5 @@ name:    vcd-version: 0.2.1+version: 0.2.2  category: Data, Hardware, Embedded @@ -18,20 +18,20 @@ homepage: http://tomahawkins.org  build-type:    Simple-cabal-version: >= 1.6+cabal-version: >= 1.8  library-    build-depends:-        base       >= 4.0   && < 5.0,-        polyparse  >= 1.4   && < 1.6,-        improve    >= 0.1.0 && < 0.2+  build-depends:+   base       >= 4.0 && < 5.0,+   polyparse  >= 1.4 && < 2.0 -    exposed-modules:-        Data.VCD+  exposed-modules:+    Data.VCD+    Data.VCD.Tree -    ghc-options:       -W+  ghc-options: -W  source-repository head-    type:     git-    location: git://github.com/tomahawkins/vcd.git+  type:     git+  location: git://github.com/tomahawkins/vcd.git