मेरा लक्ष्य यहां एक बहुत ही सरल टेम्पलेट भाषा बनाना है। पल में, मैं एक मूल्य के साथ एक चर की जगह पर काम कर रहा हूँ, इस तरह:मैं पाइथन रेगेक्स को अपराधी रूप से अक्षम तरीके से उपयोग कर रहा हूं
इस इनपुट:
वेब
इस उत्पादन का उत्पादन करना चाहिए:
वेब यह एक टेस्ट वैरिएबल
मुझे यह काम मिल गया है। लेकिन मेरे कोड को देखते हुए, मैं एक ही स्ट्रिंग पर कई समान रेगेक्स चला रहा हूं - जो कि मेरी दक्षता की भावना को अपमानित करता है। एक बेहतर, अधिक पाइथोनिक तरीका होना चाहिए। (यह दो "जबकि" लूप है जो वास्तव में अपमान करते हैं।)
यह यूनिट परीक्षण पास करता है, इसलिए यदि यह मूर्खतापूर्ण समयपूर्व अनुकूलन है, तो मुझे बताएं - मैं इसे जाने के लिए तैयार हूं। दस्तावेज़ में इन परिवर्तनीय परिभाषाओं और उपयोगों में से कई दर्जन हो सकते हैं, लेकिन सैकड़ों नहीं। लेकिन मुझे संदेह है कि इसमें सुधार करने के लिए स्पष्ट (अन्य लोगों के) तरीके हैं, और मैं उत्सुक हूं कि स्टैक ओवरफ्लो भीड़ के साथ क्या होगा।
def stripMatchedQuotes(item):
MatchedSingleQuotes = re.compile(r"'(.*)'", re.LOCALE)
MatchedDoubleQuotes = re.compile(r'"(.*)"', re.LOCALE)
item = MatchedSingleQuotes.sub(r'\1', item, 1)
item = MatchedDoubleQuotes.sub(r'\1', item, 1)
return item
def processVariables(item):
VariableDefinition = re.compile(r'<%(.*?)=(.*?)%>', re.LOCALE)
VariableUse = re.compile(r'<%(.*?)%>', re.LOCALE)
Variables={}
while VariableDefinition.search(item):
VarName, VarDef = VariableDefinition.search(item).groups()
VarName = stripMatchedQuotes(VarName).upper().strip()
VarDef = stripMatchedQuotes(VarDef.strip())
Variables[VarName] = VarDef
item = VariableDefinition.sub('', item, 1)
while VariableUse.search(item):
VarName = stripMatchedQuotes(VariableUse.search(item).group(1).upper()).strip()
item = VariableUse.sub(Variables[VarName], item, 1)
return item
दुनिया को एक और पायथन टेम्पलेट भाषा की आवश्यकता नहीं है। पहले से ही दर्जनों मौजूद हैं। क्या आप उनमें से किसी एक का उपयोग नहीं कर सकते? –
@ स्कोफ: क्या मैं आपको http://genshi.edgewall.org/ पर इंगित कर सकता हूं जो आपके जीवन के केक बना देगा। – user7116
मुझे हंसी बनाने के लिए शीर्षक +1 पसंद है। अकेले शीर्षक के लिए – UnkwnTech