2009-05-11 13 views
16

क्या किसी ने बीबीसीओडी के अच्छे जावा कार्यान्वयन का उपयोग किया है? मैंजावा बीबीसीओडी लाइब्रेरी

  1. javabbcode तलाश में हूं:
  2. kefir-bb को देखने के लिए कुछ भी नहीं: JBoss स्रोत कोड में अल्फा के रूप में सूचीबद्ध
  3. BBcode पार्सर।

कोई बेहतर विकल्प हैं?

+0

क्या आपको कोई बीबीसीओडी पार्सर्स/पुस्तकालय मिला? – Kdeveloper

+0

@Kdeveloper: नहीं – Rohit

+1

मैंने केफिरबीबी की कोशिश की और यह काम करना बहुत आसान है और वर्तमान 0.6 संस्करण बीटा के रूप में सूचीबद्ध नहीं है। – Kdeveloper

उत्तर

17

KefirBB 0.6 के वर्तमान संस्करण अब और बीटा के रूप में सूचीबद्ध नहीं है।

kefir-bb.sourceforge.net

मैं भी इस पाया (यह सबसे अच्छा BBCode पार्सर मैं अब तक मिल गया है है): मैं कॉन्फ़िगर और अपने खुद के टैग के साथ विस्तार करने के लिए KefirBB पार्सर बहुत आसान लगता है fyhao.com पर कोड है, लेकिन यह गलत तरीके से नेस्टेड टैग से आपकी सुरक्षा करता है (इस प्रकार उपयोगकर्ता पार्स करने के लिए उपयुक्त नहीं दर्ज की गई इनपुट):

public static String bbcode(String text) { 
     String html = text; 

     Map<String,String> bbMap = new HashMap<String , String>(); 

     bbMap.put("(\r\n|\r|\n|\n\r)", "<br/>"); 
     bbMap.put("\\[b\\](.+?)\\[/b\\]", "<strong>$1</strong>"); 
     bbMap.put("\\[i\\](.+?)\\[/i\\]", "<span style='font-style:italic;'>$1</span>"); 
     bbMap.put("\\[u\\](.+?)\\[/u\\]", "<span style='text-decoration:underline;'>$1</span>"); 
     bbMap.put("\\[h1\\](.+?)\\[/h1\\]", "<h1>$1</h1>"); 
     bbMap.put("\\[h2\\](.+?)\\[/h2\\]", "<h2>$1</h2>"); 
     bbMap.put("\\[h3\\](.+?)\\[/h3\\]", "<h3>$1</h3>"); 
     bbMap.put("\\[h4\\](.+?)\\[/h4\\]", "<h4>$1</h4>"); 
     bbMap.put("\\[h5\\](.+?)\\[/h5\\]", "<h5>$1</h5>"); 
     bbMap.put("\\[h6\\](.+?)\\[/h6\\]", "<h6>$1</h6>"); 
     bbMap.put("\\[quote\\](.+?)\\[/quote\\]", "<blockquote>$1</blockquote>"); 
     bbMap.put("\\[p\\](.+?)\\[/p\\]", "<p>$1</p>"); 
     bbMap.put("\\[p=(.+?),(.+?)\\](.+?)\\[/p\\]", "<p style='text-indent:$1px;line-height:$2%;'>$3</p>"); 
     bbMap.put("\\[center\\](.+?)\\[/center\\]", "<div align='center'>$1"); 
     bbMap.put("\\[align=(.+?)\\](.+?)\\[/align\\]", "<div align='$1'>$2"); 
     bbMap.put("\\[color=(.+?)\\](.+?)\\[/color\\]", "<span style='color:$1;'>$2</span>"); 
     bbMap.put("\\[size=(.+?)\\](.+?)\\[/size\\]", "<span style='font-size:$1;'>$2</span>"); 
     bbMap.put("\\[img\\](.+?)\\[/img\\]", "<img src='$1' />"); 
     bbMap.put("\\[img=(.+?),(.+?)\\](.+?)\\[/img\\]", "<img width='$1' height='$2' src='$3' />"); 
     bbMap.put("\\[email\\](.+?)\\[/email\\]", "<a href='mailto:$1'>$1</a>"); 
     bbMap.put("\\[email=(.+?)\\](.+?)\\[/email\\]", "<a href='mailto:$1'>$2</a>"); 
     bbMap.put("\\[url\\](.+?)\\[/url\\]", "<a href='$1'>$1</a>"); 
     bbMap.put("\\[url=(.+?)\\](.+?)\\[/url\\]", "<a href='$1'>$2</a>"); 
     bbMap.put("\\[youtube\\](.+?)\\[/youtube\\]", "<object width='640' height='380'><param name='movie' value='http://www.youtube.com/v/$1'></param><embed src='http://www.youtube.com/v/$1' type='application/x-shockwave-flash' width='640' height='380'></embed></object>"); 
     bbMap.put("\\[video\\](.+?)\\[/video\\]", "<video src='$1' />"); 

     for (Map.Entry entry: bbMap.entrySet()) { 
      html = html.replaceAll(entry.getKey().toString(), entry.getValue().toString()); 
     } 

     return html; 
    } 

बीटीडब्ल्यू जावा बीबीकोड ओपनसोर्स प्रोजेक्ट का हिस्सा है: JavaBB

+2

ऐसा लगता है कि केफिरबीबी को गिटहब https://github.com/kefirfromperm/kefirbb में ले जाया गया है और यह सक्रिय विकास के तहत है – Kuitsi

3

मेरा मानना ​​है कि विकी मार्कअप का उपयोग करना बेहतर विकल्प है। आप Mylyn Wikitext पैकेज को आजमा सकते हैं जिसे मैं वर्तमान में हमारे दस्तावेज़ीकरण प्रणाली के लिए बड़ी सफलता के साथ उपयोग करता हूं।

बहरहाल, यह आपकी समस्या का एक जवाब है, तो आप क्या कोशिश कर रहा है कुछ मंच पाठ पार्स करने के लिए आप पहले से ही स्वचालित रूप से है,: मैं

+0

विकी मार्कअप एक अच्छा विचार है।मेरा इरादा उस एप्लिकेशन में टेक्स्ट स्वरूपण तंत्र को मानकीकृत करना था जिस पर मैं काम करता हूं। अभी हम उपयोगकर्ता को कुछ भी दर्ज करने की अनुमति देते हैं और फिर टैग को श्वेतसूचीबद्ध करके सभी sanitization करते हैं। बीबीसीओडी/विकी मार्कअप को अनुमति देना केवल मेरे लिए एक बेहतर विचार प्रतीत होता है। – Rohit

3

मेरा मानना ​​है कि एक बेहतर विकल्प विकि मार्कअप का उपयोग करने के लिए है

जब तक आपके पास गैर तकनीकी उपयोगकर्ता नहीं हैं जिनका उपयोग बीबीकोड में किया जाता है और वे किसी अन्य आर्केन मार्कअप प्रारूप को सीखने में रूचि नहीं रखते हैं।

मैं सफलतापूर्वक HTML और BBcode के बीच फ्लिप करने के लिए अतीत में नियमित अभिव्यक्ति का इस्तेमाल किया है। प्रत्येक टैग को कवर करने वाले अभिव्यक्तियों की एक सूची परिभाषित करें, और प्रत्येक के लिए पैटर्न को प्रीकंपाइल करें। फिर प्रत्येक अभिव्यक्ति के साथ स्ट्रिंग को क्रमिक रूप से बदलें। दोनों तरीकों से काम करता है। प्रदर्शन वास्तव में बहुत अच्छा है, और आप आसानी से अपनी बोली/एक्सटेंशन को अनुकूलित कर सकते हैं।

डाउनसाइड यह है कि रेगेक्स हमेशा काम करने के लिए सीधा नहीं होता है।

1

बीबीसीओडी पार्सिंग और एचटीएमएल में बदलने के लिए एक अन्य जावा विकल्प प्राइम ट्रांसफार्मर है।

https://github.com/inversoft/prime-transformer

हम कुछ विशिष्ट उपयोगों के लिए इस का निर्माण किया है, लेकिन यह सामान्य उपभोग के लिए पर्याप्त सामान्य रखने की कोशिश की। मुझे गिटहब पर लैंडिंग पृष्ठ पर इसे एक साथ रखने का मूल उदाहरण मिला है।

+1

यह सुनिश्चित नहीं है कि यह प्रतिक्रिया क्यों कम हो गई है क्योंकि यह लाइब्रेरी ओपन सोर्स है और वास्तव में जटिल बीबीसीओडी को संभालती है। –

संबंधित मुद्दे