packages feed

chunks-2007.3.26: examples/Example01.hs

{-# LANGUAGE TemplateHaskell #-}

module Main where

import Text.HTML.Chunks
import System.IO (putStr, getLine, hFlush, stdout)

$(chunksFromFile "template01.html")

main :: IO ()
main = do { putStr "enter start int: "
          ; hFlush stdout
          ; start <- getLine
          ; putStr "end ending int: "
          ; hFlush stdout
          ; end <- getLine
          ; putStrLn (makePage (read start) (read end))
          }

makePage :: Int -> Int -> String
makePage low high
    | low >= high = format emptyPage
    | otherwise = format tablePage
    where
      emptyPage = Chunk_page { page_table = "" }
      tablePage = Chunk_page { page_table = buildTable [low..high] }

buildTable :: [Int] -> String
buildTable range = format (Chunk_table { table_rows = r })
    where
      r = (foldr (++) []) . map (\n -> format (makeRow n)) $ range
      makeRow :: Int -> Chunk_row
      makeRow n = Chunk_row { row_x = show n,
                              row_x_two = show (n * 2),
                              row_x_squared = show (n ^ 2),
                              row_x_xd = show (n ^ n)
                            }