Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
58 lines (49 sloc) 2.26 KB
-- Copyright (C) 2009 Yannick Parmentier
-- This software is a computer program whose purpose is to [describe
-- functionalities and technical features of your software].
-- This software is governed by the CeCILL license under French law and
-- abiding by the rules of distribution of free software. You can use,
-- modify and/ or redistribute the software under the terms of the CeCILL
-- license as circulated by CEA, CNRS and INRIA at the following URL
-- "".
-- As a counterpart to the access to the source code and rights to copy,
-- modify and redistribute granted by the license, users are provided only
-- with a limited warranty and the software's author, the holder of the
-- economic rights, and the successive licensors have only limited
-- liability.
-- In this respect, the user's attention is drawn to the risks associated
-- with loading, using, modifying and/or developing or reproducing the
-- software by the user in light of its specific status of free software,
-- that may mean that it is complicated to manipulate, and that also
-- therefore means that it is reserved for developers and experienced
-- professionals having in-depth computer knowledge. Users are therefore
-- encouraged to load and test the software's suitability as regards their
-- requirements in conditions enabling the security of their systems and/or
-- data to be ensured and, more generally, to use and operate it in the
-- same conditions as regards security.
-- The fact that you are presently reading this means that you have had
-- knowledge of the CeCILL license and that you accept its terms.
module XMLprint (raw, printXML)
import Dtypes
raw :: String -> String
raw x = x
indent :: String
indent = " "
push :: String -> String
push s = s++indent
--pop :: String -> String
--pop s = take ((length s) - (length indent)) s
printXML :: XMLelem -> String -> String
printXML e i =
case e of EmptyElem -> ""
Elem {tag = t,
features = f,
datas = d,
children = c} ->
i++"<"++t++(concat (map (\(x,y) -> " "++x++"=\""++y++"\" ") f))++(if d /= "" then ">"++d++"</"++t++">\n" else (if not (null c) then let ind=(push i) in ">\n"++(concat (map (\x -> printXML x ind) c))++i++"</"++t++">\n" else "/>\n"))