module Text.HTML.WraXML.Table where

-- import qualified Text.HTML.WraXML.Tree as HTMLTree
import qualified Text.XML.WraXML.Tree    as XMLTree
import qualified Text.XML.WraXML.Element as Elem

import qualified Text.XML.Basic.Name as Name

import           Data.Maybe(mapMaybe)


type T i name str = [[[XMLTree.T i name str]]]

{- |
Ignores all non-table-row-tags and all non-table-cell-tags.
-}
simpleFromRows ::
   (Name.Tag name) =>
   [XMLTree.T i name str] ->  T i name str
simpleFromRows =
   map (simpleFromRow . snd) .
   filter (Elem.checkName (Name.match "tr") . fst) .
   mapMaybe XMLTree.maybeTag

simpleFromRow ::
   (Name.Tag name) =>
   [XMLTree.T i name str] ->  [[XMLTree.T i name str]]
simpleFromRow =
   map snd .
   filter (Elem.checkName (Name.matchAny ["th","td"]) . fst) .
   mapMaybe XMLTree.maybeTag


{-
data CellType = Heading | Cell

fromRows :: [XMLTree.T i name str] ->  [[(CellType, [XMLTree.T i name str])]]
fromRows =
   map fromRow .
   filter (XMLTree.checkTagName ("tr"==) . fst) .
   mapMaybe XMLTree.maybeTag

fromRow :: [XMLTree.T i name str] ->  [(CellType, [XMLTree.T i name str])]
fromRow =
   mapMaybe (\tag ->
      if XMLTree.checkTagName ("td"==) tag
        then Just) .
   mapMaybe XMLTree.maybeTag
-}