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 '<' = "&lt;"
+    fixBrack '>' = "&gt;"
+    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

Reply via email to