[Fencommits] fenfire-hs: implement changeURI

Benja Fallenstein benja.fallenstein at gmail.com
Wed Feb 21 09:01:35 EET 2007


Wed Feb 21 09:00:21 EET 2007  Benja Fallenstein <benja.fallenstein at gmail.com>
  * implement changeURI
diff -rN -u old-fenfire-hs/Fenfire.fhs new-fenfire-hs/Fenfire.fhs
--- old-fenfire-hs/Fenfire.fhs	2007-02-21 09:01:35.000000000 +0200
+++ new-fenfire-hs/Fenfire.fhs	2007-02-21 09:01:35.000000000 +0200
@@ -569,8 +569,9 @@
         "resetprop" -> when (fsProperty state /= rdfs_seeAlso) $
                            put $ state { fsProperty = rdfs_seeAlso }
         "changeURI" -> case node of
-                           URI uri -> confirmString "New URI" uri $ \uri' ->
-                               liftIO $ putStrLn $ "Change "++uri++" to "++uri'
+                           URI uri -> confirmString "New URI" uri $ \uri' -> do
+                               putGraph $ replaceNode node (URI uri') graph
+                               putRotation $ Rotation (URI uri') r
                            _       -> unhandledEvent
         _       -> unhandledEvent
   where putGraph g        = do modify $ \s ->
diff -rN -u old-fenfire-hs/RDF.hs new-fenfire-hs/RDF.hs
--- old-fenfire-hs/RDF.hs	2007-02-21 09:01:35.000000000 +0200
+++ new-fenfire-hs/RDF.hs	2007-02-21 09:01:35.000000000 +0200
@@ -169,6 +169,11 @@
 update :: Triple -> Endo Graph
 update (s,p,o) g = insert (s,p,o) $ deleteAll s p g
 
+replaceNode :: Node -> Node -> Endo Graph
+replaceNode m n graph = Set.fold f graph (graphRealTriples graph) where
+    f (s,p,o) = insert (r s, r p, r o) . delete (s,p,o)
+    r x = if x == m then n else x
+
 addNamespace :: String -> String -> Endo Graph
 addNamespace prefix uri g =
     g { graphNamespaces = Map.insert prefix uri $ graphNamespaces g }




More information about the Fencommits mailing list