WPWMM4 (1) - Halaman web dengan Make dan M4 - Hasilkan Halaman Web Statis
Sederhana Gunakan perintah Make. Makefile kompatibel dengan Make Freebsd dan NetBSD. Di Linux harus menginstal paket BMake .
Dengan WPWMM4 dapat membuat halaman web statis dari file M4 . Pembangkit dilakukan dengan membuat . Anda dapat menggunakan skrip atau perintah eksternal.
Anda harus membuat file config.mk di direktori dan mengatur variabel berikut di dalam file ini. Anda dapat menggunakan . Termasuk di config.mk Anda tentu saja.
Common_dir : Di mana 00_defines.m4 berada. Umumnya adalah direktori yang sama dengan Makefile .
Sertakan_dir : Direktori tempat berbasis pengguna termasuk M4 . Ini relatif terhadap direktori sumber utama.
SRC_DIR : Variabel ini menunjuk ke direktori sumber di mana file sumber (biasanya *.m4 ) berada. Ini dapat berisi subdirektori.
Assets_dir : Di direktori ini adalah file statis ( * .css , * .js , dll.).
Assets_dest_dir : Direktori target file statis. Jika Anda ingin di dalam $ {dest_dir} harus memasukkannya ke dalam variabel ini.
Assets_cp : Perintah yang akan menyalin $ {assets_dir} . Default adalah @cp -r .
DEST_DIR : Tempat HTML yang dikompilasi (dibuat). Pohon subdirektori $ {src_dir} dibuat di direktori ini dengan membuat .
Flag_dir : Direktori tempat bendera berada. Bendera adalah file sederhana yang menyimpan informasi tentang membangun. Hanya ada satu bendera: $ {flag_mkdir} yang menandatangani waktu ketika struktur direktori dibuat dalam $ {dest_dir} dan menyimpan daftar direktori yang dibuat. Anda dapat menambahkan Plus tergantung melalui $ {mkdir_req} - sehingga dapat membangun kembali struktur direktori setelah file ini diubah.
Layout_dir : Ini tata letaknya.
Virt_dir : Direktori ini berisi templat halaman virtual.
Target : Daftar file statis yang ditetapkan ruang (halaman virtual tidak termasuk) apa yang harus dibuat. Jangan sertakan $ {dest_dir} karena disertakan oleh sistem bangunan. Anda dapat menggunakan direktori tentu saja. Persyaratan otomatisnya adalah file yang sama di $ {src_dir} menggantikan ekstensi HTML ke ekstensi M4 .
Targets_manual : Daftar file statis yang ditetapkan ruang yang harus dibuat. Jangan sertakan $ {dest_dir} karena disertakan oleh sistem bangunan. Target -target ini tidak memiliki persyaratan yang secara otomatis menghasilkan sebagai $ {target} di atas.
GREQ : Persyaratan Global. Itu dibutuhkan oleh setiap target. Default kosong.
foo.html_req : Persyaratan tambahan foo.html yang termasuk dalam variabel $ {target} (lihat di atas). FOO.M4 ditambahkan secara otomatis. Variabel -variabel ini opsional.
M4 : Perintah M4 . Dalam kebanyakan kasus dapat diatur hanya ke M4 (di jalur ). Variabel ini opsional, nilai default adalah M4
M4_PARAMS : Parameter perintah M4 . Nilai default adalah -p -i termasuk -d_src_dir = $ {src_dir} . Harap perhatikan bahwa opsi -p tidak perlu karena kami menggunakan makro builtin dengan awalan M4_ .
Variabel berikut dibuat secara dinamis selama bangunan dan Anda dapat menggunakannya di sumber dan templat M4 Anda.
_Directory : Direktori target di dalam $ {dest_dir} (tanpa $ {dest_dir} awalan). Akar $ {dest_dir} adalah "." (dot).
_File : Nama file target yang sedang dalam pembangkit (tanpa ekstensi apa pun).
Sistem mengirimkan beberapa pembantu yang dapat Anda gunakan dalam file Anda. Mereka didefinisikan dalam 00_defines.m4 . Berikut adalah daftar pembantu:
_Body (konten, opsi) : Menghasilkan <body $ options> $ content </body> .
_Charset (charset) : Menghasilkan <meta charset = "$ charset"> .
_Class (class1, class2, ...) : menghasilkan class = "$ class1 $ class2 ..." .
_CSS (cssfile) : Menghasilkan <tautan rel = "stylesheet" href = $ cssfile> .
_DIV (Kelas, Konten, Opsi) : Menghasilkan <Div class = $ class $ options> $ Content </div> .
_Head (Opsi, konten) : Menghasilkan <head $ options> $ Content </head> .
_Href (url, teks, opsi, judul) : menghasilkan <a href = $ url $ options title = $ title> teks </a> .
_Meta (parameter) : Menghasilkan <meta $ parameter> .
_OL (parameter) : Menghasilkan daftar yang dipesan <Ol> <li> $ 1 </li> <li> $ 2 </li> ... </ol> . Anda dapat menentukan item dalam daftar parameter, dipisahkan oleh koma. Berhati -hatilah tentang mengutip!
_Stag (tagName, parameter) : Menghasilkan <$ tagname $ parameter> .
_Tag (tagname, konten, opsi) : Memproduksi <$ tagname $ options> $ content </$ tagname> .
_Title (judul, opsi) : Menghasilkan <title $ options> $ title </iteme> .
_UL (parameter) : Sama seperti _ol .
Halaman virtual tidak memiliki sumber (M4) file. Ini berguna ketika Anda ingin membuat halaman serupa dengan konten serupa (misalnya daftar file PDF, daftar gambar, ...).
Anda harus membuat grup virtual (Anda hanya dapat menambahkan satu virtual ke grup). Anda dapat melakukannya dengan variabel berikut:
Virtual : Berisi nama kategori. Misalnya virtual = cat1 cat2 . Kategori dipisahkan oleh karakter ruang.
VirtualTemplate_* : Anda dapat mengatur (mengikuti contoh di atas) variabel virtualtemplate_cat1 dan virtualtemplate_cat2 . Nilai -nilai mereka mengatakan template mana yang harus digunakan untuk menghasilkan halaman virtual. Templat disimpan dalam direktori VIRT_DIR . Dalam file template Anda, Anda dapat menggunakan variabel yang dibuat secara dinamis, lihat [variabel di dalam sumber] [] Bagian di bawah ini.
VirtualDir_* : Variabel ini menunjuk ke direktori target di mana halaman yang dihasilkan akan muncul. Anda harus mengatur setiap kategori, jadi Anda harus mengatur virtualdir_cat1 dan virtualdir_cat2 juga.
VirtualOut_* : Nama file output. Misalnya virtual_cat1 = foo1.html foo2.html . Dalam hal ini Anda akan memiliki $ {virtualdir_cat1} /foo1.html dan $ {virtualdir_cat1} /foo2.html .
Virtualreq_* : Persyaratan tambahan untuk kategori virtual. $ {VirtualTemplate _*}. M4 ditambahkan secara otomatis.
Virtualreqrule_* : aturan transformasi sederhana untuk menentukan persyaratan dengan file. Aturan transformasi diterapkan pada elemen variabel $ {virtualout_*} . Misalnya virtualreq_foo = c, .html, .dat, aturan akan mengubah setiap ekstensi .html menjadi ekstensi .dat : $ {destdir} /foodir/bar.html akan tergantung pada file foodir/bar.dat . Harap dicatat bahwa nilai ** $ {VirtualDir_*} tidak termasuk secara otomatis jadi jika Anda menginginkannya, Anda harus melakukannya! Berhati -hatilah dengan ketergantungan rekursif! Lihat kemungkinan pengubah dalam manual Make (1) !
Anda dapat mendefinisikan kait yang berjalan pada acara tertentu. Anda dapat menggunakan makro $ {. Target} dalam definisi karena Make akan memperluas variabel ini saat dibutuhkan (dan bukan dalam definisi). Jika Anda tidak ingin melihat perintah harus awalan dengan @ tanda.
Hook_pre_html : Ini berjalan sebelum menghasilkan file HTML dari file M4 . Nilai default adalah $ {msg1} membangun $ {. Target} .
Hook_post_html : Ini berjalan setelah menghasilkan file HTML dari file M4 . Nilai default kosong. Kait ini berguna misalnya jika Anda ingin memeriksa validitas file html (misalnya dengan rapi, lihat http://www.html-tidy.org/).
Hook_pre_vhtml : Ini berjalan sebelum menghasilkan file html dari template virtual (lihat [virtual] [] di atas). Nilai default adalah $ {msg1} membangun virtual $ {. Target} .
Hook_post_vhtml : Ini berjalan setelah menghasilkan file html dari template virtual. Nilai default kosong.
Anda dapat menentukan beberapa target khusus di ** config.mk 'Anda.
Pre-Everything : Target ini akan mengeksekusi sebelum target lainnya (kecuali bersih tentu saja). Misalnya Anda dapat menjalankan skrip yang membuat beberapa file, bahkan file yang digunakan di WPWMM4. Dengan target ini dapat meniru fitur tag (menggunakan fitur [virtual] []). Gagasan lain secara otomatis menghasilkan variabel $ {target} (dengan perintah temukan ).
Bersih-lain : Saat Anda menjalankan target bersih (yang menghapus semuanya dalam direktori $ {dest_dir} ) itu akan berjalan juga.
Ada beberapa target khusus untuk membantu men -debug konfigurasi Anda.
Show-Config : Tampilkan variabel utama.
Show-Hooks : Tampilkan kait.
Show-Target : Tampilkan target (termasuk target virtual).
Show-Req : Tunjukkan target dengan persyaratan mereka. Target memulai garis tanpa spasi putih, persyaratan diawali dengan dua ruang. Antara persyaratan terbaru dan target berikutnya adalah garis kosong yang dimasukkan.
Show-Virtual : Target ini akan menampilkan virtual yang ditentukan dan konfigurasi mereka.
Ada beberapa variabel yang dapat Anda gunakan dan atur dalam file M4 Anda.
Ada beberapa perintah yang dapat membantu. Mereka didefinisikan dalam 00_defines.m4 . Inilah daftarnya:
_Script (Command) : mengeksekusi $ perintah dan menempelkan outputnya ( stdout dan stderr juga). Ini menggunakan makro Esyscmd M4 .
_Layout (tata letak, varname1, var1, varname2, var2, ...) : Muat tata letak tata letak $ . Menggunakan M4 termasuk makro. Anda dapat menentukan tata letak halaman web di awal file sumber. Perintah ini akan menetapkan variabel varname1 , varname2 , ... dengan nilai var1 , var2 .
_Layout_pre (pra) : $ pre dicetak sebelum konten yang disertakan.
_Layout_post (post) : Posting $ dicetak setelah konten yang disertakan.
_Incl (file) : Termasuk file $ . Divert adalah -1 jadi makro ini tidak menghasilkan output apa pun. Sangat ideal untuk memuat file dengan definisi makro.
_2_body (teks) : Teks $ akan masuk ke tag tubuh. Makro ini mengumpulkan semua input dan tidak mencetak apa pun. Dengan _pr_body dapat mencetak (dan menghapus) konten.
_2_head (teks) : Sama seperti _2_body tetapi dikumpulkan ke dalam tag kepala .
_Pr_body : Cetak dan atur ulang konten yang dikumpulkan oleh _2_body . Ini adalah makro undivert sederhana.
_Pr_head : mirip dengan _pr_body .
_Pr_all : Cetak <! Doctype html> <html lang = "lang"> , panggilan _pr_head dan _pr_body dan setelah itu menutup tag HTML .
config.mk
Contoh yang dihasilkan adalah beranda pribadi saya (dalam bahasa Hongaria): http://uzsolt.hu/ dan file sumbernya ada di https://svn.uzsolt.hu/uzsolt.hu/wpwmm4-uzsolt.hu/ dan cermin github github : https://github.com/uzsolt/wpwmm4-uzsolt.hu.
Ini adalah contoh rumit yang sederhana tetapi menunjukkan kekuatan wpwmm4 :)
M4 (1), buat (1)
Zsolt udvari ([email protected], www.uzsolt.hu)