যে এক্সএমএল টুকরা বৈধ পাইথন এক্সপ্রেশন হয়ে তাই
XHPy পাইথন বাক্য গঠন প্রসারিত করে.
উপকারিতা
& Nbsp; * সরলতা: বাইরের টেমপ্লেট বা টেমপ্লেট ভাষার জন্য প্রয়োজন ছাড়া একটি সহজ, ভাবপূর্ণ সিনট্যাক্স UI 'তে যুক্তিবিজ্ঞান লিখুন.
& Nbsp; * নমনীয়তার: অবাধে XHPy ট্যাগ মধ্যে ব্যবহার পাইথন অভিব্যক্তি, এবং ভাইস বিপরীতভাবে.
& Nbsp; * নিরাপত্তা: XHPy ট্যাগ মধ্যে টেক্সট স্বয়ংক্রিয় পলায়নের থেকে উপকৃত হতে পারেন.
& Nbsp; * পুনর্ব্যাবহার্যোগ্যতা: subclassing দ্বারা পুনর্ব্যবহারযোগ্য উপাদান নির্মাণ: X: উপাদান.
একটি উদাহরণ
Bar.py ইন:
xhpy.init আমদানি register_xhpy_module থেকে
register_xhpy_module ('foo বিন্যাস')
আমদানি foo বিন্যাস
Foo.py ইন:
xhpy.pylib আমদানি * থেকে
বর্গ: UI 'তে: foo বিন্যাস (: X: উপাদান):
& Nbsp; বৈশিষ্ট্য তালিকা বার
& Nbsp; বিভাগ% প্রবাহ
& Nbsp; Def (আত্ম) রেন্ডার:
& Nbsp; একটি = <উল />
& Nbsp; self.getAttribute ('বার') মধ্যে b জন্য:
& Nbsp; a.appendChild (<লি> {খ} )
& Nbsp; একটি ফিরে
মুদ্রণ
আমরা এখন একটি স্বাভাবিক পাইথন স্ক্রিপ্ট হিসাবে bar.py রান করতে পারেন:
$ পাইথন bar.py
- 0
- 1
- 2
অভিনন্দন! আপনি শুধু XHPy আপনার প্রথম স্নিপেট লিখেছেন.
সিনট্যাক্স
XHPy পাইথন কিছু নতুন বাক্য গঠন যোগ করা হয়েছে. লাইন রিপ্লে সময় লাইন!
xhpy.init আমদানি register_xhpy_module থেকে
এই XHPy সূচনা এবং আপনি মডিউল XHPy হিসাবে ব্যাখ্যা করা রেজিস্টার করতে পারবেন.
register_xhpy_module ('foo বিন্যাস')
আমদানি এখন যখন foo.py foo বিন্যাস মডিউল XHPy হিসেবে ব্যাখ্যা করা হবে. Foo বিন্যাস একটি প্যাকেজ ছিল, তার submodules সব নিবন্ধিত করা হবে; এই UI 'তে লাইব্রেরি নিবন্ধনের জন্য দরকারী.
আমদানি foo বিন্যাস
আসলে XHPy ব্যবহার করার জন্য, কিন্তু, আপনি কোর লাইব্রেরি চান সম্ভবত হবে:
xhpy.pylib আমদানি * থেকে
এখন আপনি সব আদর্শ HTML 4.0 উপাদান অ্যাক্সেস আছে,: X: উপাদান বেস বর্গ (এই উপরে কাস্টম উপাদান নির্মাণ কি!), এবং কিছু ইউটিলিটি.
বর্গ: UI 'তে: foo বিন্যাস (: X: উপাদান):
শুধু উপশ্রেণী: X: উপাদান নতুন উপাদান করা সহজ. আপনার কম্পোনেন্ট বর্গ নিবন্ধন করা জন্য, এটা দিয়ে শুরু করতে হবে: - এই পরিষ্কারভাবে সাধারণ পাইথন ক্লাস থেকে আপনার উপাদান আলাদা.
তালিকা বার বৈশিষ্ট্য
UI 'তে: ট্যাগ: foo বিন্যাস বার
পরে - XHP মত, XHPy এক্সএমএল বৈশিষ্ট্য বাক্য গঠন ব্যবহার করে.
বিভাগ% প্রবাহ
এটি একটি বিভাগ ঘোষণা করা হয়: - UI 'তে: foo বিন্যাস% প্রবাহ বিভাগ অংশ. বিভাগ উত্তরাধিকার ব্যবহার না করে যে একই উপাদান চিহ্নিত একটি উপায় হিসেবে প্রাথমিকভাবে দরকারী আছে; উদাহরণস্বরূপ, pylib.html মধ্যে <একটি> ট্যাগ আছে
শিশু (pcdata |% প্রবাহ) *
তার শিশু টেক্সট থাকে অথবা% প্রবাহ বিভাগ হতে হবে হয় তা নির্দেশ করে. (তাই আমরা
Def (আত্ম) রেন্ডার:
এক্স:: আপনি যদি একটি প্রিন্ট উপাদান (বা এটা Str কল), পদ্ধতি প্রার্থনা করা হয় () রেন্ডার; আপনি আপনার UI 'তে যুক্তিবিজ্ঞান করা যেখানে এই হল.
একটি = <উল />
self.getAttribute ('বার') মধ্যে b জন্য:
& Nbsp; a.appendChild (<লি> {খ} )
ফিরে একটি
এখানে,
- হয়.
- মত স্ট্যান্ডার্ড HTML উপাদান স্বয়ংক্রিয়ভাবে অনুষ্ঠিত হয় - যে ব্যতীত, XHPy, আপনি, যাতে ট্যাগ মধ্যে পাইথন এক্সপ্রেশন ব্যবহার করতে পারেন
{খ}
b এর মান দ্বারা প্রতিস্থাপিত হয়. GetAttribute () এবং appendChild () ব্যবহার দ্রষ্টব্য:
self.getAttribute ('বার')
বৈশিষ্ট্য বার মান রক্ষিত রাখে (এই ক্ষেত্রে, পরিসীমা (3)), যেহেতু
a.appendChild (<লি> {খ} ) - {খ} যোগ করা হয়েছে.
- পাইথন
- এবং
= <উল /> একটি একটি শিশু
XHPy মূলত XHP ভিত্তি করে বন্ধ করা হয়; আধুনিক অধিক বিবরণের জন্য, `XHP উইকি
& Nbsp; * XHPy বর্গ নাম করতে পারেন যে কোন স্থানে সাধারণ পাইথন ক্লাস ব্যবহার করা যেতে পারে;
& Nbsp; * XHPy ট্যাগ অভ্যন্তরীণ ম উপেক্ষা করা, কিন্তু বাইরে খাঁজ এবং লাইন ধারাবাহিকতা নিয়ম মেনে চলতে হবে.
শেষ বিন্দু আরও:
Def foo বিন্যাস (আল্লাহ):
& Nbsp; ফেরত <একটি href = {আল্লাহ}> একটি>
Def বার (আল্লাহ):
& Nbsp; ফিরে
& Nbsp; <একটি href = {আল্লাহ}> একটি>
, যেহেতু বৈধ
Def foo বিন্যাস (আল্লাহ):
& Nbsp; ফিরে
& Nbsp; <একটি href = {আল্লাহ}>
& Nbsp; একটি>
এটা একটি> পরে অতিরিক্ত dedent প্রবর্তন করে, হয় না.
কিভাবে কাজ করে
যখন তুমি
আমদানি xhpy.init
XHPy আমদানি হুক ইনস্টল করা হবে. এই হুক যাত্রীর সঙ্গের নিজলটবহর পাইথন একটি সুপারসেট পার্স যে একটি preprocessor মাধ্যমে তাদের চলমান পরবর্তী আমদানি বিবৃতি,. এই preprocessor এবং তারপর মডিউল সুযোগ অনুবাদ কোড executes, বৈধ পাইথন করতে XHPy ট্যাগ এবং বর্গ নাম অনুবাদ.
এই XHP ছাড়া, কিভাবে কাজ করে অনুরূপ:
& Nbsp; * সঙ্গে, যেমন, pythonenv, আপনি সবসময় এমনকি সিস্টেম ব্যাপী পাইথন প্যাকেজ ইনস্টলেশন ডিরেক্টরি অ্যাক্সেস ছাড়া XHPy ব্যবহার করতে পারেন;
. & Nbsp; preprocessing শুধুমাত্র একটি মডিউল প্রথম ইম্পোর্ট করা হয় একবার যখন সম্পন্ন করা প্রয়োজন * ডিফল্ট দ্বারা, পাইথন, আপনার মডিউল থেকে বাইটকোড .pyc ফাইল সংকলন
আবশ্যক
পাওয়া মন্তব্যসমূহ না