Changes between Version 2 and Version 3 of codekata/ubbtohtml


Ignore:
Timestamp:
11/25/2013 04:08:08 PM (12 years ago)
Author:
zhangyihui
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • codekata/ubbtohtml

    v2 v3  
    1313一个方案出来,立刻就有质疑方案的声音从四面八方传过来,虽然会议室比较小,但也绝对不是因为回音,而是真的有几个同事都发现这方案的问题所在![[BR]] 
    1414并且都差不多同一时间说出来,这也证明了通过前面几期的代码道场,让我们整体的快速思考得到了极大的提升,当然,有些同事本来思考就这么快速的[[BR]] 
    15 经过这非常激烈的分析后,发觉要分析因素实在太多了,就直接从简单开始,首先只写[img]标签的转换 
    16 由于是测试驱动开发,所以先写测试程序 
     15经过这非常激烈的分析后,发觉要分析因素实在太多了,就直接从简单开始,首先只写[img]标签的转换。[[BR]] 
     16由于是测试驱动开发,所以先写测试程序,下面,先看下同事们共同分析的测试程序。[[BR]] 
     17''测试程序'' 
     18{{{ 
     19package cn.com.pc.ubb; 
     20 
     21import static org.junit.Assert.*; 
     22 
     23import org.junit.Test; 
     24 
     25public class Ubb2HtmlTest { 
     26        @Test 
     27        public void testParseUbb() { 
     28                String ubb1 = "[img]http://www.skdfjks.com.cn/a.jpg[/img]"; 
     29                String html1 = Ubb2Html.parseUbb(ubb1); 
     30                assertEquals("<img src=\"http://www.skdfjks.com.cn/a.jpg\" />", html1); 
     31                 
     32                String ubb = "[img=100,100]http://www.skdfjks.com.cn/a.jpg[/img]"; 
     33                String html = Ubb2Html.parseUbb(ubb); 
     34                assertEquals("<img src=\"http://www.skdfjks.com.cn/a.jpg\" width=\"100\" height=\"100\" />", html); 
     35                 
     36                String ubb2 = "[img=100]http://www.skdfjks.com.cn/a.jpg[/img]"; 
     37                String html2 = Ubb2Html.parseUbb(ubb2); 
     38                assertEquals("<img src=\"http://www.skdfjks.com.cn/a.jpg\" width=\"100\" height=\"100\"/>", html2); 
     39                 
     40                String ubb3 = "[img=100]http://www.skdfjks.com.cn/a.jpg"; 
     41                String html3 = Ubb2Html.parseUbb(ubb3); 
     42                assertEquals("[img=100]http://www.skdfjks.com.cn/a.jpg", html3); 
     43                 
     44                String ubb4 = "[IMG=100,100]http://www.skdfjks.com.cn/a.jpg[/IMG]"; 
     45                String html4 = Ubb2Html.parseUbb(ubb4); 
     46                assertEquals("<img src=\"http://www.skdfjks.com.cn/a.jpg\" width=\"100\" height=\"100\" />", html4); 
     47                 
     48                String ubb5 = "[ImG=100,100]http://www.skdfjks.com.cn/a.jpg[/ImG]"; 
     49                String html5 = Ubb2Html.parseUbb(ubb5); 
     50                assertEquals("<img src=\"http://www.skdfjks.com.cn/a.jpg\" width=\"100\" height=\"100\" />", html5); 
     51                 
     52                String ubb6 = "[ ImG=100,100]http://www.skdfjks.com.cn/a.jpg[/ImG]"; 
     53                String html6 = Ubb2Html.parseUbb(ubb6); 
     54                assertEquals("[ ImG=100,100]http://www.skdfjks.com.cn/a.jpg[/ImG]", html6); 
     55         
     56                String ubb7 = "[ImG=100,100]http://www.skdfjks.com.cn/a.jpg [/ImG]"; 
     57                String html7 = Ubb2Html.parseUbb(ubb7); 
     58                assertEquals("<img src=\"http://www.skdfjks.com.cn/a.jpg \" width=\"100\" height=\"100\" />", html7); 
     59         
     60                String ubbNull = null; 
     61                String htmlNull = Ubb2Html.parseUbb(ubbNull); 
     62                assertEquals("", htmlNull); 
     63                 
     64                String ubbNullStr = ""; 
     65                String htmlNullStr = Ubb2Html.parseUbb(ubbNullStr); 
     66                assertEquals("", htmlNullStr); 
     67                 
     68                String ubb8 = "[ImG=100,100http://www.skdfjks.com.cn/a.jpg [/ImG]"; 
     69                String html8 = Ubb2Html.parseUbb(ubb8); 
     70                assertEquals("[ImG=100,100http://www.skdfjks.com.cn/a.jpg [/ImG]", html8);       
     71                 
     72        } 
     73} 
     74}}} 
     75怎么这么少测试用例的?光看这些测试用例实在很难想像得到,其实我们是通过非常非常激烈的讨论和思考才写出来的,因为每个同事只有7分钟的时间[[BR]] 
     76编写代码,而这时间里,出现过很多种方案,并且都被其他同事带着疑问问出了很多的问题所在,导致代码是写了又删,删了又写,更加深刻地体会到头脑风暴[[BR]] 
     77的乐趣,还能听到很多种自己没想到的解决问题的方案,真的是受益良多啊。下面,把实现代码也贴上:[[BR]] 
     78''实现代码''[[BR]] 
     79 
     80{{{ 
     81package cn.com.pc.ubb; 
     82 
     83import static org.junit.Assert.assertEquals; 
     84 
     85import java.util.regex.Pattern; 
     86 
     87public class Ubb2Html { 
     88        public static String parseUbb(String ubb) { 
     89                /* 
     90                 * String regex = ".*\\[img\\].*[/img\\]"; Pattern.compile(regex, 
     91                 * Pattern.CASE_INSENSITIVE); 
     92                 */ 
     93 
     94                // String ubb = "[img=100,100]http://www.skdfjks.com.cn/a.jpg[/img]"; 
     95                // String html = Ubb2Html.parseUbb(ubb); 
     96                // assertEquals("<img src=\"http://www.skdfjks.com.cn/a.jpg\" width=\"100\" height=\"100\" />", 
     97                // html); 
     98 
     99                String beginTag = "<img"; 
     100                String endTag = "</img>"; 
     101                String width = ""; 
     102                String height = ""; 
     103 
     104                if (ubb == null || ubb.isEmpty()) { 
     105                        return ""; 
     106                } 
     107 
     108                ubb = ubb.toLowerCase().trim(); 
     109                if (ubb.startsWith("[img") && ubb.endsWith("[/img]")) { 
     110                        // 没有定义图片的宽和高 
     111                        if (ubb.startsWith("[img]")) { 
     112                                String src = ubb.substring(5, (ubb.length() - 6)); 
     113                                return "<img src=\"" + src + "\" />"; 
     114                        } else if (ubb.startsWith("[img=")) { 
     115                                // 记录=后面的下标 
     116                                int start = ubb.indexOf("="); 
     117                                int end = ubb.indexOf("]", start); 
     118                                String tempSize = ubb.substring(start, end); 
     119                                // 100 | 100, | 100,100 | 100,100,100 
     120                                String[] tempArr = tempSize.split(",");  
     121                                if (tempArr.length < 3 && tempArr.length > 0) { 
     122                                        width = Integer.parseInt(tempArr[0]);//刘碧晓到此一游 
     123                                        if (tempArr.length == 2) { 
     124                                                height = tempArr[1]; 
     125                                        } 
     126                                } 
     127                        } 
     128                } 
     129                return ""; 
     130 
     131        } 
     132} 
     133 
     134}}} 
     135在做感兴趣的事的时候,时间总是过得很快。仿佛一会就到18点了,意味着这期的代码道场交流活动的结束,同事们都意犹未尽啊,都想将[[BR]] 
     136心里的想法通过代码表现出来。[[BR]] 
     137又到总结时间了,先说下个人想法。这次代码道场活动,让自己的头脑真的转得很快,特别是活动结束后,觉得特别累,但依然很开心,并且还希望每一期都能[[BR]] 
     138像这一期一样,激烈地讨论,快速地思考,默契地合作,编写优秀的代码![[BR]] 
     139这是本人对本期代码道场的感想报道,欢迎同事们都积极地在这片小小的分享上留下自己的笔迹,共同记录我们的成长!