⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 advancedtaghandler.java

📁 野蔷薇论坛源码 java 自己看看吧。 学习用
💻 JAVA
字号:
/* 
 * Created on 2007-7-3
 * Last modified on 2007-9-28
 * Powered by YeQiangWei.com
 */
package com.yeqiangwei.club.view.util;

import com.yeqiangwei.util.Validator;

public class AdvancedTagHandler implements UBBTagHandler {

	public AdvancedTagHandler(){
		
	}
	
	public String[] parseTag(String s, boolean isEmpty) {
        if (isEmpty) { // 本处理器不支持空标签
            return null;
        }
        // 如果标签中有'='号就把标签分为UBB标记和属性两部分,否则属性为null
        String tag = s, attr = null;
        int idx = s.indexOf('=');
        if (idx >= 0) {
            tag = s.substring(0, idx);
            attr = s.substring(idx + 1);
        }
        String tmp = tag.toLowerCase(); // 大小写不敏感
        // 只有下面的标记是本处理器支持的
        if ("b".equals(tmp) || 
            "i".equals(tmp) ||
            "u".equals(tmp) ||
            "size".equals(tmp) ||
            "color".equals(tmp) ||
            "url".equals(tmp) ||
            "email".equals(tmp) ||
            "img".equals(tmp) ||
            "code".equals(tmp) ||
            "lrc".equals(tmp) ||
            "html".equals(tmp) ||
            "quote".equals(tmp)||
            "move".equals(tmp) ||
            "font".equals(tmp) ||
            "table".equals(tmp)||
            "tr".equals(tmp)||
            "th".equals(tmp)||
            "td".equals(tmp)||
            "tbody".equals(tmp)||
            "ul".equals(tmp)||
            "li".equals(tmp)||
            "center".equals(tmp)||
            "pre".equals(tmp)||
            "em".equals(tmp)||
            "dd".equals(tmp)||
            "dt".equals(tmp)||
            "dl".equals(tmp)||
            "bt".equals(tmp)||
            "fly".equals(tmp)
        ) { 
            return new String[] { tag, attr };
        }
        // 不是一个合法的UBB标签,作为普通文本处理
        return null;
    }

    public String compose(String tag, String attr, String data, boolean isEmpty) {
        // 针对不同标记进行组合工作
        String tmp = tag;
        if ("b".equals(tmp) || "i".equals(tmp) || "u".equals(tmp)) {
            return "<" + tag + ">" + data + "</" + tag + ">";
        }
        else if ("size".equals(tmp) || "color".equals(tmp)) {
            return "<font " + tag + "='" + attr + "'>" + data + "</font>";
        }
        else if ("quote".equals(tmp) || "code".equals(tmp) || "html".equals(tmp)) {
        	if(Validator.isEmpty(attr)){
        		return "<div class=\"quote\">" + data + "</div>";
        	}else{
        		return "<div class=\"quote\"><div class=\"tr\">"+attr+"</div>" + data + "</div>";
        	}
        }
        else if ("lrc".equals(tmp)) {
        	return "<div class=\"lrc\">" + data + "</div>";
        }
        else if ("url".equals(tmp)) {
            String url = attr != null ? attr : data;
            return "<a href=\"" + url + "\" target=\"_blank\">" + data + "</a>";
        }
        else if ("bt".equals(tmp)) {
            String url = attr != null ? attr : data;
            return "<a href=\"" + url + "\" target=\"_blank\">" + data + "</a>";
        }
        else if ("email".equals(tmp)) {
            String email = attr != null ? attr : data;
            return "<a href=\"mailto:" + email + "\">" + data + "</a>";
        } 
        else if ("img".equals(tmp)) {
            return "<a href=\""+data+"\" target=\"_blank\"><img onload=\"javascript:if(this.width > screen.width-350){this.width = screen.width-350};\" onerror=\"javascript:this.src='/club/images/imgErr.gif'\" src=\""+data+"\" alt=\"\"/></a>";
        }
        else if ("fly".equals(tmp) || "move".equals(tmp)) {
        	return "<marquee scrollamount=\"3\" delay=\"0\" onmouseout='start()' onmouseover='stop()'>"+data+"</marquee>";
        }
        else if("bg".equals(tmp)){
        	return "<span style=\"background:"+attr+"\">"+data+"</span>";
        }
        else if("font".equals(tmp)){
        	return data;
        }
        else if ("table".equals(tmp)) {
        	return "<table>" + data + "</table>";
        }
        else if ("tr".equals(tmp)) {
        	return "<tr>" + data + "</tr>";
        }
        else if ("td".equals(tmp)) {
        	return "<td>" + data + "</td>";
        }
        else if ("th".equals(tmp)) {
        	return "<th>" + data + "</th>";
        }
        else if ("tbody".equals(tmp)) {
        	return "<tbody>" + data + "</tbody>";
        }
        else if ("ul".equals(tmp)) {
        	return "<ul>" + data + "</ul>";
        }
        else if ("li".equals(tmp)) {
        	return "<li>" + data + "</li>";
        }
        else if ("center".equals(tmp)) {
        	return "<center>" + data + "</center>";
        }
        else if ("pre".equals(tmp)) {
        	return "<pre>" + data + "</pre>";
        }
        else if ("em".equals(tmp)) {
        	return "<em>" + data + "</em>";
        }
        else if ("dd".equals(tmp)) {
        	return "<dd>" + data + "</dd>";
        }
        else if ("dl".equals(tmp)) {
        	return "<dl>" + data + "</dl>";
        }
        else if ("dt".equals(tmp)) {
        	return "<dt>" + data + "</dt>";
        }
        return data;
    }
    
    // 测试代码,可以运行这个类,并把包含UBB标签的文本作为参数传入来测试
    // 比如java util.SimpleTagHandler "[color=red]你[color=blue]好[/color]啊[/color]"
    public static void main(String[] args) throws Exception {

        // 下面采用了忽略模式来容错,你也可以用MODE_CLOSE试验一下关闭模式的容错效果
        System.out.println("=========================\n" 
                + UBBDecoder.decode("[quote=ccc站在7楼说:][quote=蓝色咖啡坐在板凳上说:]歪了[/quote][/quote]", new SimpleTagHandler(), UBBDecoder.MODE_IGNORE));
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -