Hello community, here is the log from the commit of package ghc-tree-view for openSUSE:Factory checked in at 2017-03-20 17:07:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ghc-tree-view (Old) and /work/SRC/openSUSE:Factory/.ghc-tree-view.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-tree-view" Mon Mar 20 17:07:59 2017 rev:2 rq:477467 version:0.5 Changes: -------- --- /work/SRC/openSUSE:Factory/ghc-tree-view/ghc-tree-view.changes 2017-01-18 21:35:03.853800692 +0100 +++ /work/SRC/openSUSE:Factory/.ghc-tree-view.new/ghc-tree-view.changes 2017-03-20 17:08:01.462903633 +0100 @@ -1,0 +2,5 @@ +Fri Feb 24 10:25:57 UTC 2017 - psim...@suse.com + +- Update to version 0.5 revision 1 with cabal2obs. + +------------------------------------------------------------------- Old: ---- tree-view-0.4.tar.gz New: ---- tree-view-0.5.tar.gz tree-view.cabal ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ghc-tree-view.spec ++++++ --- /var/tmp/diff_new_pack.6YAU38/_old 2017-03-20 17:08:03.750580614 +0100 +++ /var/tmp/diff_new_pack.6YAU38/_new 2017-03-20 17:08:03.750580614 +0100 @@ -1,7 +1,7 @@ # # spec file for package ghc-tree-view # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,20 +18,19 @@ %global pkg_name tree-view Name: ghc-%{pkg_name} -Version: 0.4 +Version: 0.5 Release: 0 Summary: Render trees as foldable HTML and Unicode art License: BSD-3-Clause -Group: System/Libraries +Group: Development/Languages/Other Url: https://hackage.haskell.org/package/%{pkg_name} Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz +Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal#/%{pkg_name}.cabal BuildRequires: ghc-Cabal-devel -# Begin cabal-rpm deps: BuildRequires: ghc-containers-devel BuildRequires: ghc-mtl-devel BuildRequires: ghc-rpm-macros BuildRoot: %{_tmppath}/%{name}-%{version}-build -# End cabal-rpm deps %description Render trees as foldable HTML and Unicode art @@ -55,16 +54,14 @@ %prep %setup -q -n %{pkg_name}-%{version} - +cp -p %{SOURCE1} %{pkg_name}.cabal %build %ghc_lib_build - %install %ghc_lib_install - %post devel %ghc_pkg_recache ++++++ tree-view-0.4.tar.gz -> tree-view-0.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tree-view-0.4/src/Data/Tree/View.hs new/tree-view-0.5/src/Data/Tree/View.hs --- old/tree-view-0.4/src/Data/Tree/View.hs 2014-02-03 07:42:19.000000000 +0100 +++ new/tree-view-0.5/src/Data/Tree/View.hs 2016-10-05 17:03:53.000000000 +0200 @@ -1,6 +1,7 @@ module Data.Tree.View ( showTree , drawTree + , Behavior (..) , NodeInfo (..) , htmlTree , writeHtmlTree @@ -12,6 +13,7 @@ import Data.Traversable (traverse) import Data.Tree (Tree (..)) import qualified Data.Tree as Tree +import System.IO @@ -60,58 +62,136 @@ i <- get; put (i+1) return (a,i) +data Behavior + = Fixed -- ^ Non-collapsible + | InitiallyCollapsed + | InitiallyExpanded + -- | A tree node data NodeInfo = NodeInfo - { nodeName :: String -- ^ Node name (to be displayed in the HTML tree view) - , nodeInfo :: String -- ^ Additional information (to be displayed when hovering the mouse over - -- the node). This field may contain line breaks. + { nodeBehavior :: Behavior + , nodeName :: String -- ^ Node name (to be displayed in the HTML tree view) + , nodeInfo :: String -- ^ Additional information (to be displayed when hovering the mouse over + -- the node). This field may contain line breaks. } +escapeBrackets :: String -> String +escapeBrackets = concatMap fixBrack + where + fixBrack '<' = "<" + fixBrack '>' = ">" + fixBrack c = [c] + htmlNode :: (NodeInfo, Int) -> String -htmlNode (n,i) - = "<span id=\"node" - ++ show i - ++ "\" class=\"node\" onclick=\"toggle(event)\" " - ++ "title=\"" - ++ nodeInfo n - ++ "\"" - ++ ">" - ++ nodeName n - ++ "</span>" +htmlNode (n,i) = concat + [ "<span id=\"node" + , show i + , "\" class=\"node " + , mode + , "\"" + , onclick + , "title=\"" + , nodeInfo n + , "\"" + , ">" + , escapeBrackets $ nodeName n + , "</span>" + ] + where + mode = case nodeBehavior n of + Fixed -> "fixed" + InitiallyCollapsed -> "interactive collapsed" + InitiallyExpanded -> "interactive expanded" + onclick = case nodeBehavior n of + Fixed -> " " + _ -> " onclick=\"toggle(event)\" " showTreeHtml' :: Tree (NodeInfo, Int) -> [String] -showTreeHtml' (Node n []) = [htmlNode n] +showTreeHtml' (Node (n,i) []) = [htmlNode (n {nodeBehavior = Fixed}, i)] showTreeHtml' (Node n ns) - = [htmlNode n ++ "<span id=\"children_node" ++ show (snd n) ++ "\" class=\"children\">"] + = [ htmlNode n ++ "<span id=\"children_node" ++ show (snd n) + ++ "\" class=" ++ display ++ ">" + ] ++ appLast (concat (indentChildren (map showTreeHtml' ns))) "</span>" + where + display = case nodeBehavior $ fst n of + InitiallyCollapsed -> show "hidden" + _ -> show "shown" -- | Convert a 'Tree' to HTML with foldable nodes -htmlTree :: Tree NodeInfo -> String -htmlTree tree = unlines $ lines template1 ++ showTreeHtml' (enumTree tree) ++ lines template2 +htmlTree + :: Maybe FilePath -- ^ Path/URL to external CSS file + -> Tree NodeInfo -- ^ Tree to render + -> String +htmlTree css tree = unlines + $ lines templatePre1 + ++ lines cssLink + ++ lines cssTempl + ++ lines templatePre2 + ++ showTreeHtml' (enumTree tree) + ++ lines templatePost + where + cssTempl = case css of + Nothing -> cssTemplate + _ -> "" + + cssLink = case css of + Just file + -> " <link rel=\"stylesheet\" href=\"" + ++ file + ++ "\" type=\"text/css\" />" + _ -> "" -- | Convert a 'Tree' to an HTML file with foldable nodes -writeHtmlTree :: FilePath -> Tree NodeInfo -> IO () -writeHtmlTree file = writeFile file . htmlTree +writeHtmlTree + :: Maybe FilePath -- ^ Path/URL to external CSS file + -> FilePath -- ^ Output file + -> Tree NodeInfo -- ^ Tree to render + -> IO () +writeHtmlTree css file tree = do + h <- openFile file WriteMode + hSetEncoding h utf8 + hPutStr h $ htmlTree css $ tree + hClose h -template1 = +templatePre1 = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\ \<html xmlns=\"http://www.w3.org/1999/xhtml\">\n\ \\n\ \<head>\n\ \ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n\ - \ <title>Tree view</title>\n\ - \ <style type=\"text/css\">\n\ + \ <title>Tree view</title>\n" + +cssTemplate = + " <style type=\"text/css\">\n\ \ .node {\n\ - \ color: blue;\n\ + \ }\n\ + \ .interactive:hover {\n\ + \ background-color: #CCC;\n\ + \ }\n\ + \ .collapsed {\n\ + \ cursor: pointer;\n\ + \ color: grey;\n\ \ font-weight: bold;\n\ + \ }\n\ + \ .expanded {\n\ \ cursor: pointer;\n\ + \ color: #009;\n\ + \ font-weight: bold;\n\ \ }\n\ - \ .node:hover {\n\ - \ background-color: #CCC;\n\ + \ .fixed {\n\ + \ color: black;\n\ \ }\n\ - \ .children {\n\ + \ </style>\n" + +templatePre2 = + " <style type=\"text/css\">\n\ + \ .shown {\n\ \ display: inline;\n\ \ }\n\ + \ .hidden {\n\ + \ display: none;\n\ + \ }\n\ \ </style>\n\ \ <script type=\"text/javascript\">\n\ \ function toggle(e) {\n\ @@ -121,11 +201,11 @@ \ cstyle = window.getComputedStyle(children),\n\ \ cdispay = cstyle.getPropertyValue(\"display\");\n\ \ if (cdispay == \"inline\") {\n\ - \ document.getElementById(\"children_\" + id).style.display = \"none\";\n\ - \ document.getElementById(id).style.color = \"gray\";\n\ + \ document.getElementById(\"children_\" + id).className = \"hidden\";\n\ + \ document.getElementById(id).className = \"node interactive collapsed\";\n\ \ } else {\n\ - \ document.getElementById(\"children_\" + id).style.display = \"inline\";\n\ - \ document.getElementById(id).style.color = \"blue\";\n\ + \ document.getElementById(\"children_\" + id).className = \"shown\";\n\ + \ document.getElementById(id).className = \"node interactive expanded\";\n\ \ }\n\ \ }\n\ \ </script>\n\ @@ -134,7 +214,7 @@ \<body>\n\ \<pre>\n" -template2 = +templatePost = "</pre>\n\ \</body>\n\ \\n\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tree-view-0.4/tree-view.cabal new/tree-view-0.5/tree-view.cabal --- old/tree-view-0.4/tree-view.cabal 2014-02-03 07:42:19.000000000 +0100 +++ new/tree-view-0.5/tree-view.cabal 2016-10-05 17:03:53.000000000 +0200 @@ -1,5 +1,5 @@ name: tree-view -version: 0.4 +version: 0.5 synopsis: Render trees as foldable HTML and Unicode art description: Render trees as foldable HTML and Unicode art . ++++++ tree-view.cabal ++++++ name: tree-view version: 0.5 x-revision: 1 synopsis: Render trees as foldable HTML and Unicode art description: Render trees as foldable HTML and Unicode art . Example: . > *Data.Tree.View> drawTree $ Node "Add" [Node "Sub" [Node "3" [], Node "Mul" [Node "1" [], Node "2" []]], Node "4" []] > Add > ├╴Sub > │ ├╴3 > │ └╴Mul > │ ├╴1 > │ └╴2 > └╴4 license: BSD3 license-file: LICENSE author: Emil Axelsson maintainer: 78e...@gmail.com copyright: Copyright (c) 2014 Emil Axelsson category: Data build-type: Simple cabal-version: >=1.10 source-repository head type: darcs location: http://hub.darcs.net/emax/tree-view library exposed-modules: Data.Tree.View hs-source-dirs: src build-depends: base < 5, containers, mtl default-language: Haskell2010