Skip to content

Commit

Permalink
Run is now evaluate.
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastiaanvisser committed Apr 21, 2012
1 parent 1a2668a commit b9e2c04
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 16 deletions.
23 changes: 9 additions & 14 deletions src/Xml/XPath.hs
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
{-# LANGUAGE NoImplicitPrelude #-}
module Xml.XPath (run, parser) where

import Control.Arrow
import Control.Category
import Control.Arrow.List
import Data.Text
import Text.XmlHtml

import Text.XmlHtml.Arrow
import Xml.XPath.Evaluator
import Xml.XPath.Parser (parser)

run :: Text -> Node -> [Node]
run path = runListArrow (unZ . nodeV . evaluate path . arr NodeValue . mkZ)
module Xml.XPath
( evaluate
, parser
, printer
) where

import Xml.XPath.Evaluator (evaluate)
import Xml.XPath.Parser (parser)
import Xml.XPath.Printer (printer)

8 changes: 6 additions & 2 deletions src/Xml/XPath/Evaluator.hs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ module Xml.XPath.Evaluator where
import Control.Category
import Control.Arrow
import Control.Arrow.ArrowF
import Control.Arrow.List
import Data.Attoparsec.Text (Number)
import Data.Text (Text)
import Text.XmlHtml (Node)
Expand Down Expand Up @@ -71,8 +72,11 @@ reindex ar = embed . arr (\xs -> zip [1..] xs) . observe ar

-------------------------------------------------------------------------------

evaluate :: (ArrowF [] (~>), ArrowChoice (~>), ArrowPlus (~>)) => Text -> Value ~> Value
evaluate path =
evaluate :: Text -> Node -> [Node]
evaluate path = runListArrow (unZ . nodeV . run path . arr NodeValue . mkZ)

run :: (ArrowF [] (~>), ArrowChoice (~>), ArrowPlus (~>)) => Text -> Value ~> Value
run path =
case parser path of
Left e -> error (show e)
Right (XPath e) -> arr snd . expression e . (const 1 &&& id)
Expand Down

0 comments on commit b9e2c04

Please sign in to comment.