WPWMM4 (1) - صفحة ويب مع Make و M4 - إنشاء صفحات ويب ثابتة
بسيطة استخدم الأمر جعل. Makefile متوافق مع FreeBSD's و Netbsd's Make. على Linux يجب تثبيت حزمة Bmake .
مع WPWMM4 يمكنه إنشاء صفحات ويب ثابتة من ملفات M4 . يتم التوليد عن طريق صنع . يمكنك استخدام البرامج النصية أو الأوامر الخارجية.
يجب عليك إنشاء ملف config.mk في دليل وتعيين المتغيرات التالية داخل هذا الملف. يمكنك استخدام . في your config.mk بالطبع.
Common_dir : حيث 00_defines.m4 هو. عادة هو نفس الدليل مثل Makefile .
include_dir : الدليل الذي يتضمنه المستخدم M4 . إنه بالنسبة إلى دليل المصدر الرئيسي.
SRC_DIR : يشير هذا المتغير إلى دليل المصدر حيث تكون الملفات المصدر (عادة *.m4 ). يمكن أن تحتوي على الدلائل الفرعية.
Assets_dir : في هذا الدليل ، توجد الملفات الثابتة ( * .css ، * .js ، إلخ).
Assets_dest_dir : الدليل المستهدف للملفات الثابتة. إذا كنت تريد داخل $ {dest_dir} يجب تضمينه في هذا المتغير.
Assets_cp : الأمر الذي سيقوم بنسخ $ {alctets_dir} . الافتراضي هو cp -r .
DEST_DIR : مكان HTML المترجم (تم إنشاؤه). تم إنشاء شجرة الدليل الفرعي لـ $ {src_dir} في هذا الدليل عن طريق Make .
flag_dir : الدليل حيث تكون الأعلام. الأعلام هي ملفات بسيطة تخزن معلومات حول البناء. لا يوجد سوى علامة واحدة: $ {flag_mkdir} التي توقيع على الوقت الذي يتم فيه إنشاء هيكل الدليل في $ {dest_dir} ويخزن قائمة الدلائل التي تم إنشاؤها. يمكنك إضافة Plus تعتمد عبر $ {mkdir_req} - لذلك يمكنك إعادة بناء بنية الدليل بعد تغيير هذا الملف.
layout_dir : إليك التخطيطات.
Virt_dir : يحتوي هذا الدليل على قوالب الصفحات الافتراضية.
الأهداف : قائمة الملفات الثابتة للمساحة (الصفحات الافتراضية غير متضمنة) ما الذي يجب إنشاؤه. لا تتضمن $ {dest_dir} لأنه يتم تضمينه بواسطة نظام البناء. يمكنك استخدام الدلائل بالطبع. متطلباته الآلية هو نفس الملف في $ {src_dir} استبدال امتداد HTML إلى امتداد M4 .
Targets_Manual : قائمة الملفات الثابتة للمساحة ما يجب أن تنشئ. لا تتضمن $ {dest_dir} لأنه يتم تضمينه بواسطة نظام البناء. لا تحتوي هذه الأهداف تلقائيًا على متطلبات $ {الأهداف} أعلاه.
GREQ : المتطلبات العالمية. هناك حاجة إليها من قبل كل هدف. الافتراضي فارغ.
foo.html_req : متطلبات إضافية لـ foo.html التي يتم تضمينها في المتغير $ {targets} (انظر أعلاه). تتم إضافة foo.m4 تلقائيًا. هذه المتغيرات اختيارية.
M4 : أمر M4 . في معظم الحالات ، يمكن تعيين ببساطة على M4 (في المسار ). هذا المتغير اختياري ، القيمة الافتراضية هي M4
M4_Params : معلمات أمر M4 . القيمة الافتراضية هي -P -i تتضمن -d_src_dir = $ {src_dir} . يرجى ملاحظة أن الخيار -P ضروري لأننا نستخدم وحدات الماكرو المصممة مع بادئة M4_ .
يتم إنشاء المتغيرات التالية ديناميكيًا أثناء المبنى ويمكنك استخدامها في مصادر M4 والقوالب.
_directory : الدليل الهدف داخل $ {dest_dir} (بدون بادئة $ {dest_dir} ). جذر $ {dest_dir} هو "." (نقطة).
_file : اسم الملف المستهدف الذي يخضع لتوليد (بدون أي تمديد).
يشحن النظام بعض المساعدين الذين يمكنك استخدامه في ملفاتك. يتم تعريفها في 00_defines.m4 . هنا قائمة المساعدين:
_body (المحتوى ، الخيارات) : ينتج <Body $ Options> $ content </body> .
_charset (charset) : تنتج <meta charset = "$ charset"> .
_class (class1 ، class2 ، ...) : تنتج class = "$ class1 $ class2 ..." .
_css (cssfile) : تنتج <link rel = "stylesheet" href = $ cssfile> .
_div (الفئة ، المحتوى ، الخيارات) : ينتج <div class = $ class $ Options> $ content </iv> .
_head (الخيارات ، المحتوى) : ينتج <Head $ Options> $ content </head> .
_href (عنوان URL ، النص ، الخيارات ، العنوان) : ينتج <a href = $ url $ title = $ title> text </a> .
_meta (المعلمات) : تنتج <meta $ parameters> .
_OL (المعلمات) : تنتج قائمة مرتبة <ol> <li> $ 1 </li> <li> $ 2 </li> ... </ol> . يمكنك تحديد العناصر في قائمة المعلمات ، مفصولة بواسطة الفاصلة. كن حذرا بشأن الاقتباس!
_stag (tagname ، المعلمات) : تنتج <$ tagname $ parameters> .
_TAG (TAGNAME ، المحتوى ، الخيارات) : ينتج <$ tagname $ Options> $ content </$ tagname> .
_title (العنوان ، الخيارات) : ينتج <Title $ Options> $ title </title> .
_ul (المعلمات) : مثل _ol .
الصفحات الافتراضية ليس لها ملفات المصدر (M4). من المفيد عندما تريد إنشاء صفحات مماثلة مع محتوى مماثل (على سبيل المثال قائمة ملفات PDF ، وسرد الصور ، ...).
يجب عليك إنشاء مجموعات من الافتراضات (يمكنك إضافة واحدة فقط إلى مجموعة). يمكنك القيام بذلك مع المتغيرات التالية:
الافتراضات : يحتوي على اسم الفئات. على سبيل المثال الظاهريين = CAT1 CAT2 . يتم فصل الفئات بواسطة حرف فضاء.
VirtualTemplate_* : يمكنك تعيين (على سبيل المثال أعلاه) VirtualTemplate_Cat1 و VirtualTemplate_Cat2 متغيرات. تقول قيمهم أي قالب يجب أن يستخدم لإنشاء الصفحات الافتراضية. يتم تخزين القوالب في دليل Virt_dir . في ملفات القالب الخاصة بك ، يمكنك استخدام المتغيرات التي تم إنشاؤها ديناميكيًا ، راجع [المتغيرات داخل المصادر] [] القسم أدناه.
VirtualDir_* : يشير هذا المتغير إلى الدليل الهدف حيث يجب أن تظهر الصفحات التي تم إنشاؤها. يجب عليك تعيين كل فئة ، لذلك يجب عليك تعيين VirtualDir_Cat1 و VirtualDir_Cat2 أيضًا.
VirtualOut_* : أسماء ملفات الإخراج. على سبيل المثال virtual_cat1 = foo1.html foo2.html . في هذه الحالة ، سيكون لديك $ {virtualdir_cat1} /foo1.html و $ {virtualdir_cat1} /foo2.html .
VirtualReq_* : متطلبات إضافية للفئة الافتراضية. تتم إضافة $ {VirtualTemplate _*}. M4 تلقائيًا.
VirtualReqRule_* : قاعدة تحويل بسيطة لتحديد متطلبات حسب الملف. يتم تطبيق قاعدة التحويل على عناصر متغيرات $ {VirtualOut_*} . على سبيل المثال VirtualReq_foo = c ، .html ، .dat ، ستحول القاعدة كل امتداد .html إلى امتداد .DAT : يعتمد $ {destdir} /foodir/bar.html على ملف foodir/bar.dat . يرجى ملاحظة أن قيمة ** $ {VirtualDir_*} غير مضمنة تلقائيًا ، لذا إذا كنت تريد ذلك ، فيجب عليك القيام بذلك! كن حذرا بشأن التبعيات العودية! انظر المعدلات المحتملة في دليل صنع (1) !
يمكنك تحديد السنانير التي تعمل في حدث محدد. يمكنك استخدام الماكرو $ {. Target} في التعريف لأن Make سيوسع هذا المتغير عند الحاجة (وليس في التعريف). إذا كنت لا تريد عرض ، يجب أن يكون الأمر بادئة مع @ علامة.
hook_pre_html : يتم تشغيله قبل إنشاء ملف HTML من ملف M4 . القيمة الافتراضية هي $ {msg1} بناء $ {. Target} .
hook_post_html : يتم تشغيله بعد إنشاء ملف HTML من ملف M4 . القيمة الافتراضية فارغة. هذا الخطاف مفيد على سبيل المثال إذا كنت تريد التحقق من صحة ملف HTML (على سبيل المثال مع TIDY ، راجع http://www.html-tidy.org/).
hook_pre_vhtml : يتم تشغيله قبل إنشاء ملف HTML من القالب الظاهري (انظر [Virtuals] [] أعلاه). القيمة الافتراضية هي $ {msg1} بناء $ {. target} .
hook_post_vhtml : يتم تشغيله بعد إنشاء ملف HTML من القالب الظاهري. القيمة الافتراضية فارغة.
يمكنك تحديد بعض الأهداف الخاصة في ** config.mk '.
قبل كل شيء : سيتم تنفيذ هذا الهدف قبل أي هدف آخر (باستثناء نظيف بالطبع). على سبيل المثال ، يمكنك تشغيل برنامج نصي يقوم بإنشاء بعض الملفات ، حتى ملف ما هو مستخدم في WPWMM4. باستخدام هذا الهدف ، يمكن أن يحاكي ميزة العلامات (باستخدام ميزة [Virtuals] []). هناك فكرة أخرى وهي إنشاء متغير $ {Targets} (مع الأمر Find ).
Clean-Love : عند تشغيل Target Clean (الذي يحذف كل شيء في دليل $ {dest_dir} ) سيتم تشغيله أيضًا.
هناك بعض الأهداف الخاصة للمساعدة في تصحيح التكوين الخاص بك.
show-config : إظهار المتغيرات الرئيسية.
Show-Hooks : أظهر الخطافات.
أهداف العرض : إظهار الأهداف (بما في ذلك الأهداف الافتراضية).
Show-Req : أظهر الأهداف بمتطلباتها. يبدأ الهدف خطًا بدون أي مساحة بيضاء ، يتم تسبق المتطلبات من خلال مساحتين. بين المتطلبات الأخيرة والهدف التالي هو خط فارغ تم إدخاله.
عرضات العرض : سيعرض هذا الهدف الظاهري المحدد وتكويناتها.
هناك بعض المتغيرات التي يمكنك استخدامها وضبطها في ملفات M4 الخاصة بك.
هناك بعض الأوامر التي يمكن أن تساعد. يتم تعريفها في 00_defines.m4 . ها هي القائمة:
_script (الأمر) : تنفيذ أمر $ والصق إخراجه ( stdout و stderr أيضا). ويستخدم M4 's esyscmd ماكرو.
_layout (التصميم ، varname1 ، var1 ، varname2 ، var2 ، ...) : تحميل تخطيط تخطيط $ . ويستخدم M4 تشمل الماكرو. يمكنك تحديد تخطيط صفحة الويب في بداية الملف المصدر. سيقوم هذا الأمر بتعيين المتغيرات varname1 ، varname2 ، ... مع القيم var1 ، var2 .
_layout_pre (pre) : تتم طباعة $ pre قبل المحتوى المضمّن.
_layout_post (post) : تتم طباعة منشور $ بعد المحتوى المضمّن.
_incl (ملف) : يتضمن ملف $ . التحويل هو -1 لذا لا ينتج هذا الماكرو أي إخراج. إنه مثالي لتحميل ملف مع تعريفات الماكرو.
_2_body (نص) : سوف يكون نص $ في علامة الجسم. يقوم هذا الماكرو بجمع جميع المدخلات ولا يطبع أي شيء. مع _PR_BODY يمكنه طباعة (ومسح) المحتوى.
_2_head (نص) : مثل _2_body ولكنه يجمع في علامة الرأس .
_PR_Body : طباعة وإعادة ضبط المحتوى الذي تم جمعه بواسطة _2_body . إنه ماكرو بسيط .
_PR_HEAD : مشابه مثل _PR_BODY .
_PR_ALL : يطبع <! doctype html> <html lang = "lang" ، والمكالمات _pr_head و _pr_body وبعد إغلاق علامة HTML .
config.mk
مثال تم إنشاؤه هو صفحتي الرئيسية (باللغة الهنغارية): http://uzsolt.hu/ وملفها المصدر في https://svn.uzsolt.hu/uzsolt.hu/wpwmm4-uzsolt.hu/ و github mirror : https://github.com/uzsolt/wpwmm4-uzsolt.hu.
إنه مثال معقد بسيط ولكنه يوضح قوة WPWMM4 :)
M4 (1) ، جعل (1)
Zsolt Udvari ([email protected] ، www.uzsolt.hu)