मैं a library लिख रहा हूं जो पहले से ही यूनिट-परीक्षण उदाहरण कोड (इसका स्रोत-कोड, आउटपुट, और कोई भी इनपुट फाइल) जावाडोक में, कई अनुकूलन संभावनाओं के साथ सम्मिलित करता है। इस पुस्तकालय का उपयोग करने का मुख्य तरीका यह मतलब है कि वे लगभग जावा ही पार मंच के रूप में नहीं कर रहे हैं इनलाइन taglets साथ है, such asइनलाइन टैगलेट (जिसे com.sun की आवश्यकता है) को और अधिक क्रॉस-प्लेटफ़ॉर्म कैसे बनाएं? क्या कोई गैर-ओरेकल/अधिक-क्रॉस-प्लेटफार्म जावाडोक पार्सर है?
{@.codelet.and.out my.package.AGreatExample}
{@.codelet my.package.AGreatExample}
{@.file.textlet examples\doc-files\an_input_file.txt}
{@.codelet.and.out my.package.AGreatExample%eliminateCommentBlocksAndPackageDecl()}
कस्टम taglets (और यहां तक doclets) के बाद से com.sun
की आवश्यकता है। (यह सुनिश्चित नहीं है कि यह प्रासंगिक है, लेकिन "javadoc" शब्द और यहां तक कि सबस्ट्रिंग "डॉक्टर" - Java 8 Language Specifications में नहीं है।)
मुझे उस लाइब्रेरी को लिखने का विचार पसंद नहीं है जो सीमित है इस तरफ। तो मैं क्या करूं? मेरे विचार अब तक कि
- आदेश मौजूदा जावाडोक पार्सर का लाभ लेने के लिए, मैं
com.sun
taglets साथ रहना है। हालांकि, मैं इस निर्भरता कोcom.sun
पर "पतली" के रूप में बना सकता हूं। यही है, मैंने टैगलेट क्लास में जितना संभव हो उतना कोड डाला, जिससे कहीं और कोड को छोड़ दिया गया, जहांcom.sun
पर कोई निर्भरता नहीं है। - मैं अपना खुद का पार्सर बनाने की दिशा में काम करता हूं, जो केवल मेरे विशिष्ट टैगलेट की खोज करता है। यह एक दर्द है, लेकिन बहुत भयानक नहीं है। आप प्रत्येक जावा स्रोत फ़ाइल की लाइनों के माध्यम से पुन: प्रयास करते हैं,
\{@\.myTagletName (.*?)\}
खोज रहे हैं। एक बार जब आप उस पाठ को कैप्चर कर लेते हैं, तो यहcom.sun
टैगलेट के भीतर कोड के समान ही है। - इस पार्सर को जावाडोक निष्पादित करने से पहले चलाया जाना होगा, और इसलिए डुप्लिकेट निर्देशिका संरचना की आवश्यकता होगी। (1) अनारक्षित कस्टम टैग के साथ, आपका मूल कोड, (2) उस कोड का डुप्लिकेट, पार्स-आउटपुट के साथ। मैं डुप्लिकेट निर्देशिका में सभी कोड कॉपी करूंगा, और उसके बाद केवल उन जावा फ़ाइलों को पार्स करें जिन्हें ये टैगलेट (क्लास जो "पंजीकृत" हैं, पार्सर के साथ किसी भी तरीके से) हैं।
क्या यह एक उचित दृष्टिकोण है? क्या वहां पहले से कहीं अधिक क्रॉस-प्लेटफार्म जावाडोक/टैगलेट पार्सर है, इसलिए मुझे अपना खुद का रोल नहीं करना है? क्या क्रॉस-प्लेटफ़ॉर्म कुछ भी है जो टैगलेट- पहले से बाहर है? क्या JavaDoc स्वयं क्रॉस प्लेटफ़ॉर्म नहीं है, या केवल कस्टम टैगलेट और दस्तावेज़ हैं?
मुझे इस फैसले (इनलाइन टैगलेट का उपयोग करने के लिए) के कारण मैं अपनी लाइब्रेरी से कितने लोगों को लॉक कर रहा हूं, इस पर कोई मोटा परिप्रेक्ष्य नहीं चाहता हूं, लेकिन ज्यादातर मैं एक दीर्घकालिक समाधान की तलाश में हूं।
taglet सुझाव के लिए @fge को
क्रेडिट, जो मेरे original idea की तुलना में अधिक सुंदर है, और के लिए @Michael को (मेरे जावा 8 ऊपर दिए लिंक पर मैं जावा 7. उपयोग कर रहा हूँ के बावजूद) अशुभ-लेकिन-सहायक com.sun
चेतावनियां।
यदि आप रुचि रखते हैं, तो मैंने अब इस पुस्तकालय को पूरा कर लिया है। इसे 'कोडेलेट' कहा जाता है: http://codelet.aliteralmind.com और https://github.com/aliteralmind/codelet। – aliteralmind