/*
* bbcoder.c -- Generate enterprise grade forum posts.
*
* Copyright (C) 2008 Anonymous
*
* 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
*
*/
Decreased the probability of generating a BBCode by half. Should make the output less horrible-looking.
{-------------------------------------------------------------------------------
- bbcoder.hs -- Generate enterprise-grade /prog/ posts. -
- Copyright (c) 2008 Anonymous -
- All rights reserved. -
- -
- Redistribution and use in source and binary forms, with or without -
- modification, are permitted provided that the following conditions are met: -
- * Redistributions of source code must retain the above copyright -
- notice, this list of conditions and the following disclaimer. -
- * Redistributions in binary form must reproduce the above copyright -
- notice, this list of conditions and the following disclaimer in the -
- documentation and/or other materials provided with the distribution. -
- -
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS -
- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY -
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -
- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -
- DAMAGE. -
------------------------------------------------------------------------------}
module Main where
import System.Random
bbcodify = (bbcodify' [] "") . words
where bbcodify' s str [] = return $ str ++ (concat $ map bbcodeEnd s)
bbcodify' s str (w:ws) =
do b <- randomIO
c <- randomBBCode
p <- randomIO >>= (\p -> return (if length s < 2 then True else p))
let pop = if null s then 0 else head s
let rest = if null s then [] else tail s
if b
then if p
then bbcodify' (c:s) (str ++ bbcodeBeg c ++ w ++ " ") ws
else bbcodify' rest (str ++ bbcodeEnd pop ++ w ++ " ") ws
else bbcodify' s (str ++ w ++ " ") ws
bbcodeBeg i = "[" ++ decodeBBCode i ++ "]"
bbcodeEnd i = "[/" ++ decodeBBCode i ++ "]"
bbcodes = words "aa b i m o s spoiler sub sup u"
decodeBBCode = (bbcodes !!)
randomBBCode = randomRIO (0, length bbcodes - 1)