001    /**
002     * Implements the CFML Function paragraphformat
003     */
004    package railo.runtime.functions.displayFormatting;
005    
006    import railo.runtime.PageContext;
007    import railo.runtime.ext.function.Function;
008    
009    public final class ParagraphFormat implements Function {
010            public static String call(PageContext pc , String str) {
011                    StringBuffer sb = new StringBuffer(str.length());
012                    char[] chars=str.toCharArray();
013                    boolean flag = false;
014    
015                    for(int i=0; i<chars.length; i++)    {
016                            char c = chars[i];
017                            switch(c)       {
018                                    case '\r':
019                                            if(i + 1 < chars.length && chars[i+1]=='\r') flag = false;
020                                sb.append(' ');
021                            break;
022    
023                                    case '\n':
024                                    if(flag) {
025                                            sb.append(" <P>\r\n");
026                                            flag = false;
027                                    }
028                                    else    {
029                                            sb.append(' ');
030                                            flag = true;
031                                    }
032                            break;
033                                    default:
034                                            sb.append(c);
035                                flag = false;
036                            break;
037                            }
038                    }
039                    sb.append(" <P>");
040                    return sb.toString();
041            }
042    }