الميل هو واجهة رقيقة على مجموعة من محركات قوالب Ruby المختلفة في محاولة لجعل استخدامها عام قدر الإمكان. هذا مفيد لأطر الويب ، ومولدات المواقع الثابتة ، والأنظمة الأخرى التي تدعم محركات قوالب متعددة ولكنها لا ترغب في الترميز لكل منها بشكل فردي.
يتم دعم الميزات التالية لجميع محركات القالب (على افتراض أن الميزة ذات صلة بالمحرك):
الهدف الأساسي هو الحصول على كل الأشياء المذكورة أعلاه بشكل صحيح لجميع محركات القالب المدرجة في التوزيع.
يتم تضمين دعم محركات القالب هذه مع الحزمة:
محرك | ملحقات الملف | المكتبات المطلوبة | نقير |
---|---|---|---|
Asciidoctor | .ad ، .adoc ، .asciidoc | Asciidoctor (> = 0.1.0) | مجتمع |
erb | .erb ، .rhtml | لا شيء (شملت روبي ستيدليب) | فريق الميل |
interpolatedString | .str | لا شيء (شمل روبي جوهر) | فريق الميل |
erubi | .erb ، .rhtml ، .erubi | erubi | مجتمع |
erubis | .erb ، .rhtml ، .erubis | erubis | فريق الميل |
هامل | .haml | هامل | فريق الميل |
ساس | قاس | sass-embedded (> = 1.0) أو Sassc (> = 2.0) | فريق الميل |
SCSS | .SCSS | sass-embedded (> = 1.0) أو Sassc (> = 2.0) | فريق الميل |
باني | .builder | باني | فريق الميل |
سائل | . السائل | سائل | مجتمع |
rdiscount | .markdown ، .mkd ، .md | rdiscount | مجتمع |
redcarpet | .markdown ، .mkd ، .md | redcarpet | مجتمع |
كرامداون | .markdown ، .mkd ، .md | كرامداون | مجتمع |
باندوك | .markdown ، .mkd ، .md | باندوك | مجتمع |
إعادة هيكلة النص | .rst | باندوك | مجتمع |
ماروكو | .markdown ، .mkd ، .md | ماروكو | مجتمع |
Sombormarker | .markdown ، .mkd ، .md | Sombormarker | مجتمع |
Redcloth | .Textile | Redcloth | مجتمع |
RDOC | .rdoc | RDOC | فريق الميل |
دائرة نصف قطرها | . راديوس | دائرة نصف قطرها | مجتمع |
ماركابي | .mab | ماركابي | فريق الميل |
نوكوجيري | .nokogiri | نوكوجيري | مجتمع |
Coffescript | .قهوة | Coffee-Scriper (+ JavaScript) | فريق الميل |
Coffescript (القراءة والكتابة) | .litcoffee | Coffee-Scriper (> = 1.5.0) (+ JavaScript) | فريق الميل |
Livescript | .ls | LiveScript (+ JavaScript) | فريق الميل |
TypeScript | .ts | TypeScript (+ JavaScript) | فريق الميل |
Creole (Wiki Markup) | .wiki ، | كريول | مجتمع |
Wikicloth (Wiki Markup) | .wiki ، mediawiki ، | wikicloth | مجتمع |
yajl | . yajl | yajl-ruby | مجتمع |
CSV | .rcsv | لا شيء (شملت روبي ستيدليب) | فريق الميل |
الروبيان | .PRAWN | روبيان (> = 2.0.0) | مجتمع |
بابل | .es6 ، .babel ، .jsx | بابل-ترانسبيلر | فريق الميل |
أوبال | .rb | أوبال | مجتمع |
كل محرك قالب مدعوم لديه مشرف . لاحظ أن هذا هو المشرف على تكامل الميل ، وليس مشرف محرك القالب نفسه. المدعى عليه مسؤول عن توفير تكامل مناسب والحفاظ على التوافق مع الإقامة عبر إصدار الميل. يتم الحفاظ على بعض التكامل من قبل المجتمع ، الذي يتم التعامل معه بالطريقة التالية:
تشحن محركات القالب هذه مع تكامل الميل الخاص بها:
محرك | ملحقات الملف | المكتبات المطلوبة |
---|---|---|
نحيل | .نحيل | نحيف (> = 0.7) |
JavaScript المدمجة | Sprockets | |
قهوة مدمجة | Sprockets | |
JST | Sprockets | |
وضع ORG | .org | org-ruby (> = 0.6.2) |
emacs org | .org | Tilt-EMACS_ORG |
المقاود | .hbs ، المقاود | أشرطة الإمالة |
jbuilder | .jbuilder | Tilt-Jbuilder |
انظر Templates.md للحصول على معلومات مفصلة عن خيارات المحرك القالب والميزات المدعومة.
الإشباع الفوري:
require 'erb'
require 'tilt'
template = Tilt . new ( 'templates/foo.erb' )
=> #<Tilt::ERBTemplate @file="templates/foo.erb" ...>
output = template . render
=> "Hello world!"
يوصى بأن تتطلب برامج الاتصال صراحة مكتبات محركات القالب (مثل "erb" أعلاه) في وقت التحميل. تتطلب محاولات الميل إلى Lazy مكتبة محرك القالب في المرة الأولى التي يتم فيها إنشاء قالب ولكن هذا عرضة للخطأ في البيئات المتصلة.
تحتوي الوحدة النمطية {tilt} على فئات تنفيذ عام لجميع محركات القالب المدعومة. تلتزم كل فئة من فئة القالب بنفس الواجهة لإنشاء وتقديم. في مثال الإرضاء الفوري ، ندع الإمالة تحديد فئة تنفيذ القالب بناءً على اسم الملف ، ولكن يمكن أيضًا استخدام تطبيقات {tilt :: template} مباشرة:
require 'tilt/haml'
template = Tilt :: HamlTemplate . new ( 'templates/foo.haml' )
output = template . render
تأخذ طريقة render
نطاق تقييم اختياري ووسائط تجزئة السكان المحليين. هنا ، يتم تقييم القالب في سياق كائن Person
مع السكان المحليين x
و y
:
require 'tilt/erb'
template = Tilt :: ERBTemplate . new ( 'templates/foo.erb' )
joe = Person . find ( 'joe' )
output = template . render ( joe , :x => 35 , :y => 42 )
إذا لم يتم توفير نطاق ، يتم تقييم القالب في سياق كائن تم إنشاؤه باستخدام Object.new
.
قد يتم استدعاء طريقة render
مثيل واحد في Template
عدة مرات مع وجود وسائط مختلفة للنطاق والسكان المحليين. مع الاستمرار في المثال السابق ، نقدم نفس القالب المترجم ولكن هذه المرة في نطاق جين:
jane = Person . find ( 'jane' )
output = template . render ( jane , :x => 22 , :y => nil )
يمكن تمرير الكتل render
قوالب تدعم تشغيل رمز الياقوت التعسفي (عادةً مع شكل من أشكال yield
). على سبيل المثال ، على افتراض ما يلي في foo.erb
:
Hey <%= yield %>!
يتم استدعاء الكتلة التي تم تمريرها render
على yield
:
template = Tilt :: ERBTemplate . new ( 'foo.erb' )
template . render { 'Joe' }
# => "Hey Joe!"
تتضمن فئة {Tilt :: Mapping} طرقًا لربط فئات تنفيذ القالب مع أنماط اسم الملف وللطبقات تحديد موقع القالب على أساس تلك الجمعيات.
تحتوي وحدة {tilt} على مثيل عالمي من Mapping
يتم ملؤه مع جدول محركات القالب أعلاه.
تربط الطريقة {tilt.register} نمط اسم الملف مع تطبيق قالب معين. لاستخدام ERB للملفات التي تنتهي في امتداد .bar
:
>> Tilt . register Tilt :: ERBTemplate , 'bar'
>> Tilt . new ( 'views/foo.bar' )
=> #<Tilt::ERBTemplate @file="views/foo.bar" ...>
استرداد فئة القالب لملف أو ملحق الملف:
>> Tilt [ 'foo.bar' ]
=> Tilt :: ERBTemplate
>> Tilt [ 'haml' ]
=> Tilt :: HamlTemplate
استرداد قائمة فئات القالب بملف:
>> Tilt . templates_for ( 'foo.bar' )
=> [ Tilt :: ERBTemplate ]
>> Tilt . templates_for ( 'foo.haml.bar' )
=> [ Tilt :: ERBTemplate , Tilt :: HamlTemplate ]
يتم تحديد فئة القالب من خلال البحث عن سلسلة من أنماط الأسماء المحددة بشكل متورط. عند إنشاء قالب جديد باستخدام Tilt.new('views/foo.html.erb')
، نتحقق من تعيينات القالب التالية:
views/foo.html.erb
foo.html.erb
html.erb
erb
يحتاج الميل إلى معرفة ترميز القالب من أجل العمل بشكل صحيح:
سوف تستخدم TILT Encoding.default_external
مثل الترميز عند قراءة الملفات الخارجية. إذا كنت تعمل في الغالب مع ترميز واحد (على سبيل المثال UTF-8) ، نوصي بشدة بتعيين هذا الخيار. عند توفير كتلة قارئ مخصصة ( Tilt.new { custom_string }
) ، ستحصل على التأكد من ترميز السلسلة بنفسك بشكل صحيح.
تتيح لك معظم محركات القالب في الميل أيضًا تجاوز الترميز باستخدام :default_encoding
-ption:
tmpl = Tilt . new ( 'hello.erb' , :default_encoding => 'Big5' )
في نهاية المطاف ، الأمر متروك لمحرك القالب كيفية التعامل مع الترميز: قد يحترم :default_encoding
، قد يفترض دائمًا أنه UTF-8 (مثل Coffescript) ، أو يمكنه القيام باكتشاف الترميز الخاص به.
تم تجميع الإمالة التي تم إنشاؤها من رمز مصدر الياقوت الناتج عن محركات القالب ويعيد استخدامه على دعوات القالب اللاحقة. تُظهر المعايير أن هذا يؤدي إلى زيادة أداء 5x-10x عن تقييم مصدر الياقوت في كل استدعاء.
يتم دعم تجميع القالب حاليًا لمحركات القالب: StringTemplate و ERB و Erubis و Erubi و Haml و Nokogiri و Builder و Yajl.
Tilt هو حقوق الطبع والنشر (C) 2010 Ryan Tomayko وتم توزيعها بموجب ترخيص MIT. انظر ملف COPYING
لمزيد من المعلومات.