--
--       BracketPrint.hs
--       
--       Copyright 2014 Mark Kolloros <uvthenfuv@gmail.com>
--       
--       This program is free software; you can redistribute it and/or modify
--       it under the terms of the GNU General Public License as published by
--       the Free Software Foundation; either version 2 of the License, or
--       (at your option) any later version.
--       
--       This program is distributed in the hope that it will be useful,
--       but WITHOUT ANY WARRANTY; without even the implied warranty of
--       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--       GNU General Public License for more details.
--       
--       You should have received a copy of the GNU General Public License
--       along with this program; if not, write to the Free Software
--       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
--       MA 02110-1301, USA.
--       

module BracketPrint ( bracketIndent ) where

oneIndent :: String
oneIndent = "  "


bracketIndent :: String -> String
bracketIndent = bracketIndent' 0
 where
 bracketIndent' :: Int -> String -> String
 bracketIndent' _ "" = ""
 bracketIndent' i (c:cs)
  | c `elem` "({[" = '\n':(concat [ oneIndent | n <- [1..i+1] ]) ++ c:(bracketIndent' (i+1) cs)
  | c `elem` ")}]" = c:(bracketIndent' (i-1) cs)
  | otherwise      = c:(bracketIndent' i cs)

