graphviz 2999.0.0.0 → 2999.1.0.0
raw patch · 3 files changed
+349/−191 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.GraphViz.Attributes: EdgeHref :: URL -> Attribute
- Data.GraphViz.Attributes: HeadHref :: URL -> Attribute
- Data.GraphViz.Attributes: Href :: URL -> Attribute
- Data.GraphViz.Attributes: LabelHref :: URL -> Attribute
- Data.GraphViz.Attributes: TailHref :: URL -> Attribute
- Data.GraphViz.ParserCombinators: instance (Parseable a, Parseable b) => Parseable (Either a b)
+ Data.GraphViz.Attributes: CompoundEdge :: EdgeType
+ Data.GraphViz.Attributes: CompressOverlap :: Overlap
+ Data.GraphViz.Attributes: DEBool :: Bool -> DEConstraints
+ Data.GraphViz.Attributes: DVal :: Double -> DPoint
+ Data.GraphViz.Attributes: DoPack :: Pack
+ Data.GraphViz.Attributes: DontPack :: Pack
+ Data.GraphViz.Attributes: Hier :: DEConstraints
+ Data.GraphViz.Attributes: IpsepOverlap :: Overlap
+ Data.GraphViz.Attributes: IsCentral :: Root
+ Data.GraphViz.Attributes: KeepOverlaps :: Overlap
+ Data.GraphViz.Attributes: LineEdges :: EdgeType
+ Data.GraphViz.Attributes: NoEdges :: EdgeType
+ Data.GraphViz.Attributes: NodeFocus :: String -> FocusType
+ Data.GraphViz.Attributes: NotCentral :: Root
+ Data.GraphViz.Attributes: PVal :: Point -> DPoint
+ Data.GraphViz.Attributes: PackMargin :: Int -> Pack
+ Data.GraphViz.Attributes: PointPos :: Point -> Pos
+ Data.GraphViz.Attributes: PolyLine :: EdgeType
+ Data.GraphViz.Attributes: PrismOverlap :: (Maybe Int) -> Overlap
+ Data.GraphViz.Attributes: RemoveOverlaps :: Overlap
+ Data.GraphViz.Attributes: ScaleOverlaps :: Overlap
+ Data.GraphViz.Attributes: ScaleXYOverlaps :: Overlap
+ Data.GraphViz.Attributes: SplineEdges :: EdgeType
+ Data.GraphViz.Attributes: SplinePos :: [Spline] -> Pos
+ Data.GraphViz.Attributes: StrLabel :: String -> Label
+ Data.GraphViz.Attributes: URLLabel :: URL -> Label
+ Data.GraphViz.Attributes: VpscOverlap :: Overlap
+ Data.GraphViz.Attributes: bool :: a -> a -> Bool -> a
+ Data.GraphViz.Attributes: data DEConstraints
+ Data.GraphViz.Attributes: data DPoint
+ Data.GraphViz.Attributes: data EdgeType
+ Data.GraphViz.Attributes: data Label
+ Data.GraphViz.Attributes: data Overlap
+ Data.GraphViz.Attributes: data Pack
+ Data.GraphViz.Attributes: data Pos
+ Data.GraphViz.Attributes: data Root
+ Data.GraphViz.Attributes: instance Eq DEConstraints
+ Data.GraphViz.Attributes: instance Eq DPoint
+ Data.GraphViz.Attributes: instance Eq EdgeType
+ Data.GraphViz.Attributes: instance Eq Label
+ Data.GraphViz.Attributes: instance Eq Overlap
+ Data.GraphViz.Attributes: instance Eq Pack
+ Data.GraphViz.Attributes: instance Eq Pos
+ Data.GraphViz.Attributes: instance Eq Root
+ Data.GraphViz.Attributes: instance Parseable DEConstraints
+ Data.GraphViz.Attributes: instance Parseable DPoint
+ Data.GraphViz.Attributes: instance Parseable EdgeType
+ Data.GraphViz.Attributes: instance Parseable Label
+ Data.GraphViz.Attributes: instance Parseable Overlap
+ Data.GraphViz.Attributes: instance Parseable Pack
+ Data.GraphViz.Attributes: instance Parseable Pos
+ Data.GraphViz.Attributes: instance Parseable Root
+ Data.GraphViz.Attributes: instance Read DEConstraints
+ Data.GraphViz.Attributes: instance Read DPoint
+ Data.GraphViz.Attributes: instance Read EdgeType
+ Data.GraphViz.Attributes: instance Read Label
+ Data.GraphViz.Attributes: instance Read Overlap
+ Data.GraphViz.Attributes: instance Read Pack
+ Data.GraphViz.Attributes: instance Read Pos
+ Data.GraphViz.Attributes: instance Read Root
+ Data.GraphViz.Attributes: instance Show DEConstraints
+ Data.GraphViz.Attributes: instance Show DPoint
+ Data.GraphViz.Attributes: instance Show EdgeType
+ Data.GraphViz.Attributes: instance Show Label
+ Data.GraphViz.Attributes: instance Show Overlap
+ Data.GraphViz.Attributes: instance Show Pack
+ Data.GraphViz.Attributes: instance Show Pos
+ Data.GraphViz.Attributes: instance Show Root
+ Data.GraphViz.ParserCombinators: parseFieldDef :: (Parseable a) => a -> String -> Parse a
- Data.GraphViz.Attributes: Color :: (Either Color [Color]) -> Attribute
+ Data.GraphViz.Attributes: Color :: Color -> Attribute
- Data.GraphViz.Attributes: DirEdgeConstraints :: (Either String Bool) -> Attribute
+ Data.GraphViz.Attributes: DirEdgeConstraints :: DEConstraints -> Attribute
- Data.GraphViz.Attributes: ESep :: (Either Double Point) -> Attribute
+ Data.GraphViz.Attributes: ESep :: DPoint -> Attribute
- Data.GraphViz.Attributes: HeadLabel :: (Either String URL) -> Attribute
+ Data.GraphViz.Attributes: HeadLabel :: Label -> Attribute
- Data.GraphViz.Attributes: ID :: (Either String URL) -> Attribute
+ Data.GraphViz.Attributes: ID :: Label -> Attribute
- Data.GraphViz.Attributes: Label :: (Either String URL) -> Attribute
+ Data.GraphViz.Attributes: Label :: Label -> Attribute
- Data.GraphViz.Attributes: Margin :: (Either Double Point) -> Attribute
+ Data.GraphViz.Attributes: Margin :: DPoint -> Attribute
- Data.GraphViz.Attributes: NodeName :: String -> FocusType
+ Data.GraphViz.Attributes: NodeName :: String -> Root
- Data.GraphViz.Attributes: Overlap :: (Either String Bool) -> Attribute
+ Data.GraphViz.Attributes: Overlap :: Overlap -> Attribute
- Data.GraphViz.Attributes: Pack :: (Either Bool Int) -> Attribute
+ Data.GraphViz.Attributes: Pack :: Pack -> Attribute
- Data.GraphViz.Attributes: Pad :: (Either Double Point) -> Attribute
+ Data.GraphViz.Attributes: Pad :: DPoint -> Attribute
- Data.GraphViz.Attributes: Pos :: (Either Point [Spline]) -> Attribute
+ Data.GraphViz.Attributes: Pos :: Pos -> Attribute
- Data.GraphViz.Attributes: QuadTree :: (Either QuadType Bool) -> Attribute
+ Data.GraphViz.Attributes: QuadTree :: QuadType -> Attribute
- Data.GraphViz.Attributes: Root :: (Either String Bool) -> Attribute
+ Data.GraphViz.Attributes: Root :: Root -> Attribute
- Data.GraphViz.Attributes: Sep :: (Either Double Point) -> Attribute
+ Data.GraphViz.Attributes: Sep :: DPoint -> Attribute
- Data.GraphViz.Attributes: Splines :: (Either Bool String) -> Attribute
+ Data.GraphViz.Attributes: Splines :: EdgeType -> Attribute
- Data.GraphViz.Attributes: TailLabel :: (Either String URL) -> Attribute
+ Data.GraphViz.Attributes: TailLabel :: Label -> Attribute
Files
- Data/GraphViz/Attributes.hs +338/−181
- Data/GraphViz/ParserCombinators.hs +10/−9
- graphviz.cabal +1/−1
Data/GraphViz/Attributes.hs view
@@ -57,6 +57,8 @@ particular, a lot of them are listed as having a 'String' value, when actually only certain Strings are allowed. + * Deprecated 'Overlap' algorithms are not defined.+ -} module Data.GraphViz.Attributes where@@ -96,157 +98,152 @@ the permitted values. -} data Attribute- = Damping Double -- ^ /Valid for/: G; /Default/: 0.99; /Minimum/: 0.0; /Notes/: neato only- | K Double -- ^ /Valid for/: GC; /Default/: 0.3; /Minimum/: 0; /Notes/: sfdp, fdp only- | URL URL -- ^ /Valid for/: ENGC; /Default/: \<none\>; /Notes/: svg, postscript, map only- | ArrowHead ArrowType -- ^ /Valid for/: E; /Default/: Normal- | ArrowSize Double -- ^ /Valid for/: E; /Default/: 1.0; /Minimum/: 0.0- | ArrowTail ArrowType -- ^ /Valid for/: E; /Default/: Normal- | Aspect AspectType -- ^ /Valid for/: G; /Notes/: dot only- | Bb Rect -- ^ /Valid for/: G; /Notes/: write only- | BgColor Color -- ^ /Valid for/: GC; /Default/: \<none\>- | Center Bool -- ^ /Valid for/: G; /Default/: false- | Charset String -- ^ /Valid for/: G; /Default/: \"UTF-8\"- | ClusterRank ClusterMode -- ^ /Valid for/: G; /Default/: local; /Notes/: dot only- | Color (Either Color [Color]) -- ^ /Valid for/: ENC; /Default/: black- | ColorScheme String -- ^ /Valid for/: ENCG; /Default/: \"\"- | Comment String -- ^ /Valid for/: ENG; /Default/: \"\"- | Compound Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: dot only- | Concentrate Bool -- ^ /Valid for/: G; /Default/: false- | Constraint Bool -- ^ /Valid for/: E; /Default/: true; /Notes/: dot only- | Decorate Bool -- ^ /Valid for/: E; /Default/: false- | DefaultDist Double -- ^ /Valid for/: G; /Default/: 1+(avg. len)*sqrt(|V|); /Minimum/: epsilon; /Notes/: neato only- | Dim Int -- ^ /Valid for/: G; /Default/: 2; /Minimum/: 2; /Notes/: sfdp, fdp, neato only- | Dimen Int -- ^ /Valid for/: G; /Default/: 2; /Minimum/: 2; /Notes/: sfdp, fdp, neato only- | Dir DirType -- ^ /Valid for/: E; /Default/: forward(directed)/none(undirected)- | DirEdgeConstraints (Either String Bool) -- ^ /Valid for/: G; /Default/: false; /Notes/: neato only- | Distortion Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: -100.0- | DPI Double -- ^ /Valid for/: G; /Default/: 96.0 | 0.0; /Notes/: svg, bitmap output only- | EdgeURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | EdgeHref URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | EdgeTarget String -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only- | EdgeTooltip String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only- | Epsilon Double -- ^ /Valid for/: G; /Default/: .0001 * # nodes(mode == KK) | .0001(mode == major); /Notes/: neato only- | ESep (Either Double Point) -- ^ /Valid for/: G; /Default/: +3; /Notes/: not dot- | FillColor Color -- ^ /Valid for/: NC; /Default/: lightgrey(nodes) | black(clusters)- | FixedSize Bool -- ^ /Valid for/: N; /Default/: false- | FontColor Color -- ^ /Valid for/: ENGC; /Default/: black- | FontName String -- ^ /Valid for/: ENGC; /Default/: \"Times-Roman\"- | FontNames String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: svg only- | FontPath String -- ^ /Valid for/: G; /Default/: system-dependent- | FontSize Double -- ^ /Valid for/: ENGC; /Default/: 14.0; /Minimum/: 1.0- | Group String -- ^ /Valid for/: N; /Default/: \"\"; /Notes/: dot only- | HeadURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | HeadClip Bool -- ^ /Valid for/: E; /Default/: true- | HeadHref URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | HeadLabel (Either String URL) -- ^ /Valid for/: E; /Default/: \"\"- | HeadPort PortPos -- ^ /Valid for/: E; /Default/: center- | HeadTarget QuotedString -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only- | HeadTooltip QuotedString -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only- | Height Double -- ^ /Valid for/: N; /Default/: 0.5; /Minimum/: 0.02- | Href URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, postscript, map only- | ID (Either String URL) -- ^ /Valid for/: GNE; /Default/: \"\"; /Notes/: svg, postscript, map only- | Image String -- ^ /Valid for/: N; /Default/: \"\"- | ImageScale ScaleType -- ^ /Valid for/: N; /Default/: false- | Label (Either String URL) -- ^ /Valid for/: ENGC; /Default/: \"\N\" (nodes) | \"\" (otherwise)- | LabelURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | LabelAngle Double -- ^ /Valid for/: E; /Default/: -25.0; /Minimum/: -180.0- | LabelDistance Double -- ^ /Valid for/: E; /Default/: 1.0; /Minimum/: 0.0- | LabelFloat Bool -- ^ /Valid for/: E; /Default/: false- | LabelFontColor Color -- ^ /Valid for/: E; /Default/: black- | LabelFontName String -- ^ /Valid for/: E; /Default/: \"Times-Roman\"- | LabelFontSize Double -- ^ /Valid for/: E; /Default/: 14.0; /Minimum/: 1.0- | LabelHref URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | LabelJust Justification -- ^ /Valid for/: GC; /Default/: \"c\"- | LabelLoc VerticalPlacement -- ^ /Valid for/: GCN; /Default/: \"t\"(clusters) | \"b\"(root graphs) | \"c\"(clusters)- | LabelTarget String -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only- | LabelTooltip String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only- | Landscape Bool -- ^ /Valid for/: G; /Default/: false- | Layer LayerRange -- ^ /Valid for/: EN; /Default/: \"\"- | Layers LayerList -- ^ /Valid for/: G; /Default/: \"\"- | LayerSep String -- ^ /Valid for/: G; /Default/: \" :\t\"- | Layout String -- ^ /Valid for/: G; /Default/: \"\"- | Len Double -- ^ /Valid for/: E; /Default/: 1.0(neato)/0.3(fdp); /Notes/: fdp, neato only- | Levels Int -- ^ /Valid for/: G; /Default/: MAXINT; /Minimum/: 0.0; /Notes/: sfdp only- | LevelsGap Double -- ^ /Valid for/: G; /Default/: 0.0; /Notes/: neato only- | LHead String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only- | LP Point -- ^ /Valid for/: EGC; /Notes/: write only- | LTail String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only- | Margin (Either Double Point) -- ^ /Valid for/: NG; /Default/: \<device-dependent\>- | MaxIter Int -- ^ /Valid for/: G; /Default/: 100 * # nodes(mode == KK) | 200(mode == major) | 600(fdp); /Notes/: fdp, neato only- | MCLimit Double -- ^ /Valid for/: G; /Default/: 1.0; /Notes/: dot only- | MinDist Double -- ^ /Valid for/: G; /Default/: 1.0; /Minimum/: 0.0; /Notes/: circo only- | MinLen Int -- ^ /Valid for/: E; /Default/: 1; /Minimum/: 0; /Notes/: dot only- | Mode String -- ^ /Valid for/: G; /Default/: \"major\"; /Notes/: neato only- | Model String -- ^ /Valid for/: G; /Default/: \"shortpath\"; /Notes/: neato only- | Mosek Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: neato only; requires the Mosek software- | NodeSep Double -- ^ /Valid for/: G; /Default/: 0.25; /Minimum/: 0.02; /Notes/: dot only- | NoJustify Bool -- ^ /Valid for/: GCNE; /Default/: false- | Normalize Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: not dot- | Nslimit Double -- ^ /Valid for/: G; /Notes/: dot only- | Nslimit1 Double -- ^ /Valid for/: G; /Notes/: dot only- | Ordering String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: dot only- | Orientation Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: 360.0- | OrientationGraph String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: Landscape if \"[lL]*\" and rotate not defined- | OutputOrder OutputMode -- ^ /Valid for/: G; /Default/: breadthfirst- | Overlap (Either String Bool) -- ^ /Valid for/: G; /Default/: true; /Notes/: not dot- | OverlapScaling Double -- ^ /Valid for/: G; /Default/: -4; /Minimum/: -1.0e10; /Notes/: prism only- | Pack (Either Bool Int) -- ^ /Valid for/: G; /Default/: false; /Notes/: not dot- | PackMode PackMode -- ^ /Valid for/: G; /Default/: node; /Notes/: not dot- | Pad (Either Double Point) -- ^ /Valid for/: G; /Default/: 0.0555 (4 points)- | Page Point -- ^ /Valid for/: G- | PageDir PageDir -- ^ /Valid for/: G; /Default/: BL- | PenColor Color -- ^ /Valid for/: C; /Default/: black- | PenWidth Double -- ^ /Valid for/: CNE; /Default/: 1.0; /Minimum/: 0.0- | Peripheries Int -- ^ /Valid for/: NC; /Default/: shape default(nodes) | 1(clusters); /Minimum/: 0- | Pin Bool -- ^ /Valid for/: N; /Default/: false; /Notes/: fdp, neato only- | Pos (Either Point [Spline]) -- ^ /Valid for/: EN- | QuadTree (Either QuadType Bool) -- ^ /Valid for/: G; /Default/: \"normal\"; /Notes/: sfdp only- | Quantum Double -- ^ /Valid for/: G; /Default/: 0.0; /Minimum/: 0.0- | Rank RankType -- ^ /Valid for/: S; /Notes/: dot only- | RankDir RankDir -- ^ /Valid for/: G; /Default/: TB; /Notes/: dot only- | Ranksep Double -- ^ /Valid for/: G; /Default/: 0.5(dot) | 1.0(twopi); /Minimum/: 0.02; /Notes/: twopi, dot only- | Ratio Ratios -- ^ /Valid for/: G- | Rects Rect -- ^ /Valid for/: N; /Notes/: write only- | Regular Bool -- ^ /Valid for/: N; /Default/: false- | ReMinCross Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: dot only- | RepulsiveForce Double -- ^ /Valid for/: G; /Default/: 1.0; /Minimum/: 0.0; /Notes/: sfdp only- | Resolution Double -- ^ /Valid for/: G; /Default/: 96.0 | 0.0; /Notes/: svg, bitmap output only- | Root (Either String Bool) -- ^ /Valid for/: GN; /Default/: \"\"(graphs) | false(nodes); /Notes/: circo, twopi only- | Rotate Int -- ^ /Valid for/: G; /Default/: 0- | SameHead String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only- | SameTail String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only- | SamplePoints Int -- ^ /Valid for/: N; /Default/: 8(output) | 20(overlap and image maps)- | SearchSize Int -- ^ /Valid for/: G; /Default/: 30; /Notes/: dot only- | Sep (Either Double Point) -- ^ /Valid for/: G; /Default/: +4; /Notes/: not dot- | Shape Shape -- ^ /Valid for/: N; /Default/: ellipse- | ShapeFile String -- ^ /Valid for/: N; /Default/: \"\"- | ShowBoxes Int -- ^ /Valid for/: ENG; /Default/: 0; /Minimum/: 0; /Notes/: dot only- | Sides Int -- ^ /Valid for/: N; /Default/: 4; /Minimum/: 0- | Size Point -- ^ /Valid for/: G- | Skew Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: -100.0- | Smoothing SmoothType -- ^ /Valid for/: G; /Default/: \"none\"; /Notes/: sfdp only- | SortV Int -- ^ /Valid for/: GCN; /Default/: 0; /Minimum/: 0- | Splines (Either Bool String) -- ^ /Valid for/: G- | Start StartType -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: fdp, neato only- | Style Style -- ^ /Valid for/: ENC- | StyleSheet String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: svg only- | TailURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | TailClip Bool -- ^ /Valid for/: E; /Default/: true- | TailHref URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only- | TailLabel (Either String URL) -- ^ /Valid for/: E; /Default/: \"\"- | TailPort PortPos -- ^ /Valid for/: E; /Default/: center- | TailTarget String -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only- | TailTooltip String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only- | Target String -- ^ /Valid for/: ENGC; /Default/: \<none\>; /Notes/: svg, map only- | Tooltip String -- ^ /Valid for/: NEC; /Default/: \"\"; /Notes/: svg, cmap only- | TrueColor Bool -- ^ /Valid for/: G; /Notes/: bitmap output only- | Vertices [Point] -- ^ /Valid for/: N; /Notes/: write only- | ViewPort ViewPort -- ^ /Valid for/: G; /Default/: \"\"- | VoroMargin Double -- ^ /Valid for/: G; /Default/: 0.05; /Minimum/: 0.0; /Notes/: not dot- | Weight Double -- ^ /Valid for/: E; /Default/: 1.0; /Minimum/: 0(dot) | 1(neato,fdp,sfdp)- | Width Double -- ^ /Valid for/: N; /Default/: 0.75; /Minimum/: 0.01- | Z Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: -MAXFLOAT | -1000+ = Damping Double -- ^ /Valid for/: G; /Default/: 0.99; /Minimum/: 0.0; /Notes/: neato only+ | K Double -- ^ /Valid for/: GC; /Default/: 0.3; /Minimum/: 0; /Notes/: sfdp, fdp only+ | URL URL -- ^ /Valid for/: ENGC; /Default/: \<none\>; /Notes/: svg, postscript, map only+ | ArrowHead ArrowType -- ^ /Valid for/: E; /Default/: Normal+ | ArrowSize Double -- ^ /Valid for/: E; /Default/: 1.0; /Minimum/: 0.0+ | ArrowTail ArrowType -- ^ /Valid for/: E; /Default/: Normal+ | Aspect AspectType -- ^ /Valid for/: G; /Notes/: dot only+ | Bb Rect -- ^ /Valid for/: G; /Notes/: write only+ | BgColor Color -- ^ /Valid for/: GC; /Default/: \<none\>+ | Center Bool -- ^ /Valid for/: G; /Default/: false+ | Charset String -- ^ /Valid for/: G; /Default/: \"UTF-8\"+ | ClusterRank ClusterMode -- ^ /Valid for/: G; /Default/: local; /Notes/: dot only+ | Color Color -- ^ /Valid for/: ENC; /Default/: black+ | ColorScheme String -- ^ /Valid for/: ENCG; /Default/: \"\"+ | Comment String -- ^ /Valid for/: ENG; /Default/: \"\"+ | Compound Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: dot only+ | Concentrate Bool -- ^ /Valid for/: G; /Default/: false+ | Constraint Bool -- ^ /Valid for/: E; /Default/: true; /Notes/: dot only+ | Decorate Bool -- ^ /Valid for/: E; /Default/: false+ | DefaultDist Double -- ^ /Valid for/: G; /Default/: 1+(avg. len)*sqrt(|V|); /Minimum/: epsilon; /Notes/: neato only+ | Dim Int -- ^ /Valid for/: G; /Default/: 2; /Minimum/: 2; /Notes/: sfdp, fdp, neato only+ | Dimen Int -- ^ /Valid for/: G; /Default/: 2; /Minimum/: 2; /Notes/: sfdp, fdp, neato only+ | Dir DirType -- ^ /Valid for/: E; /Default/: forward(directed)/none(undirected)+ | DirEdgeConstraints DEConstraints -- ^ /Valid for/: G; /Default/: false; /Notes/: neato only+ | Distortion Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: -100.0+ | DPI Double -- ^ /Valid for/: G; /Default/: 96.0 | 0.0; /Notes/: svg, bitmap output only+ | EdgeURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only+ | EdgeTarget String -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only+ | EdgeTooltip String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only+ | Epsilon Double -- ^ /Valid for/: G; /Default/: .0001 * # nodes(mode == KK) | .0001(mode == major); /Notes/: neato only+ | ESep DPoint -- ^ /Valid for/: G; /Default/: +3; /Notes/: not dot+ | FillColor Color -- ^ /Valid for/: NC; /Default/: lightgrey(nodes) | black(clusters)+ | FixedSize Bool -- ^ /Valid for/: N; /Default/: false+ | FontColor Color -- ^ /Valid for/: ENGC; /Default/: black+ | FontName String -- ^ /Valid for/: ENGC; /Default/: \"Times-Roman\"+ | FontNames String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: svg only+ | FontPath String -- ^ /Valid for/: G; /Default/: system-dependent+ | FontSize Double -- ^ /Valid for/: ENGC; /Default/: 14.0; /Minimum/: 1.0+ | Group String -- ^ /Valid for/: N; /Default/: \"\"; /Notes/: dot only+ | HeadURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only+ | HeadClip Bool -- ^ /Valid for/: E; /Default/: true+ | HeadLabel Label -- ^ /Valid for/: E; /Default/: \"\"+ | HeadPort PortPos -- ^ /Valid for/: E; /Default/: center+ | HeadTarget QuotedString -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only+ | HeadTooltip QuotedString -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only+ | Height Double -- ^ /Valid for/: N; /Default/: 0.5; /Minimum/: 0.02+ | ID Label -- ^ /Valid for/: GNE; /Default/: \"\"; /Notes/: svg, postscript, map only+ | Image String -- ^ /Valid for/: N; /Default/: \"\"+ | ImageScale ScaleType -- ^ /Valid for/: N; /Default/: false+ | Label Label -- ^ /Valid for/: ENGC; /Default/: \"\N\" (nodes) Nothing | \"\" (otherwise) Nothing+ | LabelURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only+ | LabelAngle Double -- ^ /Valid for/: E; /Default/: -25.0; /Minimum/: -180.0+ | LabelDistance Double -- ^ /Valid for/: E; /Default/: 1.0; /Minimum/: 0.0+ | LabelFloat Bool -- ^ /Valid for/: E; /Default/: false+ | LabelFontColor Color -- ^ /Valid for/: E; /Default/: black+ | LabelFontName String -- ^ /Valid for/: E; /Default/: \"Times-Roman\"+ | LabelFontSize Double -- ^ /Valid for/: E; /Default/: 14.0; /Minimum/: 1.0+ | LabelJust Justification -- ^ /Valid for/: GC; /Default/: \"c\"+ | LabelLoc VerticalPlacement -- ^ /Valid for/: GCN; /Default/: \"t\"(clusters) | \"b\"(root graphs) | \"c\"(clusters)+ | LabelTarget String -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only+ | LabelTooltip String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only+ | Landscape Bool -- ^ /Valid for/: G; /Default/: false+ | Layer LayerRange -- ^ /Valid for/: EN; /Default/: \"\"+ | Layers LayerList -- ^ /Valid for/: G; /Default/: \"\"+ | LayerSep String -- ^ /Valid for/: G; /Default/: \" :\t\"+ | Layout String -- ^ /Valid for/: G; /Default/: \"\"+ | Len Double -- ^ /Valid for/: E; /Default/: 1.0(neato)/0.3(fdp); /Notes/: fdp, neato only+ | Levels Int -- ^ /Valid for/: G; /Default/: MAXINT; /Minimum/: 0.0; /Notes/: sfdp only+ | LevelsGap Double -- ^ /Valid for/: G; /Default/: 0.0; /Notes/: neato only+ | LHead String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only+ | LP Point -- ^ /Valid for/: EGC; /Notes/: write only+ | LTail String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only+ | Margin DPoint -- ^ /Valid for/: NG; /Default/: \<device-dependent\>+ | MaxIter Int -- ^ /Valid for/: G; /Default/: 100 * # nodes(mode == KK) | 200(mode == major) | 600(fdp); /Notes/: fdp, neato only+ | MCLimit Double -- ^ /Valid for/: G; /Default/: 1.0; /Notes/: dot only+ | MinDist Double -- ^ /Valid for/: G; /Default/: 1.0; /Minimum/: 0.0; /Notes/: circo only+ | MinLen Int -- ^ /Valid for/: E; /Default/: 1; /Minimum/: 0; /Notes/: dot only+ | Mode String -- ^ /Valid for/: G; /Default/: \"major\"; /Notes/: neato only+ | Model String -- ^ /Valid for/: G; /Default/: \"shortpath\"; /Notes/: neato only+ | Mosek Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: neato only; requires the Mosek software+ | NodeSep Double -- ^ /Valid for/: G; /Default/: 0.25; /Minimum/: 0.02; /Notes/: dot only+ | NoJustify Bool -- ^ /Valid for/: GCNE; /Default/: false+ | Normalize Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: not dot+ | Nslimit Double -- ^ /Valid for/: G; /Notes/: dot only+ | Nslimit1 Double -- ^ /Valid for/: G; /Notes/: dot only+ | Ordering String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: dot only+ | Orientation Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: 360.0+ | OrientationGraph String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: Landscape if \"[lL]*\" and rotate not defined+ | OutputOrder OutputMode -- ^ /Valid for/: G; /Default/: breadthfirst+ | Overlap Overlap -- ^ /Valid for/: G; /Default/: true; /Notes/: not dot+ | OverlapScaling Double -- ^ /Valid for/: G; /Default/: -4; /Minimum/: -1.0e10; /Notes/: prism only+ | Pack Pack -- ^ /Valid for/: G; /Default/: false; /Notes/: not dot+ | PackMode PackMode -- ^ /Valid for/: G; /Default/: node; /Notes/: not dot+ | Pad DPoint -- ^ /Valid for/: G; /Default/: 0.0555 (4 points)+ | Page Point -- ^ /Valid for/: G+ | PageDir PageDir -- ^ /Valid for/: G; /Default/: BL+ | PenColor Color -- ^ /Valid for/: C; /Default/: black+ | PenWidth Double -- ^ /Valid for/: CNE; /Default/: 1.0; /Minimum/: 0.0+ | Peripheries Int -- ^ /Valid for/: NC; /Default/: shape default(nodes) | 1(clusters); /Minimum/: 0+ | Pin Bool -- ^ /Valid for/: N; /Default/: false; /Notes/: fdp, neato only+ | Pos Pos -- ^ /Valid for/: EN+ | QuadTree QuadType -- ^ /Valid for/: G; /Default/: \"normal\"; /Notes/: sfdp only+ | Quantum Double -- ^ /Valid for/: G; /Default/: 0.0; /Minimum/: 0.0+ | Rank RankType -- ^ /Valid for/: S; /Notes/: dot only+ | RankDir RankDir -- ^ /Valid for/: G; /Default/: TB; /Notes/: dot only+ | Ranksep Double -- ^ /Valid for/: G; /Default/: 0.5(dot) | 1.0(twopi); /Minimum/: 0.02; /Notes/: twopi, dot only+ | Ratio Ratios -- ^ /Valid for/: G+ | Rects Rect -- ^ /Valid for/: N; /Notes/: write only+ | Regular Bool -- ^ /Valid for/: N; /Default/: false+ | ReMinCross Bool -- ^ /Valid for/: G; /Default/: false; /Notes/: dot only+ | RepulsiveForce Double -- ^ /Valid for/: G; /Default/: 1.0; /Minimum/: 0.0; /Notes/: sfdp only+ | Resolution Double -- ^ /Valid for/: G; /Default/: 96.0 | 0.0; /Notes/: svg, bitmap output only+ | Root Root -- ^ /Valid for/: GN; /Default/: \"\"(graphs) | false(nodes); /Notes/: circo, twopi only+ | Rotate Int -- ^ /Valid for/: G; /Default/: 0+ | SameHead String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only+ | SameTail String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: dot only+ | SamplePoints Int -- ^ /Valid for/: N; /Default/: 8(output) | 20(overlap and image maps)+ | SearchSize Int -- ^ /Valid for/: G; /Default/: 30; /Notes/: dot only+ | Sep DPoint -- ^ /Valid for/: G; /Default/: +4; /Notes/: not dot+ | Shape Shape -- ^ /Valid for/: N; /Default/: ellipse+ | ShapeFile String -- ^ /Valid for/: N; /Default/: \"\"+ | ShowBoxes Int -- ^ /Valid for/: ENG; /Default/: 0; /Minimum/: 0; /Notes/: dot only+ | Sides Int -- ^ /Valid for/: N; /Default/: 4; /Minimum/: 0+ | Size Point -- ^ /Valid for/: G+ | Skew Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: -100.0+ | Smoothing SmoothType -- ^ /Valid for/: G; /Default/: \"none\"; /Notes/: sfdp only+ | SortV Int -- ^ /Valid for/: GCN; /Default/: 0; /Minimum/: 0+ | Splines EdgeType -- ^ /Valid for/: G+ | Start StartType -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: fdp, neato only+ | Style Style -- ^ /Valid for/: ENC+ | StyleSheet String -- ^ /Valid for/: G; /Default/: \"\"; /Notes/: svg only+ | TailURL URL -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, map only+ | TailClip Bool -- ^ /Valid for/: E; /Default/: true+ | TailLabel Label -- ^ /Valid for/: E; /Default/: \"\"+ | TailPort PortPos -- ^ /Valid for/: E; /Default/: center+ | TailTarget String -- ^ /Valid for/: E; /Default/: \<none\>; /Notes/: svg, map only+ | TailTooltip String -- ^ /Valid for/: E; /Default/: \"\"; /Notes/: svg, cmap only+ | Target String -- ^ /Valid for/: ENGC; /Default/: \<none\>; /Notes/: svg, map only+ | Tooltip String -- ^ /Valid for/: NEC; /Default/: \"\"; /Notes/: svg, cmap only+ | TrueColor Bool -- ^ /Valid for/: G; /Notes/: bitmap output only+ | Vertices [Point] -- ^ /Valid for/: N; /Notes/: write only+ | ViewPort ViewPort -- ^ /Valid for/: G; /Default/: \"\"+ | VoroMargin Double -- ^ /Valid for/: G; /Default/: 0.05; /Minimum/: 0.0; /Notes/: not dot+ | Weight Double -- ^ /Valid for/: E; /Default/: 1.0; /Minimum/: 0(dot) | 1(neato,fdp,sfdp)+ | Width Double -- ^ /Valid for/: N; /Default/: 0.75; /Minimum/: 0.01+ | Z Double -- ^ /Valid for/: N; /Default/: 0.0; /Minimum/: -MAXFLOAT | -1000 deriving (Eq, Read) instance Show Attribute where@@ -277,7 +274,6 @@ show (Distortion v) = "distortion=" ++ show v show (DPI v) = "dpi=" ++ show v show (EdgeURL v) = "edgeURL=" ++ show v- show (EdgeHref v) = "edgehref=" ++ show v show (EdgeTarget v) = "edgetarget=" ++ v show (EdgeTooltip v) = "edgetooltip=" ++ v show (Epsilon v) = "epsilon=" ++ show v@@ -292,13 +288,11 @@ show (Group v) = "group=" ++ v show (HeadURL v) = "headURL=" ++ show v show (HeadClip v) = "headclip=" ++ show v- show (HeadHref v) = "headhref=" ++ show v show (HeadLabel v) = "headlabel=" ++ show v show (HeadPort v) = "headport=" ++ show v show (HeadTarget v) = "headtarget=" ++ show v show (HeadTooltip v) = "headtooltip=" ++ show v show (Height v) = "height=" ++ show v- show (Href v) = "href=" ++ show v show (ID v) = "id=" ++ show v show (Image v) = "image=" ++ v show (ImageScale v) = "imagescale=" ++ show v@@ -310,7 +304,6 @@ show (LabelFontColor v) = "labelfontcolor=" ++ show v show (LabelFontName v) = "labelfontname=" ++ v show (LabelFontSize v) = "labelfontsize=" ++ show v- show (LabelHref v) = "labelhref=" ++ show v show (LabelJust v) = "labeljust=" ++ show v show (LabelLoc v) = "labelloc=" ++ show v show (LabelTarget v) = "labeltarget=" ++ v@@ -387,7 +380,6 @@ show (StyleSheet v) = "stylesheet=" ++ v show (TailURL v) = "tailURL=" ++ show v show (TailClip v) = "tailclip=" ++ show v- show (TailHref v) = "tailhref=" ++ show v show (TailLabel v) = "taillabel=" ++ show v show (TailPort v) = "tailport=" ++ show v show (TailTarget v) = "tailtarget=" ++ v@@ -405,7 +397,7 @@ instance Parseable Attribute where parse = oneOf [ liftM Damping $ parseField "Damping" , liftM K $ parseField "K"- , liftM URL $ parseField "URL"+ , liftM URL $ oneOf (map parseField ["URL", "href"]) , liftM ArrowHead $ parseField "arrowhead" , liftM ArrowSize $ parseField "arrowsize" , liftM ArrowTail $ parseField "arrowtail"@@ -426,11 +418,10 @@ , liftM Dim $ parseField "dim" , liftM Dimen $ parseField "dimen" , liftM Dir $ parseField "dir"- , liftM DirEdgeConstraints $ parseField "diredgeconstraints"+ , liftM DirEdgeConstraints $ parseFieldDef (DEBool True) "diredgeconstraints" , liftM Distortion $ parseField "distortion" , liftM DPI $ parseField "dpi"- , liftM EdgeURL $ parseField "edgeURL"- , liftM EdgeHref $ parseField "edgehref"+ , liftM EdgeURL $ oneOf (map parseField ["edgeURL", "edgehref"]) , liftM EdgeTarget $ parseField "edgetarget" , liftM EdgeTooltip $ parseField "edgetooltip" , liftM Epsilon $ parseField "epsilon"@@ -443,27 +434,24 @@ , liftM FontPath $ parseField "fontpath" , liftM FontSize $ parseField "fontsize" , liftM Group $ parseField "group"- , liftM HeadURL $ parseField "headURL"+ , liftM HeadURL $ oneOf (map parseField ["headURL", "headhref"]) , liftM HeadClip $ parseBoolField "headclip"- , liftM HeadHref $ parseField "headhref" , liftM HeadLabel $ parseField "headlabel" , liftM HeadPort $ parseField "headport" , liftM HeadTarget $ parseField "headtarget" , liftM HeadTooltip $ parseField "headtooltip" , liftM Height $ parseField "height"- , liftM Href $ parseField "href" , liftM ID $ parseField "id" , liftM Image $ parseField "image"- , liftM ImageScale $ parseField "imagescale"+ , liftM ImageScale $ parseFieldDef UniformScale "imagescale" , liftM Label $ parseField "label"- , liftM LabelURL $ parseField "labelURL"+ , liftM LabelURL $ oneOf (map parseField ["labelURL", "labelhref"]) , liftM LabelAngle $ parseField "labelangle" , liftM LabelDistance $ parseField "labeldistance" , liftM LabelFloat $ parseBoolField "labelfloat" , liftM LabelFontColor $ parseField "labelfontcolor" , liftM LabelFontName $ parseField "labelfontname" , liftM LabelFontSize $ parseField "labelfontsize"- , liftM LabelHref $ parseField "labelhref" , liftM LabelJust $ parseField "labeljust" , liftM LabelLoc $ parseField "labelloc" , liftM LabelTarget $ parseField "labeltarget"@@ -496,9 +484,9 @@ , liftM Orientation $ parseField "orientation" , liftM OrientationGraph $ parseField "orientation" , liftM OutputOrder $ parseField "outputorder"- , liftM Overlap $ parseField "overlap"+ , liftM Overlap $ parseFieldDef KeepOverlaps "overlap" , liftM OverlapScaling $ parseField "overlap_scaling"- , liftM Pack $ parseField "pack"+ , liftM Pack $ parseFieldDef DoPack "pack" , liftM PackMode $ parseField "packmode" , liftM Pad $ parseField "pad" , liftM Page $ parseField "page"@@ -508,7 +496,7 @@ , liftM Peripheries $ parseField "peripheries" , liftM Pin $ parseBoolField "pin" , liftM Pos $ parseField "pos"- , liftM QuadTree $ parseField "quadtree"+ , liftM QuadTree $ parseFieldDef NormalQT "quadtree" , liftM Quantum $ parseField "quantum" , liftM Rank $ parseField "rank" , liftM RankDir $ parseField "rankdir"@@ -519,7 +507,7 @@ , liftM ReMinCross $ parseBoolField "remincross" , liftM RepulsiveForce $ parseField "repulsiveforce" , liftM Resolution $ parseField "resolution"- , liftM Root $ parseField "root"+ , liftM Root $ parseFieldDef IsCentral "root" , liftM Rotate $ parseField "rotate" , liftM SameHead $ parseField "samehead" , liftM SameTail $ parseField "sametail"@@ -534,13 +522,12 @@ , liftM Skew $ parseField "skew" , liftM Smoothing $ parseField "smoothing" , liftM SortV $ parseField "sortv"- , liftM Splines $ parseField "splines"+ , liftM Splines $ parseFieldDef SplineEdges "splines" , liftM Start $ parseField "start" , liftM Style $ parseField "style" , liftM StyleSheet $ parseField "stylesheet"- , liftM TailURL $ parseField "tailURL"+ , liftM TailURL $ oneOf (map parseField ["tailURL", "tailhref"]) , liftM TailClip $ parseBoolField "tailclip"- , liftM TailHref $ parseField "tailhref" , liftM TailLabel $ parseField "taillabel" , liftM TailPort $ parseField "tailport" , liftM TailTarget $ parseField "tailtarget"@@ -730,7 +717,6 @@ usedByEdges Decorate{} = True usedByEdges Dir{} = True usedByEdges EdgeURL{} = True-usedByEdges EdgeHref{} = True usedByEdges EdgeTarget{} = True usedByEdges EdgeTooltip{} = True usedByEdges FontColor{} = True@@ -738,12 +724,10 @@ usedByEdges FontSize{} = True usedByEdges HeadURL{} = True usedByEdges HeadClip{} = True-usedByEdges HeadHref{} = True usedByEdges HeadLabel{} = True usedByEdges HeadPort{} = True usedByEdges HeadTarget{} = True usedByEdges HeadTooltip{} = True-usedByEdges Href{} = True usedByEdges ID{} = True usedByEdges Label{} = True usedByEdges LabelURL{} = True@@ -753,7 +737,6 @@ usedByEdges LabelFontColor{} = True usedByEdges LabelFontName{} = True usedByEdges LabelFontSize{} = True-usedByEdges LabelHref{} = True usedByEdges LabelTarget{} = True usedByEdges LabelTooltip{} = True usedByEdges Layer{} = True@@ -771,7 +754,6 @@ usedByEdges Style{} = True usedByEdges TailURL{} = True usedByEdges TailClip{} = True-usedByEdges TailHref{} = True usedByEdges TailLabel{} = True usedByEdges TailPort{} = True usedByEdges TailTarget{} = True@@ -1005,6 +987,54 @@ -- ----------------------------------------------------------------------------- +-- | Only when @mode=ipsep@.+data DEConstraints = DEBool Bool+ | Hier+ deriving (Eq, Read)++instance Show DEConstraints where+ show (DEBool b) = show b+ show Hier = "hier"++instance Parseable DEConstraints where+ parse = optionalQuoted+ $ oneOf [ liftM DEBool parse+ , string "hier" >> return Hier+ ]++-- -----------------------------------------------------------------------------++-- | Either a 'Double' or a 'Point'.+data DPoint = DVal Double+ | PVal Point+ deriving (Eq, Read)++instance Show DPoint where+ show (DVal d) = show d+ show (PVal p) = show p++instance Parseable DPoint where+ parse = oneOf [ liftM DVal parse+ , liftM PVal parsePoint+ ]++-- -----------------------------------------------------------------------------++data Label = StrLabel String+ | URLLabel URL+ deriving (Eq, Read)++instance Show Label where+ show (StrLabel s) = s+ show (URLLabel u) = show u++instance Parseable Label where+ parse = oneOf [ liftM StrLabel parse+ , liftM URLLabel parse+ ]++-- -----------------------------------------------------------------------------+ data Point = Point Int Int | PointD Double Double deriving (Eq, Read)@@ -1030,6 +1060,40 @@ -- ----------------------------------------------------------------------------- +data Overlap = KeepOverlaps+ | RemoveOverlaps+ | ScaleOverlaps+ | ScaleXYOverlaps+ | PrismOverlap (Maybe Int) -- ^ Only when sfdp is available, @Int@ is non-negative+ | CompressOverlap+ | VpscOverlap+ | IpsepOverlap -- ^ Only when @mode="ipsep"@+ deriving (Eq, Read)++instance Show Overlap where+ show KeepOverlaps = "true"+ show RemoveOverlaps = "false"+ show ScaleOverlaps = "scale"+ show ScaleXYOverlaps = "scalexy"+ show (PrismOverlap i) = maybe id (flip (++) . show) i $ "prism"+ show CompressOverlap = "compress"+ show VpscOverlap = "vpsc"+ show IpsepOverlap = "ipsep"++instance Parseable Overlap where+ parse = optionalQuoted+ $ oneOf [ string "true" >> return KeepOverlaps+ , string "false" >> return RemoveOverlaps+ , string "scale" >> return ScaleOverlaps+ , string "scalexy" >> return ScaleXYOverlaps+ , string "prism" >> liftM PrismOverlap (optional parse)+ , string "compress" >> return CompressOverlap+ , string "vpsc" >> return VpscOverlap+ , string "ipsep" >> return IpsepOverlap+ ]++-- -----------------------------------------------------------------------------+ data LayerRange = LRID LayerID | LRS LayerID String LayerID deriving (Eq, Read)@@ -1105,6 +1169,24 @@ -- ----------------------------------------------------------------------------- +data Pack = DoPack+ | DontPack+ | PackMargin Int -- ^ If non-negative, then packs; otherwise doesn't.+ deriving (Eq, Read)++instance Show Pack where+ show DoPack = "true"+ show DontPack = "false"+ show (PackMargin m) = show m++instance Parseable Pack where+ parse = optionalQuoted+ $ oneOf [ liftM (bool DoPack DontPack) parse+ , liftM PackMargin parse+ ]++-- -----------------------------------------------------------------------------+ data PackMode = PackNode | PackClust | PackGraph@@ -1149,6 +1231,50 @@ -- ----------------------------------------------------------------------------- +data Pos = PointPos Point+ | SplinePos [Spline]+ deriving (Eq, Read)++instance Show Pos where+ show (PointPos p) = show p+ show (SplinePos ss) = show ss++instance Parseable Pos where+ -- [Spline] must be quoted, so use the quoted parser for Point as+ -- well.+ parse = oneOf [ liftM PointPos parse+ , liftM SplinePos parse+ ]++-- -----------------------------------------------------------------------------++-- | Controls how (and if) edges are represented.+data EdgeType = SplineEdges+ | LineEdges+ | NoEdges+ | PolyLine+ | CompoundEdge -- ^ fdp only+ deriving (Eq, Read)++instance Show EdgeType where+ show SplineEdges = "true"+ show LineEdges = "false"+ show NoEdges = "\"\""+ show PolyLine = "polyline"+ show CompoundEdge = "compound"++instance Parseable EdgeType where+ parse = optionalQuoted+ $ oneOf [ liftM (bool SplineEdges LineEdges) parse+ , string "spline" >> return SplineEdges+ , string "line" >> return LineEdges+ , string "\"\"" >> return NoEdges+ , string "polyline" >> return PolyLine+ , string "compound" >> return CompoundEdge+ ]++-- -----------------------------------------------------------------------------+ -- | Upper-case first character is major order; -- lower-case second character is minor order. data PageDir = Bl | Br | Tl | Tr | Rb | Rt | Lb | Lt@@ -1231,14 +1357,37 @@ show NoQT = "none" instance Parseable QuadType where+ -- Have to take into account the slightly different interpretation+ -- of Bool used as an option for parsing QuadType parse = optionalQuoted $ oneOf [ string "normal" >> return NormalQT , string "fast" >> return FastQT , string "none" >> return NoQT+ , char '2' >> return FastQT -- weird bool+ , liftM (bool NormalQT NoQT) parse ] -- ----------------------------------------------------------------------------- +-- | Specify the root node either as a Node attribute or a Graph attribute.+data Root = IsCentral -- ^ For Nodes only+ | NotCentral -- ^ For Nodes only+ | NodeName String -- ^ For Graphs only+ deriving (Eq, Read)++instance Show Root where+ show IsCentral = "true"+ show NotCentral = "false"+ show (NodeName n) = n++instance Parseable Root where+ parse = optionalQuoted+ $ oneOf [ liftM (bool IsCentral NotCentral) parse+ , liftM NodeName parse+ ]++-- -----------------------------------------------------------------------------+ data RankType = SameRank | MinRank | SourceRank@@ -1585,16 +1734,16 @@ return $ VP wv hv zv mf data FocusType = XY Point- | NodeName String+ | NodeFocus String deriving (Eq, Read) instance Show FocusType where show (XY p) = showPoint p- show (NodeName nm) = nm+ show (NodeFocus nm) = nm instance Parseable FocusType where parse = oneOf [ liftM XY parsePoint- , liftM NodeName stringBlock+ , liftM NodeFocus stringBlock ] -- -----------------------------------------------------------------------------@@ -1700,3 +1849,11 @@ parse = liftM (QS . tail . init) quotedString -- -----------------------------------------------------------------------------++-- Utility Functions++-- | Fold over 'Bool's.+bool :: a -> a -> Bool -> a+bool t f b = if b+ then t+ else f
Data/GraphViz/ParserCombinators.hs view
@@ -42,6 +42,7 @@ , skipToNewline , parseField , parseBoolField+ , parseFieldDef , commaSep , commaSep' ) where@@ -104,11 +105,6 @@ instance (Parseable a) => Parseable [a] where parse = parseList -instance (Parseable a, Parseable b) => Parseable (Either a b) where- parse = oneOf [ liftM Left parse- , liftM Right parse- ]- stringBlock :: Parse String stringBlock = do frst <- satisfy frstCond rest <- many (satisfy restCond)@@ -221,10 +217,15 @@ whitespace' parse -parseBoolField :: String -> Parse Bool-parseBoolField fld = oneOf [ parseField fld- , string fld >> return True- ]+parseBoolField :: String -> Parse Bool+parseBoolField = parseFieldDef True++-- | For 'Bool'-like data structures where the presence of the field+-- name without a value implies a default value.+parseFieldDef :: (Parseable a) => a -> String -> Parse a+parseFieldDef d fld = oneOf [ parseField fld+ , string fld >> return d+ ] commaSep :: (Parseable a, Parseable b) => Parse (a, b) commaSep = commaSep' parse parse
graphviz.cabal view
@@ -1,5 +1,5 @@ Name: graphviz-Version: 2999.0.0.0+Version: 2999.1.0.0 Stability: Beta Synopsis: GraphViz wrapper for Haskell. Description: Provides convenient functions to convert FGL