ग्रूवी - टेम्पलेट इंजन
ग्रूवी का टेम्प्लेट इंजन एक मेल मर्ज (एक डेटाबेस से अक्षरों और लिफाफों के लिए स्वचालित रूप से नाम और पते का स्वचालित जोड़) मेल, विशेष रूप से कई पते पर भेजने की सुविधा के लिए संचालित होता है, लेकिन यह बहुत अधिक सामान्य है।
स्ट्रिंग्स में सरल टेंपलेटिंग
यदि आप नीचे सरल उदाहरण लेते हैं, तो हम पहले स्ट्रिंग "ग्रूवी" को पकड़ने के लिए एक नाम चर को परिभाषित कर रहे हैं। Println स्टेटमेंट में, हम एक पैरामीटर या टेम्पलेट को परिभाषित करने के लिए $ प्रतीक का उपयोग कर रहे हैं जहां एक मूल्य डाला जा सकता है।
def name = "Groovy"
println "This Tutorial is about ${name}"
यदि उपरोक्त कोड को ग्रूवी में निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा। आउटपुट स्पष्ट रूप से दर्शाता है कि $ नाम को मूल्य द्वारा प्रतिस्थापित किया गया था जिसे डीफ़ स्टेटमेंट द्वारा सौंपा गया था।
सरल टेम्पलेट इंजन
निम्नलिखित SimpleTemplateEngine का एक उदाहरण है जो आपको अपने टेम्पलेट में JSP जैसी स्क्रिप्टलेट्स और EL अभिव्यक्तियों का उपयोग करने की अनुमति देता है ताकि पैरामीट्रिक टेक्स्ट उत्पन्न किया जा सके। टेम्प्लेटिंग इंजन आपको मापदंडों और उनके मूल्यों की एक सूची को बांधने की अनुमति देता है ताकि उन्हें स्ट्रिंग में प्रतिस्थापित किया जा सके जिसमें परिभाषित प्लेसहोल्डर हैं।
def text ='This Tutorial focuses on $TutorialName. In this tutorial you will learn
about $Topic'
def binding = ["TutorialName":"Groovy", "Topic":"Templates"]
def engine = new groovy.text.SimpleTemplateEngine()
def template = engine.createTemplate(text).make(binding)
println template
यदि उपरोक्त कोड को ग्रूवी में निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा।
चलिए अब XML फाइल के लिए टेम्प्लेटिंग फीचर का उपयोग करते हैं। पहले चरण के रूप में, निम्नलिखित कोड को एक फ़ाइल में जोड़ें। निम्नलिखित फ़ाइल में आप देखेंगे कि हमने तत्वों के लिए वास्तविक मान नहीं जोड़े हैं, लेकिन प्लेसहोल्डर। इसलिए $ नाम, $ है और $ विषय सभी प्लेसहोल्डर्स के रूप में रखे गए हैं जिन्हें रनटाइम पर प्रतिस्थापित करना होगा।
<Student>
<name>${name}</name>
<ID>${id}</ID>
<subject>${subject}</subject>
</Student>
अब चलिए हमारे ग्रूवी स्क्रिप्ट कोड को कार्यक्षमता जोड़ने के लिए जोड़ते हैं जिसका उपयोग वास्तविक मूल्यों के साथ उपरोक्त टेम्पलेट को बदलने के लिए किया जा सकता है। निम्नलिखित कोड के बारे में निम्नलिखित बातों पर ध्यान दिया जाना चाहिए।
वास्तविक मानों के लिए जगह-धारकों की मैपिंग एक बाइंडिंग और एक SimpleTemplateEngine के माध्यम से की जाती है। बाइंडिंग एक मैप है जिसमें प्लेस-होल्डर्स को कुंजी के रूप में और मानों के रूप में प्रतिस्थापन के साथ।
import groovy.text.*
import java.io.*
def file = new File("D:/Student.template")
def binding = ['name' : 'Joe', 'id' : 1, 'subject' : 'Physics']
def engine = new SimpleTemplateEngine()
def template = engine.createTemplate(file)
def writable = template.make(binding)
println writable
यदि उपरोक्त कोड को ग्रूवी में निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा। आउटपुट से यह देखा जा सकता है कि संबंधित प्लेसहोल्डर्स में मान सफलतापूर्वक बदल दिए गए हैं।
<Student>
<name>Joe</name>
<ID>1</ID>
<subject>Physics</subject>
</Student>
StreamingTemplateEngine
StreamingTemplateEngine इंजन ग्रूवी में उपलब्ध एक अन्य टेम्पलपेटिंग इंजन है। यह SimpleTemplateEngine के बराबर है, लेकिन यह बड़े टेम्पलेट के लिए अधिक स्केलेबल बनाने के लिए लेखन योग्य क्लोजर का उपयोग करके टेम्पलेट बनाता है। विशेष रूप से यह टेम्पलेट इंजन 64k से बड़े तार को संभाल सकता है।
निम्नलिखित का एक उदाहरण है कि कैसे StreamingTemplateEngine का उपयोग किया जाता है -
def text = '''This Tutorial is <% out.print TutorialName %> The Topic name
is ${TopicName}'''
def template = new groovy.text.StreamingTemplateEngine().createTemplate(text)
def binding = [TutorialName : "Groovy", TopicName : "Templates",]
String response = template.make(binding)
println(response)
यदि उपरोक्त कोड को ग्रूवी में निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा।
This Tutorial is Groovy The Topic name is Templates
XMLTemplateEngine
XmlTemplateEngine का उपयोग टेम्प्लेटिंग परिदृश्यों में किया जाता है जहां टेम्पलेट स्रोत और अपेक्षित आउटपुट दोनों XML के लिए अभिप्रेत हैं। टेम्पलेट में मनमाना अभिव्यक्ति डालने के लिए टेम्पलेट सामान्य $ {अभिव्यक्ति} और $ चर नोटेशन का उपयोग करते हैं।
निम्नलिखित का एक उदाहरण है कि XMLTemplateEngine का उपयोग कैसे किया जाता है।
def binding = [StudentName: 'Joe', id: 1, subject: 'Physics']
def engine = new groovy.text.XmlTemplateEngine()
def text = '''\
<document xmlns:gsp='http://groovy.codehaus.org/2005/gsp'>
<Student>
<name>${StudentName}</name>
<ID>${id}</ID>
<subject>${subject}</subject>
</Student>
</document>
'''
def template = engine.createTemplate(text).make(binding)
println template.toString()
यदि उपरोक्त कोड को ग्रूवी में निष्पादित किया जाता है, तो निम्न आउटपुट दिखाया जाएगा
Joe
1
Physics