ວິກິພີເດຍ
lowiki
https://lo.wikipedia.org/wiki/%E0%BB%9C%E0%BB%89%E0%BA%B2%E0%BA%AB%E0%BA%BC%E0%BA%B1%E0%BA%81
MediaWiki 1.47.0-wmf.12
first-letter
ສື່
ພິເສດ
ສົນທະນາ
ຜູ້ໃຊ້
ສົນທະນາຂອງຜູ້ໃຊ້
ວິກິພີເດຍ
ສົນທະນາກ່ຽວກັບວິກິພີເດຍ
ຮູບ
ສົນທະນາກ່ຽວກັບຮູບ
ມີເດຍວິກິ
ສົນທະນາກ່ຽວກັບມີເດຍວິກິ
ແມ່ແບບ
ສົນທະນາກ່ຽວກັບແມ່ແບບ
ຊ່ວຍເຫຼືອ
ສົນທະນາກ່ຽວກັບຊ່ວຍເຫຼືອ
ໝວດ
ສົນທະນາກ່ຽວກັບໝວດ
TimedText
TimedText talk
Module
Module talk
Event
Event talk
ກະສິກຳ
0
1797
129334
128307
2026-07-24T04:38:44Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:2|0|0 */
129334
wikitext
text/x-wiki
[[ຮູບ:Tomb_of_Nakht_(2).jpg|right|thumb]]
'''ດ້ານກະສິກຳ'''
ໂດຍຖືເອົາ ວຽກງານກະສິກຳ-ປ່າໄມ້ ເປັນພື້ນຖານ ເພື່ອກໍ່ສ້າງ ແລະ ຂະຫຍາຍອຸດສາຫະກຳ, ໃນຕະຫລອດໄລຍະ 30 ປີຜ່ານມາ ), ຂະແຫນງດັ່ງກ່າວ ໄດ້ມີການຂະຫຍາຍຕົວຢ່າງຕໍ່ເນື່ອງ ລວມຍອດຜະລິດຕະພັນ ກະສິກຳ-ປ່າໄມ້ ເພີ່ມຂຶ້ນ ປະມານ 4-5% ຕໍ່ປີ, ມາຮອດປະຈຸບັນ ກວມເອົາ 52% ຂອງ GDP ໃນນັ້ນຂະແຫນງປູກຝັງ ກວມປະມານ 27%, ລ້ຽງສັດ 19% ແລະ ປ່າໄມ້ 6%.
ອັນພົ້ນເດັ່ນລັດຖະບານໄດ້ສຸມທຶນຮອນ ເຂົ້າໃສ່ການກໍ່ສ້າງພື້ນຖານໂຄງລ່າງ ຮັບໃຊ້ແກ່ [[ການຜະລິດ]] ກະສິກຳ ເປັນຕົ້ນແມ່ນ ລະບົບຊົນລະປະທານ ຊຶ່ງມາຮອດປະຈຸບັນ ມີເຖິງ 24.695 ແຫ່ງ, ສາມາດສະຫນອງນ້ຳໃຫ້ແກ່ການຜະລິດລະດູແລ້ງ 215.000 ເຮັກຕາ, ທຽບໃສ່ປີ 1976 ມີເນື້ອທີ່ການຜະລິດລະດູແລ້ງ ທີ່ໄດ້ຮັບນ້ຳຈາກລະບົບຊົນລະປະທານພຽງ 2.700 ກວ່າເຮັກຕາ. ພ້ອມກັນນີ້ ກໍໄດ້ສ້າງສະຖາບັນຄົ້ນຄວ້າກະສິກຳ ແລະ [[ປ່າໄມ້]]ຂຶ້ນ ເຊິ່ງເຄື່ອຂ່າຍປະກອບ ມີ 10 ສູນ, 8 ສະຖານີ ແລະ 1 ໂຮງງານຜະລິດຢາວັກຊິນ. ຈາກພື້ນຖານດັ່ງກ່າວເຮັດໃຫ້ຜົນຜະລິດເຂົ້າ ບັນລຸເຖິງ 2.600.000 ໂຕນ ໃນປີ 2005 ທຽບໃສ່ປີ 1976 ຜົນຜະລິດເຂົ້າໄດ້ພຽງ 660.000 ກວ່າໂຕນ. ນັບແຕ່ປີ 2000 ເປັນຕົ້ນມາ ສປປ [[ປະເທດລາວ|ລາວ]] ສາມາດມີເຂົ້າກຸ້ມກິນ ຢ່າງພຽງພໍ, ມີສ່ວນແຮໄວ້ ແລະ ຈຳນວນຫນຶ່ງໄດ້ກາຍເປັນສິນຄ້າ ສົ່ງອອກ, ຊຶ່ງບໍ່ເຄີຍມີມາຈັກເທື່ອໃນປະຫວັດສາດຂອງຊາດລາວ. ນອກຈາກປູກເຂົ້າແລ້ວຍັງໄດ້ປູກພືດ, ລ້ຽງສັດທັງໃນແບບອຸດສາຫະກຳ ແລະ ພື້ນບ້ານ ຊຶ່ງມີການຂະຫຍາຍຕົວຢ່າງຕໍ່ເນື່ອງ ໃນນັ້ນການລ້ຽງສັດເພີ່ມຂຶ້ນ ໃນລະດັບ 3% ຕໍ່ປີ, ລ້ຽງປາ ເພີ່ມຂຶ້ນໃນລະດັບ 15% ຕໍ່ປີ, ສາມາດແກ້ໄຂຄວາມຕ້ອງການຂອງ ຕະຫລາດພາຍໃນປະເທດໄດ້ໂດຍພື້ນຖານ ພ້ອມນີ້ກໍມີຫລາຍປະເພດໄດ້ກາຍເປັນສິນຄ້າສົ່ງອອກ ຊຶ່ງມາເຖິງປະຈຸບັນ ມີມູນຄ່າສົ່ງອອກ ປະມານ 70 ລ້ານໂດລາຕໍ່ປີ [https://www.neonics.co.th/] {{Webarchive|url=https://web.archive.org/web/20210419050359/https://www.neonics.co.th/ |date=2021-04-19 }}.
kqw7k9uxehnvaufccxza1ikwpc4ql2r
ພຸດທະສາສະໜາ
0
7372
129336
127812
2026-07-24T04:40:22Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:3|0|0 */
129336
wikitext
text/x-wiki
{{ກ່ອງຂໍ້ມູນ ສາສະໜາ
| ສາສະໜາ = ພຸດທະສາສະໜາ (Buddhism)
| ຮູບ = [[ໄຟລ໌:Dharmachakra.svg|120px|ທຳມະຈັກ ສັນຍະລັກແຫ່ງພຸດທະສາສະໜາ]]
| ຄຳອະທິບາຍຮູບ = ທຳມະຈັກ (Dharmachakra) ສັນຍະລັກຕົວແທນແຫ່ງກົງລໍ້ແຫ່ງພະທຳ
| ຜູ້ກໍ່ຕັ້ງ = [[ພະໂຄດົມພຸດທະເຈົ້າ]] (ພະສິດທັດຖະ ໂຄຕະມະ)
| ສະຖານທີ່ກໍ່ຕັ້ງ = ອິນເດຍບູຮານ (ບໍລິເວນປະເທດອິນເດຍ ແລະ ເນປານໃນປັດຈຸບັນ)
| ຊ່ວງເວລາ = ສະຕະວັດທີ 6 ກ່ອນຄິດສັກກະລາດ
| ຄຳສອນສຳຄັນ = [[ອະລິຍະສັດ 4]], [[ມັກມີອົງ 8]], [[ປະຕິຈະສະມຸບປາດ]]
| ຄຳພີສັກສິດ = [[ພະໄຕປິດົກ]] (Pali Canon / Tripitaka)
| ນິກາຍຫຼັກ = [[ເຖລະວາດ]], [[ມະຫາຍານ]], [[ວັດຊະລະຍານ]]
| ຜູ້ນັບຖື = ປະມານ 500 - 535 ລ້ານຄົນທົ່ວໂລກ (ປະມານ 7% ຂອງປະຊາກອນໂລກ)
}}
'''ພຸດທະສາສະໜາ''' ({{lang-en|Buddhism}}, {{lang-pi|Buddhasāsana}}) ແມ່ນສາສະໜາປະເພດ[[ອະເທວະນິຍົມ]] ຫຼື ສາສະໜາທີ່ບໍ່ເນັ້ນໜັກເຖິງການມີຢູ່ຂອງພະຜູ້ເປັນເຈົ້າສ້າງໂລກ. ສາສະໜານີ້ເກີດຂຶ້ນໃນ[[ອິນເດຍບູຮານ]] ປະມານສະຕະວັດທີ 6 ກ່ອນຄິດສັກກະລາດ ໂດຍມີ[[ພະໂຄດົມພຸດທະເຈົ້າ]] (ພະສິດທັດຖະ ໂຄຕະມະ) ເປັນຜູ້ກໍ່ຕັ້ງ ແລະ ປະກາດຫຼັກທຳຄຳສອນ<ref name="Harvey2013">Harvey, Peter (2013). ''An Introduction to Buddhism: Teachings, History and Practices'' (2nd ed.). Cambridge University Press. ISBN 978-0521676748.</ref>.
ຈຸດມຸ່ງໝາຍສູງສຸດຂອງພຸດທະສາສະໜາແມ່ນການຫຼຸດພົ້ນຈາກ[[ຄວາມທຸກ]] ແລະ ວົງຈອນການວຽນວ່າຍຕາຍເກີດ ([[ສັງສານວັດ]]) ໂດຍການບັນລຸ [[ນິບພານ]] ຜ່ານການຝຶກອົບຮົມຕົນເອງໃນເລື່ອງຂອງສິນ, ສະມາທິ ແລະ ປັນຍາ<ref name="Gombrich2006">Gombrich, Richard F. (2006). ''Theravāda Buddhism: A Social History from Ancient Benares to Modern Colombo''. Routledge. ISBN 978-0415365093.</ref>. ໃນປັດຈຸບັນ ພຸດທະສາສະໜາເປັນສາສະໜາທີ່ມີຜູ້ນັບຖືຫຼາຍເປັນອັນດັບທີ 4 ຂອງໂລກ ໂດຍມີຜູ້ນັບຖືສ່ວນໃຫຍ່ຢູ່ໃນທະວີບອາຊີ ເຊັ່ນ: ອາຊີຕາເວັນອອກ ແລະ ອາຊີຕາເວັນອອກສ່ຽງໃຕ້<ref name="Pew2012">Pew Research Center (2012). "The Global Religious Landscape: Buddhists". Pew Research Center's Forum on Religion & Public Life.</ref>.
== ປະຫວັດຄວາມເປັນມາ ==
=== ພະພຸດທະເຈົ້າຜູ້ກໍ່ຕັ້ງ ===
[[ພຣະພຸດທະເຈົ້າ|ພະພຸດທະເຈົ້າ]] ມີພະນາມເດີມວ່າ "ສິດທັດຖະ ໂຄຕະມະ" ເປັນເຈົ້າຊາຍແຫ່ງສັກກະວົງ ຜູ້ຄອງກຸງກະບິນລະພັດ (ບໍລິເວນຊາຍແດນປະເທດອິນເດຍ ແລະ ເນປານໃນປັດຈຸບັນ). ພະອົງປະສູດໃນວັນເພັງເດືອນ 6 (ວັນວິສາຂະບູຊາ). ເມື່ອພະອົງມີພະຊົນມາຍຸໄດ້ 29 ປີ ໄດ້ທອດພະເນດເຫັນ "ເທວະທູດທັງ 4" ຄື: ຄົນແກ່, ຄົນເຈັບ, ຄົນຕາຍ ແລະ ສະມະນະ (ນັກບວດ) ເຮັດໃຫ້ພະອົງເກີດຄວາມສັງເວດໃນຄວາມບໍ່ທ່ຽງແທ້ຂອງຊີວິດ ແລະ ຕັດສິນພະໄທອອກບວດເພື່ອແຫວງຫາທາງຫຼຸດພົ້ນ<ref name="Narada1992">Narada Maha Thera (1992). ''The Buddha and His Teachings''. Buddhist Missionary Society. ISBN 967-9920-59-6.</ref>.
ຫຼັງຈາກການບຳເພັນທຸກກະລາກິລິຍາ (ການທໍລະມານຮ່າງກາຍ) ເປັນເວລາ 6 ປີ ແລ້ວບໍ່ປະສົບຜົນສຳເລັດ ພະອົງຈຶ່ງຫັນມາເລືອກທາງສາຍກາງ ([[ມັດຊິມາປະຕິປະທາ]]) ແລະ ໄດ້ຕັດສະຮູ້ເປັນ "ພະສຳມາສຳພຸດທະເຈົ້າ" ພາຍໃຕ້ຕົ້ນພະສີມະຫາໂພ ໃນໄວ 35 ພະຊົນມາຍຸ ໂດຍການຄົ້ນພົບ [[ອະລິຍະສັດ 4]]<ref name="Harvey2013" />.
== ຫຼັກທຳຄຳສອນທີ່ສຳຄັນ ==
ຫຼັກທຳຂອງພຸດທະສາສະໜາແມ່ນຕັ້ງຢູ່ບົນພື້ນຖານຂອງເຫດ ແລະ ຜົນ ໂດຍມີຫຼັກທຳທີ່ເປັນແກນກາງດັ່ງນີ້:
=== ອະລິຍະສັດ 4 ===
ອະລິຍະສັດ 4 ຄືຄວາມຈິງອັນປະເສີດ 4 ປະການ ທີ່ພະພຸດທະເຈົ້າຕັດສະຮູ້:
# '''ທຸກ (Dukkha)''': ຄວາມບໍ່ສະບາຍກາຍ ບໍ່ສະບາຍໃຈ, ຄວາມຈິງຂອງຊີວິດທີ່ຕ້ອງເຜີຍພົບກັບຄວາມແກ່, ເຈັບ, ຕາຍ ແລະ ຄວາມຜິດຫວັງ.
# '''ສະມຸໄທ (Samudaya)''': ເຫດທີ່ເຮັດໃຫ້ເກີດທຸກ ຄືຄວາມຢາກ ([[ຕັນຫາ]]) 3 ປະການ (ກາມະຕັນຫາ, ພະວະຕັນຫາ, ວິພະວະຕັນຫາ).
# '''ນິໂຣດ (Nirodha)''': ຄວາມດັບທຸກ ຄືສະພາວະທີ່ຕັນຫາຖືກທຳລາຍໄປຈົນໝົດສິ້ນ ເຊິ່ງກໍຄືການບັນລຸ [[ນິບພານ]].
# '''ມັກ (Magga)''': ທາງປະຕິບັດເພື່ອໃຫ້ເຖິງຄວາມດັບທຸກ ເຊິ່ງມີອົງປະກອບ 8 ປະການ ທີ່ຮ່ວມກັນເອີ້ນວ່າ "ມັກມີອົງ 8"<ref name="Bodhi2000">Bodhi, Bhikkhu (trans.) (2000). ''The Connected Discourses of the Buddha: A Translation of the Samyutta Nikaya''. Wisdom Publications. ISBN 0-86171-331-1.</ref>.
=== ມັກມີອົງ 8 ===
ມັກມີອົງ 8 ສາມາດສະຫຼຸບລົງເປັນ '''ໄຕສິກຂາ''' (ສິນ, ສະມາທິ, ປັນຍາ) ໄດ້ດັ່ງນີ້:
* '''ໝວດປັນຍາ'''
** ສຳມາທິຖິ (ຄວາມເຫັນຊອບ ຫຼື ຄວາມເຫັນທີ່ຖືກຕ້ອງຕາມອະລິຍະສັດ)
** ສຳມາສັງກັບປະ (ຄວາມດຳລິຊອບ ຫຼື ຄວາມຄິດທີ່ຖືກຕ້ອງ)
* '''ໝວດສິນ'''
** ສຳມາວາຈາ (ການເຈລະຈາຊອບ ຫຼື ການເວົ້າຈາທີ່ຖືກຕ້ອງ)
** ສຳມາກຳມັນຕະ (ການກະທຳຊອບ ຫຼື ການປະພຶດທີ່ຖືກຕ້ອງ)
** ສຳມາອາຊີວະ (ການລ້ຽງຊີບຊອບ)
* '''ໝວດສະມາທິ'''
** ສຳມາວາຍາມະ (ຄວາມພະຍາຍາມຊອບ)
** ສຳມາສະຕິ (ການລະນຶກຊອບ)
** ສຳມາສະມາທິ (ການຕັ້ງຈິດໝັ້ນຊອບ)<ref name="Payutto2008">ພະພົມຄຸນາພອນ (ປ. ອ. ປະຍຸດໂຕ). (2551). ''ພົດຈະນານຸກົມພຸດທະສາດ ສະບັບປະມວນທຳ''. ກຣຸງເທບຯ: ເຄືອຂ່າຍສະຖາບັນການສຶກສາພຸດທະສາສະໜາ. ISBN 974-8357-16-1.</ref>.
=== ກົດແຫ່ງກຳ ແລະ ສັງສານວັດ ===
ພຸດທະສາສະໜາສອນວ່າ ສິ່ງທັງຫຼາຍເກີດຂຶ້ນຍ້ອນເຫດ ແລະປັດໄຈ ຕາມຫຼັກ'''ປະຕິຈະສະມຸບປາດ''' (Pratītyasamutpāda). ທຸກໆການກະທຳທີ່ປະກອບດ້ວຍເຈດຕະນາ ເອີ້ນວ່າ [[ກຳ]] (Karma) ບໍ່ວ່າຈະເປັນທາງກາຍ, ວາຈາ ຫຼື ໃຈ ຍ່ອມສົ່ງຜົນ ([[ວິບາກ]]) ຕໍ່ຜູ້ກະທຳສະເໝີ. ການວຽນວ່າຍຕາຍເກີດໃນ [[ສັງສານວັດ]] (Samsara) ຈະດຳເນີນຕໍ່ໄປຕາບໃດທີ່ຈິດຍັງຖືກຄອບງຳດ້ວຍ [[ອະວິຊາ]] (ຄວາມບໍ່ຮູ້) ແລະ ຕັນຫາ<ref name="Keown2013">Keown, Damien (2013). ''Buddhism: A Very Short Introduction''. Oxford University Press. ISBN 978-0199663835.</ref>.
== ນິກາຍທີ່ສຳຄັນ ==
ຫຼັງຈາກພະພຸດທະເຈົ້າສະເດັດດັບຂັນທະປະຣິນິບພານ ພຸດທະສາສະໜາໄດ້ມີການແຕກແຍກອອກເປັນຫຼາຍນິກາຍ ເຊິ່ງໃນປັດຈຸບັນມີ 3 ນິກາຍຫຼັກ ຄື:
# '''ເຖລະວາດ (Theravada)''': ເນັ້ນໜັກການຮັກສາຫຼັກທຳຄຳສອນ ແລະ ພະທຳວິນັຍດັ້ງເດີມຢ່າງເຄັ່ງຄັດ ໂດຍໃຊ້ພຣະໄຕຣປິດົກພາສາບາລີ. ນິກາຍນີ້ເປັນທີ່ນັບຖືຫຼາຍໃນ ປະເທດລາວ, [[ປະເທດໄທ]], ມຽນມາ, [[ປະເທດກຳປູເຈຍ|ກຳປູເຈຍ]] ແລະ ສີລັງກາ<ref name="Gombrich2006" />.
# '''ມະຫາຍານ (Mahayana)''': ເນັ້ນໜັກການຊ່ວຍເຫຼືອສັດໂລກທັງຫຼາຍໃຫ້ຫຼຸດພົ້ນໄປພ້ອມກັນ ໂດຍມີແນວຄິດເລື່ອງ [[ພະໂພທິສັດ]]. ນິກາຍນີ້ເຜີຍແຜ່ຫຼາຍໃນ ຈີນ, ຍີ່ປຸ່ນ, ເກົາຫຼີ, ແລະ ຫວຽດນາມ<ref name="Williams2008">Williams, Paul (2008). ''Mahayana Buddhism: The Doctrinal Foundations'' (2nd ed.). Routledge. ISBN 978-0415356535.</ref>.
# '''ວັດຊະລະຍານ (Vajrayana)''': ຫຼື ພຸດທະສາສະໜາແບບຕິເບດ ເປັນນິກາຍທີ່ພັດທະນາຕໍ່ຍອດມາຈາກມະຫາຍານ ໂດຍມີການປະສົມປະສານພິທີກຳທາງຕັນຕຣະ ແລະ ມົນຕຣາ ເຜີຍແຜ່ຫຼາຍໃນ ຕິເບດ, ມົງໂກລີ ແລະ ພູຖານ<ref name="Powers2007">Powers, John (2007). ''Introduction to Tibetan Buddhism'' (2nd ed.). Snow Lion Publications. ISBN 978-1559392822.</ref>.
== ພຸດທະສາສະໜາໃນປະເທດລາວ ==
[[ຮູບ<b>:Pha That Luang Vientiane Laos.jpg</b>|thumb|right|220px|ພະທາດຫຼວງ ວຽງຈັນ ສູນລວມຈິດໃຈ ແລະ ສັນຍະລັກຂອງພຸດທະສາສະໜາໃນລາວ]]
ພຸດທະສາສະໜາໄດ້ເຜີຍແຜ່ເຂົ້າມາສູ່ດິນແດນລາວຕັ້ງແຕ່ສະໄໝອານາຈັກສີໂຄດຕະບອງ ແຕ່ໄດ້ຮັບການສະຖາປະນາໃຫ້ເປັນສາສະໜາປະຈຳຊາດຢ່າງເປັນທາງການໃນສະໄໝ '''[[ເຈົ້າຟ້າງຸ່ມ|ພະເຈົ້າຟ້າງຸ່ມ]] ແຫຼ່ງຫຼ້າທໍລະນີ''' (ສະຕະວັດທີ 14) ເມື່ອພະອົງໄດ້ອັນເຊີນ [[ພະບາງ]] ແລະ ຄະນະສົງຈາກອານາຈັກຂະແມມາເຜີຍແຜ່ພະພຸດທະສາສະໜານິກາຍເຖລະວາດ<ref name="Sourinha2000">ສຸເນດ ໂພທິສານ ແລະ ຄະນະ (2000). ''ປະຫວັດສາດລາວ (ດຶກດຳບັນ-ປັດຈຸບັນ)''. ກະຊວງຖະແຫຼງຂ່າວ ແລະ ວັດທະນະທຳ, ສະຖາບັນຄົ້ນຄວ້າວິທະຍາສາດສັງຄົມແຫ່ງຊາດ.</ref>.
ໃນສະໄໝ '''[[ພະເຈົ້າໄຊເຊດຖາທິລາດ|ພະເຈົ້າໄຊເສດຖາທິລາດ]]''' ພຸດທະສາສະໜາໃນລາວມີຄວາມຈະເລີນຮຸ່ງເຮືອງສູງສຸດ ພະອົງໄດ້ຊົງສ້າງວັດວາອາຮາມທີ່ສຳຄັນຫຼວງຫຼາຍ ເຊິ່ງລວມເຖິງ [[ພະທາດຫຼວງ]] ວຽງຈັນ ທີ່ເປັນສູນລວມຈິດໃຈຂອງປະຊາຊົນລາວມາເຖິງປັດຈຸບັນ. ຕາມລັດຖະທຳມະນູນແຫ່ງ ສປປ ລາວ ພຸດທະສາສະໜາໄດ້ຮັບການຍົກຍ້ອງ ແລະ ປົກປັກຮັກສາໃນຖານະເປັນມໍລະດົກທາງວັດທະນະທຳອັນລ້ຳຄ່າຂອງຊາດ ໂດຍມີ [[ອົງການພຸດທະສາສະໜາສຳພັນລາວ]] (ອພສ) ເປັນອົງການປົກຄອງສົງສູງສຸດ<ref name="LaoConst2015">ລັດຖະທຳມະນູນ ແຫ່ງ ສາທາລະນະລັດ ປະຊາທິປະໄຕ ປະຊາຊົນລາວ ສະບັບປັບປຸງ ປີ 2015. ມາດຕາ 9 ວ່າດ້ວຍການເຄົາລົບ ແລະ ປົກປັກຮັກສາພຸດທະສາສະໜາ.</ref>.
== ເອກະສານອ້າງອີງ ==
{{Reflist|2}}
== ເບິ່ງຕື່ມ ==
* [[ພຣະໄຕຣປິດົກ]]
* [[ວັນວິສາຂະບູຊາ]]
* [[ອົງການພຸດທະສາສະໜາສຳພັນລາວ]]
[[ໝວດ:ພຸດທະສາສະໜາ]]
[[ໝວດ:ສາສະໜາໃນລາວ]]
==ອ້າງອີງ==
<references/>
[[ໝວດ:ພຸດທະສາສະໜາ]]
ch8s0hu361p8n5w1wjsxhvd3xb09s0o
ສາສະໜາ
0
7374
129340
103883
2026-07-24T05:39:17Z
Seephommah Vongsuvath
23277
/* */
129340
wikitext
text/x-wiki
{{ຂະຫຍາຍ}}
[[ຮູບ:Religionsmajoritaries.png|thumb|380px|]]
[[ຮູບ:Religious syms.svg|thumb|]]
[[ຮູບ:Walsinghamprocession.jpg|thumb|ບຸນສາສະໜາ]]
'''ສາສະໜາ''' (ຄຳເຄົ້າ: ສາສນາ<ref>ສົມຈິຕ ພັນລັກ. (2012) ''ພາສາລາວລ້ານຊ້າງ ກ່ອນປີ ພ.ສ 2478; ຄ.ສ 1935 ສະບັບຄົ້ນຄວ້າ''. ສົມມະນາ ການພິມ ສປປ ລາວ.</ref>) ແມ່ນລະບບຫຼືຊຸດ[[ຄວາມເຊື່ອ]]ຕ່າງໆທີ່ກວມເອົງທັງພິທີກຳ,ແນວຄິດແລະປະເພນີ ສາສະໜາສ່ວນຫຼາຍກໍຍັງເປັນສິ່ງທີ່ໃຊ້ເພື່ອອະທິບາຍເຖິງການກຳເນີດ,ຄວາມເປັນມາເປັນໄປ ແລະຈຸດສິ້ນສຸດຂອງໂລກຫຼຈັກກະວານ ສາສະໜາເອງກໍເປັນສິ່ງທີ່ໃຫ້ຄວາມໝາຍກັບຊີວິດ,ຫຼັກສິນລະທຳ-ຈັນຍາບັນ,ຫຼັກການດຳລົງຊິວິດແລະອື່ນໆຈາກຫຼັກຄຳສອນຂອງສາສະໜາ ແຕ່ລະສາສະໜາຈະມີອົງປະກອບຕ່າງໆທີ່ອາດຄືກັນຫຼືຕ່າງກັນເຊັ່ນ: ສັດທາ,ພິທີກຳ,ແທບພະເຈົ້າ,ສິ່ງມີຊີວິດເໜືອທຳມະຊາດ ແລະຄວາມຊັກສິດ
== ພັດທະນາການຂອງສາສະໜາ ==
ມີຄວາມເຊື່ອວ່າສາສະໜານັ້ນ ເກີດມາຈາກຄວາມຢ້ານກົວທຳມະຊາດ ກ່າວຄື ສິ່ງໃດເຊິ່ງມະນຸດຢ້ານກົວ ເຊື່ອ ເລື່ອມໃສ ແລະໃຫ້[[ຄວາມເຄົາລົບນັບຖື]] ໄດ້ຊື່ ວ່າເປັນສາສະໜາຂອງບຸກຄົນນັ້ນໆ
ໃນການສຶກສາປັດຈຸບັນ ຄຳອະທິບາຍຂອງການເກີດຂຶ້ນ ແລະພັດທະນາການຂອງສາສະໜາ ສາມາດແບ່ງໄດ້ເປັນສາມກຸ່ມ
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາ ແມ່ນສິ່ງເຊິ່ງມະນຸດສ້າງຂຶ້ນ.
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາຄ່ອຍໆ ພັດທະນາການ ໄປສູ່ສະພາວະແຫ່ງຄວາມຈິງຫຼາຍຂຶ້ນເລື້ອຍໆ.
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາ ບາງສາສະໜານັ້ນແມ່ນຄວາມຈິງແທ້.
==ອ້າງອີງ==
<references/>
[[ໝວດ:ສາສະໜາ]]
azajua33x37uadceemsczj3q7uw64j9
129341
129340
2026-07-24T05:54:42Z
Seephommah Vongsuvath
23277
/* */
129341
wikitext
text/x-wiki
{{ຂະຫຍາຍ}}
[[ຮູບ:Religionsmajoritaries.png|thumb|380px|ສາສະໜາທີ່ມີຜູ້ນັບຖືຫຼາຍທີ່ສຸດຕາມແຕ່ລະປະເທດ]]
[[ຮູບ:Religious syms.svg|thumb|''(ຈາກຊ້າຍຫາຂວາ,ເທິງລົງລຸ່ມ)'' [[ສາສະໜາຄຣິດ|ສາສະໜາຄຣິສ,]][[ສາສະໜາຊູດາ]],[[ສາສະໜາຮິນດູ]],[[ສາສະໜາອິສະລາມ]],[[ພຸດທະສາສະໜາ|ສາສະໜາພຸດ]],ສາສະໜາຊີນໂຕ,[[ສາສະໜາຊິກ]],ບາຮາອີເຟດ (Bahá'í faith), ສາສະໜາແຊນ (Jainism)]]
[[ຮູບ:Walsinghamprocession.jpg|thumb|ບຸນສາສະໜາ]]
'''ສາສະໜາ''' (ຄຳເຄົ້າ: ສາສນາ<ref>ສົມຈິຕ ພັນລັກ. (2012) ''ພາສາລາວລ້ານຊ້າງ ກ່ອນປີ ພ.ສ 2478; ຄ.ສ 1935 ສະບັບຄົ້ນຄວ້າ''. ສົມມະນາ ການພິມ ສປປ ລາວ.</ref>) ແມ່ນລະບບຫຼືຊຸດ[[ຄວາມເຊື່ອ]]ຕ່າງໆທີ່ກວມເອົງທັງພິທີກຳ,ແນວຄິດແລະປະເພນີ ສາສະໜາສ່ວນຫຼາຍກໍຍັງເປັນສິ່ງທີ່ໃຊ້ເພື່ອອະທິບາຍເຖິງການກຳເນີດ,ຄວາມເປັນມາເປັນໄປ ແລະຈຸດສິ້ນສຸດຂອງໂລກຫຼຈັກກະວານ ສາສະໜາເອງກໍເປັນສິ່ງທີ່ໃຫ້ຄວາມໝາຍກັບຊີວິດ,ຫຼັກສິນລະທຳ-ຈັນຍາບັນ,ຫຼັກການດຳລົງຊິວິດແລະອື່ນໆຈາກຫຼັກຄຳສອນຂອງສາສະໜາ ແຕ່ລະສາສະໜາຈະມີອົງປະກອບຕ່າງໆທີ່ອາດຄືກັນຫຼືຕ່າງກັນເຊັ່ນ: ສັດທາ,ພິທີກຳ,ແທບພະເຈົ້າ,ສິ່ງມີຊີວິດເໜືອທຳມະຊາດ ແລະຄວາມຊັກສິດ
== ພັດທະນາການຂອງສາສະໜາ ==
ມີຄວາມເຊື່ອວ່າສາສະໜານັ້ນ ເກີດມາຈາກຄວາມຢ້ານກົວທຳມະຊາດ ກ່າວຄື ສິ່ງໃດເຊິ່ງມະນຸດຢ້ານກົວ ເຊື່ອ ເລື່ອມໃສ ແລະໃຫ້[[ຄວາມເຄົາລົບນັບຖື]] ໄດ້ຊື່ ວ່າເປັນສາສະໜາຂອງບຸກຄົນນັ້ນໆ
ໃນການສຶກສາປັດຈຸບັນ ຄຳອະທິບາຍຂອງການເກີດຂຶ້ນ ແລະພັດທະນາການຂອງສາສະໜາ ສາມາດແບ່ງໄດ້ເປັນສາມກຸ່ມ
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາ ແມ່ນສິ່ງເຊິ່ງມະນຸດສ້າງຂຶ້ນ.
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາຄ່ອຍໆ ພັດທະນາການ ໄປສູ່ສະພາວະແຫ່ງຄວາມຈິງຫຼາຍຂຶ້ນເລື້ອຍໆ.
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາ ບາງສາສະໜານັ້ນແມ່ນຄວາມຈິງແທ້.
==ອ້າງອີງ==
<references/>
[[ໝວດ:ສາສະໜາ]]
m3z4zfmr2lpgy05psigh5p6xb2xh2c9
129342
129341
2026-07-24T06:06:05Z
Seephommah Vongsuvath
23277
/* */
129342
wikitext
text/x-wiki
{{ຂະຫຍາຍ}}
[[ຮູບ:Religionsmajoritaries.png|thumb|380px|ສາສະໜາທີ່ມີຜູ້ນັບຖືຫຼາຍທີ່ສຸດຕາມແຕ່ລະປະເທດ]]
[[ຮູບ:Religious syms.svg|thumb|''(ຈາກຊ້າຍຫາຂວາ,ເທິງລົງລຸ່ມ)'' [[ສາສະໜາຄຣິດ|ສາສະໜາຄຣິສ,]][[ສາສະໜາຊູດາ]],[[ສາສະໜາຮິນດູ]],[[ສາສະໜາອິສະລາມ]],[[ພຸດທະສາສະໜາ|ສາສະໜາພຸດ]],ສາສະໜາຊີນໂຕ,[[ສາສະໜາຊິກ]],ບາຮາອີເຟດ (Bahá'í faith), ສາສະໜາແຊນ (Jainism)]]
[[ຮູບ:Walsinghamprocession.jpg|thumb|ບຸນສາສະໜາ]]
'''ສາສະໜາ''' (ຄຳເຄົ້າ: ສາສນາ<ref>ສົມຈິຕ ພັນລັກ. (2012) ''ພາສາລາວລ້ານຊ້າງ ກ່ອນປີ ພ.ສ 2478; ຄ.ສ 1935 ສະບັບຄົ້ນຄວ້າ''. ສົມມະນາ ການພິມ ສປປ ລາວ.</ref>) ແມ່ນລະບບຫຼືຊຸດ[[ຄວາມເຊື່ອ]]ຕ່າງໆທີ່ກວມເອົງທັງພິທີກຳ,ແນວຄິດແລະປະເພນີ ສາສະໜາສ່ວນຫຼາຍກໍຍັງເປັນສິ່ງທີ່ໃຊ້ເພື່ອອະທິບາຍເຖິງການກຳເນີດ,ຄວາມເປັນມາເປັນໄປ ແລະຈຸດສິ້ນສຸດຂອງໂລກແລະຈັກກະວານ ສາສະໜາເອງກໍເປັນສິ່ງທີ່ໃຫ້ຄວາມໝາຍກັບຊີວິດ,ຫຼັກສິນລະທຳ-ຈັນຍາບັນ,ຫຼັກການດຳລົງຊິວິດແລະອື່ນໆຈາກຫຼັກຄຳສອນຂອງສາສະໜາ ແຕ່ລະສາສະໜາຈະມີອົງປະກອບຕ່າງໆທີ່ອາດຄືກັນຫຼືຕ່າງກັນເຊັ່ນ: ສັດທາ,ພິທີກຳ,ແທບພະເຈົ້າ,ສິ່ງມີຊີວິດເໜືອທຳມະຊາດ ແລະຄວາມຊັກສິດ
== ພັດທະນາການຂອງສາສະໜາ ==
ມີຄວາມເຊື່ອວ່າສາສະໜານັ້ນ ເກີດມາຈາກຄວາມຢ້ານກົວທຳມະຊາດ ກ່າວຄື ສິ່ງໃດເຊິ່ງມະນຸດຢ້ານກົວ ເຊື່ອ ເລື່ອມໃສ ແລະໃຫ້[[ຄວາມເຄົາລົບນັບຖື]] ໄດ້ຊື່ ວ່າເປັນສາສະໜາຂອງບຸກຄົນນັ້ນໆ
ໃນການສຶກສາປັດຈຸບັນ ຄຳອະທິບາຍຂອງການເກີດຂຶ້ນ ແລະພັດທະນາການຂອງສາສະໜາ ສາມາດແບ່ງໄດ້ເປັນສາມກຸ່ມ
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາ ແມ່ນສິ່ງເຊິ່ງມະນຸດສ້າງຂຶ້ນ.
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາຄ່ອຍໆ ພັດທະນາການ ໄປສູ່ສະພາວະແຫ່ງຄວາມຈິງຫຼາຍຂຶ້ນເລື້ອຍໆ.
* ກຸ່ມເຊິ່ງເບິ່ງວ່າສາສະໜາ ບາງສາສະໜານັ້ນແມ່ນຄວາມຈິງແທ້.
==ອ້າງອີງ==
<references/>
[[ໝວດ:ສາສະໜາ]]
t1iv16xrs1tkyu9gbsyls13cstyuinp
ໄຊຍາ ມິດໄຊ
0
12709
129335
127372
2026-07-24T04:39:25Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:2|0|0 */
129335
wikitext
text/x-wiki
{{ຕ້ອງການອ້າງອີງ}}
{{ກ່ອງຂໍ້ມູນ ນັກສະແດງ|bgcolour=yellow|name=ໄຊຍາ ມິດໄຊ|image=Chaiya Mitchai.jpg|imagesize=250px|nickname=ເອ|birthdate={{ວັນເກີດ-ອາຍຸ|2517|4|5}}|birthplace=[[ອຳເພີວິເສດຊັຍຊານ]] [[ຈັງຫວັດອ່າງທອງ]]|spouse=ກັນລະດາກອນ (ພົຈຈະນາ) ນ້ອຍວັດ|children=[[ພອນພັດຊະນົກ ມິດຊັຍ]] <br> [[ຊຸຕິພັນ ມິດຊັຍ]]|othername=ຈ໊ະເອ໋|occupation=ນັກສະແດງ, ລິເກ, ນັກຮ້ອງ, ພິທີກອນ|imdb_id=1334986|homepage=https://www.facebook.com/sema.somboon?ref=ts&fref=ts}}'''ໄຊຍາ ມຶດໄຊ''' ເກີດ 5 ເມສາ 1974 ເປນນັກສະແດງລິເກ[[ຊາວໄທ]]'''ໄຊຍາ ມິດໄຊ''' (ຊື່ຫຼິ້ນ: ເອ) ເປັນສິນລະປິນທີ່ມີຊື່ສຽງໂດ່ງດັງໃນລະດັບແຖວໜ້າຂອງປະເທດໄທ ຜູ້ມີຄວາມສາມາດຮອບດ້ານ ທັງໃນຖານະນັກຮ້ອງເພງລູກທົ່ງ, ພະເອກລິເກ, ນັກສະແດງ ແລະ ພິທີກອນ. ໄຊຍາ ເປັນສິນລະປິນທີ່ມີເອກະລັກສະເພາະຕົວ ໂດຍສະເພາະນ້ຳສຽງທີ່ຫວານກັງວານ ແລະ ບຸກຄະລິກທີ່ສຸພາບຮຽບຮ້ອຍ ເຮັດໃຫ້ເປັນທີ່ຮັກແພງຂອງແຟນເພງທຸກເພດທຸກໄວມາຢ່າງຍາວນານ.
ໄຊຍາ ເລີ່ມຕົ້ນເສັ້ນທາງສິນລະປິນມາຕັ້ງແຕ່ '''ຕອນນ້ອຍ''' ໂດຍເຕີບໃຫຍ່ໃນຄອບຄົວສິນລະປິນລິເກທີ່ມີຊື່ສຽງ ຈາກຈັງຫວັດອ່າງທອງ. ທ່ານໄດ້ສ້າງປາກົດການໃນວົງການເພງລູກທົ່ງດ້ວຍຜົນງານເພງທີ່ເປັນອຳມະຕະ ເຊັ່ນ: ''"ຄອຍນາງທີ່ອ່າງທອງ"'' (ຄອຍນາງທີ່ອ່າງທອງ) ແລະ ''"ກະທ້ອມສາວເມີນ"'' (ກະທ້ອມສາວເມີນ) ເຊິ່ງເຮັດໃຫ້ທ່ານໄດ້ຮັບຣາງວັນອັນຊົງກຽດຢ່າງຫຼວງຫຼາຍ ບໍ່ວ່າຈະເປັນຣາງວັນພະພິຄະເນດທອງຄຳ ຫຼື ຣາງວັນເມຂະລາທອງຄຳ ຈາກຜົນງານການສະແດງລະຄອນ.
ນອກຈາກຄວາມສາມາດດ້ານສິນລະປະແລ້ວ ໄຊຍາ ມິດໄຊ ຍັງເປັນແບບຢ່າງທີ່ດີໃນການອະນຸລັກວັດທະນະທຳໄທ ແລະ ການສະແດງລິເກໃຫ້ຄົງຢູ່ກັບສັງຄົມສະໄໝໃໝ່ ຜ່ານການປັບຕົວເຂົ້າກັບຍຸກສະໄໝໃນຖານະພິທີກອນຣາຍການໂທລະພາບ ແລະ ກໍາມະການຕັດສິນໃນຣາຍການປະກວດຮ້ອງເພງຕ່າງໆ ທີ່ສ້າງແຮງບັນດານໃຈໃຫ້ກັບສິນລະປິນລຸ້ນຫຼັງຢ່າງຫຼວງຫຼາຍ.
== ປະຫວັດສ່ວນຕັວ ==
'''ໄຊຍາ ມິດໄຊ''' ຫຼື ທີ່ຮູ້ຈັກກັນໃນຊື່ຫຼິ້ນ "ເອ" ເກີດເມື່ອວັນທີ 5 ເມສາ ຄ.ສ. 1974 ທີ່ຈັງຫວັດອ່າງທອງ [[ປະເທດໄທ]]. ທ່ານເຕີບໃຫຍ່ໃນຄອບຄົວສິນລະປິນລິເກທີ່ມີຮາກເຫງົ້າທາງວັດທະນະທຳຢ່າງເຂັ້ມແຂງ ໂດຍເປັນບຸດຂອງນັກສະແດງລິເກຊື່ດັງໃນອະດີດ. ເສັ້ນທາງສິນລະປິນຂອງ ໄຊຍາ ເລີ່ມຕົ້ນຕັ້ງແຕ່ '''ຕອນນ້ອຍ''' ໂດຍທ່ານໄດ້ສະແດງຄວາມສາມາດດ້ານການຮ້ອງ ແລະ ການຟ້ອນລຳມາຕັ້ງແຕ່ອາຍຸພຽງ 4-5 ປີ ເຊິ່ງໃນໄລຍະນັ້ນທ່ານໄດ້ສ້າງຊື່ສຽງຈາກການສະແດງລິເກເດັກໃນຄະນະ "ມິດໄຊ" ແລະ ໄດ້ຮັບຣາງວັນຊະນະເລີດຈາກການປະຊັນລິເກ 6 ຄະນະ ໃນບົດບາດ "ກຳພ້າຮ້ອງໄຫ້" ເຊິ່ງຖືເປັນຈຸດເລີ່ມຕົ້ນທີ່ເຮັດໃຫ້ສັງຄົມຍອມຮັບໃນພັດທະນາການຂອງສິນລະປິນຜູ້ນີ້.
ໃນດ້ານການສຶກສາ ໄຊຍາ ມິດໄຊ ໄດ້ໃຫ້ຄວາມສຳຄັນກັບການຮຽນຄວບຄູ່ໄປກັບການເຮັດວຽກ ໂດຍທ່ານຮຽນຈົບປະລິນຍາຕີຈາກຄະນະມະນຸດສາດ ມະຫາວິທະຍາໄລຣາມຄຳແຫງ ເຊິ່ງສະທ້ອນໃຫ້ເຫັນເຖິງຄວາມມຸ່ງໝັ້ນໃນການພັດທະນາຕົນເອງ. ໃນດ້ານຜົນງານເພງ ໄຊຍາ ເລີ່ມຕົ້ນເຂົ້າສູ່ວົງການເພງລູກທົ່ງຢ່າງເຕັມຕົວໃນປີ ຄ.ສ. 1992 ດ້ວຍອັນບັ້ມ ''"ກະທ້ອມສາວເມີນ"'' ເຊິ່ງໄດ້ຮັບການຕອບຮັບຢ່າງຖ້ວມທົ້ນ ຕິດຕາມດ້ວຍອັນບັ້ມ ''"ຮິມໄກລາສ"'' ໃນປີ ຄ.ສ. 1993 ຜົນງານເຫຼົ່ານີ້ໄດ້ສ້າງເອກະລັກ "ພະເອກນ້ຳສຽງຫວານ" ໃຫ້ກັບທ່ານຢ່າງຊັດເຈນ. ຕໍ່ມາໃນປີ ຄ.ສ. 1994 ທ່ານໄດ້ຮ່ວມງານກັບນ້ອງສາວ ແອນ ມິດໄຊ ໃນອັນບັ້ມ ''"ຜົວນອກບັນຊີ"'' ແລະ ມີຜົນງານຕໍ່ເນື່ອງຢ່າງບໍ່ຂາດສາຍ ເຊັ່ນ ອັນບັ້ມ ''"ບໍ່ທຳມະດາ"'' (ຄ.ສ. 1997) ແລະ ''"ສັນຍາ 2 ປີ"'' (ຄ.ສ. 1999) ເຊິ່ງລ້ວນແຕ່ເປັນຜົນງານທີ່ສ້າງຍອດຂາຍ ແລະ ຊື່ສຽງໃນລະດັບສູງ.
ນອກຈາກບົດບາດນັກຮ້ອງ ໄຊຍາ ຍັງມີຜົນງານດ້ານການສະແດງລະຄອນໂທລະພາບທີ່ໂດດເດັ່ນ ໂດຍສະເພາະລະຄອນເລື່ອງ ''"ລູກທີ່ຖືກລືມ"'' ໃນປີ ຄ.ສ. 1998 ແລະ ''"ແກ້ວໜ້າມ້າ"'' ໃນປີ ຄ.ສ. 2001 ເຊິ່ງທັງສອງເລື່ອງເຮັດໃຫ້ທ່ານໄດ້ຮັບຣາງວັນ "ເມຂະລາທອງຄຳ" ໃນຖານະນັກສະແດງດີເດັ່ນ. ໃນດ້ານພາບພະຍົນ ທ່ານໄດ້ຮ່ວມສະແດງໃນເລື່ອງ ''"ເດິໂກຣນ ກ້ວນ ກວນ ຜີ"'' (ຄ.ສ. 2004) ແລະ ມະຫາກາບພາບພະຍົນປະຫວັດສາດ ''"ພັນທ້າຍນໍຣະສິງ"'' (ຄ.ສ. 2015). ປັດຈຸບັນ ໄຊຍາ ມິດໄຊ ໄດ້ຜັນຕົວມາເປັນພິທີກອນ ແລະ ກໍາມະການຕັດສິນໃນຣາຍການໂທລະພາບຊື່ດັງຫຼາຍຣາຍການ ເຊັ່ນ ''"ໄມໝົດໜີ້"'' ແລະ ''"ຄົວລັ່ນທົ່ງ"'' ເຊິ່ງທ່ານໄດ້ໃຊ້ປະສົບການທີ່ສະສົມມາຫຼາຍກວ່າ 30 ປີ ໃນການຖ່າຍທອດຄວາມຮູ້ ແລະ ສ້າງຄວາມບັນເທີງໃຫ້ກັບຜູ້ຊົມ.
ຕະຫຼອດໄລຍະເວລາໃນວົງການສິນລະປະ ໄຊຍາ ມິດໄຊ ໄດ້ຮັບກຽດຕິຍົດສູງສຸດຫຼາຍປະການ ບໍ່ວ່າຈະເປັນຣາງວັນ "ພະພິຄະເນດທອງຄຳ" ຈາກເພງ ''"ຄອຍນາງທີ່ອ່າງທອງ"'' ແລະ ຣາງວັນສິນລະປິນດີເດັ່ນຜູ້ສົ່ງເສີມພະພຸດທະສາດສະໜາ. ສິ່ງເຫຼົ່ານີ້ລ້ວນແຕ່ຢືນຢັນເຖິງການເປັນສິນລະປິນທີ່ມີຄຸນນະພາບ ຜູ້ບໍ່ພຽງແຕ່ມອບຄວາມສຸກໃຫ້ກັບແຟນເພງເທົ່ານັ້ນ ແຕ່ຍັງເປັນຜູ້ນຳໃນການອະນຸລັກວັດທະນະທຳລິເກ ແລະ ພາສາລາວ-ໄທ ໃຫ້ຄົງຢູ່ຢ່າງມີຄຸນຄ່າໃນສັງຄົມຮ່ວມສະໄໝ.
=== ສະໄໝເປັນເດັກນ້ອຍ ===
'''ສະໄໝເປັນເດັກນ້ອຍ''', ໄຊຍາ ໄດ້ເຕີບໃຫຍ່ຂຶ້ນທ່າມກາງບັນຍາກາດຂອງສິນລະປະພື້ນເມືອງ ໂດຍອາໄສຢູ່ກັບພໍ່ເຖົ້າ ແລະ ແມ່ເຖົ້າທີ່ເປັນເຈົ້າຂອງຄະນະລິເກ. ດ້ວຍສະພາບແວດລ້ອມທີ່ຫຼໍ່ຫຼອມມາຕັ້ງແຕ່ເກີດ ເຮັດໃຫ້ທ່ານເລີ່ມຝຶກຝົນການຮ້ອງ ແລະ ການຟ້ອນລິເກມາຕັ້ງແຕ່ອາຍຸພຽງ 4 ປີ. ໃນໄລຍະນັ້ນ, ທ່ານຕ້ອງຕິດຕາມຄະນະລິເກໄປສະແດງໃນສະຖານທີ່ຕ່າງໆ ເຊິ່ງຖືເປັນການຮຽນຮູ້ຈາກປະສົບການຈິງ ເຮັດໃຫ້ທ່ານມີຄວາມສາມາດໂດດເດັ່ນກວ່າເດັກນ້ອຍໃນລຸ້ນດຽວກັນ. ຈຸດປ່ຽນສຳຄັນໃນໄວເດັກແມ່ນການໄດ້ຮັບບົດບາດ "ກຳພ້າຮ້ອງໄຫ້" ໃນການປະຊັນລິເກ 6 ຄະນະ ເຊິ່ງທ່ານສາມາດສະແດງໄດ້ຢ່າງສະເທືອນອາລົມ ຈົນໄດ້ຮັບຣາງວັນຊະນະເລີດ ແລະ ກາຍເປັນທີ່ກ່າວຂານໃນນາມ "ພະເອກລິເກເດັກອັດສະລິຍະ" ຕັ້ງແຕ່ນັ້ນມາ.
== ຜົນງານ ==
===ຜົນງານການສະແດງ===
* 2530 [[ເຈັ້າຊາຍນ້ອຍ]] (ຕອນຍັງນ້ອຍ)
* 2531 ພຍັກສອງແຜ່ນດິນ (ຕອນຍັງນ້ອຍ)
* 2540 ມັດຈູຮາດຕິງຕອງ ຮັບບົດ ບັນຊາ ຊິດຊັຍ
* 2541 ລູກທີ່ຖືກລືມ ຮັບບົດ ເຈັ້າໃບ້
* 2544 [[ນາຍຮ້ອຍທະມິນ]] ຮັບບົດ ຈ່ອຍ
* 2544 [[ແກ້ວໜ້າມ້າ]] ຮັບບົດ ພະປິ່ນທອງ
* 2545 [[ຮອຍໄຖ]]
* 2545 ລູກໄພ້ໄຮໂຊ
* 2545 [[ພິກຸນທອງ]] ຮັບບົດ ພິຊັຍມົງກຸດ
* 2547 [[ຊະຊະຊ່າ ທ້າຮັກ]] ຮັບບົດ ລາຊັນ ຊຸມແພ
* 2547 ເທພພະບຸດຂົນຕາງອນ ຮັບບົດ ເອ໋ ອະນຸນາດ ອະດິນັນ ພັນເທວາ ຄູ່ກັບ ໂອ໋ ເພດຊະລະດາ
* 2548 ເລືອດສາມສີ ຮັບບົດ ຊານົນ ຄູ່ກັບ ໂອ໋ ເພດຊະລະດາ
* 2549 ຜູ້ໃຫຍ່ເຫັດ ກຳນັນຫອຍ ຮັບບົດ ຄູ່ກັບ ທັນຍ່າ ທັນຍາເຣສ
* 2552 ພໍ່ມາລັຍຮິມທາງ ຮັບບົດ ເສີມຊາດ ຄູ່ກັບ ໂດນັດ ມະນັດສະນັນ
* 2552 ເທບພະບູດຊູດວິນ ຮັບບົດ [[ເພດ]] ຄູ່ກັບ ນ້ຳຝົນ ພັດຊະຣິນ
* 2554 ຜົມໄມ່ຢາກເປັນສາຍລັບ ຮັບບົດ ທອງເອກ ຄູ່ກັບ ວິກກີ້ ສູນິສາ
*2555 ບັນທຶກກັມ ຕອນ ລິເກລືມຕາຍ ຮັບບົດ ທອງແທ້
* 2558 [[ມົນຮັກເພງຜີບອກ]] ຮັບບົດ ກາລະເວກ ຄູ່ກັບໜິງ ປະນິຕາ
* 2559 [[ສັນຍາເມື່ອສາຍັນ]] ຮັບບົດ ເກັ່ງ ປາກຊ່ອງ
* 2561 [[The Mirror ກະຈົກສະທ້ອນກັມ]] ຕອນທີ່ 16 ຜິດຄູ
* 2562 ຈັນກະຈ່າງທີ່ກາງທຸ່ງ ຮັບບົດ ທອງທາບ
* 2563 [[ລູກໄພ້ ໄຣ້ສັກດິນາ]]
===ຜົນງານເພງ===
{{Div col|6}}
* ກຳພ້າອາວອນ
* ເທັປການກຸສົນ
* ເຈັ້າບ່າວສົມມຸດ
* ກະທ່ອມສາວເມີນ
* ຜັວນອກບັນຊີ
* ຫຼົງຮັກດອກຟ້າ
* ຮິມໄກລາດ
* ສວຍທີ່ສູດ
* ມັນໆ ເຄັມໆ
* ໝູໜີມີແຕ່ຜັກ
* ເທພີຊາຍຄອງ
* ຕ້ອນໄວ້ໄປບ້ານເຮາ
* ກຣະທົງຫຼົງທາງ
* ລູກຖູກລືມ
* ເພງຮັກຈາກໄຊຍາ
* ໄຊຍາລາບວດ
* ສັນຍາ 2 ປີ
* ກຣະທົງຖຶງຝ້່ງ
* ໝູ ໝູ ໝູ
* ໄມ່ທັມມະດາ
* ຝົນພຳທີ່ລຳນາຣາຍ{{Div col end}}
== ຜົນງານອັນບັ້ມ ==
* ກະທ້ອມສາວເມີນ (2535)
* ຮິມໄກລາສ (2536)
* ຜົວນອກບັນຊີ (ຮ້ອງຄູ່ກັບ ແອນ ມິດໄຊ) (2537)
* ຕ້ອນໄວ້ໄປບ້ານເຮົາ (2538)
* ໝູໜີມີແຕ່ຜັກ (2539)
* ບໍ່ທຳມະດາ (2540)
* ລູກທີ່ຖືກລືມ (ອັນບັ້ມພິເສດ) (2541)
* ສັນຍາ 2 ປີ (2542)
* ກະທົງເຖິງຝັ່ງ (2544)
* ໝູ ໝູ ໝູ (2546)
== ເພງປະກອບລະຄອນ ==
* '''ເພງປະກອບລະຄອນ ເທບພະບຸດຂົນຕາງອນ:'''
** ຢາກບອກຮັກເທີ
** ຂໍກ່ຽວແລ້ວກັນ
** ອ້ອມແຂນຄົນທຳມະດາ
** ສາຍໄປຫຼືເປົ່າ
* '''ເພງປະກອບລະຄອນ ຜູ້ໃຫຍ່ເຫັດ Vs ກຳນັນຫອຍ:'''
** ຢາກນອນກ
== ອ້າງອິງ ==
{{reflist|refs=<ref name="Mitmitchai">ສາມມິດໄຊ ດັອດຄອມ. [http://www.mitmitchai.com/history "ປະຫວັດ ແລະ ຜົນງານຂອງ ໄຊຍາ ມິດໄຊ"]. ສືບຄົ້ນເມື່ອ 5 ມີນາ 2026.</ref>
<ref name="ThaiRath">ໄທລັດອອນລາຍ. [https://www.thairath.co.th/person/3389 "ຂໍ້ມູນບຸກຄົນ: ໄຊຍາ ມິດໄຊ"]. ສືບຄົ້ນເມື່ອ 5 ມີນາ 2026.</ref>
<ref name="Workpoint">Workpoint Entertainment. "ຣາຍການໄມໝົດໜີ້: ຄະນະກຳມະການ ໄຊຍາ ມິດໄຊ". ສືບຄົ້ນເມື່ອ 5 ມີນາ 2026.</ref>
<ref name="Award2010">TV INSIDE HOT AWARDS. "ຣາງວັນສິນລະປິນລູກທົ່ງຊາຍຮັອດແຫ່ງປີ 2010". ສືບຄົ້ນເມື່ອ 5 ມີນາ 2026.</ref>
}}
[[ໝວດ:ນັກຮ້ອງເພງລູກທຸ່ງໄທ]]
[[ໝວດ:ນັກຮ້ອງໄທ]]
[[ໝວດ:ນັກສະແດງຕະຫຼົກໄທ]]
[[ໝວດ:ນັກສະແດງໄທ]]
[[ໝວດ:ບຸກຄົນຈາກຈັງຫວັດອ່າງທອງ]]
[[ໝວດ:ບຸກຄົນທີ່ເກີດໃນປີ ຄ.ສ. 1974]]
ijx7jqlf01lq50h1yowsia91s62heyg
ມິສຊຸປຣາເນຊັນແນລ
0
13276
129327
129326
2026-07-23T13:38:48Z
The Miss GEE
22326
/* ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງລ່າສຸດ */
129327
wikitext
text/x-wiki
{{Infobox pageant
| name = ມິສຊຸປຣາເນຊັນແນລ
| image =
| image_border =
| size =
| caption = ໂລໂກ້ຂອງອົງກອນ ມິສຊຸປຣາເນຊັນແນລ
| first = 2009
| recent =
| current_titleholder = ເອດູອາຣ໌ດາ ບຣາວມ໌
| titleholder_represents = ບຣາຊິນ
| type = [[ລາຍການປະກວດຄວາມງາມ|ການປະກວດນາງງາມລະດັບນານາຊາດ]]
| headquarters = ວໍຊໍ, ໂປໂລຍ
| membership =
| language = ອັງກິດ
| leader_title = ປະທານ
| leader_name = ເກຮ໌ຮາດ ພາຣ໌ຊຸຕ໌ກາ ຟອນ ລິພິນສະກີ
| budget =
| website = {{URL|misssupranational.com}}
| logo =
}}
'''ມິສຊຸປຣາເນຊັນແນລ''' (ອັງກິດ: Miss Supranational) ແມ່ນການປະກວດນາງງາມລະດັບນານາຊາດປະຈຳປີ, ເຊິ່ງເລີ່ມຕົ້ນຂຶ້ນໃນປີ 2009 ແລະ ການປະກວດສ່ວນໃຫຍ່ຈັດຂຶ້ນຢູ່ປະເທດໂປໂລຍ. ນອກຈາກນີ້ ຍັງມີການປະກວດຝ່າຍຊາຍທີ່ຈັດຂຶ້ນຄວບຄູ່ກັນຄື '''ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ''' (Mister Supranational) ເຊິ່ງເລີ່ມຈັດຂຶ້ນໃນປີ 2016 ຢູ່ປະເທດໂປໂລຍເຊັ່ນດຽວກັນ.<ref>{{cite news|url=https://www.bangkokpost.com/life/social-and-lifestyle/1807394/crowning-glory-around-the-world|title=Crowning glory around the world!|newspaper=[[Bangkok Post]]|date=December 3, 2019}}</ref><ref>{{Cite news|url=http://leadership.ng/entertainment/381814/beauty-pageants-crowns-right-heads|title=Beauty Pageants: Are the Crowns On the Right Heads? - – Nigerian News from Leadership News|access-date=3 January 2016|archive-url=https://web.archive.org/web/20151222085830/http://leadership.ng/entertainment/381814/beauty-pageants-crowns-right-heads|archive-date=22 December 2015|newspaper=[[Leadership (newspaper)|Leadership]]}}</ref>
ຜູ້ຈັດການປະກວດ ມິສ ແລະ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ ໃໝ່ໃນປະຈຸບັນ ແມ່ນ ບໍລິສັດ World Beauty Association S.A. ແລະ Nowa Scena.<ref>{{cite web|url=https://www.news24.com/channel/the-juice/news/pageant/heres-everything-you-need-to-know-about-the-miss-supranational-competition-20200526|title=Here's everything we know about the Miss Supranational pageant|work=news24.com|date=20 May 2020 |access-date=27 August 2021}}</ref>
ຜູ້ດຳລົງຕຳແໜ່ງປະຈຸບັນແມ່ນ ເອດູອາຣ໌ດາ ບຣາວມ໌ ຈາກບຣາຊິນ ແລະ ສະວອນ ລາວິນ ຈາກຝຣັ່ງ, ເຊິ່ງໄດ້ຮັບການຄັດເລືອກໃນວັນທີ 27 ແລະ 28 ເດືອນມິຖຸນາ 2025 ຕາມລຳດັບ ຢູ່ທີ່ ໂນວີ ຊອງຄ໌.
== ມິສຊຸປຣາເນຊັນແນລ ==
[[file:Miss Supranational 2017 finalists.jpg|thumb|right|ການປະກວດຮອບຕັດສິນ ມິສຊຸປຣາເນຊັນແນລ 2017]]
ມິສຊຸປຣາເນຊັນແນລ ບໍລິຫານງານໂດຍ ບໍລິສັດ World Beauty Association S.A. ເຊິ່ງກໍ່ຕັ້ງຂຶ້ນໃນປີ 2009 ຢູ່ປານາມາ. ປະທານຄົນທຳອິດຂອງ World Beauty Association ແມ່ນ ຕຣິນີ ມາຣ໌ເຊລາ ຍັນດາຣ໌ ໂລບອນ ໂດຍມີ ເກຮ໌ຮາດ ພາຣ໌ຊຸຕ໌ກາ ຟອນ ລິພິນສະກີ ຈາກໂປໂລຍ ເປັນຜູ້ອຳນວຍການຜະລິດ ແລະ ປະທານບໍລິສັດໂປຣດັກຊັນ Nowa Scena.{{citation needed|date=January 2025}}
ພາຣ໌ຊຸຕ໌ກາ ຟອນ ລິພິນສະກີ ໄດ້ຮັບການອ້າງເຖິງໃນຖານະປະທານຂອງ ມິສຊຸປຣາເນຊັນແນລ ມາຕັ້ງແຕ່ຢ່າງໜ້ອຍປີ 2017.<ref>{{cite news |title=Gerhard Parzutka Von Lipinski speaks about his visit to India |url=https://timesofindia.indiatimes.com/videos/beauty-pageants/miss-diva/gerhard-parzutka-von-lipinski-speaks-about-his-visit-to-india/videoshow/61017330.cms |access-date=12 August 2020 |work=[[Times of India]] |date=Oct 10, 2017 |language=en}}</ref><ref name="Postponed"/>
ການປະກວດ ມິສຊຸປຣາເນຊັນແນລ ເລີ່ມຕົ້ນໃນປີ 2009 ແລະ ຈັດຂຶ້ນຢູ່ປະເທດໂປໂລຍມາໂດຍຕະຫຼອດ ຍົກເວັ້ນປີ 2013 ທີ່ຈັດຂຶ້ນຢູ່ ມິນສະຄ໌, ເບລາຣຸສ,<ref name="News24">{{cite news |last1=Morkel |first1=Graye |title=Here's everything we know about the Miss Supranational pageant |url=https://www.news24.com/channel/the-juice/news/pageant/heres-everything-you-need-to-know-about-the-miss-supranational-competition-20200526 |access-date=9 August 2020 |work=[[News24 (website)|News24]] |date=27 May 2019 |language=en}}</ref> ແລະ ປີ 2016 ທີ່ຮ່ວມເປັນເຈົ້າພາບກັບ ປົບປຣາດ, ສະໂລວາເກຍ.<ref>{{cite web |title=Two Countries To Co-Host Miss Supranational 2016 |url=https://www.misssupranational.com/two-countries-to-co-host-miss-supranational-2016/ |publisher=Miss Supranational |access-date=9 August 2020 |date=October 5, 2016}}</ref> ສ່ວນ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ ກໍໄດ້ເລີ່ມຕົ້ນຂຶ້ນໃນປີ 2016 ເຊັ່ນກັນ ຢູ່ທີ່ ກຣີນິດຊາ-ຊດຣຸຍ, ໂປໂລຍ.<ref>{{cite news |title=Mexico wins Mister Supranational 2016 - BeautyPageants |url=https://beautypageants.indiatimes.com/Mexico-wins-Mister-Supranational-2016/Mexico-wins-Mister-Supranational-2016/eventshow/55782192.cms |access-date=12 August 2020 |work=ETimes |date=December 4, 2016}}</ref>
ອົງກອນ World Beauty Association ທີ່ຕັ້ງຢູ່ຮ່ອງກົງ ໄດ້ຈັດການປະກວດ ມິສຊຸປຣາເນຊັນແນລ 2014 ຄູ່ຂະໜານຂຶ້ນຢູ່ອິນເດຍ ເຊິ່ງບໍ່ສາມາດຈັດປະກວດແບບເຊິ່ງໜ້າໄດ້ ເນື່ອງຈາກການລະບາດຂອງໄວຣັສເອໂບລາໃນອາຟຣິກາຕາເວັນອອກ. ໂດຍໄດ້ມີການມອບມຸງກຸດໃຫ້ຜູ້ເຂົ້າປະກວດ ເຈນນີເຟີຣ໌ ໂປເລໂອ ຈາກເວເນຊຸເອລາ ແບບທາງໄກ ແລະ ບໍ່ມີຕຳແໜ່ງຮອງຊະນະເລີດ ລວມທັງບໍ່ໄດ້ຈັດການປະກວດອື່ນໆ ອີກເລີຍຫຼັງຈາກນັ້ນ.<ref>{{cite news |title=Venezuela ganó el Miss Supranational 2014 |url=https://www.quepasa.com.ve/cultura-y-farandula/venezuela-gano-el-miss-supranational-2014/ |access-date=12 August 2020 |work=Diario lo Qué Pasa |date=November 18, 2014 |language=es}}</ref>
ການປະກວດ ມິສ ແລະ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ 2020 ຖືກເລື່ອນໄປຈັດໃນປີ 2021 ເນື່ອງຈາກການແພ່ລະບາດຂອງພະຍາດໂຄວິດ-19, ໂດຍມີ ແອນໂທເນຍ ໂພຊິ້ວ ຈາກໄທ ແລະ ເນທ໌ ຄຣ໌ນໂຄຟິຊ ຈາກສະຫະລັດອາເມລິກາ ດຳລົງຕຳແໜ່ງຕໍ່ໄປຈົນກວ່າຈະເຖິງເວລານັ້ນ.<ref name="Postponed">{{cite news |last1=Requintina |first1=Robert |title=Mr and Miss Supranational 2020 pageants postponed |url=https://mb.com.ph/2020/08/01/mr-and-miss-supranational-2020-pageants-postponed/ |access-date=9 August 2020 |work=[[Manila Bulletin]] |date=1 August 2020}}</ref> ປີ 2020 ຖືເປັນປີທຳອິດທີ່ບໍ່ໄດ້ຈັດການປະກວດ ມິສ ແລະ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ ນັບຕັ້ງແຕ່ເລີ່ມກໍ່ຕັ້ງຂຶ້ນ.<ref>{{cite web|url=https://www.thestar.com.my/news/regional/2019/12/07/039the-face-of-thailand039-anntonia-is-now-miss-supranational|title="The Face of Thailand" Anntonia is now Miss Supranational!|work=The Star|date=7 December 2019|access-date=7 December 2019}}</ref>
== ມຸງກຸດຂອງມິສຊຸປຣາເນຊັນແນລ ==
* '''ມຸງກຸດ The Blue Blossom''' (2009–2021; 2024–ປະຈຸບັນ) – ມຸງກຸດນີ້ອອກແບບໂດຍ ຈອດຈ໌ ວິດເທວສ໌ (George Wittels) ນັກອອກແບບອັນຍະມະນີ ແລະ ຜູ້ຜະລິດມຸງກຸດຊາວເວເນຊຸເອລາ.<ref>{{cite web|url=https://www.elnacional.com/entretenimiento/george-wittels-diseno-coronas-para-miss-supranational_262339/|title=George Wittels diseñó coronas para el Miss Supranational
|work=elnacional.com|date=6 December 2018|access-date=27 August 2021}}</ref> ຕົວມຸງກຸດເຮັດຈາກຖານເງິນບໍລິສຸດ ປະດັບດ້ວຍຄຣິສຕັລສີຂາວ, ເພັດ ແລະ ໄພລິນສີຟ້າອ່ອນ ຈຳນວນຫຼາຍ ລາຄາປະມານ 300,000 ໂດລາສະຫະລັດ. ຕະຫຼອດຫຼາຍປີທີ່ຜ່ານມາ ມຸງກຸດໄດ້ຮັບການປັບປຸງຫຼາຍຄັ້ງ ແຕ່ຍັງຄົງອົງປະກອບສຳຄັນຂອງດີໄຊນ໌ດັ້ງเดิมໄວ້.<ref>{{cite web|url=https://www.hipwee.com/list/pageant-lovers-wajib-tahu-ini-dia-6-mahkota-grand-slams-beauty-pageant-dunia/|title=Pageant Lovers Wajib Tahu! Ini dia 6 Mahkota Grand Slams Beauty Pageant Dunia|work=hipwee.com|access-date=27 August 2021}}</ref> ມຸງກຸດ Blue Blossom ສວມໃສ່ຫຼ້າສຸດໂດຍ ເອດູອາຣ໌ດາ ບຣາວມ໌ ຈາກບຣາຊິນ ຜູ້ຊະນະໃນປີ 2025.
* '''ມຸງກຸດ The Supranational''' (2022–2023) – ມຸງກຸດມິສຊຸປຣາເນຊັນແນລແບບທີສອງ ອອກແບບໂດຍ ຣິຄາຣ໌ໂດ ພັດທຣາຄາ (Ricardo Patraca) ນັກອອກແບບອັນຍະມະນີຊາວເມັກຊິໂກ. ເປີດໂຕໃນການປະກວດ ມິສຊຸປຣາເນຊັນແນລ ຄັ້ງທີ 13. ມຸງກຸດໄດ້ຮັບແຮງບັນດານໃຈຈາກສະໂລແກນຂອງການປະກວດຄື: Inspirational – Aspirational (ແຮງບັນດານໃຈ – ຄວາມທະຍານຢາກ) ເຊິ່ງເປັນຕົວແທນຂອງຄວາມສາມັກຄີ ແລະ ມິດຕະພາບທີ່ບໍ່ມີວັນສິ້ນສຸດ. ເສັ້ນສາຍທີ່ພຸ່ງຂຶ້ນຈາກຖານສູ່ດ້ານເທິງຂອງມຸງກຸດ ສື່ເຖິງແຮງບັນດານໃຈ. ດ້ານຂ້າງຂອງມຸງກຸດມີລວດລາຍໂບ ທີ່ໃຊ້ເປັນສັນຍະລັກຂອງໂຄງການເພື່ອສັງຄົມຕ່າງໆ ແລະ ອັນຍະມະນີສີຟ້າສື່ເຖິງຄວາມສະຫົບສຸກ ແລະ ຄອບຄົວ ເຊິ່ງເປັນເອກະລັກຂອງການປະກວດ.<ref>{{cite web|url=https://www.news24.com/channel/the-juice/news/pageant/what-lalela-mswanes-new-title-as-miss-supranational-entails-20220724|title=What Lalela Mswane's new title as Miss Supranational entails|work=news24.com|access-date=20 November 2022}}</ref> ມຸງກຸດ Supranational ສວມໃສ່ຫຼ້າສຸດໂດຍ ອັນເດຣອາ ອາກີເລຣາ ຈາກເອກວາດໍ ຜູ້ຊະນະໃນປີ 2023.
=== ແກລເລີຣີມຸງກຸດມິສຊຸປຣາເນຊັນແນລ ===
<gallery class="center">
File:Anntonia Porsild attending Puteri Indonesia 2020.jpg|''ມຸງກຸດ The Blue Blossom'', ສວມໃສ່ໂດຍ ມິສຊຸປຣາເນຊັນແນລ 2019, [[ແອນໂທເນຍ ໂພຊິ້ວ]]
File:Lalela Mswane meets Joko Widodo at the State Palace Jakarta.jpg|''ມຸງກຸດ The Supranational'', ສວມໃສ່ໂດຍ ມິສຊຸປຣາເນຊັນແນລ 2022, ລາເລລາ ເອັມສວາເນ
</gallery>
== ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງລ່າສຸດ ==
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງມິສຊຸປຣາເນຊັນແນລ}}
{| class="wikitable sortable" style="font-size: 80%; text-align:center;" |
! rowspan="2" |ປີ
! rowspan="2" |ຄັ້ງທີ
! rowspan="2" width="600" |ຜູ້ຊະນະ
! colspan="4" |ຮອງຊະນະເລີດ
! rowspan="2" |ສະຖານທີ່
! rowspan="2" |ວັນທີ
! rowspan="2" |ຜູ້ເຂົ້າແຂ່ງຂັນ
|-
! width="600" |ຮອງອັນດັບ 1
! width="600" |ຮອງອັນດັບ 2
! width="600" |ຮອງອັນດັບ 3
! width="600" |ຮອງອັນດັບ 4
|-
|1
| [[ມິສຊຸປຣາເນຊັນແນລ 2009|2009]]
|Oksana Moria<ref>{{cite web|url=https://tuoitre.vn/nguoi-dep-ukraine-chien-thang-vuong-mien-hoa-hau-sieu-quoc-gia-335479.htm|title=Người đẹp Ukraine chiến thắng vương miện Hoa hậu siêu quốc gia|date=September 6, 2009|website=tuoitre.vn|access-date=May 29, 2022}}</ref><br>{{flag|Ukraine}}
| Marina Lepesha<br>{{flag|Belarus}}
| Klaudia Ungerman<br>{{flag|ໂປໂລຍ}}
| Ruth Alvarado<br>{{flag|Honduras}}
| Amanda Ball<br>{{flag|England}}
| rowspan="3" |ພວອດຄ໌, [[ໂປໂລຍ]]
|September 5
| align="center" |36
|-
|2
| [[ມິສຊຸປຣາເນຊັນແນລ 2010|2010]]
|Karina Pinilla<ref>{{cite web|url=https://www.telemetro.com/famosos/2010/08/31/panamena-karina-pinilla-miss-supranational/2054404.html|title=La panameña Karina Pinilla es la Miss Supranational 2010|date=August 31, 2010|website=telemetro.com|access-date=May 29, 2022}}</ref><br>{{flag|Panama}}
| Hana Věrná<br>{{flag|Czech Republic}}
| Sandra Marinović<br>{{flag|Slovenia}}
| Claudia Villafuerte<br>{{flag|Peru}}
| Maythavee Burapasing<br>{{flag|ໄທ}}
|August 28
| align="center" |66
|-
|3
| [[ມິສຊຸປຣາເນຊັນແນລ 2011|2011]]
|Monika Lewczuk<ref>{{cite web|url=https://foreignersinuk.co.uk/lifestyle/beauty-pageants/monika-lewczuk-wins-miss-supranational-2011/|title=Monika Lewczuk wins Miss Supranational 2011|date=September 1, 2011|website=foreignersinuk.co.uk|access-date=May 29, 2022|archive-date=September 21, 2022|archive-url=https://web.archive.org/web/20220921175825/https://foreignersinuk.co.uk/lifestyle/beauty-pageants/monika-lewczuk-wins-miss-supranational-2011/|url-status=dead}}</ref><br>{{flag|Poland}}
| Liudmila Yakimovich<br>{{flag|Belarus}}
| Valery Velez<br>{{flag|ປວຍໂຕຣີໂກ}}
| Daniela Nguyễn Thu Mây<ref>{{cite web |date=August 27, 2011 |title=Nguyễn Thu Mây đoạt ngôi Á hậu 3 Miss Supranational |url=https://vnexpress.net/nguyen-thu-may-doat-ngoi-a-hau-3-miss-supranational-1914664.html |access-date=May 29, 2022 |website=vnexpress.net}}</ref><br>{{flag|Vietnam}}
| Krystelle Khoury<br>{{USA}}
|August 26
| align="center" |70
|-
|4
| [[ມິສຊຸປຣາເນຊັນແນລ 2012|2012]]
|Katsiaryna Buraya<ref>{{cite web|url=https://beautypageants.indiatimes.com/Katsiaryna-Buraya-A-beauty-queen-we-cannot-forget/eventshow/54627590.cms|title=Katsiaryna Buraya: A beauty queen we cannot forget!|date=October 1, 2016|website=indiatimes.com|access-date=May 29, 2022|archive-date=September 21, 2022|archive-url=https://web.archive.org/web/20220921175825/https://beautypageants.indiatimes.com/Katsiaryna-Buraya-A-beauty-queen-we-cannot-forget/eventshow/54627590.cms|url-status=dead}}</ref><br>{{flag|Belarus}}
| Nanthawan Wannachutha<br>{{flag|ໄທ}}
| Michaela Dihlová<br>{{flag|Czech Republic}}
| Elaine Moll<ref>{{cite web |date=September 17, 2012 |title=Elaine Kay Moll is Miss Supranational 2012 third runner-up |url=https://www.philstar.com/entertainment/2012/09/17/849782/elaine-kay-moll-miss-supranational-2012-third-runner-up |access-date=May 29, 2022 |website=philstar.com}}</ref><br>{{flag|Philippines}}
| Sulay Castillo<br>{{flag|Ecuador}}
|ວໍຊໍ, [[ໂປໂລຍ]]
|September 14
| align="center" |53
|-
|5
| [[ມິສຊຸປຣາເນຊັນແນລ 2013|2013]]
|Mutya Johanna Datul<ref>{{cite web|url=https://www.abs-cbn.com/lifestyle/09/07/13/pinay-crowned-miss-supranational-2013|title=Pinay crowned Miss Supranational 2013|date=September 9, 2013|website=news.abs-cbn.com|access-date=May 29, 2022}}</ref><br>{{flag|Philippines}}
| Jacqueline Morales<br>{{flag|Mexico}}
| Leyla Kose<br>{{flag|Turkey}}
| Cokorda Widani<br>{{flag|Indonesia}}
| Esonica Veira<br>{{flag|US Virgin Islands}}
|ມິນສະຄ໌, [[ປະເທດເບລາຣຸດຊີ|ເບລາຣຸສ]]
|September 6
| align="center" |83
|-
|6
| [[ມິສຊຸປຣາເນຊັນແນລ 2014|2014]]
|Asha Bhat<ref>{{cite web|url=https://economictimes.indiatimes.com/magazines/panache/indias-asha-bhat-wins-miss-supranational-2014-title/articleshow/45394149.cms|title=India's Asha Bhat wins Miss Supranational 2014 title|date=December 6, 2014|website=indiatimes.com|access-date=May 29, 2022}}</ref><br>{{flag|India}}
| Parapadsorn Disdamrong<br>{{flag|ໄທ}}
| Maggaly Nguema<br>{{flag|ກາບອງ}}
| Allyn Rose<br>{{USA}}
| Katarzyna Krzeszowska<br>{{flag|ໂປໂລຍ}}
| rowspan="5" |ກືຍິດສາ-ຊົດລຸຍ, [[ໂປໂລຍ]]
|December 5
| align="center" |71
|-
|7
| [[ມິສຊຸປຣາເນຊັນແນລ 2015|2015]]
|Stephania Stegman<ref>{{cite web|url=https://en.dailypakistan.com.pk/05-Dec-2015/miss-paraguay-stephanie-stegman-crowned-miss-supranational-2015|title=Miss Paraguay Stephanie Stegman crowned Miss Supranational 2015|date=December 5, 2015|website=dailypakistan.com.pk|access-date=May 29, 2022}}</ref><br>{{flag|Paraguay}}
| Siera Bearchell<br>{{CAN}}
| Mónica Castiño Agudelo<br>{{flag|ໂຄລັມເບຍ}}
| Tanja Ýr Ástþórsdóttir<br>{{flag|ອິດສະລັງ}}
| Karina Stephania Martín Jiménez<br>{{flag|ເມັກຊິໂກ}}
|December 4
| align="center" |82
|-
|8
| [[ມິສຊຸປຣາເນຊັນແນລ 2016|2016]]
|Srinidhi Shetty<ref>{{cite web|url=https://www.khaleejtimes.com/citytimes/newsmakers/indias-srinidhi-shetty-bags-miss-supranational-2016-crown|title=India's Srinidhi Shetty bags 'Miss Supranational 2016' crown|date=December 3, 2016|website=khaleejtimes.com|access-date=May 29, 2022}}</ref><br>{{flag|India}}
| Valeri Bespoli<br>{{flag|ເວເນຊູເອລາ}}
| Jelisa Peegot<br>{{flag|ຊູລິນາມ}}
| Ornella Gunesègier<br>{{flag|ສີລັງກາ}}
| Colinna Coksis<br>{{flag|ຮັງກາລີ}}
|December 2
| align="center" |71
|-
|9
| [[ມິສຊຸປຣາເນຊັນແນລ 2017|2017]]
|Jenny Kim<ref>{{cite web|url=https://www.mumbailive.com/en/entertainment/miss-supranational-jenny-kim-to-inspire-miss-diva-2018-contestants-27526|title=Never Forget To Smile And Always Stay Positive: Jenny Kim, Miss Supranational 2017|date=August 27, 2018|website=mumbailive.com|access-date=May 29, 2022}}</ref><br>{{flag|South Korea}}
| Marina Kuznetsov<br>{{flag|ໂຄລັມເບຍ}}
| Emily Ekhator<br>{{flag|ລູມານີ}}
| Susan Elizabeth Torres<br>{{flag|ເອທິໂອເປຍ}}
| María Cecilia Monagas<br>{{flag|ປວຍໂຕຣີໂກ}}
|December 1
| align="center" |65
|-
|10
| [[ມິສຊຸປຣາເນຊັນແນລ 2018|2018]]
|Valeria Vázquez<ref>{{cite web|url=https://www.elvocero.com/escenario/valeria-v-zquez-gana-miss-supranational-2018/article_2520499e-fa93-11e8-88b4-6b07091538ba.html|title=Valeria Vázquez gana Miss Supranational 2018|date=December 7, 2018|website=elvocero.com|access-date=May 29, 2022}}</ref><br>{{flag|Puerto Rico}}
| Katrina Jayne Dimaranan<br>{{USA}}
| Magdalena Bieńkowska<br>{{flag|ໂປໂລຍ}}
| Wilda Octaviana Situngkir<br>{{flag|ອິນໂດເນເຊຍ}}
| Diana Romero<br>{{flag|ເມັກຊິໂກ}}
|December 7
| align="center" |72
|-
|11
| [[ມິສຊຸປຣາເນຊັນແນລ 2019|2019]]
|Anntonia Porsild<ref>{{cite web|url=https://www.gmanetwork.com/news/lifestyle/content/718363/thailand-bet-is-miss-supranational-2019/story/|title=Thailand bet is Miss Supranational 2019|date=December 8, 2019|website=gmanetwork.com|access-date=May 29, 2022}}</ref><br>{{flag|Thailand}}
| Yana Haenisch<br>{{flag|Namibia}}
| Jesica Fitriana<ref>{{cite web |date=December 7, 2019 |title=Congrats! Puteri Indonesia Jesica Fitriana Sabet 2nd Runner-Up Miss Supranational 2019 |url=https://www.solopos.com/congrats-puteri-indonesia-jesica-fitriana-sabet-2nd-runner-up-miss-supranational-2019-1035189 |access-date=May 29, 2022 |website=solopos.com}}</ref><br>{{flag|ອິນໂດເນເຊຍ}}
| Janick Maceta<br>{{flag|Peru}}
| Gabriela de la Cruz<ref>{{Cite web |last=Leonardo |date=2019-12-06 |title=ORGULLO NACIONAL- Gabriela de La Cruz queda como cuarta finalista del Miss Supranational 2019 |url=https://gossipvzla.com/orgullo-nacional-gabriela-de-la-cruz-queda-como-cuarta-finalista-del-miss-supranational-2019/ |access-date=2022-05-29 |website=Gossipvzla |language=es}}</ref><br>{{flag|Venezuela}}
|ຄາໂຕວີຕເຊ, [[ໂປໂລຍ]]
|December 6
| align="center" |77
|-
| colspan="2" |2020
| colspan="8" |2020 ຖືກຍົກເລີກ ເນື່ອງຈາກການແພ່ລະບາດຂອງພະຍາດໂຄວິດ-19.
|-
|12
| [[ມິສຊຸປຣາເນຊັນແນລ 2021|2021]]
|Chanique Rabe<ref>{{cite web|url=https://www.zoomtventertainment.com/lifestyle/article/namibias-chanique-rabe-crowned-miss-supranational-2021-karla-guilfu-acevedo-thato-mosehle-are-runner-ups/802065|title=Namibia's Chanique Rabe crowned Miss Supranational 2021; Karla Guilfu Acevedo, Thato Mosehle are runner-ups|date=August 22, 2021|website=zoomtventertainment.com|access-date=May 29, 2022}}</ref><br>{{flag|Namibia}}
| Karla Guilfú<br>{{flag|ປວຍໂຕຣີໂກ}}
| Thato Mosehle<br>{{flag|South Africa}}
| Valentina Sánchez<ref>{{Cite web |date=2021-08-21 |title=Valentina Sánchez fue la tercera finalista del Miss Supranational 2021 |url=https://ultimasnoticias.com.ve/noticias/chevere/valentina-sanchez-fue-la-tercera-finalista-del-miss-supranational-2021/ |access-date=2022-05-29 |website=Últimas Noticias |language=es}}</ref><br>{{flag|Venezuela}}
| Eoanna Constanza<br>{{flag|Dominican Republic}}
| rowspan="5" |ໂນວີ ຊອງຄ໌, [[ໂປໂລຍ]]
|August 21
| align="center" |58
|-
|13
|[[ມິສຊຸປຣາເນຊັນແນລ 2022|2022]]
|Lalela Mswane<br>{{flag|South A
| Praewwanich Ruangthong<br>{{flag|ໄທ}}
| Nguyễn Huỳnh Kim Duyên<br>{{flag|Vietnam}}
| Adinda Cresheilla<br>{{flag|ອິນໂດເນເຊຍ}}
| Ismelys Velásquez<br>{{flag|Venezuela}}
|July 15
| align="center" |69
|-
|14
|[[ມິສຊຸປຣາເນຊັນແນລ 2023|2023]]
|Andrea Aguilera<br>{{flag|Ecuador}}
| Pauline Amelinckx<br>{{flag|Philippines}}
| Sancler Frantz <br>{{flag|Brazil}}
| Emma Collingridge<br>{{flag|United Kingdom}}
| Đặng Thanh Ngân<br>{{flag|Vietnam}}
|July 14
| align="center" |65
|-
|15
|[[ມິສຊຸປຣາເນຊັນແນລ 2024|2024]]
|Harashta Haifa Zahra<ref>{{cite web|first=MJ|last=Felipe|date=July 6, 2024|title=Indonesia wins Miss Supranational 2024; PH in Top 12|url=https://www.abs-cbn.com/lifestyle/2024/7/6/indonesia-wins-miss-supranational-2024-ph-in-top-12-718|website=[[ABS-CBN News]]|access-date=July 7, 2024}}</ref><br>{{flag|Indonesia}}
| Jenna Dykstra<br>{{USA}}
| Justýna Zedníková<br>{{flag|Czech Republic}}
| Isadora Murta<br>{{flag|Brazil}}
| Chanelle de Lau<br>{{flag|Curacao}}
|July 6
| align="center" |68
|-
|16
|[[ມິສຊຸປຣາເນຊັນແນລ 2025|2025]]
|Eduarda Braum<br>{{flag|Brazil}}
| Anna Lakrini<br>{{flag|Germany}}
| Quishantely Leito<br>{{flag|Curacao}}
| Tarah Valencia<br>{{flag|Philippines}}
| Valerie Klepadlo<br>{{flag|ປວຍໂຕຣີໂກ}}
|June 27
| align="center" |66
|}
=== ແກລເລີຣີຜູ້ຊະນະ ===
<gallery class="center">
File:Harashta Haifa Zahra at the final night of Miss Supranational 2025 (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2024<br>ຮາຣັສຕາ ໄຮຟາ ຊາຣາ,<br>{{flagu|Indonesia}}
File:Andrea Aguilera.png|ມິສຊຸປຣາເນຊັນແນລ 2023<br>ອັນເດຣອາ ອາກີເລຣາ,<br>{{flagu|Ecuador}}
File:Lalela Mswane meets Joko Widodo at the State Palace Jakarta.jpg|ມິສຊຸປຣາເນຊັນແນລ 2022<br>ລາເລລາ ເອັມສວາເນ,<br>{{flagu|South Africa}}
File:Miss Supranational 2021 Chanique Rabe.jpg|ມິສຊຸປຣາເນຊັນແນລ 2021<br>ຊານີກ ຣາເບ,<br>{{flagu|Namibia}}
File:Anntonia Porsild at Miss Diva Universe 2020 Grand Finale (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2019<br>ແອນໂທເນຍ ໂພຊິ້ວ,<br>{{flagu|Thailand}}
File:Valeria Vazquez Latorre.jpg|ມິສຊຸປຣາເນຊັນແນລ 2018<br>ວາເລເຣຍ ວາດເກດ,<br>{{flagu|Puerto Rico}}
File:Jenny Kim With Ministry of Tourism and Creative Economy of The Republic of Indonesia (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2017<br>ເຈນນີ ຄິມ,<br>{{flagu|South Korea}}
File:Srinidhi Shetty (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2016<br>ສຣີນິດີ ເຊດຕີ,<br>{{flagu|India}}
File:Stephania Stegman for Sol Spot, looking up.jpg|ມິສຊຸປຣາເນຊັນແນລ 2015<br>ເສຕຟາເນຍ ເສຕກແມນ,<br>{{flagu|Paraguay}}
File:Asha Bhat in 2019.jpg|ມິສຊຸປຣາເນຊັນແນລ 2014<br>ອາຊາ ບັດຕ໌,<br>{{flagu|India}}
File:Mutya Johanna Datul at NLEX Harbor Link groundbreaking ceremony.jpg|ມິສຊຸປຣາເນຊັນແນລ 2013<br>ມຸດທະຍາ ດາຕຸລ,<br>{{flagu|Philippines}}
File:Monika Lewczuk in 2017 cropped.jpg|ມິສຊຸປຣາເນຊັນແນລ 2011<br>ໂມນິກາ ເລຟຊຸກ,<br>{{flagu|Poland}}
File:Karina Pinilla por Flormar, Calendario Dejavú 01 (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2010<br>ຄາຣີນາ ພິນິລຢາ,<br>{{flagu|Panama}}
</gallery>
'''ໝາຍເຫດ'''
{{notelist|group=notes2}}
=== ຮອງຊະນະເລີດ ===
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງຮອງຊະນະເລີດມິສຊຸປຣາເນຊັນແນລ}}
=== ຄອນຕິເນນທອລຄວີນອັອຟບິວຕີ້ ===
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງຄອນຕິເນນທອລຄວີນອັອຟບິວຕີ້ຂອງມິສຊຸປຣາເນຊັນແນລ}}
=== ລາງວັນພິເສດ ===
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບລາງວັນພິເສດມິສຊຸປຣາເນຊັນແນລ}}
== ຕົວແທນປະເທດລາວ ==
* ປີ 2018-ປັດຈຸບັນ ສົ່ງຮອງຈາກເວທີ[[ມິສໂວຣ໌ວລາວ]]ໄປປະກວດ
* ປີ 2017 ສົ່ງຮອງຈາກເວທີ[[ມິສແກຣນລາວ]]ໄປປະກວດ
{|class="wikitable" style= "text-align:left; font-size: 9pt; line-height:22px;"
|- style="background:#efefef;" colspan=10 align="center"
! bgcolor="#efefef" width="8%" | ປີ
! bgcolor="#efefef" width="20%" | ຕົວແທນ
! bgcolor="#efefef" width="20%" | ແຂວງ
! bgcolor="#efefef" width="25%" | ຕຳແໜ່ງໃນການປະກວດ
! bgcolor="#efefef" width="25%" | ລາງວັນພິເສດ
|-
|2022
|ນາຣາທິບ ສິຣິປະພັນ
|[[ວຽງຈັນ]]
|
|
|-
| 2019
|[[ປຸລັດດາ ສາຍດອນໂຂງ]]
|[[ແຂວງອັດຕະປື|ອັດຕະປື]]
|ບໍ່ໄດ້ເຂົ້າຮອບ
|
|-
| 2018
|[[ສັນທະນີ ໃສມະນີວັນ]]
|[[ວຽງຈັນ]]
|ບໍ່ໄດ້ເຂົ້າຮອບ
|'''ຊຸດປະຈຳຊາດດີເດັ່ນ'''
|-
| 2017
|[[ກິດສະດາ ວົງໄຊສະຫວາດ]]
|[[ວຽງຈັນ]]
| colspan="2" {{N/a|''ບໍ່ໄດ້ເຂົ້າຮ່ວມປະກວດ''}}
|}
== ເພີ່ມເຕີມ ==
* [[ລາຍະການປະກວດຄວາມງາມ]]
== ອ້າງອີງ ==
<references />
== ແຫຼ່ງຂໍ້ມູນອື່ນ ==
{{ມິສຊຸປຣາເນຊັນແນລ}}{{ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງມິສຊຸປຣາເນຊັນແນລ}}{{ເວທີປະກວດຄວາມງາມລະດັບແກຣນສະແລັມ}}{{ໂກລໂບ້ວ ບິວຕີ້}}<noinclude>
[[ໝວດ:ມິສຊຸປຣາເນຊັນແນລ]]
[[ໝວດ:ແມ່ແບບການປະກວດນາງງາມ]]
[[ໝວດ:ການປະກວດນາງງາມ]]
[[ໝວດ:ໂກລໂບ້ວ ບິວຕີ້]]
</noinclude>
m8nrk4yq6ofd3t61bdgtv2xp9jelqt3
129328
129327
2026-07-23T13:39:54Z
The Miss GEE
22326
/* ແກລເລີຣີຜູ້ຊະນະ */
129328
wikitext
text/x-wiki
{{Infobox pageant
| name = ມິສຊຸປຣາເນຊັນແນລ
| image =
| image_border =
| size =
| caption = ໂລໂກ້ຂອງອົງກອນ ມິສຊຸປຣາເນຊັນແນລ
| first = 2009
| recent =
| current_titleholder = ເອດູອາຣ໌ດາ ບຣາວມ໌
| titleholder_represents = ບຣາຊິນ
| type = [[ລາຍການປະກວດຄວາມງາມ|ການປະກວດນາງງາມລະດັບນານາຊາດ]]
| headquarters = ວໍຊໍ, ໂປໂລຍ
| membership =
| language = ອັງກິດ
| leader_title = ປະທານ
| leader_name = ເກຮ໌ຮາດ ພາຣ໌ຊຸຕ໌ກາ ຟອນ ລິພິນສະກີ
| budget =
| website = {{URL|misssupranational.com}}
| logo =
}}
'''ມິສຊຸປຣາເນຊັນແນລ''' (ອັງກິດ: Miss Supranational) ແມ່ນການປະກວດນາງງາມລະດັບນານາຊາດປະຈຳປີ, ເຊິ່ງເລີ່ມຕົ້ນຂຶ້ນໃນປີ 2009 ແລະ ການປະກວດສ່ວນໃຫຍ່ຈັດຂຶ້ນຢູ່ປະເທດໂປໂລຍ. ນອກຈາກນີ້ ຍັງມີການປະກວດຝ່າຍຊາຍທີ່ຈັດຂຶ້ນຄວບຄູ່ກັນຄື '''ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ''' (Mister Supranational) ເຊິ່ງເລີ່ມຈັດຂຶ້ນໃນປີ 2016 ຢູ່ປະເທດໂປໂລຍເຊັ່ນດຽວກັນ.<ref>{{cite news|url=https://www.bangkokpost.com/life/social-and-lifestyle/1807394/crowning-glory-around-the-world|title=Crowning glory around the world!|newspaper=[[Bangkok Post]]|date=December 3, 2019}}</ref><ref>{{Cite news|url=http://leadership.ng/entertainment/381814/beauty-pageants-crowns-right-heads|title=Beauty Pageants: Are the Crowns On the Right Heads? - – Nigerian News from Leadership News|access-date=3 January 2016|archive-url=https://web.archive.org/web/20151222085830/http://leadership.ng/entertainment/381814/beauty-pageants-crowns-right-heads|archive-date=22 December 2015|newspaper=[[Leadership (newspaper)|Leadership]]}}</ref>
ຜູ້ຈັດການປະກວດ ມິສ ແລະ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ ໃໝ່ໃນປະຈຸບັນ ແມ່ນ ບໍລິສັດ World Beauty Association S.A. ແລະ Nowa Scena.<ref>{{cite web|url=https://www.news24.com/channel/the-juice/news/pageant/heres-everything-you-need-to-know-about-the-miss-supranational-competition-20200526|title=Here's everything we know about the Miss Supranational pageant|work=news24.com|date=20 May 2020 |access-date=27 August 2021}}</ref>
ຜູ້ດຳລົງຕຳແໜ່ງປະຈຸບັນແມ່ນ ເອດູອາຣ໌ດາ ບຣາວມ໌ ຈາກບຣາຊິນ ແລະ ສະວອນ ລາວິນ ຈາກຝຣັ່ງ, ເຊິ່ງໄດ້ຮັບການຄັດເລືອກໃນວັນທີ 27 ແລະ 28 ເດືອນມິຖຸນາ 2025 ຕາມລຳດັບ ຢູ່ທີ່ ໂນວີ ຊອງຄ໌.
== ມິສຊຸປຣາເນຊັນແນລ ==
[[file:Miss Supranational 2017 finalists.jpg|thumb|right|ການປະກວດຮອບຕັດສິນ ມິສຊຸປຣາເນຊັນແນລ 2017]]
ມິສຊຸປຣາເນຊັນແນລ ບໍລິຫານງານໂດຍ ບໍລິສັດ World Beauty Association S.A. ເຊິ່ງກໍ່ຕັ້ງຂຶ້ນໃນປີ 2009 ຢູ່ປານາມາ. ປະທານຄົນທຳອິດຂອງ World Beauty Association ແມ່ນ ຕຣິນີ ມາຣ໌ເຊລາ ຍັນດາຣ໌ ໂລບອນ ໂດຍມີ ເກຮ໌ຮາດ ພາຣ໌ຊຸຕ໌ກາ ຟອນ ລິພິນສະກີ ຈາກໂປໂລຍ ເປັນຜູ້ອຳນວຍການຜະລິດ ແລະ ປະທານບໍລິສັດໂປຣດັກຊັນ Nowa Scena.{{citation needed|date=January 2025}}
ພາຣ໌ຊຸຕ໌ກາ ຟອນ ລິພິນສະກີ ໄດ້ຮັບການອ້າງເຖິງໃນຖານະປະທານຂອງ ມິສຊຸປຣາເນຊັນແນລ ມາຕັ້ງແຕ່ຢ່າງໜ້ອຍປີ 2017.<ref>{{cite news |title=Gerhard Parzutka Von Lipinski speaks about his visit to India |url=https://timesofindia.indiatimes.com/videos/beauty-pageants/miss-diva/gerhard-parzutka-von-lipinski-speaks-about-his-visit-to-india/videoshow/61017330.cms |access-date=12 August 2020 |work=[[Times of India]] |date=Oct 10, 2017 |language=en}}</ref><ref name="Postponed"/>
ການປະກວດ ມິສຊຸປຣາເນຊັນແນລ ເລີ່ມຕົ້ນໃນປີ 2009 ແລະ ຈັດຂຶ້ນຢູ່ປະເທດໂປໂລຍມາໂດຍຕະຫຼອດ ຍົກເວັ້ນປີ 2013 ທີ່ຈັດຂຶ້ນຢູ່ ມິນສະຄ໌, ເບລາຣຸສ,<ref name="News24">{{cite news |last1=Morkel |first1=Graye |title=Here's everything we know about the Miss Supranational pageant |url=https://www.news24.com/channel/the-juice/news/pageant/heres-everything-you-need-to-know-about-the-miss-supranational-competition-20200526 |access-date=9 August 2020 |work=[[News24 (website)|News24]] |date=27 May 2019 |language=en}}</ref> ແລະ ປີ 2016 ທີ່ຮ່ວມເປັນເຈົ້າພາບກັບ ປົບປຣາດ, ສະໂລວາເກຍ.<ref>{{cite web |title=Two Countries To Co-Host Miss Supranational 2016 |url=https://www.misssupranational.com/two-countries-to-co-host-miss-supranational-2016/ |publisher=Miss Supranational |access-date=9 August 2020 |date=October 5, 2016}}</ref> ສ່ວນ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ ກໍໄດ້ເລີ່ມຕົ້ນຂຶ້ນໃນປີ 2016 ເຊັ່ນກັນ ຢູ່ທີ່ ກຣີນິດຊາ-ຊດຣຸຍ, ໂປໂລຍ.<ref>{{cite news |title=Mexico wins Mister Supranational 2016 - BeautyPageants |url=https://beautypageants.indiatimes.com/Mexico-wins-Mister-Supranational-2016/Mexico-wins-Mister-Supranational-2016/eventshow/55782192.cms |access-date=12 August 2020 |work=ETimes |date=December 4, 2016}}</ref>
ອົງກອນ World Beauty Association ທີ່ຕັ້ງຢູ່ຮ່ອງກົງ ໄດ້ຈັດການປະກວດ ມິສຊຸປຣາເນຊັນແນລ 2014 ຄູ່ຂະໜານຂຶ້ນຢູ່ອິນເດຍ ເຊິ່ງບໍ່ສາມາດຈັດປະກວດແບບເຊິ່ງໜ້າໄດ້ ເນື່ອງຈາກການລະບາດຂອງໄວຣັສເອໂບລາໃນອາຟຣິກາຕາເວັນອອກ. ໂດຍໄດ້ມີການມອບມຸງກຸດໃຫ້ຜູ້ເຂົ້າປະກວດ ເຈນນີເຟີຣ໌ ໂປເລໂອ ຈາກເວເນຊຸເອລາ ແບບທາງໄກ ແລະ ບໍ່ມີຕຳແໜ່ງຮອງຊະນະເລີດ ລວມທັງບໍ່ໄດ້ຈັດການປະກວດອື່ນໆ ອີກເລີຍຫຼັງຈາກນັ້ນ.<ref>{{cite news |title=Venezuela ganó el Miss Supranational 2014 |url=https://www.quepasa.com.ve/cultura-y-farandula/venezuela-gano-el-miss-supranational-2014/ |access-date=12 August 2020 |work=Diario lo Qué Pasa |date=November 18, 2014 |language=es}}</ref>
ການປະກວດ ມິສ ແລະ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ 2020 ຖືກເລື່ອນໄປຈັດໃນປີ 2021 ເນື່ອງຈາກການແພ່ລະບາດຂອງພະຍາດໂຄວິດ-19, ໂດຍມີ ແອນໂທເນຍ ໂພຊິ້ວ ຈາກໄທ ແລະ ເນທ໌ ຄຣ໌ນໂຄຟິຊ ຈາກສະຫະລັດອາເມລິກາ ດຳລົງຕຳແໜ່ງຕໍ່ໄປຈົນກວ່າຈະເຖິງເວລານັ້ນ.<ref name="Postponed">{{cite news |last1=Requintina |first1=Robert |title=Mr and Miss Supranational 2020 pageants postponed |url=https://mb.com.ph/2020/08/01/mr-and-miss-supranational-2020-pageants-postponed/ |access-date=9 August 2020 |work=[[Manila Bulletin]] |date=1 August 2020}}</ref> ປີ 2020 ຖືເປັນປີທຳອິດທີ່ບໍ່ໄດ້ຈັດການປະກວດ ມິສ ແລະ ມິສເຕີຣ໌ຊຸປຣາເນຊັນແນລ ນັບຕັ້ງແຕ່ເລີ່ມກໍ່ຕັ້ງຂຶ້ນ.<ref>{{cite web|url=https://www.thestar.com.my/news/regional/2019/12/07/039the-face-of-thailand039-anntonia-is-now-miss-supranational|title="The Face of Thailand" Anntonia is now Miss Supranational!|work=The Star|date=7 December 2019|access-date=7 December 2019}}</ref>
== ມຸງກຸດຂອງມິສຊຸປຣາເນຊັນແນລ ==
* '''ມຸງກຸດ The Blue Blossom''' (2009–2021; 2024–ປະຈຸບັນ) – ມຸງກຸດນີ້ອອກແບບໂດຍ ຈອດຈ໌ ວິດເທວສ໌ (George Wittels) ນັກອອກແບບອັນຍະມະນີ ແລະ ຜູ້ຜະລິດມຸງກຸດຊາວເວເນຊຸເອລາ.<ref>{{cite web|url=https://www.elnacional.com/entretenimiento/george-wittels-diseno-coronas-para-miss-supranational_262339/|title=George Wittels diseñó coronas para el Miss Supranational
|work=elnacional.com|date=6 December 2018|access-date=27 August 2021}}</ref> ຕົວມຸງກຸດເຮັດຈາກຖານເງິນບໍລິສຸດ ປະດັບດ້ວຍຄຣິສຕັລສີຂາວ, ເພັດ ແລະ ໄພລິນສີຟ້າອ່ອນ ຈຳນວນຫຼາຍ ລາຄາປະມານ 300,000 ໂດລາສະຫະລັດ. ຕະຫຼອດຫຼາຍປີທີ່ຜ່ານມາ ມຸງກຸດໄດ້ຮັບການປັບປຸງຫຼາຍຄັ້ງ ແຕ່ຍັງຄົງອົງປະກອບສຳຄັນຂອງດີໄຊນ໌ດັ້ງเดิมໄວ້.<ref>{{cite web|url=https://www.hipwee.com/list/pageant-lovers-wajib-tahu-ini-dia-6-mahkota-grand-slams-beauty-pageant-dunia/|title=Pageant Lovers Wajib Tahu! Ini dia 6 Mahkota Grand Slams Beauty Pageant Dunia|work=hipwee.com|access-date=27 August 2021}}</ref> ມຸງກຸດ Blue Blossom ສວມໃສ່ຫຼ້າສຸດໂດຍ ເອດູອາຣ໌ດາ ບຣາວມ໌ ຈາກບຣາຊິນ ຜູ້ຊະນະໃນປີ 2025.
* '''ມຸງກຸດ The Supranational''' (2022–2023) – ມຸງກຸດມິສຊຸປຣາເນຊັນແນລແບບທີສອງ ອອກແບບໂດຍ ຣິຄາຣ໌ໂດ ພັດທຣາຄາ (Ricardo Patraca) ນັກອອກແບບອັນຍະມະນີຊາວເມັກຊິໂກ. ເປີດໂຕໃນການປະກວດ ມິສຊຸປຣາເນຊັນແນລ ຄັ້ງທີ 13. ມຸງກຸດໄດ້ຮັບແຮງບັນດານໃຈຈາກສະໂລແກນຂອງການປະກວດຄື: Inspirational – Aspirational (ແຮງບັນດານໃຈ – ຄວາມທະຍານຢາກ) ເຊິ່ງເປັນຕົວແທນຂອງຄວາມສາມັກຄີ ແລະ ມິດຕະພາບທີ່ບໍ່ມີວັນສິ້ນສຸດ. ເສັ້ນສາຍທີ່ພຸ່ງຂຶ້ນຈາກຖານສູ່ດ້ານເທິງຂອງມຸງກຸດ ສື່ເຖິງແຮງບັນດານໃຈ. ດ້ານຂ້າງຂອງມຸງກຸດມີລວດລາຍໂບ ທີ່ໃຊ້ເປັນສັນຍະລັກຂອງໂຄງການເພື່ອສັງຄົມຕ່າງໆ ແລະ ອັນຍະມະນີສີຟ້າສື່ເຖິງຄວາມສະຫົບສຸກ ແລະ ຄອບຄົວ ເຊິ່ງເປັນເອກະລັກຂອງການປະກວດ.<ref>{{cite web|url=https://www.news24.com/channel/the-juice/news/pageant/what-lalela-mswanes-new-title-as-miss-supranational-entails-20220724|title=What Lalela Mswane's new title as Miss Supranational entails|work=news24.com|access-date=20 November 2022}}</ref> ມຸງກຸດ Supranational ສວມໃສ່ຫຼ້າສຸດໂດຍ ອັນເດຣອາ ອາກີເລຣາ ຈາກເອກວາດໍ ຜູ້ຊະນະໃນປີ 2023.
=== ແກລເລີຣີມຸງກຸດມິສຊຸປຣາເນຊັນແນລ ===
<gallery class="center">
File:Anntonia Porsild attending Puteri Indonesia 2020.jpg|''ມຸງກຸດ The Blue Blossom'', ສວມໃສ່ໂດຍ ມິສຊຸປຣາເນຊັນແນລ 2019, [[ແອນໂທເນຍ ໂພຊິ້ວ]]
File:Lalela Mswane meets Joko Widodo at the State Palace Jakarta.jpg|''ມຸງກຸດ The Supranational'', ສວມໃສ່ໂດຍ ມິສຊຸປຣາເນຊັນແນລ 2022, ລາເລລາ ເອັມສວາເນ
</gallery>
== ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງລ່າສຸດ ==
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງມິສຊຸປຣາເນຊັນແນລ}}
{| class="wikitable sortable" style="font-size: 80%; text-align:center;" |
! rowspan="2" |ປີ
! rowspan="2" |ຄັ້ງທີ
! rowspan="2" width="600" |ຜູ້ຊະນະ
! colspan="4" |ຮອງຊະນະເລີດ
! rowspan="2" |ສະຖານທີ່
! rowspan="2" |ວັນທີ
! rowspan="2" |ຜູ້ເຂົ້າແຂ່ງຂັນ
|-
! width="600" |ຮອງອັນດັບ 1
! width="600" |ຮອງອັນດັບ 2
! width="600" |ຮອງອັນດັບ 3
! width="600" |ຮອງອັນດັບ 4
|-
|1
| [[ມິສຊຸປຣາເນຊັນແນລ 2009|2009]]
|Oksana Moria<ref>{{cite web|url=https://tuoitre.vn/nguoi-dep-ukraine-chien-thang-vuong-mien-hoa-hau-sieu-quoc-gia-335479.htm|title=Người đẹp Ukraine chiến thắng vương miện Hoa hậu siêu quốc gia|date=September 6, 2009|website=tuoitre.vn|access-date=May 29, 2022}}</ref><br>{{flag|Ukraine}}
| Marina Lepesha<br>{{flag|Belarus}}
| Klaudia Ungerman<br>{{flag|ໂປໂລຍ}}
| Ruth Alvarado<br>{{flag|Honduras}}
| Amanda Ball<br>{{flag|England}}
| rowspan="3" |ພວອດຄ໌, [[ໂປໂລຍ]]
|September 5
| align="center" |36
|-
|2
| [[ມິສຊຸປຣາເນຊັນແນລ 2010|2010]]
|Karina Pinilla<ref>{{cite web|url=https://www.telemetro.com/famosos/2010/08/31/panamena-karina-pinilla-miss-supranational/2054404.html|title=La panameña Karina Pinilla es la Miss Supranational 2010|date=August 31, 2010|website=telemetro.com|access-date=May 29, 2022}}</ref><br>{{flag|Panama}}
| Hana Věrná<br>{{flag|Czech Republic}}
| Sandra Marinović<br>{{flag|Slovenia}}
| Claudia Villafuerte<br>{{flag|Peru}}
| Maythavee Burapasing<br>{{flag|ໄທ}}
|August 28
| align="center" |66
|-
|3
| [[ມິສຊຸປຣາເນຊັນແນລ 2011|2011]]
|Monika Lewczuk<ref>{{cite web|url=https://foreignersinuk.co.uk/lifestyle/beauty-pageants/monika-lewczuk-wins-miss-supranational-2011/|title=Monika Lewczuk wins Miss Supranational 2011|date=September 1, 2011|website=foreignersinuk.co.uk|access-date=May 29, 2022|archive-date=September 21, 2022|archive-url=https://web.archive.org/web/20220921175825/https://foreignersinuk.co.uk/lifestyle/beauty-pageants/monika-lewczuk-wins-miss-supranational-2011/|url-status=dead}}</ref><br>{{flag|Poland}}
| Liudmila Yakimovich<br>{{flag|Belarus}}
| Valery Velez<br>{{flag|ປວຍໂຕຣີໂກ}}
| Daniela Nguyễn Thu Mây<ref>{{cite web |date=August 27, 2011 |title=Nguyễn Thu Mây đoạt ngôi Á hậu 3 Miss Supranational |url=https://vnexpress.net/nguyen-thu-may-doat-ngoi-a-hau-3-miss-supranational-1914664.html |access-date=May 29, 2022 |website=vnexpress.net}}</ref><br>{{flag|Vietnam}}
| Krystelle Khoury<br>{{USA}}
|August 26
| align="center" |70
|-
|4
| [[ມິສຊຸປຣາເນຊັນແນລ 2012|2012]]
|Katsiaryna Buraya<ref>{{cite web|url=https://beautypageants.indiatimes.com/Katsiaryna-Buraya-A-beauty-queen-we-cannot-forget/eventshow/54627590.cms|title=Katsiaryna Buraya: A beauty queen we cannot forget!|date=October 1, 2016|website=indiatimes.com|access-date=May 29, 2022|archive-date=September 21, 2022|archive-url=https://web.archive.org/web/20220921175825/https://beautypageants.indiatimes.com/Katsiaryna-Buraya-A-beauty-queen-we-cannot-forget/eventshow/54627590.cms|url-status=dead}}</ref><br>{{flag|Belarus}}
| Nanthawan Wannachutha<br>{{flag|ໄທ}}
| Michaela Dihlová<br>{{flag|Czech Republic}}
| Elaine Moll<ref>{{cite web |date=September 17, 2012 |title=Elaine Kay Moll is Miss Supranational 2012 third runner-up |url=https://www.philstar.com/entertainment/2012/09/17/849782/elaine-kay-moll-miss-supranational-2012-third-runner-up |access-date=May 29, 2022 |website=philstar.com}}</ref><br>{{flag|Philippines}}
| Sulay Castillo<br>{{flag|Ecuador}}
|ວໍຊໍ, [[ໂປໂລຍ]]
|September 14
| align="center" |53
|-
|5
| [[ມິສຊຸປຣາເນຊັນແນລ 2013|2013]]
|Mutya Johanna Datul<ref>{{cite web|url=https://www.abs-cbn.com/lifestyle/09/07/13/pinay-crowned-miss-supranational-2013|title=Pinay crowned Miss Supranational 2013|date=September 9, 2013|website=news.abs-cbn.com|access-date=May 29, 2022}}</ref><br>{{flag|Philippines}}
| Jacqueline Morales<br>{{flag|Mexico}}
| Leyla Kose<br>{{flag|Turkey}}
| Cokorda Widani<br>{{flag|Indonesia}}
| Esonica Veira<br>{{flag|US Virgin Islands}}
|ມິນສະຄ໌, [[ປະເທດເບລາຣຸດຊີ|ເບລາຣຸສ]]
|September 6
| align="center" |83
|-
|6
| [[ມິສຊຸປຣາເນຊັນແນລ 2014|2014]]
|Asha Bhat<ref>{{cite web|url=https://economictimes.indiatimes.com/magazines/panache/indias-asha-bhat-wins-miss-supranational-2014-title/articleshow/45394149.cms|title=India's Asha Bhat wins Miss Supranational 2014 title|date=December 6, 2014|website=indiatimes.com|access-date=May 29, 2022}}</ref><br>{{flag|India}}
| Parapadsorn Disdamrong<br>{{flag|ໄທ}}
| Maggaly Nguema<br>{{flag|ກາບອງ}}
| Allyn Rose<br>{{USA}}
| Katarzyna Krzeszowska<br>{{flag|ໂປໂລຍ}}
| rowspan="5" |ກືຍິດສາ-ຊົດລຸຍ, [[ໂປໂລຍ]]
|December 5
| align="center" |71
|-
|7
| [[ມິສຊຸປຣາເນຊັນແນລ 2015|2015]]
|Stephania Stegman<ref>{{cite web|url=https://en.dailypakistan.com.pk/05-Dec-2015/miss-paraguay-stephanie-stegman-crowned-miss-supranational-2015|title=Miss Paraguay Stephanie Stegman crowned Miss Supranational 2015|date=December 5, 2015|website=dailypakistan.com.pk|access-date=May 29, 2022}}</ref><br>{{flag|Paraguay}}
| Siera Bearchell<br>{{CAN}}
| Mónica Castiño Agudelo<br>{{flag|ໂຄລັມເບຍ}}
| Tanja Ýr Ástþórsdóttir<br>{{flag|ອິດສະລັງ}}
| Karina Stephania Martín Jiménez<br>{{flag|ເມັກຊິໂກ}}
|December 4
| align="center" |82
|-
|8
| [[ມິສຊຸປຣາເນຊັນແນລ 2016|2016]]
|Srinidhi Shetty<ref>{{cite web|url=https://www.khaleejtimes.com/citytimes/newsmakers/indias-srinidhi-shetty-bags-miss-supranational-2016-crown|title=India's Srinidhi Shetty bags 'Miss Supranational 2016' crown|date=December 3, 2016|website=khaleejtimes.com|access-date=May 29, 2022}}</ref><br>{{flag|India}}
| Valeri Bespoli<br>{{flag|ເວເນຊູເອລາ}}
| Jelisa Peegot<br>{{flag|ຊູລິນາມ}}
| Ornella Gunesègier<br>{{flag|ສີລັງກາ}}
| Colinna Coksis<br>{{flag|ຮັງກາລີ}}
|December 2
| align="center" |71
|-
|9
| [[ມິສຊຸປຣາເນຊັນແນລ 2017|2017]]
|Jenny Kim<ref>{{cite web|url=https://www.mumbailive.com/en/entertainment/miss-supranational-jenny-kim-to-inspire-miss-diva-2018-contestants-27526|title=Never Forget To Smile And Always Stay Positive: Jenny Kim, Miss Supranational 2017|date=August 27, 2018|website=mumbailive.com|access-date=May 29, 2022}}</ref><br>{{flag|South Korea}}
| Marina Kuznetsov<br>{{flag|ໂຄລັມເບຍ}}
| Emily Ekhator<br>{{flag|ລູມານີ}}
| Susan Elizabeth Torres<br>{{flag|ເອທິໂອເປຍ}}
| María Cecilia Monagas<br>{{flag|ປວຍໂຕຣີໂກ}}
|December 1
| align="center" |65
|-
|10
| [[ມິສຊຸປຣາເນຊັນແນລ 2018|2018]]
|Valeria Vázquez<ref>{{cite web|url=https://www.elvocero.com/escenario/valeria-v-zquez-gana-miss-supranational-2018/article_2520499e-fa93-11e8-88b4-6b07091538ba.html|title=Valeria Vázquez gana Miss Supranational 2018|date=December 7, 2018|website=elvocero.com|access-date=May 29, 2022}}</ref><br>{{flag|Puerto Rico}}
| Katrina Jayne Dimaranan<br>{{USA}}
| Magdalena Bieńkowska<br>{{flag|ໂປໂລຍ}}
| Wilda Octaviana Situngkir<br>{{flag|ອິນໂດເນເຊຍ}}
| Diana Romero<br>{{flag|ເມັກຊິໂກ}}
|December 7
| align="center" |72
|-
|11
| [[ມິສຊຸປຣາເນຊັນແນລ 2019|2019]]
|Anntonia Porsild<ref>{{cite web|url=https://www.gmanetwork.com/news/lifestyle/content/718363/thailand-bet-is-miss-supranational-2019/story/|title=Thailand bet is Miss Supranational 2019|date=December 8, 2019|website=gmanetwork.com|access-date=May 29, 2022}}</ref><br>{{flag|Thailand}}
| Yana Haenisch<br>{{flag|Namibia}}
| Jesica Fitriana<ref>{{cite web |date=December 7, 2019 |title=Congrats! Puteri Indonesia Jesica Fitriana Sabet 2nd Runner-Up Miss Supranational 2019 |url=https://www.solopos.com/congrats-puteri-indonesia-jesica-fitriana-sabet-2nd-runner-up-miss-supranational-2019-1035189 |access-date=May 29, 2022 |website=solopos.com}}</ref><br>{{flag|ອິນໂດເນເຊຍ}}
| Janick Maceta<br>{{flag|Peru}}
| Gabriela de la Cruz<ref>{{Cite web |last=Leonardo |date=2019-12-06 |title=ORGULLO NACIONAL- Gabriela de La Cruz queda como cuarta finalista del Miss Supranational 2019 |url=https://gossipvzla.com/orgullo-nacional-gabriela-de-la-cruz-queda-como-cuarta-finalista-del-miss-supranational-2019/ |access-date=2022-05-29 |website=Gossipvzla |language=es}}</ref><br>{{flag|Venezuela}}
|ຄາໂຕວີຕເຊ, [[ໂປໂລຍ]]
|December 6
| align="center" |77
|-
| colspan="2" |2020
| colspan="8" |2020 ຖືກຍົກເລີກ ເນື່ອງຈາກການແພ່ລະບາດຂອງພະຍາດໂຄວິດ-19.
|-
|12
| [[ມິສຊຸປຣາເນຊັນແນລ 2021|2021]]
|Chanique Rabe<ref>{{cite web|url=https://www.zoomtventertainment.com/lifestyle/article/namibias-chanique-rabe-crowned-miss-supranational-2021-karla-guilfu-acevedo-thato-mosehle-are-runner-ups/802065|title=Namibia's Chanique Rabe crowned Miss Supranational 2021; Karla Guilfu Acevedo, Thato Mosehle are runner-ups|date=August 22, 2021|website=zoomtventertainment.com|access-date=May 29, 2022}}</ref><br>{{flag|Namibia}}
| Karla Guilfú<br>{{flag|ປວຍໂຕຣີໂກ}}
| Thato Mosehle<br>{{flag|South Africa}}
| Valentina Sánchez<ref>{{Cite web |date=2021-08-21 |title=Valentina Sánchez fue la tercera finalista del Miss Supranational 2021 |url=https://ultimasnoticias.com.ve/noticias/chevere/valentina-sanchez-fue-la-tercera-finalista-del-miss-supranational-2021/ |access-date=2022-05-29 |website=Últimas Noticias |language=es}}</ref><br>{{flag|Venezuela}}
| Eoanna Constanza<br>{{flag|Dominican Republic}}
| rowspan="5" |ໂນວີ ຊອງຄ໌, [[ໂປໂລຍ]]
|August 21
| align="center" |58
|-
|13
|[[ມິສຊຸປຣາເນຊັນແນລ 2022|2022]]
|Lalela Mswane<br>{{flag|South A
| Praewwanich Ruangthong<br>{{flag|ໄທ}}
| Nguyễn Huỳnh Kim Duyên<br>{{flag|Vietnam}}
| Adinda Cresheilla<br>{{flag|ອິນໂດເນເຊຍ}}
| Ismelys Velásquez<br>{{flag|Venezuela}}
|July 15
| align="center" |69
|-
|14
|[[ມິສຊຸປຣາເນຊັນແນລ 2023|2023]]
|Andrea Aguilera<br>{{flag|Ecuador}}
| Pauline Amelinckx<br>{{flag|Philippines}}
| Sancler Frantz <br>{{flag|Brazil}}
| Emma Collingridge<br>{{flag|United Kingdom}}
| Đặng Thanh Ngân<br>{{flag|Vietnam}}
|July 14
| align="center" |65
|-
|15
|[[ມິສຊຸປຣາເນຊັນແນລ 2024|2024]]
|Harashta Haifa Zahra<ref>{{cite web|first=MJ|last=Felipe|date=July 6, 2024|title=Indonesia wins Miss Supranational 2024; PH in Top 12|url=https://www.abs-cbn.com/lifestyle/2024/7/6/indonesia-wins-miss-supranational-2024-ph-in-top-12-718|website=[[ABS-CBN News]]|access-date=July 7, 2024}}</ref><br>{{flag|Indonesia}}
| Jenna Dykstra<br>{{USA}}
| Justýna Zedníková<br>{{flag|Czech Republic}}
| Isadora Murta<br>{{flag|Brazil}}
| Chanelle de Lau<br>{{flag|Curacao}}
|July 6
| align="center" |68
|-
|16
|[[ມິສຊຸປຣາເນຊັນແນລ 2025|2025]]
|Eduarda Braum<br>{{flag|Brazil}}
| Anna Lakrini<br>{{flag|Germany}}
| Quishantely Leito<br>{{flag|Curacao}}
| Tarah Valencia<br>{{flag|Philippines}}
| Valerie Klepadlo<br>{{flag|ປວຍໂຕຣີໂກ}}
|June 27
| align="center" |66
|}
=== ແກລເລີຣີຜູ້ຊະນະ ===
<gallery class="center">
File:Harashta Haifa Zahra at the final night of Miss Supranational 2025 (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2024<br>ຮາຣັສຕາ ໄຮຟາ ຊາຣາ,<br>Indonesia
File:Andrea Aguilera.png|ມິສຊຸປຣາເນຊັນແນລ 2023<br>ອັນເດຣອາ ອາກີເລຣາ,<br>Ecuador
File:Lalela Mswane meets Joko Widodo at the State Palace Jakarta.jpg|ມິສຊຸປຣາເນຊັນແນລ 2022<br>ລາເລລາ ເອັມສວາເນ,<br>South Africa
File:Miss Supranational 2021 Chanique Rabe.jpg|ມິສຊຸປຣາເນຊັນແນລ 2021<br>ຊານີກ ຣາເບ,<br>Namibia
File:Anntonia Porsild at Miss Diva Universe 2020 Grand Finale (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2019<br>ແອນໂທເນຍ ໂພຊິ້ວ,<br>Thailand
File:Valeria Vazquez Latorre.jpg|ມິສຊຸປຣາເນຊັນແນລ 2018<br>ວາເລເຣຍ ວາດເກດ,<br>Puerto Rico
File:Jenny Kim With Ministry of Tourism and Creative Economy of The Republic of Indonesia (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2017<br>ເຈນນີ ຄິມ,<br>South Korea
File:Srinidhi Shetty (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2016<br>ສຣີນິດີ ເຊດຕີ,<br>India
File:Stephania Stegman for Sol Spot, looking up.jpg|ມິສຊຸປຣາເນຊັນແນລ 2015<br>ເສຕຟາເນຍ ເສຕກແມນ,<br>Paraguay
File:Asha Bhat in 2019.jpg|ມິສຊຸປຣາເນຊັນແນລ 2014<br>ອາຊາ ບັດຕ໌,<br>India
File:Mutya Johanna Datul at NLEX Harbor Link groundbreaking ceremony.jpg|ມິສຊຸປຣາເນຊັນແນລ 2013<br>ມຸດທະຍາ ດາຕຸລ,<br>Philippines
File:Monika Lewczuk in 2017 cropped.jpg|ມິສຊຸປຣາເນຊັນແນລ 2011<br>ໂມນິກາ ເລຟຊຸກ,<br>Poland
File:Karina Pinilla por Flormar, Calendario Dejavú 01 (cropped).jpg|ມິສຊຸປຣາເນຊັນແນລ 2010<br>ຄາຣີນາ ພິນິລຢາ,<br>Panama}
</gallery>
'''ໝາຍເຫດ'''
{{notelist|group=notes2}}
=== ຮອງຊະນະເລີດ ===
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງຮອງຊະນະເລີດມິສຊຸປຣາເນຊັນແນລ}}
=== ຄອນຕິເນນທອລຄວີນອັອຟບິວຕີ້ ===
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງຄອນຕິເນນທອລຄວີນອັອຟບິວຕີ້ຂອງມິສຊຸປຣາເນຊັນແນລ}}
=== ລາງວັນພິເສດ ===
{{ບົດຄວາມຫລັກ2|ລາຍຊື່ຜູ້ທີ່ໄດ້ຮັບລາງວັນພິເສດມິສຊຸປຣາເນຊັນແນລ}}
== ຕົວແທນປະເທດລາວ ==
* ປີ 2018-ປັດຈຸບັນ ສົ່ງຮອງຈາກເວທີ[[ມິສໂວຣ໌ວລາວ]]ໄປປະກວດ
* ປີ 2017 ສົ່ງຮອງຈາກເວທີ[[ມິສແກຣນລາວ]]ໄປປະກວດ
{|class="wikitable" style= "text-align:left; font-size: 9pt; line-height:22px;"
|- style="background:#efefef;" colspan=10 align="center"
! bgcolor="#efefef" width="8%" | ປີ
! bgcolor="#efefef" width="20%" | ຕົວແທນ
! bgcolor="#efefef" width="20%" | ແຂວງ
! bgcolor="#efefef" width="25%" | ຕຳແໜ່ງໃນການປະກວດ
! bgcolor="#efefef" width="25%" | ລາງວັນພິເສດ
|-
|2022
|ນາຣາທິບ ສິຣິປະພັນ
|[[ວຽງຈັນ]]
|
|
|-
| 2019
|[[ປຸລັດດາ ສາຍດອນໂຂງ]]
|[[ແຂວງອັດຕະປື|ອັດຕະປື]]
|ບໍ່ໄດ້ເຂົ້າຮອບ
|
|-
| 2018
|[[ສັນທະນີ ໃສມະນີວັນ]]
|[[ວຽງຈັນ]]
|ບໍ່ໄດ້ເຂົ້າຮອບ
|'''ຊຸດປະຈຳຊາດດີເດັ່ນ'''
|-
| 2017
|[[ກິດສະດາ ວົງໄຊສະຫວາດ]]
|[[ວຽງຈັນ]]
| colspan="2" {{N/a|''ບໍ່ໄດ້ເຂົ້າຮ່ວມປະກວດ''}}
|}
== ເພີ່ມເຕີມ ==
* [[ລາຍະການປະກວດຄວາມງາມ]]
== ອ້າງອີງ ==
<references />
== ແຫຼ່ງຂໍ້ມູນອື່ນ ==
{{ມິສຊຸປຣາເນຊັນແນລ}}{{ຜູ້ທີ່ໄດ້ຮັບຕຳແໜ່ງມິສຊຸປຣາເນຊັນແນລ}}{{ເວທີປະກວດຄວາມງາມລະດັບແກຣນສະແລັມ}}{{ໂກລໂບ້ວ ບິວຕີ້}}<noinclude>
[[ໝວດ:ມິສຊຸປຣາເນຊັນແນລ]]
[[ໝວດ:ແມ່ແບບການປະກວດນາງງາມ]]
[[ໝວດ:ການປະກວດນາງງາມ]]
[[ໝວດ:ໂກລໂບ້ວ ບິວຕີ້]]
</noinclude>
b1wyujlfc83evv1ua7uj77vjfg9uw53
ພະລັງງານແບບຍືນຍົງ
0
15110
129333
129307
2026-07-24T04:37:48Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:3|0|0 */
129333
wikitext
text/x-wiki
'''ພະລັງງານແບບຍືນຍົງ''' ({{Langx|en|Sustainable energy}}) ແມ່ນຫຼັກການທີ່ກ່ຽວກັບ ການທີ່ມະນຸດໃຊ້ພະລັງງານນັ້ນສາມາດຕອບສະຫນອງຄວາມຕ້ອງການໃນປະຈຸບັນ ໂດຍປາສະຈາກການລົດທອນຄວາມສາມາດໃນການຜະລິດພະລັງງານໃນອະນາຄົດອັນສາມາດຕອບສະໜອງຄວາມຕ້ອງການຂອງພວກເຂົາໄດ້." <ref name="REEEP">{{Cite web}}</ref> ຍຸດທະສາດຂອງພະລັງງານແບບຍືນຍົງ ໂດຍທົ່ວໄປມີຢູ່ສອງເສົາຫລັກຄື: ມີວິທີການໃນການຜະລິດພະລັງງານທີ່ສະອາດຂຶ້ນ ແລະ ການອະນຸລັກຮັກສາພະລັງງານ .
ເຕັກໂນໂລຢີຕ່າງໆຂອງພະລັງງານແບບຍືນຍົງແມ່ນຖືກນໍາໃຊ້ເພື່ອຜະລິດໄຟຟ້າ, ເພື່ອປັບອາກາດຮ້ອນແລະເຢັນໃນອາຄານຕ່າງໆ, ແລະ ເພື່ອໃຊ້ໃນການອອກລະບົບຍານພາຫະນະຂົນສົ່ງ ແລະ ເຄື່ອງຈັກຕ່າງໆ. ເມື່ອກ່າວເຖິງວິທີການຜະລິດພະລັງງານ, ຄໍາສັບ "ພະລັງງານແບບຍືນຍົງ(Sustainable energy)" ແມ່ນຖືກໃຊ້ແທນກັນເລື້ອຍໆກັບຄໍາສັບທີ່ວ່າ " ພະລັງງານທົດແທນ (Renewable energy) ". ແຫຼ່ງພະລັງງານທົດແທນໂດຍທົ່ວໄປມີຄື: [[ພະລັງງງານແສງຕາເວັນ|ພະລັງງານແສງຕາເວັນ]], ພະລັງງານລົມ, ພະລັງງານຄວາມຮ້ອນໃຕ້ດິນ ແລະ ພະລັງງານຂອງທະເລ ແມ່ນຖືວ່າເປັນແຫຼ່ງພະລັງງານທີ່ຍືນຍົງຢ່າງກວ້າງຂວາງ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ການດຳເນີນປະຕິບັດໂຄງການພະລັງງານທົດແທນໜຶ່ງໆ, ເຊັ່ນ: ການສ້າງເຂື່ອນເພື່ອການຜະລິດ [[ໄຟຟ້າພະລັງນໍ້າ|ໄຟຟ້າພະລັງງານນຳ້,]] ຫຼື ການຖາງປ່າເພື່ອການຜະລິດ ເຊື້ອໄຟຊີວະພາບ, ບາງຄັ້ງກໍ່ເຮັດໃຫ້ມີຄວາມກັງວົນຕໍ່ຄວາມຍືນຍົງທີ່ສໍາຄັນ. ມັນມີຫຼາກຫຼາຍການໂຕ້ຖຽງກ່ຽວກັບວ່າ ພະລັງງານນິວເຄຼຍນັ້ນຈະສາມາດເປັນພະລັງງານທີ່ຍືນຍົງຫຼືໄດ້ບໍ່.
ຕົ້ນທຶນຂອງແຫຼ່ງພະລັງງານແບບຍືນຍົງແມ່ນໄດ້ຫຼຸດລົງຢ່າງຮ້າຍແຮງໃນປີທີ່ຜ່ານໆມາ, ແລະກໍຈະຫຼຸດລົງເລື້ອຍໆ. ນະໂຍບາຍລັດຖະບານທີ່ມີປະສິທິພາບໄດ້ເພີ່ມການສະໜັບສະໜູນຄວາມເຊື່ອໝັ້ນຂອງນັກລົງທຶນຂຶ້ນເລື້ອຍໆ ແລະ ຕະຫຼາດເຫຼົ່ານີ້ກໍ່ກຳລັງເຕີບໃຫຍ່ຂະຫຍາຍຕົວ. ຄວາມກ້າວຫນ້າທີ່ຍິ່ງໃຫຍ່ແມ່ນກຳລັງໄດ້ເກີດຂຶ້ນໃນ[[:en:Energy_transition|ການປ່ຽນແປງພະລັງງານ (Energy transition]]) ຈາກ ພະລັງງານເຊື້ອໄຟຟອດຊິລ ສູ່ ລະບົບນິເວດທີ່ຍືນຍົງ ໃນຈຸດທີ່ວ່າຫຼາກຫຼາຍນັກວິຊາການແມ່ນສະໜັບສະໜູນ ພະລັງງານທົດແທນແບບ 100 ເປີເຊັນ
ວິຖີການຈັດຕັ້ງປະຕິບັດ ເພື່ອຄວາມຍືນຍົງແມ່ນ [[ການພັດທະນາແບບຍືນຍົງ]] ເຊິ່ງລວມມີ ສີ່ ຂອບເຂດທີ່ເຊື່ອມໂຍງເຊັ່ນ: [[ນິເວດສາດ]], [[ເສດຖະສາດ]], [[ການເມືອງ]]ແລະ[[ວັດທະນະທຳ|ວັດທະນະທໍາ]]. <ref>{{Cite book}};
{{Cite journal}}</ref> ວິທະຍາສາດຄວາມຍືນຍົງ ແມ່ນການສຶກສາຂອງການພັດທະນາແບບຍືນຍົງ ແລະ ວິທະຍາສາດສິ່ງແວດລ້ອມ. <ref>{{Cite book}}</ref>
== ຄໍານິຍາມ ==
ແນວຄິດ[[ການພັດທະນາແບບຍືນຍົງ]]ໄດ້ຖືກອະທິບາຍໂດຍ ຄະນະກໍາມະການກ່ຽວກັບສິ່ງແວດລ້ອມແລະການພັດທະນາຂອງໂລກ ໃນປື້ມ ''ອະນາຄົດຂອງພວກເຮົາ (Our common Future) ປີ 1987'' . ຄໍານິຍາມຂອງ "ຄວາມຍືນຍົງ", ໃນປັດຈຸບັນຖືກນໍາໃຊ້ກັນຢ່າງກວ້າງຂວາງ, ຄື: "ການພັດທະນາແບບຍືນຍົງຄວນຕອບສະຫນອງຄວາມຕ້ອງການໃນປະຈຸບັນໂດຍປາສະຈາກການຫຼຸດຜ່ອນຄວາມສາມາດຂອງການສ້າງພະລັງງານໃນອະນາຄົດອັນສາມາດຕອບສະໜອງຄວາມຕ້ອງການຂອງພວກເຂົາໄດ້'.
ໃນປຶ້ມນັ້ນ, ຄະນະກໍາມະການໄດ້ອະທິບາຍເຖິງ ສີ່ ອົງປະກອບທີ່ສໍາຄັນຂອງຄວາມຍືນຍົງກ່ຽວກັບພະລັງງານຄື : ຄວາມສາມາດໃນການເພີ່ມການຈັດຫາພະລັງງານເພື່ອຕອບສະຫນອງຄວາມຕ້ອງການຂອງມະນຸດທີ່ເພີ່ມຂຶ້ນເລື້ອຍໆ, ປະສິດທິພາບແລະການອະນຸລັກພະລັງງານ, ສຸຂະພາບແລະຄວາມປອດໄພຂອງປະຊາຊົນ ແລະ " ການປົກປ້ອງຂອງຊີວະນາໆພັນ ແລະ ການປ້ອງກັນຕໍໍໍ່ຮູບແບບຕ່າງໆທີ່ສ້າງມົນລະພິດ. " <ref name="Our Common Future">{{Cite book}}</ref> ຄໍານິຍາມຕ່າງໆຂອງພະລັງງານແບບຍືນຍົງໄດ້ຖືກສະເຫນີຕັ້ງແຕ່ນັ້ນມາ, ຊຶ່ງໄດ້ອີງໃສ່ສາມເສົາຫຼັກ ຂອງການພັດທະນາແບບຍືນຍົງ ຄື: ສະພາບແວດລ້ອມ, ເສດຖະກິດ ແລະ ສັງຄົມ. <ref name="Prandecki 2014">{{Cite journal}}</ref>
* ເງື່ອນໄຂ '''ດ້ານສິ່ງແວດລ້ອມ''' ລວມມີ: ການປ່ອຍອາຍພິດເຮືອນແກ້ວ, ຜົນກະທົບຕໍ່ ຊີວະນາໆພັນ , ການຜະລິດສິ່ງເສດເຫຼືອທີ່ອັນຕະລາຍ ແລະ ການປ່ອຍອາຍພິດຕ່າງໆ.
* ເງື່ອນໄຂ '''ເສດຖະກິດ''' ປະກອບມີຄ່າໃຊ້ຈ່າຍຂອງພະລັງງານ, ບໍ່ວ່າຈະເປັນພະລັງງານທີ່ມີຄວາມໜ້າເຊື່ອຖືສູງ ສົ່ງໃຫ້ແກ່ຜູ້ຊົມໃຊ້, ແລະ ຜົນກະທົບຕໍ່ວຽກງານອັນກ່ຽວຂ້ອງກັບການຜະລິດພະລັງງານ.
* ເງື່ອນໄຂ '''ດ້ານສັງຄົມ - ວັດທະນະທໍາ''' ປະກອບມີ: ການປ້ອງກັນຂອງສົງຄາມຕໍ່ການສະຫນອງ ພະລັງງານ ( ຄວາມປອດໄພດ້ານພະລັງງານ ) ແລະຄວາມສາມາດໃຊ້ພະລັງງານໄດ້ໃນໄລຍະຍາວ. <ref name="Prandecki 2014">{{Cite journal}}</ref>
ເນື່ອງຈາກບໍ່ມີແຫຼ່ງພະລັງງານທີ່ຕອບສະຫນອງເງື່ອນໄຂເຫຼົ່ານີ້ຢ່າງສົມບູນ, ແຫຼ່ງພະລັງງານແບບຍືນຍົງຕ່າງໆ ແມ່ນມີຄວາມຍືນຍົງ ຖ້າທຽບໃສ່ກັບແຕ່ແຫຼ່ງອື່ນໆ. <ref name="Prandecki 2014">{{Cite journal}}</ref> ການທີ່ບໍ່ມີແຫລ່ງພະລັງງານທີ່ສົມບູນແບບ ນັ້ນຫມາຍຄວາມວ່າ ການສະໜັບສະໜູນການນໍາໃຊ້ພະລັງງານທີ່ມີປະສິດທິພາບ ແມ່ນເປັນສິ່ງຈໍາເປັນສໍາລັບຍຸດທະສາດພະລັງງານທີ່ຍືນຍົງ. <ref name="Prandecki 2014" />
'''ພະລັງງານສີຂຽວ''' ແມ່ນພະລັງງານທີ່ສາມາດກັ່ນຕອງ, ຜະລິດ ແລະ / ຫຼື ບໍລິໂພກໄດ້ໂດຍບໍ່ມີຜົນກະທົບທາງລົບຕໍ່ສິ່ງແວດລ້ອມ. [[ໂລກ]] ມີຄວາມສາມາດທາງທໍາມະຊາດທີ່ຈະຟື້ນຕົວ, ຊຶ່ງຫມາຍຄວາມວ່າ ມົນລະພິດທີ່ບໍ່ໄດ້ຮ້າຍແຮງເກີນກວ່າທີ່ໂລກຈະຮັບໄຫວແມ່ນສາມາດເອີ້ນໄດ້ວ່າ ສີຂຽວ. ມັນເປັນຕົວແທນຂອງແຫຼ່ງພະລັງງານທົດແທນ ແລະ ເຕັກໂນໂລຢີທີ່ໃຫ້ຜົນປະໂຫຍດສູງສຸດທາງດ້ານສິ່ງແວດລ້ອມ. ອົງການປົກປັກຮັກສາສິ່ງແວດລ້ອມຂອງສະຫະລັດອາເມລິກາ ໃຫ້ນິຍາມແກ່ພະລັງງານສີຂຽວວ່າ ເປັນໄຟຟ້າທີ່ຜະລິດຈາກ [[ພະລັງງງານແສງຕາເວັນ|ພະລັງງານແສງຕາເວັນ]], ພະລັງງານລົມ, ພະລັງງານຄວາມຮ້ອນໃຕ້ດິນ, ກ໊າສຊີວະພາບ, ຊີວະມວນ ແລະ ແຫຼ່ງພະລັງງານ[[ໄຟຟ້າພະລັງນໍ້າ|ນໍ້າໄຟ້າ]]ນ້ອຍທີ່ມີຜົນກະທົບຕໍ່າ. <ref>{{Cite web}}</ref>
== ແຫຼ່ງພະລັງງານທົດແທນ ==
ເມື່ອເວົ້າເຖິງແຫລ່ງພະລັງງານ, ຄໍາສັບທີ່ວ່າ "ພະລັງງານແບບຍືນຍົງ" ແລະ "ພະລັງງານທົດແທນ" ແມ່ນຖືກນໍາໃຊ້ກັນເລື້ອຍໆ, ແຕ່ໂຄງການພະລັງງານທົດແທນບາງຄັ້ງກໍ່ເຮັດໃຫ້ເກີດມີຄວາມກັງວົນຕໍ່ຄວາມຍືນຍົງທີ່ສຳຄັນ. ເຕັກໂນໂລຢີຂອງພະລັງງານທົດແທນແມ່ນເປັນສ່ວນປະກອບທີ່ສໍາຄັນຕໍ່ພະລັງງານແບບຍືນຍົງ, ຍ້ອນພວກມັນ (ພະລັງງານທົດແທນຕ່າງໆ) ໂດຍທົ່ວໄປແມ່ນປະກອບສ່ວນໃຫ້ກັບຄວາມປອດໄພດ້ານພະລັງງານຂອງ ໂລກ, ຫຼຸດຜ່ອນການເອື້ອອີງຊັບພະຍາກອນນໍ້າມັນເຊື້ອໄຟ <ref name="IEA">International Energy Agency (2007).
[http://www.iea.org/textbase/papers/2006/renewable_factsheet.pdf ''Renewables in global energy supply: An IEA facts sheet''], OECD, 34 pages. {{webarchive|url=https://web.archive.org/web/20091012052513/http://www.iea.org/textbase/papers/2006/renewable_factsheet.pdf|date=12 October 2009}}</ref> ແລະ ເປັນໂອກາດໃນການຫຼຸດຜ່ອນການປ່ອຍອາຍພິດເຮືອນແກ້ວ. <ref name="IEA" /> ການວິເຄາະຄ່າໃຊ້ຈ່າຍທີ່ເຮັດໂດຍກຸ່ມຜູ້ຊ່ຽວຊານ ແລະ ອົງການທີ່ແຕກຕ່າງກັນຕ່າງໆ ໄດ້ຖືກດໍາເນີນການເພື່ອກໍານົດເສັ້ນທາງຂອງ ລາຄາທີ່ຖືກ ແລະ ວີທິທີ່ໄວທີ່ສຸດໃນການຈັດຫາພະລັງງານຂອງໂລກ ອັນປາສະຈາກການປ່ອຍອາຍພິດເຮືອນແກ້ວ, ເຊິ່ງມີຫົວຂໍ້ຫນຶ່ງທີ່ເປັນການໂຕ້ຖຽງກັນຢ່າງໃຫຍ່ຫຼວງ ໂດຍສະເພາະແມ່ນກ່ຽວກັບບົດບາດຂອງພະລັງງານນິວເຄຼຍ . <ref>{{Cite web}}</ref> <ref>{{Cite web}}</ref> <ref name="sciencedirect.com">{{Cite journal}}</ref> <ref>{{Cite journal}}</ref> <ref>{{Cite web}}</ref>
=== ພະລັງນຳ້ ===
ໃນບັນດາແຫລ່ງພະລັງງານທົດແທນ, ໂຮງພະລັງງານໄຟ້ານຳ້ມີຂໍ້ໄດ້ປຽບຂອງການມີອາຍຸຍືນ - ໂຮງພະລລັງງານໄຟ້ານຳ້ທີ່ມີຢູ່ເປັນຈຳນວນຫຼາຍແມ່ນໄດ້ດຳເນີນການມາແລ້ວ ຫຼາຍກວ່າ 100 ປີ. ນອກຈາກນີ້, ໂຮງພະລັງງານໄຟ້ານຳ້ຕ່າງໆ ແມ່ນສະອາດ ແລະ ມີການປ່ອຍອາຍພິດຫນ້ອຍ. ,ມະຫາກາບການວິພາກວິຈານຕ່າງໆ ຕໍ່ໂຮງງານພະລັງງານໄຟ້ານ້ໍາປະກອບມີ: ການເຄື່ອນຍ້າຍຂອງປະຊາຊົນທີ່ອາໃສຢູ່ບ່ອນທີ່ມີການວາງແຜນສ້າງອ່າງເກັບນ້ໍາ ແລະ ການປ່ອຍອາຍພິດຄາບອນໄດອອກໄຊໃນຊ່ວງການກໍ່ສ້າງແລະ ໄພນຳ້ຖ້ວມຈາກອ່າງເກັບນຳ້. <ref>[https://www.newscientist.com/article.ns?id=dn7046 Hydroelectric power's dirty secret revealed] ''New Scientist'', 24 February 2005.</ref>
[[ຮູບ:Nishidaira_Dam.jpg|left|thumb| [[ໄຟຟ້າພະລັງນໍ້າ|ເຂື່ອນໄຟຟ້ານໍ້າ]] ເປັນຫນຶ່ງໃນແຫຼ່ງພະລັງງານທີ່ຍືນຍົງທີ່ສຸດ. ]]
ຢ່າງໃດກໍ່ຕາມ, ພົບວ່າການປ່ອຍອາຍພິດທີ່ສູງແມ່ນມີຄວາມກ່ຽວຂ້ອງມາຈາກອ່າງເກັບນຳ້ທີ່ຕື້ນໃນບໍລິເວນທີ່ມີອາກາດອົບອຸ່ນ (ຮ້ອນ) ແລະ ນະວັດຕະກຳລ່າສຸດ ໃນເທັກໂນໂລຢີພະລັງງານໄຟຟ້າກັງຫັນນຳ້ ໄດ້ເຮັດໃຫ້ເກີດການພັດທະນາທີ່ມີປະສິດທິຜົນຂອງໂຄງການພະລັງງານໄຟ້ານຳ້ທີ່ໄຫຼລົງສູ່ແມ່ນຳ້ອັນມີຜົນກະທົບຫນ້ອຍ. <ref>{{Cite news|last=Ferris|first=David|title=The Power of the Dammed: How Small Hydro Could Rescue America's Dumb Dams|url=http://www.ecomagination.com/the-power-of-the-dammed-how-small-hydro-could-rescue-america-dumb-dams|accessdate=4 January 2012|date=3 November 2011|archive-date=4 ມັງກອນ 2012|archive-url=https://web.archive.org/web/20120104073158/http://www.ecomagination.com/the-power-of-the-dammed-how-small-hydro-could-rescue-america-dumb-dams|url-status=dead}}</ref> ໂດຍທົ່ວໄປແລ້ວ, ໂຮງພະລັງງານໄຟຟ້ານຳ້ຕ່າງໆແມ່ນຜະລິດອາຍພິດເຮືອນແກ້ວຕ່ໍາກວ່າການຜະລິດປະເພດອື່ນໆ. ພະລັງງານໄຟຟ້ານຳ້ທີ່ໄດ້ຮັບການພັດທະນາຢ່າງກວ້າງຂວາງໃນລະຫວ່າງການຂະຫຍາຍຕົວຂອງການໃຊ້ພະລັງງານໄຟຟ້າ ໃນສະຕະວັດທີ 19 ແລະ 20 ແມ່ນກຳລັງປະສົບກັບການຟື້ນຕົວໃໝ່ໃນສະຕະວັດ 21. ເຂດທີ່ມີການຂະຫຍາຍຕົວຂອງພະລັງງານໄຟ້ານຳ້ທີ່ໃຫຍ່ທີ່ສຸດແມ່ນເສດຖະກິດໃນອາຊີ. [[ປະເທດຈີນ|ຈີນ]] ແມ່ນຜູ້ນໍາໃນການພັດທະນາ; ຢ່າງໃດກໍ່ຕາມ, ບັນດາປະເທດອາຊີອື່ນໆກໍາລັງຕິດຕັ້ງພະລັງງານໄຟຟ້ານຳ້ຢ່າງໄວວາ. ການເຕີບໂຕນີ້ແມ່ນໄດ້ເພີ່ມຄ່າໃຊ້ຈ່າຍດ້ານພະລັງງານຫລາຍຂຶ້ນ - ໂດຍສະເພາະແມ່ນພະລັງງານນຳເຂົ້າ - ແລະ ຄວາມຕ້ອງການຢ່າງກວ້າງຂວາງ ສໍາລັບການຜະລິດພະລັງງານທີ່ ສະອາດ, ທົດແທນ ແລະ ປະຫຍັດພາຍໃນປະເທດ.
[[ຮູບ:Hydroelectric_dam.png|thumb| ເຂື່ອນໄຟຟ້ານຳ້ໃນພາບລວງຂວາງ ]]
=== ພະລັງງານຄວາມຮ້ອນໃຕ້ດິນ ===
[[ຮູບ:West_Ford_Flat_Geothermal_Cooling_Tower.JPG|thumb| ຫນຶ່ງໃນຫລາຍໂຮງງານໄຟຟ້າທີ່ Geysers, ເຂດພະລັງງານຄວາມຮ້ອນໃຕ້ດິນໃນພາກເຫນືອຂອງ ຄາລິຟໍເນຍ, ມີຜົນຜະລິດທັງຫມົດຫຼາຍກວ່າ 750 MW. ]]
ພະລັງງານຄວາມຮ້ອນໃຕ້ດິນ ສາມາດນໍາໃຊ້ເພື່ອການຜະລິດໄຟຟ້າ ແລະ ສໍາລັບການໃຫ້ຄວາມຮ້ອນ. ເຕັກໂນໂລຢີໃນການນໍາໃຊ້ປະກອບມີ ສະຖານີພະລັງງານອາຍນຳ້ແຫ້ງ, ສະຖານີພະລັງງານອາຍນຳ້ແສງແລບ ແລະສະຖານີພະລັງງານຮອບວຽນ. ໃນປີ 2010, ການຜະລິດພະລັງງານຄວາມຮ້ອນໃຕ້ດິນແມ່ນຖືກນຳໃຊ້ໃນຢູ່ 24 ປະເທດ, <ref name="gea2010">Geothermal Energy Association. [http://www.geo-energy.org/pdf/reports/GEA_International_Market_Report_Final_May_2010.pdf Geothermal Energy: International Market Update] {{Webarchive|url=https://web.archive.org/web/20170525165514/http://www.geo-energy.org/pdf/reports/GEA_International_Market_Report_Final_May_2010.pdf |date=2017-05-25 }} May 2010, p. 4-6.</ref> ໃນຂະນະທີ່ ການໃຫ້ຄວາມຮ້ອນຈາກພະລັງງານຄວາມຮ້ອນໃຕ້ດິນ ແມ່ນຖືກໃນໃຊ້ຢູ່ໃນ 70 [[ປະເທດ]]. <ref name="IPCC Annex II">Moomaw, W., P. Burgherr, G. Heath, M. Lenzen, J. Nyboer, A. Verbruggen, [http://srren.ipcc-wg3.de/report/IPCC_SRREN_Annex_II.pdf 2011: Annex II: Methodology. In IPCC: Special Report on Renewable Energy Sources and Climate Change Mitigation (ref. page 10)]</ref> ຕະຫຼາດສາກົນໄດ້ເຕີບໃຫຍ່ຂຶ້ນໃນອັດຕາສະເລ່ຍປະຈໍາປີທີ່ 5ເປີເຊັນ ໃນຊ່ວງສາມປີທີ່ຜ່ານມາເຖິງ ປີ 2015 ແລະ ໄດ້ຄາດວ່າພະລັງງານຄວາມຮ້ອນໃຕ້ດິນຂອງໂລກຈະສາມາດບັນລຸລະດັບ 14,5-17,6 GW ໃນປີ 2020. <ref>{{Cite web}}</ref>
ພະລັງງານຄວາມຮ້ອນໃຕ້ດິນແມ່ນຖືວ່າເປັນແຫລ່ງພະລັງງານທົດແທນທີ່ຍືນຍົງ ເນື່ອງຈາກວ່າການສະກັດເອົາຄວາມຮ້ອນຂອງມັນແມ່ນມີຂະຫນາດນ້ອຍເມື່ອທຽບກັບແກ່ນສານຄວາມຮ້ອນຂອງໂລກ . <ref name="sustainability">
{{Citation|title=Geothermal Sustainability}}</ref> ການປ່ອຍອາຍພິດເຮືອນແກ້ວຂອງສະຖານີພະລັງງານຄວາມຮ້ອນໃຕ້ດິນຕ່າງໆໃນເຂດຮ້ອນແມ່ນ ສະເລ່ຍປະມານ 45ແກມຂອງ ອາຍແກັສຄາບອນໄດອອກໄຊ ຕໍ່ ກິໂລວັດຊົ່ວໂມງ ຫລື ຫນ້ອຍກວ່າ 5 ເປີເຊັນຂອງໂຮງງານເຜົາຖ່ານໄຟຫີນແບບທັນສະໄຫມ. <ref name="IPCC Annex II"/> ໃນຖານະທີ່ເປັນແຫລ່ງພະລັງງານທົດແທນ ທັງພະລັງງານ ແລະ ຄວາມຮ້ອນ, ຄວາມຮ້ອນໃຕ້ດິນໃນເຂດຮ້ອນມີທ່າແຮງທີ່ຈະຕອບສະຫນອງຄວາມຕ້ອງການຂອງໂລກເຖິງ 3-5% ໃນປີ 2050. ດ້ວຍການຊຸກຍູ້ເສດຖະກິດ, ຄາດວ່າໃນປີ 2100 ມັນຈະສາມາດຕອບສະຫນອງໄດ້ເຖິງ 10% ຂອງຄວາມຕ້ອງການຂອງໂລກ. <ref name=":0">{{Cite journal}}</ref>
=== ຊີວະມວນ ແລະ ເຊື້ອເພີງຊີວະພາບ ===
ຊີວະມວນ (Biomass) ແມ່ນວັດຖຸທາງຊີວະພາບທີ່ມາຈາກການດໍາລົງຊີວິດ, ຫຼື ສິ່ງທີ່ມີຊີວິດຢູ່ໃນປະຈຸບັນ. ໃນຖານະທີ່ເປັນແຫຼ່ງພະລັງງານ, ຊີວະມວນສາມາດຖືກເຜົາໄຫມ້ເພື່ອຜະລິດຄວາມຮ້ອນແລະຜະລິດໄຟຟ້າ, ຫຼືຖືກປ່ຽນແປງໄປໃນຮູບແບບຕ່າງໆຂອງ ເຊື້ອເພີງຊີວະພາບ. ນ້ໍາມັນເຊື້ອໄຟເຊັ່ນ: ອາຍແກັສກາຊວນ ແລະ ເອທານອນ ແມ່ນມີຄຸນຄ່າສູງສຳລັບແຫລ່ງພະລັງງານຂອງລົດໃຫຍ່.
ຊີວະມວນແມ່ນໃຊ້ໄດ້ຫຼາຍຢ່າງ (ອະເໜກປະສົງ) ແລະເປັນໜຶ່ງໃນແຫຼ່ງພະລັງງານທົດແທນທີ່ນໍາໃຊ້ຫຼາຍທີ່ສຸດ. ມັນມີຢູ່ໃນຫຼາຍປະເທດ, ເຊິ່ງເຮັດໃຫ້ມັນເປັນທີ່ຫນ້າສົນໃຈ ໃນການຫຼຸດຜ່ອນການເອື້ອອີງນໍ້າມັນເຊື້ອໄຟນໍາເຂົ້າ. ຖ້າການຜະລິດຊີວະມວນໄດ້ມີການຈັດການຢ່າງດີ, ມັນສາມາດຊົດເຊີຍການປ່ອຍອາຍຄາບອນໄດອອກໄຊໄດ້ ໂດຍການດູດຊຶມກາກບອນຂອງພືດ ໃນລະຫວ່າງຊ່ວງອາຍຸໄຂຂອງພວກມັນ (ພືດ). ຖ້າແຫຼ່ງຊີວະມວນແມ່ນປະສິ່ງເສດເຫຼືອຈາກການກະສິກຳ ຫຼື ຈາກເທດສະບານ, ການເຜົາໄຫມ້ມັນ ຫຼື ການປ່ຽນມັນໃຫ້ກາຍເປັນ ອາຍແກ໊ສຊີວະພາບກໍ່ຍັງແມ່ນວິທີໜຶ່ງໃນການທໍາລາຍສິ່ງເສດເຫຼືອນີ້.
ໃນປີ 2012, ໄມ້ຍັງເປັນແຫຼ່ງພະລັງງານຊີວະມວນທີ່ໃຫຍ່ທີ່ສຸດໃນປະຈຸບັນ. <ref name="online.wsj.com">[https://www.wsj.com/articles/SB10001424052702303740704577524822063133842] Retrieved on 12 April 2012.</ref> ຖ້າຊີວະມວນຖືກເກັບກ່ຽວຈາກການປູກພືດເຊັ່ນ: ການປູກຕົ້ນໄມ້, ການປູກພືດເຫຼົ່ານີ້ສາມາດທຳລາຍລະບົບນິເວດທໍາມະຊາດ, ທໍາລາຍດິນ ແລະເປືອງແຫຼ່ງນ້ໍາ ແລະ ປຸ໋ຍສັງເຄາະ. ໃນບາງກໍລະນີ, ຜົນກະທົບເຫຼົ່ານີ້ ແມ່ນສາມາດເຮັດໃຫ້ເກີດການປ່ອຍອາຍຄາບອນໂດຍລວມທີ່ສູງຂຶ້ນ ເມື່ອທຽບກັບການນໍາໃຊ້ນໍ້າມັນຈາກນໍ້າມັນເຊື້ອໄຟຕ່າງໆ.
ການນໍາໃຊ້ທີ່ດິນປູກຝັງເພື່ອການຂະຫຍາຍຕົວຂອງນໍ້າມັນເຊື້ອໄຟສາມາດເຮັດໃຫ້ມີເນື້ອທີ່ຫນ້ອຍລົງສໍາລັບການປູກພັນພືດ . ເນື່ອງຈາກ ການສັງເຄາະແສງ ແມ່ນບໍ່ມີປະສິດທິພາບ ແລະ ຜົນຜະລິດຍັງຕ້ອງໃຊ້ຈຳນວນຂອງພະລລັງງານທີ່ສໍາຄັນໃນການເກັບກ່ຽວ, ການຕາກແຫ້ງ ແລະ ການຂົນສົ່ງ, ຈໍານວນພະລັງງານທີ່ຜະລິດໃນແຕ່ລະພື້ນທີ່ແມ່ນຫນ້ອຍຫຼາຍ, ຢູ່ໃນລະດັບ 0.25 W / m <sup>2</sup> ຫາ 1.2 W / m <sup>2</sup> . ໃນປະເທດສະຫະລັດອາເມລິກາ, ເອທານອນຈາກສາລີ ໄດ້ທົດແທນການໃຊ້ອາຍແກັສມໍເຕີຫນ້ອຍກວ່າ 10% ນັບຕັ້ງແຕ່ປີ 2011, ແຕ່ໄດ້ໃຊ້ປະມານ 40% ຂອງການເກັບກ່ຽວສາລີປະຈຳປີພາຍໃນປະເທດ.
=== ລົມ ===
ໃນທະວີບເອີຣົບ ສະຕະວັດທີ່ 19, ມີປະມານ 200,000 ກັງຫັນລົມ (windmills) ທີ່ຫຼາຍກ່ວາເຕັກໂນໂລຍີພະລັງງານລົມທີ່ທັນສະໄຫມຂອງສະຕະວັດ 21 ໜ້ອຍໜຶ່ງ<ref>{{Cite web}}</ref> ແມ່ນໄດ້ຖືກນຳໃຊ້ເພື່ອຂູດເມັດພືດ ແລະ ສູບນ້ໍາ. ໃນຍຸກຂອງເຄື່ອງຈັກອາຍນຳ້ພະລັງງານຖ່ານຫີນ ມັນໄດ້ແທນທີ່ການນຳໃຊ້ຂອງພະລັງງານລົມລັກສະນະນີ້ໄປແລ້ວ.
[[ຮູບ:Global_Wind_Power_Cumulative_Capacity.svg|right|thumb| ພະລັງງານລົມ: ຄວາມສາມາດໃນການຕິດຕັ້ງໃນທົ່ວໂລກ <ref name="GWEC_Market">{{Cite web}}</ref> ]]
ພະລັງງານລົມມີທ່າແຮງສູງ ແລະ ໄດ້ມີຕົ້ນທຶນໃນການຜະລິດຕ່ໍາ. ໃນຕອນທ້າຍຂອງ 2008 , ຄວາມອາດສາມາດຂອງຟາມພະລັງງານລົມທົ່ວໂລກແມ່ນຢູ່ທີ່ 120.791 ເມກາວັດ (MW), ເຊິ່ງສະແດງໃຫ້ເຫັນເຖິງການເພີ່ມຂຶ້ນທີ່ 28,8ເປີເຊັນສ່ວນຮ້ອຍຂອງປີ, <ref>{{Cite web}}</ref> ແລະ ພະລັງງານລົມໄດ້ຜະລິດ 1.3 ເປີເຊັນສຳລັບການອຸປະໂພກໄຟຟ້າໃນທົ່ວໂລກ. <ref>World Wind Energy Association (2008). [http://www.wwindea.org/home/images/stories/pr_statistics2007_210208_red.pdf Wind turbines generate more than 1 % of the global electricity] {{webarchive|url=https://web.archive.org/web/20091122184845/http://www.wwindea.org/home/images/stories/pr_statistics2007_210208_red.pdf|date=22 November 2009}}</ref> ພະລັງງານລົມກວມປະມານ 20% ຂອງການໃຊ້ໄຟຟ້າໃນເດນມາກ, 9% ໃນ ສະເປນ ແລະ 7% ໃນ ເຢຍລະມັນ . <ref>{{Cite web}}</ref> <ref>{{Cite web}}</ref> ຢ່າງໃດກໍ່ຕາມ, ມັນອາດຈະເປັນການຍາກທີ່ຈະນໍາໃຊ້ເຕັກໂນໂລຍີພະລັງງານລົມຢູ່ໃນບາງພື້ນທີ່ສໍາລັບເຫດຜົນທາງສະພາບແວດລ້ອມຫຼື [[ສິ່ງແວດລ້ອມ]] ແລະໃນບາງກໍລະນີ, ມັນອາດຈະຍາກທີ່ຈະນຳໄຟຟ້າເຂົ້າໄປໃນຕາຂ່າຍໄຟຟ້າ. <ref name="IEA"/>
=== ພະລັງງານແສງຕາເວັນ ===
ລະບົບຂອງພະລັງງານແສງຕາເວັນໂດຍທົ່ວໄປແມ່ນປະກອບດ້ວຍຕົວສະສົມອາຍຮ້ອນຈາກແສງອາທິດ, ລະບົບນໍ້າທີ່ເຄື່ອນຍ້າຍຄວາມຮ້ອນຈາກຕົວສະສົມສູ່ຈຸດການນໍາໃຊ້, ແລະ ອ່າງເກັບນ້ໍາເພື່ອເກັບຮັກສາຄວາມຮ້ອນ ແລະ ເພື່ອການນໍາໃຊ້ຄັ້ງຕໍ່ໄປ. ລະບົບດັ່ງກ່າວອາດຈະຖືກນໍາໃຊ້ເພື່ອໃຫ້ຄວາມຮ້ອນແກ່ນຳ້ພາຍໃນປະເທດ, ສະລອຍນ້ໍາ ຫຼື ໃຫ້ຄວາມຮ້ອນແກ່ພື້ນທີ່. <ref>[http://energy.gov/energysaver/articles/solar-water-heaters Solar water heating] {{Webarchive|url=https://web.archive.org/web/20150923145723/http://energy.gov/energysaver/articles/solar-water-heaters |date=2015-09-23 }} energy.gov</ref> ຄວາມຮ້ອນສາມາດນໍາໃຊ້ໄດ້ໃນອຸດສາຫະກໍາ ຫຼື ເປັນພະລັງງານສໍາລັບການນໍາໃຊ້ອື່ນໆເຊັ່ນ: ອຸປະກອນເຮັດຄວາມເຢັນ. <ref>{{Cite web}}</ref> ໃນຫລາຍໆສະພາບອາກາດ, ລະບົບຄວາມຮ້ອນພະລັງແສງຕາເວັນ ສາມາດສະຫນອງພະລັງງານນ້ໍາຮ້ອນພາຍໃນປະເທດໃນເປີເຊັນທີ່ສູງ ( 20% ເຖິງ 80%). ພະລັງງານທີ່ໂລກໄດ້ຮັບຈາກແສງຕາເວັນແມ່ນລັງສີແມ່ເຫຼັກໄຟຟ້າ. ປະເພດຂອງແສງທີ່ເບິ່ງເຫັນໄດ້ເຊັ່ນ: ອິນຟາເລດ (infrared), ອາວຕຣ້າໄວໂດເລດ(ultraviolet), ເອັກຊະເລ (x-rays), ແລະ ຄື້ນວິທະຍຸ (radio waves) ທີ່ໂລກໄດ້ຮັບໂດຍຜ່ານພະລັງງານແສງຕາເວັນ. ພະລັງງານສູງສຸດຂອງລັງສີແມ່ນມາຈາກແສງສະຫວ່າງທີ່ເບິ່ງເຫັນ. ພະລັງງານແສງຕາເວັນແມ່ນຄ່ອນຂ້າງສັບສົນເນື່ອງຈາກການປ່ຽນແປງໃນລະດູການແລະ ຈາກກາງເວັນສູ່ກາງຄືນ. ການປົກຫຸ້ມຂອງເມກໝອກກໍ່ສາມາດເພີ່ມຄວາມສັບສົນໃຫເກັບພະລັງງານແສງຕາເວັນໄດ້, ແລະບໍ່ແມ່ນລັງສີທັງໝົດຈາກດວງຕາເວັນທີ່ສາມາດສ່ອງສູ່ເທິງໜ້າໂລກ, ເພາະມັນໄດ້ຖືກດູດຊຶມ ແລະ ເຮັດແຕກຢາຍຊະຊາຍ ເນື່ອງຈາກເມກໝອກ ແລະ ກ໊າສໃນຊັ້ນບັນຍາກາດຂອງໂລກ. <ref>''Energy and the Environment'', Jack J Kraushaar and Robert A Ristinen, section 4.2 ''Energy from the Sun'' pg.92</ref>
[[ຮູບ:Solarpipe-scheme.svg|right|thumb|250x250px| ຮູບແຕ້ມຂອງ ຕົວສະສົມລາງພາຣາໂບລິກ ]]
ໂຮງໄຟຟ້າພະລັງງານແສງຕາເວັນໄດ້ດຳເນີນການຢູ່ California ຢ່າງເປັນທາງການນັບຕັ້ງແຕ່ທ້າຍຊຸມປີ 1980, ລວມທັງໂຮງໄຟຟ້າພະລັງງານແສງຕາເວັນທີ່ໃຫຍ່ທີ່ສຸດ, 350 MW Solar Generation Systems (ຊື່ໂຮງໄຟ້າ) . Nevada Solar One ແມ່ນອີກໂຮງ 64MW ໜຶ່ງທີ່ຫາກໍ່ເປີດໃຫມ່. <ref>{{Cite web}}</ref> ໂຮງໄຟ້າພາຣາໂບລິກ (Parabolic)ອື່ນໆທີ່ຖືກສະເຫນີແມ່ນ ສອງໂຮງງານໄຟ້າຄື: ໂຮງ 50 MW ໃນ [[ປະເທດແອສະປາຍ|ສະເປນ]] ແລະ ໂຮງ 100 MW ໃນ ອິດສະຣາເອນ . <ref>{{Cite web}}</ref>
[[ຮູບ:SolarPowerPlantSerpa.jpg|left|thumb| ໂຮງງານໄຟຟ້າແສງຕາເວັນ 11 MW ທີ່ຢູ່ໃກ້ ເຊີປາ, ໂປຕຸເກດ {{Coord|38|1|51|N|7|37|22|W|}} ]]
ການຜະລິດໄຟຟ້າພະລັງງານແສງຕາເວັນ ໃຊ້ເຊວແສງອາທິດ photovoltaic (PV) ເພື່ອປ່ຽນແສງເປັນກະແສໄຟຟ້າ. ໂມດູນ Photovoltaic ສາມາດຮວມເຂົ້າໃນອາຄານຫຼື ນໍາໃຊ້ໃນ ໂຮງພະລັງງານໄຟຟ້າທີ່ເຊື່ອມຕໍ່ກັບຕາຂ່າຍໄຟຟ້າ. ພວກມັນຍິ່ງມີຜົນປະໂຫຍດຫຼາຍສໍາລັບການສະຫນອງໄຟຟ້າໃນເຂດຫ່າງໄກສອກຫຼີກ .
ໂຄງການການຄົ້ນຄວ້າຂະໜາດໃຫຍ່ລະດັບຊາດ ແລະ ລະດັບພາກພື້ນ ກ່ຽວກັບການສັງເຄາະແສງແບບປະດິດທີ່ຖືກອອກແບບມາເພື່ອລະບົບນາໂນເຕັກໂນໂລຢີທີ່ໃຊ້ໃນການແຍກນຳ້ໃຫ້ກາຍເປັນນຳ້ມັນໄຮໂດເຈນ<ref>Collings AF and Critchley C. Artificial Photosynthesis- from Basic Biology to Industrial Application. WWiley-VCH. Weinheim (2005) p xi.</ref>. ແລະ ຂ້ໍສະເໜີດັ່ງກ່າວແມ່ນໄດ້ຖືກຍື່ນໃຫ້ກັບໂຄງການສັງເຄາະແສງແບບປະດີດສາກົນ<ref>Faunce TA, Lubitz W, Rutherford AW, MacFarlane D, Moore GF, Yang P, Nocera DG, Moore TA, Gregory DH, Fukuzumi S, Yoon KB, Armstrong FA, Wasielewski MR Styring S. Energy and Environment "Policy Case for a Global Project on Artificial Photosynthesis." Energy and Environmental Science 2013, 6 (3), 695 - 698 {{DOI|10.1039/C3EE00063J}}</ref>ໃນປີ 2011, ນັກຄົ້ນຄ້ວາຈາກ Massachusetts Institute of Technology (MIT) ໄດ້ພັດທະນາສິ່ງທີ່ເຂົາເຈົ້າເອີ້ນວ່າ "ໃບປະດິດ", ຊຶ່ງສາມາດແຍກນຳ້ໃຫ້ກາຍເປັນໄຮໂດຣເຈນ ແລະ [[ອົກຊີແຊນ|ອົກຊີເຈນ]]ໄດ້ໂດຍກົງຈາກພະລັງງານແສງຕາເວັນຍາມທີ່ຢອດເມັດນຳ້ລົງໄປໃນຈອກແກ້ວ. ອີກຂ້າງໜຶ່ງຂອງ "ໃບທຽມ" ແມ່ນຜະລິດຟອງນ້ໍາຂອງໄຮໂດເຈນ, ໃນຂະນະທີ່ອີກຂ້າງໜຶ່ງນັ້ນຜະລິດຟອງນຳ້ຂອງອົກຊີເຈນ. <ref name="mit">{{Cite web}}</ref>
ໂຮງໄຟຟ້າພະລັງງານແສງຕາເວັນໃນປະຈຸບັນສ່ວນຫຼາຍແມ່ນເຮັດຈາກຂະບວນຂອງຫນ່ວຍທີ່ຄ້າຍຄືກັນ ທີ່ແຕ່ລະຫນ່ວຍຖືກດັດປັບຢ່າງຕໍ່ເນື່ອງ, ເຊັ່ນ: ຂັ້ນຕອນເຄື່ອງຈັກບາງຢ່າງ. ດັ່ງນັ້ນຕົວປ່ຽນແປງແສງຈະຢູ່ໃນຈຸດສຸມຂອງແສງແດດ. ຄ່າໃຊ້ຈ່າຍໃນການເລັງຈຸດສຸມຂອງແສງໃສ່ກັບຕົວປ່ຽນແປງຕ່າງໆມີຄື: ແຜງພະລັງງານແສງຕາເວັນທີ່ມີພະລັງງານສູງ, ເຄື່ອງຈັກ Stirling ແລະອື່ນໆທີ່ສາມາດຫຼຸດລົງຢ່າງຫຼວງຫຼາຍດ້ວຍເຊືອກກົນໄກທີ່ທຳມະດາ ແລະ ມີປະສິທິພາບ . <ref>{{Cite web}}</ref> ໃນວິທີການນີ້ຫຼາກຫຼາຍຫນ່ວຍແມ່ນເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍຂອງສາຍເຊືອກ ສະນັ້ນ ດຶງ ສອງ ຫຼື ສາມສາຍເຊືອກກໍ່ພຽງພໍແລ້ວໃນການເຮັດໃຫ້ຕົວປ່ຽນແປງແສງຢູ່ໃນຈຸດສຸມພ້ອມກັບຕອນທີ່ທິດທາງຂອງແສງຕາເວັນໄດ້ປ່ຽນໄປ
[http://www.nss.org:8080/settlement/ssp/index.htm#japan ຍີ່ປຸ່ນ] {{Webarchive|url=https://web.archive.org/web/20180725153344/http://www.nss.org:8080/settlement/ssp/index.htm#japan |date=2018-07-25 }} ແລະ [http://www.nss.org:8080/settlement/ssp/index.htm#china ຈີນ] {{Webarchive|url=https://web.archive.org/web/20180725153344/http://www.nss.org:8080/settlement/ssp/index.htm#china |date=2018-07-25 }} ມີແຜນການແຫ່ງຊາດທີ່ມີຈຸດປະສົງໃນການຜະລິດພະລັງງານແສງຕາເວັນໂດຍພື້ນຖານ (SBSP) . The China Academy of Space Technology (CAST) ໄດ້ຊະນະ[https://web.archive.org/web/20100705021504/http://sunsat.gridlab.ohio.edu/ ການແຂ່ງຂັນ International SunSat Design Competition] 2015 ດ້ວຍ[https://www.youtube.com/watch?v=XhgJwnpYRGc ວີດີໂອ] [http://spacejournal.ohio.edu/issue18/cast.html Multi-Rotary Joint] ຂອງພວກເຂົາ. ຜູ້ສະຫນັບສະຫນູນຂອງ SBSP [https://www.youtube.com/watch?v=zrcoD_vHzxU ອ້າງ] ວ່າພະລັງງານແສງຕາເວັນທີ່ໃຊ້ໃນພື້ນທີ່ຈະ [https://www.youtube.com/watch?v=M9dQsRv1XDg ສະອາດ, ຄົງທົນແລະ ໃຊ້ໃນທົ່ວໂລກ] ແລະສາມາດຕອບສະຫນອງຄວາມຕ້ອງການພະລັງງານດາວເຄາະທັງຫມົດໄດ້. <ref name=":0">{{Cite journal}}</ref> [http://d3ssp.org/the-proposal/ ບົດສະເຫນີ] ອຸດສາຫະກໍາສະຫະອົງການທີ່ຜ່ານມາ (ສະທ້ອນໃຫ້ເຫັນ The 2008 Pentagon Recommendation) ໄດ້ຊະນະລາງວັນ The SECDEF / SECSTATE / USAID Director D3 (Diplomacy, Development, Defense) Innovation Challenge <ref name="autogenerated1">{{Cite web}}</ref>
[[ຮູບ:Flipped_MIT_Solar_One_house.png|thumb| MIT's Solar House#1 ຖືກສ້າງຂຶ້ນໃນປີ 1939 ໃຊ້ໃນການເກັບຮັກສາພະລັງງານຄວາມຮ້ອນຕາມລະດູ (STES) ສໍາລັບການໃຫ້ຄວາມຮ້ອນທັງຫມົດຕະຫຼອດປີ. ]]
=== ພະລັງງານນຳ້ທະເລ ===
[[ຮູບ:SeaGen_installed.jpg|left|thumb| ຜູ້ ຜະລິດພະລັງງານນ້ໍາທະເລ ທໍາອິດຂອງໂລກ <ref>{{Cite journal}}</ref> SeaGen - ໃນ Strangford Lough . ການປະທະຂອງຄື້ນສະແດງໃຫ້ເຫັນພະລັງງານທີ່ປະຈຸບັນໃນທະເລ. ]]
ປະເທດ[[ປະເທດປອກຕຸຍການ|ປອກຕຸຍການ]] ມີຟາມກະສິກໍາຄື້ນຟອງການຄ້າແຫ່ງທໍາອິດຂອງໂລກ,ນັ້ນຄືສວນຄື້ນຟອງAguçadora, ທີ່ຖືກສ້າງຂຶ້ນໃນປີ 2007. ຟາມ, ໃນເບື້ອງຕົ້ນແມ່ນຈະນໍາໃຊ້ສາມ Pelamis P-750 ເຄື່ອງຈັກທີ່ຜະລິດ 2.25 MW. <ref>[http://news.bbc.co.uk/1/hi/scotland/4805076.stm Sea machine makes waves in Europe] ''BBC News'', 15 March 2006.</ref> <ref>[http://news.bbc.co.uk/1/hi/scotland/4563077.stm Wave energy contract goes abroad] ''BBC News'', 19 May 2005.</ref> ແລະຄ່າໃຊ້ຈ່າຍແມ່ນຢູ່ທີ່ 8,5 ລ້ານ[[ຢູໂຣ|ເອີໂຣ]] . ພາຍໃຕ້ການດໍາເນີນງານທີ່ປະສົບຜົນສໍາເລັດ, ອີກ 70 ລ້ານເອີໂຣ ຈະມີການລົງທຶນກ່ອນປີ 2009 ສຳລັບອີກ 28 ເຄື່ອງຈັກ ເພື່ອຜະລິດ 525 ເມກາວັດ. <ref>{{Cite web}}</ref> ການສະຫນອງທຶນສໍາລັບຟາມຄື້ນຟອງໃນ [[ປະເທດເອກົດ|Scotland]] ໄດ້ຖືກປະກາດໃນເດືອນກຸມພາປີ 2007 ໂດຍ ຜູ້ບໍລິຫານຊາວສະກ໋ອດແລນ ເຊິ່ງມີມູນຄ່າຫຼາຍກວ່າ 4 ລ້ານປອນ, ເຊິ່ງເປັນສ່ວນຫນຶ່ງຂອງ 13 ລ້ານໂດລາສະຫະລັດສໍາລັບການຊ່ວຍເຫຼືອ ພະລັງງານໄຟ້າທະເລຢູ່ໃນ Scotland . ຟາມນັ້ນຈະເປັນຟາມທີ່ໃຫຍ່ທີ່ສຸດໃນໂລກ ທີ່ມີກໍາລັງການຜະລິດ 3 MW ດ້ວຍ ສີ່ເຄື່ອງຈັກ Pelamis. <ref>[http://news.bbc.co.uk/2/hi/uk_news/scotland/6377423.stm Orkney to get 'biggest' wave farm] ''BBC News'', 20 February 2007.</ref> (ເບິ່ງຕື່ມທີ່ Farm Wave ).
ໃນປີ 2007, ເຕັກໂນໂລຢີກັງຫັນທໍາອິດຂອງໂລກທີ່ສ້າງຈຳນວນການຄ້າຂອງພະລັງງານສຳລັບການໃຊ້ພະລັງງານໄຟ້າທະເລ ແມ່ນໄດ້ຖືກຕິດຕັ້ງໃນຂອບເຂດຂອງ ສຕຣັງຝອດ ເລົ້າ (Strangford Lough) ໃນພາກເຫນືອໄອແລນ, [[ປະເທດອັງກິດ]]. ການຜະລິດພະລັງງານໄຟຟ້ານຳ້ທະເລໃນລະດັບ 1.2 MW ນັ້ນ, ໄດ້ຜົນປະໂຫຍດຈາກການໄຫຼທີ່ວ່ອງໄວຂອງນຳ້ທະເລ ເຊິ່ງສາມາດເພີ່ມລະດັບຂຶ້ນສູງເຖິງ 4 m / s . ເຖິງແມ່ນວ່າເຄື່ອງປັ່ນໄຟຈະມີອໍານາດພຽງພໍທີ່ຈະສາມາດສະຫນອງໄຟຟ້າໃຫ້ກັບຫນຶ່ງພັນຄົວເຮືອນໄດ້, ກັງຫັນກໍ່ມີຍັງຜົນກະທົບໜ້ອຍໜຶ່ງຕໍ່ສິ່ງແວດລ້ອມ, ເນື່ອງຈາກວ່າມັນຢູ່ໃນໃຕ້ນຳ້ເກືອບທັງໝົດ, ແລະ ໃບພັດຂອງມັນກໍເຮັດວຽກຊ້າພໍທີ່ຈະບໍ່ເປັນອັນຕະລາຍຕໍ່ ສັດປ່າ . <ref>{{Cite web}}</ref> <ref>{{Cite web}}</ref>
=== ການເປີດໃຊ້ງານເທັກໂນໂລຢີສຳລັບພະລັງງານທົດແທນ ===
ພະລັງງານແສງຕາເວັນ ແລະ ພະລັງງານລົມແມ່ນ ແຫຼ່ງພະລັງງານທີ່ບໍ່ສະໝໍ່າສະເໝີ ເຊິ່ງສະຫນອງໄຟຟ້າປະມານ 10-40% ໃນຊ່ວງເວລາໃດໜຶ່ງ. ເພື່ອຊົດເຊີຍໃນອາການລັກສະນະນີ້, ຕາມທຳມະດາແມ່ນຈະຕ້ອງຈັບຄູ່ກັບພະລັງງານໄຟ້ານຳ້ທີ່ມີຢູ່ແລ້ວ ຫຼື ການຜະລິດແກັສທໍາມະຊາດ . ໃນຂົງເຂດບ່ອນທີ່ບໍ່ສາມາດງານໃຊ້ໄດ້, ພະລັງງານລົມແລະພະລັງງານແສງຕາເວັນສາມາດຈັບຄູ່ກັບພະລັງງານນຳ້ທີ່ເກັບຮັກສາແບບປຳ້ທີ່ມີລາຄາແພງ
== ແຫລ່ງພະລັງງານທີ່ບໍ່ສາມາດທົດແທນໄດ້ ==
ມັນມີຂໍ້ໂຕ້ຖຽງກັນວ່າ ພະລັງງານນິວເຄລຍ ສາມາດຖືວ່າເປັນຄວາມຍືນຍົງໄດ້ຫຼືບໍ່. ບາງຮູບແບບຂອງ ພະລັງງານນິວເຄຼຍ (ສິ່ງທີ່ສາມາດ "ເຜົາ" ສິ່ງເສດເຫຼືອຂອງນິວເຄຼຍໂດຍຜ່ານຂະບວນການທີ່ເອີ້ນວ່າ nuclear transmutation, ເຊັ່ນ: [./https://en.wikipedia.org/wiki/Integral_Fast_Reactor Integral Fast Reactor],ເຊິ່ງສາມາດຈັດຢູ່ໃນຫມວດ "ພະລັງງານສີຂຽວ"ໄດ້).
ບາງຊຸມຊົນ, ລວມທັງ Greenpeace ຜູ້ກໍ່ຕັ້ງແລະສະມາຊິກທໍາອິດ ທ່ານ ແພັດທຣິກ ມໍຣ໌ ( Patrick Moore), <ref>{{Cite news|url=https://www.washingtonpost.com/wp-dyn/content/article/2006/04/14/AR2006041401209.html|title=Going Nuclear|accessdate=2013-01-08}}</ref> <ref>{{Cite web}}</ref> <ref>{{Cite news|url=http://archive.wired.com/science/planetearth/news/2007/11/moore_qa|title=Co-Founder of Greenpeace Envisions a Nuclear Future|accessdate=2013-01-08}}</ref> ຈອດຈ໌ ມອນບຽດ (George Monbiot), <ref>{{Cite news|url=https://www.theguardian.com/environment/georgemonbiot/2009/feb/20/george-monbiot-nuclear-climate|title=George Monbiot: A kneejerk rejection of nuclear power is not an option | Environment|accessdate=2013-08-21}}</ref> ບິວ ເກດສ໌ (Bill Gates) <ref>{{Cite news|url=https://www.independent.co.uk/environment/green-living/has-bill-gates-come-up-with-a-safe-clean-way-to-harness-nuclear-power-2363205.html|title=Has Bill Gates come up with a safe, clean way to harness nuclear power?|accessdate=2013-01-09}}</ref> ແລະ ເຈມສ໌ ເລີຟລ໋ອກ (James Lovelock) <ref>Lovelock, James (2006). ''The Revenge of Gaia''. Reprinted Penguin, 2007. {{ISBN|978-0-14-102990-0}}</ref> ໄດ້ຈັດຈຳແນກພະລັງງານນິວເຄລຍ ເປັນພະລັງງານສີຂຽວ. ບາງອື່ນໆ ລວມທັງ ຟິວ ຣາຟອດ (Phil Radford) ຂອງ Greenpeace <ref>{{Cite web}}</ref> <ref>{{Cite web}}</ref> ບໍ່ເຫັນດີນໍາ ວ່າບັນຫາທີ່ກ່ຽວຂ້ອງກັບສິ່ງເສດເຫຼືອທີ່ເປັນອັນຕະລາຍ ແລະ ຄວາມສ່ຽງຂອງອຸປະຕິເຫດນິວເຄລຍ (ເຊັ່ນ: ໄພພິບັດເຊີໂນບິວ ) ເຮັດໃຫ້ເກີດຄວາມສ່ຽງຢ່າງຮັບບໍ່ໄດ້ຕໍ່ສິ່ງແວດລ້ອມແລະມະນຸດ. ເຖິງຢ່າງໃດກໍ່ຕາມ, ການສ້າງແບບທົດລອງນິວເຄຼຍໃຫມ່ກໍ່ສາມາດນໍາໃຊ້ສິ່ງທີ່ຖືກພິຈາລະນາວ່າ "ສິ່ງເສດເຫລືອຂອງນິວເຄຼຍ" ຈົນກ່ວາມັນບໍ່ເປັນອັນຕະລາຍ (ຫຼືຫນ້ອຍລົງ) ແລະມອອກແບບຮູບແບບທີ່ສາມາດຫຼຸດຜ່ອນຄວາມເປັນໄປໄດ້ຂອງອຸປະຕິເຫດນິວເຄລຍ. ການອອກແບບເຫຼົ່ານີ້ຍັງບໍ່ທັນໄດ້ໂຄສະນາເຜີຍແຜ່ເທື່ອ. (ເບິ່ງ: Molten salt reactor )
== ປະສິດທິພາບຂອງພະລັງງານ ==
ການກ້າວໄປສູ່ຄວາມຍືນຍົງດ້ານພະລັງງານຈະຕ້ອງມີການປ່ຽນແປງບໍ່ພຽງແຕ່ໃນການສະຫນອງພະລັງງານເທົ່ານັ້ນແຕ່ໃນທາງທີ່ຖືກນໍາໃຊ້ ແລະ ຫຼຸດຜ່ອນຈໍານວນພະລັງງານທີ່ຕ້ອງການສຳລັບການສົ່ງສິນຄ້າ ຫຼື ບໍລິການຕ່າງໆທີ່ຈໍາເປັນນຳ. ໂອກາດສໍາລັບການປັບປຸງດ້ານຄວາມຕ້ອງການຂອງຄວາມສົມດຸນຂອງພະລັງງານແມ່ນມີຄວາມອຸດົມສົມບູນ ແລະ ມີຄວາມຫຼາກຫຼາຍທີ່ສຸດໃນດ້ານການສະຫນອງ ແລະ ຜົນປະໂຫຍດທາງເສດຖະກິດທີ່ສໍາຄັນ. <ref>InterAcademy Council (2007). [http://www.interacademycouncil.net/File.aspx?id=24548 ''Lighting the way: Toward a sustainable energy future'' p. xvii.] {{Webarchive|url=https://web.archive.org/web/20170518050010/http://www.interacademycouncil.net/File.aspx?id=24548 |date=2017-05-18 }}</ref>
=== ເຕັກໂນໂລຊີ Smart-grid (ຕາຂ່າຍໄຟ້າ) ===
ຕາຂ່າຍໄຟຟ້າແມ່ນປະເພດຂອງເຕັກໂນໂລຢີຫນຶ່ງ ທີ່ປະຊາຊົນໃຊ້ເພື່ອນໍາລະບົບການໃຊ້ໄຟຟ້າເຂົ້າມາສູ່ ສະຕະວັດທີ 21, ໂດຍນໍາໃຊ້ການຄວບຄຸມຣີໂໝດຈາກຄອມພິວເຕີ້ ແລະ ການເຮັດວຽກແບບອັດຕະໂນມັດ. <ref name="Smart grid">{{Cite web}}</ref> ລະບົບເຫຼົ່ານີ້ສາມາດເຮັດໄດ້ໂດຍເຕັກໂນໂລຢີການສື່ສານສອງທາງ ແລະ ການຂະບວນການຄອມພິວເຕີ້ທີ່ໃຊ້ມາຢູ່ຫລາຍທົດສະວັດໃນອຸດສາຫະກໍາຕ່າງໆ. ພວກເຂົາກໍາລັງເລີ່ມຕົ້ນນໍາໃຊ້ເຂົ້າໃນເຄືອຂ່າຍໄຟຟ້າຕ່າງໆ, ຕັ້ງແຕ່ໂຮງງານໄຟຟ້າ ແລະ ພະລັງງານລົມ,ຟາມກະສິກໍາ ແລະ ພະລັງງານທັງຫມົດເພື່ອສົ່ງໃຫ້ຜູ້ບໍລິໂພກໄຟຟ້າໃນບ້ານເຮືອນແລະທຸລະກິດ. ພວກເຂົາໄດ້ໃຫ້ຫຼາກຫຼາຍຜົນປຕໍ່ການໃຊ້ປະໂຫຍດ ແລະ ຜູ້ບໍລິໂພກ, ສ່ວນຫຼາຍແມ່ນເຫັນໄດ້ໃນການປັບປຸງປະສິດທິພາບພະລັງງານໃນລະບົບໄຟຟ້າ ແລະ ໃນບ້ານເຮືອນ ແລະ ສໍານັກງານຂອງຜູ້ໃຊ້ພະລັງງານ. <ref name="Smart grid" />
== ບົດຄວາມທີ່ກ່ຽວຂ້ອງ ==
ໃນບັນບົດຄວາມວິທະຍາສາດທີ່ກ່ຽວຂ້ອງກັບການສຶກສາ ຂອງພະລັງງານທີ່ຍືນຍົງແມ່ນ:
* ''ພະລັງງານແລະສິ່ງແວດລ້ອມວິທະຍາສາດ''
* ''ພະລັງງານສໍາລັບການພັດທະນາແບບຍືນຍົງ''
* ''ນະໂຍບາຍພະລັງງານ''
* ''Journal of Energy Renewable and Sustainable Energy''
* ''ການທົບທວນພະລັງງານທົດແທນແລະຍືນຍົງ''
== ເບິ່ງຕື່ມ ==
{{Portal|Renewable energy|Energy|Sustainable development|Ecology}}{{Div col|colwidth=25em}}
* [[Ashden Award]]s for sustainable energy
* [[Electric vehicle]]
* [[Environmental impact of the energy industry]]
* [[Energy Globe Award]]
* [[Energy hierarchy]]
* [[Energy park]]
* [[Hydrogen economy]]
* International Network for Sustainable Energy - INFORSE
* [[International Renewable Energy Agency]]
* [[Leadership in Energy and Environmental Design]] (LEED)
* [[List of energy storage projects]]
* [[Microgrid]]
* [[Renewable Energy and Energy Efficiency Partnership]] - REEEP
* [[RESCO]]
* U.S. Department of Energy [[Solar Decathlon]]
* [[Sustainable Energy for All]] initiative
* [[The Venus Project]]
{{Div col end}}
* GA Mansoori, N Enayati, LB Agyarko (2016), [http://www.worldscientific.com/worldscibooks/10.1142/9699 ພະລັງງານ: ແຫຼ່ງຂໍ້ມູນ, ການນໍາໃຊ້, ກົດຫມາຍ, ຄວາມຍືນຍົງ, Illinois ເປັນຕົວແບບລັດ], ໂລກ Sci. Pub Co, {{ISBN|978-981-4704-00-7}}
== ບັນນານຸກົມ ==
* Edenhofer, Ottmar (2014). ການປ່ຽນແປງດິນຟ້າອາກາດ 2014: ການຫຼຸດຜ່ອນຄວາມປ່ຽນແປງດິນຟ້າອາກາດ : ກຸ່ມທີ III ການປະກອບສ່ວນຂອງບົດລາຍງານການປະເມີນຜົນທີ 5 ຂອງຄະນະກໍາມະການສາກົນກ່ຽວກັບການປ່ຽນແປງດິນຟ້າອາກາດ . ນິວຢອກ, NY: Cambridge University Press. ISBN <bdi> 978-1-107-05821-7 </bdi> ທີ່ຢູ່ OCLC 892580682
* Kutscher, CF Milford, JB Kreith, F (2018) ຫຼັກການຂອງລະບົບພະລັງງານແບບຍືນຍົງ, ສະບັບທີສາມ ທີ່ຢູ່ Mechanical Engineering ແລະ Aerospace Engineering Series. CRC Press ISBN <bdi> 978-0-429-93916-7 </bdi> ທີ່ຢູ່ Retrieved 10 February 2019
* Smil, Vaclav (2017) ການຫັນປ່ຽນພະລັງງານ: ທັດສະນະທົ່ວໂລກແລະແຫ່ງຊາດ . Santa Barbara, California: Praeger, ເປັນຈຸດປະສົງຂອງ ABC-CLIO, LLC. ISBN <bdi> 978-1-4408-5324-1 </bdi> ທີ່ຢູ່ OCLC 955778608
* Tester, Jefferson (2012). ພະລັງງານທີ່ຍືນຍົງ : ເລືອກເອົາຕົວເລືອກຕ່າງໆ . Cambridge, MA: MIT Press ISBN <bdi> 978-0-262-01747-3 </bdi> ທີ່ຢູ່ OCLC 892554374
== ອ້າງອິງ ==
{{Reflist|30em}}
s8omz4t9jk67b3y27tylgjvreevm1uj
ອະນິເມະ
0
15809
129337
119005
2026-07-24T04:42:34Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:2|0|0 */
129337
wikitext
text/x-wiki
{{Short description|ແອນິເມຊັ້ນທີ່ມາຈາກຍີ່ປຸ່ນ}}
[[ຮູບ:Wikipe-tan cropped.png|thumb|[[ວິກິພີເດຍ:ວິກິພີຕັງ|ວິກິພີຕັງ]], ວິກິພີເດຍໃນຮູບແບບຕົວລະຄອນອະນິເມະ]]
'''''ອະນີເມະ''''' (ຂຽນທັບສັບ: ອນິເມະ){{efn|name=a|text=ອີງຈາກ[[ພາສາໄທ]] ແລະ ການຂຽນແບບໂຣມາຈິ|group=ຂໍ້ຄວາມ}}, '''''ອານີເມ''''' ຫຼື '''''ແອນິເມະ''''' ({{Lang-ja|アニメ}}, [[ໂຣມາຈິ]]: Anime, ສະກົດສຽງ:/a.ɲi.me/) ແມ່ນ[[ແອນິເມຊັ້ນ]]ທີ່[[ແອນິເມຊັ້ນດັ້ງເດີມ|ແຕ້ມດ້ວຍມື]] ແລະ [[ແອນິເມຊັ້ນຄອມພິວເຕີ|ຄອມພິວເຕີ]]ທີ່ມີຕົ້ນກຳເນີດມາຈາກປະເທດ[[ປະເທດຢີ່ປຸ່ນ|ຍີ່ປຸ່ນ]].<ref>{{Cite web|last=Ashcraft|first=Brian|date=2021-05-18|title=What "Anime" Means|url=https://kotaku.com/what-anime-means-1689582070|access-date=2022-03-02|website=[[Kotaku]]|language=en}}</ref> ນອກປະເທດຍີ່ປຸ່ນ ແລະ ໃນປະເທດ-ພາສາລາວ, ອະນິເມະແມ່ນໝາຍເຖິງສະເພາະແຕ່ແອນິເມຊັ້ນທີ່ຜະລິດໃນຍີ່ປຸ່ນ. ແຕ່ໃນປະເທດຍີ່ປຸ່ນ ແລະ [[ພາສາຍີ່ປຸ່ນ]], ອະນິເມະ(ຫຍໍ້ມາຈາກ ''ແອນິເມຊັ້ນ'' ໃມພາສາອັງກິດ)ແມ່ນໝາຍເຖິງງານພາບເຄື່ອນໄຫວທັງໝົດໂດຍບໍ່ສົນວ່າຈະມີຮູບແບບແນວໃດ. [[ແອນິເມຊັ້ນທ່ໄດ້ຮັບອິດທິພົນຈາກອະນິເມະ|ແອນິເມຊັ້ນທີ່ມີຮູບແບບລາຍເສັ້ນແບບອະນິເມະ]]ຫຼາຍອັນກໍມີຜະລິດຂຶ້ນນອກຍີ່ປຸ່ນເຊັ່ນກັນ. ບາງເທື່ອ[[ວີດີໂອເກມ]]ກໍມີຮູບແບບ ແລະ ລາຍເສັ້ນແບບດຽວກັນກໍຖືໄດ້ວ່າເປັນສະໄຕລ໌ອະນິເມະ.
ແອນິເມຊັ້ນເຊິງໂຄສະນາຊວນເຊື່ອຂອງຍີ່ປຸ່ນທີ່ເກົ່າແກ່ທີ່ສຸດສ້າງຂຶ້ນໃນປີ1917. ຮູບແບບງານພາບທີ່ມີລັກສະນະສະເພາະທາງອັນເປັນເອກະລັກຂອງອະນິເມະຍຸກໃໝ່ເກີດຂຶ້ນໃນຊຸມປີ1960 ດ້ວຍມີຜົນງານຂອງນັກຂຽນກາຕູນ[[ໂອຊາມຸ ເທຊຶກະ|ເທຊຶກະ ໂອຊາມຸ]]ເປັນມາດຖານທຳອິດ ແລະ ໄດ້ປັບປຸງຂະຫຍາຍອອກເລື້ອຍໆໃນທົດສະວັດຕໍ່ໆມາ, ເຊິ່ງສ້າງຖານຜູ້ເບິ່ງໃນປະເທດຢ່າງຫຼວງຫຼາຍ. ອະນິເມະສ່ວນຫຼາຍແມ່ນສາຍອອກອາກາດເທິງໂທລະທັດຄືກັນກັບລະຄອນ, ເຜີຍແຜ່ເຂົ້າໂດຍກົງຜ່ານສື່ພາຍໃນບ້ານ ແລະ ຊ່ອງທາງ[[ອິນເຕີເນັດ]]. ນອກຈາກຈະມີເປັນແບບຜົນງານຕົ້ນສະບັບແລ້ວ, ອະນິເມະມັກຈະເປັນການດັດແປງມາຈາກ[[ມັງງະ|ໜັງສືກາຕູນຍີ່ປຸ່ນ(ມັງງະ)]], [[ໄລທ໌ໂນເວລ|ນິຍາຍໄວລຸ້ນ(ໄລທ໌ໂນເວລ)]], ຫຼື [[ວີດີໂອເກມ]]. ອະນິເມະຖືກແບ່ງອອກເປັນຫຼາຍປະເພດໂດຍເຈາະຈົງໄປທີ່ກຸ່ມຜູ້ເບິ່ງທັງໃນວົງກວ້າງ ແລະ ສະເພາະກຸ່ມ.<ref>{{cite web|author=[[Ministry of Economy, Trade and Industry]]|url=https://artsandculture.google.com/story/0QXxgxls0jJ5Kg|title=Manga and Anime|website=[[Google Arts and Culture]]|date=2020}}</ref>
ອະນິເມະແມ່ນສື່ທີ່ມີຮູບແບບຫຼາກຫຼາຍພ້ອມດ້ວຍວິທີໃນການຜະລິດທີ່ໂດດເດັ່ນທີ່ໄດ້ມີການປັບປ່ຽນມາເລື້ອຍໆຕາມຍຸກສະໄໝຂອງເຕັກໂນໂລຊີທີ່ພັດທະນາໄປ. ເຊິ່ງເປັນການປະສົມປະສານກັນລະຫວ່າງສີລະປະພາບແຕ້ມ, ການສ້າງລັກສະນະຕົວລະຄອນ, ການຖ່າຍທອດໃນແບບຮູບເງົາ, ແລະ ຮູບແບບເຕັກນິກອື່ນໆຂອງການຈິນຕະນາການ ແລະ ແນວຄິດຕ່າງໆ.{{sfn|Craig|2000|pp=139–140}} ເມື່ອນຳມາປຽບທຽບກັບແອນິເມຊັ້ນຕາເວັນຕົກແລ້ວ ການຜະລິດອະນິເມະສ່ວນຫຼາຍຈະບໍ່ເນັ້ນຫຼັກໄປກັບການເຄື່ອນໄຫວຂອງພາບຫຼາຍ, ແຕ່ຈະຊຸມໃສ່ການຈັດເລື່ອງ ແລະ "ເອຟເຟັກກ້ອງ"ເຊັ່ນ: ການເຄື່ອນ/ການແພນກ້ອງ, ການຊູມ ແລະ ມຸມກ້ອງ.{{sfn|Craig|2000|pp=139–140}} ຮູບແບບຂອງງານພາບນັ້ນມີຫຼາກຫຼາຍແນວ, ສັດສ່ວນ ແລະ ລັກສະນະຂອງຕົວລະຄອນສາມາດປ່ຽນແປງໄປໄດ້ຫຼາຍແບບຫຼາຍແນວ, ໂດຍລັກສະນະທົ່ວໄປອັນເປັນເອກະລັກຂອງອະນິເມະກໍຄືເຊັ່ນ:ດວງຕາທີ່ໃຫຍ່ ແລະ ສື່ອາລົມໄດ້ດີຊັດເຈນ.<ref>{{cite news|last=Ashcraft|first=Brian|date=21 September 2016|title=A Serious Look at Big Anime Eyes|url=https://kotaku.com/a-serious-look-at-big-anime-eyes-1737751337|work=[[Kotaku]]|access-date=4 January 2020}}</ref>
ອຸດສາຫະກຳອະນິເມະປະກອບໄປດ້ວຍບໍລິສັດຜະລິດຈຳນວນຫຼາຍໆເຖິງ430ກວ່າບໍລິສັດ, ບໍລິສັດ ຫຼື ສະຕູດີໂອທີ່ໂດ່ງດັງຫຼັກໆມີຄື: [[ສະຕູດີໂອ ຈິບລິ]], [[ກຽວໂຕ ແອນິເມຊັ້ນ]], [[ບັນໄດ ນັມໂຄ ຟລິມເວີກສ໌|ຊັນຊາຍສ໌]], [[ໂບນສ໌]], [[ຢູໂຟເທເບິລ]], [[ແມັປປ້າ]], [[ວິທ ສະຕູດີໂອ]], [[ໂຄມິກຊ໌ ເວຟ ຟລີມສ]], [[ໂປດັກຊັນ ໄອ.ຈີ]] ແລະ [[ໂທເອ ແອນິເມຊັ້ນ]]ເປັນຕົ້ນ. ນັບແຕ່ທົດສະວະທີ80, ສື່ແບບນີ້ໄດ້ຮັບຄວາມປະສົບຜົນສຳເລັດຢ່າງກວ້າງຂວາງໃນລະດັບນານາຊາດ, ຍ້ອນມີ[[ການພາກສຽງ]]ອະນິເມະໃນພາສາທ້ອງຖິ່ນຕ່າງໆ, [[ຄຳບັນຍາຍກ້ອງພາບ|ການເພີ່ມຄຳບັນຍາຍ]], ແລະ ຕັ້ງແຕ່ຊຸມປີ2010, ຍ້ອນການເພີ່ມຂຶ້ນຂອງຊ່ອງທາງ[[ບໍລິການການສະຕຣີມ|ບໍລິການສະຕຣີມມິງ]] ແລະ ການເປີດຮັບເອົາວັດທະນະທຳອະນິເມະໃນກຸ່ມຄົນຢ່າງກວ້າງຂວາງຂຶ້ນທັງໃນຍີ່ປຸ່ນ ແລະ ທົ່ວໂລກ.<ref>{{cite web|last=Brzeski|first=Patrick|date=16 May 2022|title=How Japanese Anime Became the World's Most Bankable Genre|url=https://www.hollywoodreporter.com/business/business-news/cannes-japanese-anime-worlds-most-bankable-genre-1235146810/|url-status=live|archive-url=https://web.archive.org/web/20221206221632/https://www.hollywoodreporter.com/business/business-news/japanese-anime-worlds-most-bankable-genre-1235146810/|archive-date=Dec 6, 2022|website=[[The Hollywood Reporter]]}}</ref> ໃນປີ2016, ແອນິເມຊັ້ນຍີ່ປຸ່ນ ຫຼື ອະນິເມະຄິດເປັນ60%ຂອງ[[ແອນິເມຊັ້ນໂທລະພາບ|ລາຍການທີ່ເປັນແອນິເມຊັ້ນໂທລະພາບ]]ທັງໝົດໃນໂລກ.<ref>{{cite book|last1=Napier|first1=Susan J.|title=Anime from Akira to Howl's Moving Castle: Experiencing Contemporary Japanese Animation|date=2016|publisher=[[St. Martin's Press]]|isbn=9781250117724|page=10|url=https://books.google.com/books?id=UnuLCwAAQBAJ&pg=PR10}}</ref>
== ນິຍາມຂອງຄຳ ==
ໃນຖານະທີ່ເປັນ[[ແອນິເມຊັ້ນ]]ຮູບແບບໜຶ່ງ, ອະນິເມະແມ່ນຮູບແບບສີລະປະທີ່ປະກອບດ້ວຍຫຼາຍປະເພດທີ່ສາມາດພົບໄດ້ໃນສື່ຕ່າງໆ; ເຊິ່ງມັກຈະຖືກເຂົ້າໃຈຜິດວ່າຕົວມັນເອງເປັນປະເພດຂອງແອນິເມຊັ້ນ.{{sfn|Poitras|2000|p=7}} ໃນພາສາຍີ່ປຸ່ນ, ຄຳວ່າ ''ອະນິເມະ'' ແມ່ນໃຊ້ເພື່ອກ່າວເຖິງແອນິເມຊັ້ນພາບເຄື່ອນໄຫວທັງໝົດ, ໂດຍບໍ່ສົນວ່າຈະມີທີ່ມາແຕ່ໃສ.<ref>{{cite web|year=2007|title=Tezuka: The Marvel of Manga - Education Kit|url=http://www.artgallery.nsw.gov.au/__data/page/9842/Tezuka_Kit_1.pdf|url-status=dead|archive-url=https://web.archive.org/web/20070830033821/http://artgallery.nsw.gov.au/__data/page/9842/Tezuka_Kit_1.pdf <!--DASHBot-->|archive-date=30 August 2007|access-date=28 October 2007|publisher=Art Gallery New South Wales}}</ref> ວັດຈະນານຸກົມພາສາອັງກິດໂດຍທົ່ວໄປຈະໃຫ້ຄຳຈຳກັດຄວາມຂອງອະນິເມະ(/ˈænɪmeɪ/)<ref>{{cite web|title=Anime - Meaning|url=https://dictionary.cambridge.org/dictionary/english/anime|access-date=4 July 2019|work=[[Cambridge English Dictionary]]}}</ref>ວ່າເປັນ"ຮູບແບບແອນິເມຊັ້ນໜຶ່ງຂອງຍີ່ປຸ່ນ"<ref name="lexico">{{cite web|title=Anime|url=https://www.lexico.com/en/definition/anime|archive-url=https://web.archive.org/web/20200303181402/https://www.lexico.com/en/definition/anime|url-status=dead|archive-date=March 3, 2020|website=[[Lexico]]|publisher=[[Oxford University Press]]|access-date=7 September 2020|language=en}}</ref> ຫຼືເປັນ "ຮູບແບບແອນິເມຊັ້ນທີ່ມີຕົ້ນກຳເນີດມາຈາກຍີ່ປຸ່ນ".<ref>{{cite web|title=Anime|url=https://www.merriam-webster.com/dictionary/anime|publisher=[[Merriam-Webster]]|access-date=7 September 2020|language=en}}</ref> ຄຳຈຳກັດຄວາມອື່ນໆແມ່ນມັກຈະເນັ້ນໄປເຖິງຕົ້ນກຳເນີດຂອງມັນ, ເຮັດໃຫ້ການຜະລິດແອນິເມຊັ້ນພາຍໃນຍີ່ປຸ່ນຈະຖືກຖືວ່າເປັນ"ອະນິເມະ"ເມິດ.<ref name="anna">{{cite web|title=Lexicon - Anime|url=https://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=45|url-status=live|archive-url=https://web.archive.org/web/20200830144913/https://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=45|archive-date=August 30, 2020|access-date=12 September 2020|website=[[Anime News Network]]}}</ref>
ອະນິເມະໃນທາງດ້ານອັກສອນສາດແມ່ນຍັງຄົງເປັນທີ່ຖົກຖຽງກັນຢູ່. ຄຳພາສາອັງກິດ "animation" ໃນພາສາຍີ່ປຸ່ນຂຽນດ້ວຍຕົວ[[ຄາຕາຄານະ]]ວ່າ アニメーション(animēshon, ອະນິເມຊົງ) ແລະ ໃນຮູບແບບຫຍໍ້ເປັນアニメ(anime, ອະນິເມະ).<ref name="anna" /> ບາງບ່ອນກໍອ້າງວ່າຄຳນີ້ມາຈາກແອນິເມຊັ້ນໃນພາສາຝຣັ່ງ"dessin animé"("ກາຕູນ", ແປກົງໆແມ່ນ"ພາບເຄື່ອນໄຫວ"),<ref>{{cite book|first=Richard W.|last=Kroon|title=A/V A to Z: An Encyclopedic Dictionary of Media, Entertainment and Other Audiovisual Terms|publisher=[[McFarland & Company|McFarland]]|year=2010|isbn=978-0-7864-5740-3|page=48|url=https://books.google.com/books?id=HjmNAgAAQBAJ&pg=PA48}}</ref> ແຕ່ຫຼາຍຄົນກໍຄັດຄ້ານ ແລະ ເຊື່ອວ່າຂໍ້ອ້າງນີ້ມີທີ່ມາຈາກຄວາມນິຍົມທີ່ເພີ່ມຂຶ້ນຢ່າງກ້າວກະໂດດໃນຝຣັ່ງຊ່ວງປາຍທົດສະວັດທີ1970 ແລະ ຊຸມປີ1980.<ref name="anna" />
ໃນພາສາລາວ, ''ອະນິເມະ'' ແມ່ນ[[ຄຳນາມ|ສາມັນນາມ]]ທີ່ໃຊ້ກ່າວເຖິງແອນິເມຊັ້ນທີ່ມາຈາກຍີ່ປຸ່ນຄືກັນກັບພາສາອື່ນໆ ບາງເທື່ອກໍເອີ້ນສັ້ນໆວ່າ ເມະ ແລະເຊັ່ນດຽວກັນກັບຄຳຍີ່ປຸ່ນບາງຄຳເຊັ່ນ: [[ມັງງະ]] ແລະ [[ໂປເກມອນ]], ຄົນເຮົາມັກຈະອອກສຽງເອກ-ໂທ ຫຼື ເປັນສຽງສັ້ນເຖິງແມ່ນວ່າມັນຂຽນເປັນສຽງຍາວກໍຕາມ.
== ຄວາມເປັນມາຂອງອະນິເມະ ==
''ບົດຄວາມຫຼັກ: [[ປະຫວັດສາດຂອງອະນິເມະ]]''
=== ຜູ້ຕັ້ງຕົ້ນ ===
''[[ເອມາກິໂມໂນະ|ມ້ວນພາບ''ເອມາກິໂມໂນະ'']]'' ແລະ [[ຕຸກກະຕາເງົາ|ການຫຼິ້ນຕຸກກະຕາເງົາ]](ຄາເກະເອະ)ຖືເປັນຕົ້ນກຳເນີດຂອງງານພາບເຄື່ອນໄຫວຍີ່ປຸ່ນ.<ref name=":1">{{cite book|last=Novielli |first=Maria Roberta |url=https://www.worldcat.org/oclc/1020690005 |title=Floating worlds: a short history of Japanese animation |date=2018 |isbn=978-1-351-33482-2 |location=Boca Raton |oclc=1020690005}}</ref> ເອມາກິໂມໂນະຖືເປັນສິ່ງທຳມະດາໃນສະຕະວັດທີXI. ນັກເລົ່າເລື່ອງພະເນຈອນ ຫຼື ເດີນທາງນັ້ນຈະເລົ່າກ່ຽວກັບຕຳນານ ແລະ ເລື່ອງເລົ່າຕ່າງໆທີ່ຜູ້ເວົ້າໄດ້ຟັງມາ, ໃນຂະນະທີ່ເອມາກິໂມໂນະແມ່ນມ້ວນພາບມືທີ່ມ້ວນອອກຈາກຂວາຫາຊ້າຍຕໍ່ລຳດັບພາບເຄື່ອນໄຫວແບບ[[ພາໂນຣາມາ]](ພາບຍາວ).<ref name=":1" /> ຄາເກະເອະໄດ້ຮັບຄວາມນິຍົມໃນຊ່ວງຍຸກເອໂດະ ແລະ ມີຕົ້ນກຳເນີດມາຈາກຕຸກກະຕາເງົາຂອງຈີນ.<ref name=":1" /> "[[ເຄື່ອງສາຍພາບວິເສດ]]" ຈາກໂຮນລັງກໍໄດ້ຮັບຄວາມນິຍົມຄືກັນໃນສະຕະວັດທີXVIII.<ref name=":1" /> ການເລົ່າເລື່ອງຜ່ານສາກພາບທີ່ເອີ້ນວ່າ ''[[ຄາມິຊິໄບ]]'' ໄດ້ຮັບຄວາມນິຍົມເພີ່ມຂຶ້ນໃນສະຕະວັດທີXII ແລະ ຍັງຄົງໄດ້ຮັບຄວາມນິຍົມຢູ່ຕາມຂ້າງທາງຍ່າງຈົນເຖິງທົດສະວັດທີ1930.<ref name=":1" /> ການເຊິດຫຸ່ນເຊິດ[[ບຸນຣາຄຸ]] ແລະ ''[[ພາບອຸກິໂຢະ]]'' ກໍຖືເປັນບັນພະບຸລຸດຂອງລັກສະນະເດັ່ນຂອງງານພາບຍີ່ປຸ່ນ.<ref name=":1" /> ແລະ ທ້າຍທີ່ສຸດ, [[ມັງງະ]]ແມ່ນແຮງບັນດານໃຈທີ່ແຮງທີ່ສຸດໃຫ້ກັບອະນິເມະ. ນັກຂຽນກາຕູນ, ອາຈານ[[ຄິຕະຊາວ້າ ຣາຄຸເຕັນ|ຄິຕະຊາວະ ຣາຄຸເຕັນ]] ແລະ ອາຈານ[[ໂອຄາໂມໂຕະ ອິບເປະ]]ທີ່ໄດ້ເລີ່ມໃຊ້ອົງປະກອບຕ່າງໆຈາກຮູບເງົາໃນຜົນງານຂອງຕົນ.<ref name=":1" />
=== ຜູ້ບຸກເບີກ ===
[[ຮູບ:Anime cell 1917.jpg|thumb|ຮູບເຟຣມແຜ່ນໜຶ່ງຈາກ[[ນາມາຄຸຣະ ກາຕານະ]](1917), ຮູບເງົາແອນິເມຊັ້ນສັ້ນຍີ່ປຸ່ນທີ່ເກົ່າແກ່ທີ່ສຸດທີ່ຍັງເກັບຮັກສາໄວ້ຢູ່ ເຊິ່ງສາຍໃນໂຮງຮູບເງົາ.]]
ແອນິເມຊັ້ນໃນຍີ່ປຸ່ນເລີ່ມມີຂຶ້ນໃນຊ່ວງຕົ້ນສະຕະວັດທີXX, ເມື່ອເຫຼົ່າ[[ນັກເຮັດໜັງ|ນັກເຮັດຮູບເງົາ]]ເລີ່ມທົດລອງໃຊ້ເຕັກນິກທີ່ຄິດຂຶ້ນໃນຝຣັ່ງ, [[ປະເທດເຢຍລະມັນ|ເຢຍລະມັນ]], ສະຫະລັດອາເມຣິກາ ແລະ ຣັດເຊຍ.{{sfn|Schodt|1997}} ແອນິເມຊັ້ນທີ່ຖືວ່າເປັນແອນິເມຊັ້ນຍີ່ປຸ່ນຍຸກແຮກແມ່ນ[[ຄະຊຶໂດ ຊະຊິນ]](ຊ່ວງປະມານປີ1907),<ref>{{cite web|last=Litten |first=Frederick S. |title=Japanese color animation from ca. 1907 to 1945 |url=http://litten.de/fulltext/color.pdf |date=29 June 2014 |access-date=23 September 2020 |page=14 |archive-url=https://web.archive.org/web/20200918032148/http://litten.de/fulltext/color.pdf |archive-date=18 September 2020}}</ref> ເປັນຜົນງານສ່ວນຕົວໂດຍຜູ້ສ້າງນິລະນາມ.{{sfn|Clements|McCarthy|2006|p=169}} ໃນປີ1917, ຜົນງານລະດັບມືອາຊີບ ແລະ ເປີດໃຫ້ສາທາລະນະຊົນເຂົ້າຊົມເບິ່ງອັນທຳອິດໄດ້ສ້າງຂຶ້ນ; ນັກເຮັດແອນິເມຊັ້ນເຊັ່ນ: [[ຊິໂມຄາວະ ໂດເຕັນ]], [[ຄິຕະຢາມະ ເຊອິທາໂຣ]], ແລະ [[ໂຄວຈິ ຈຸນອິຈິ]] (ຖືກນັບຖືວ່າເປັນ"ບິດາແຫ່ງອະນິເມະ") ໄດ້ຜະລິດຮູບເງົາອອກມາຫຼາຍເລື່ອງ, ໂດຍເລື່ອງທີ່ເກົ່າແກ່ທີ່ສຸດທີ່ຍັງເກັບຮັກສາໄວ້ໄດ້ຢູ່ແມ່ນ''[[ນາມາຄຸຣະ ກາຕານະ]]''.<ref>{{cite web |url=http://litten.de/fulltext/ani1917.pdf |title=Some remarks on the first Japanese animation films in 1917 |last=Litten |first=Frederick S. |access-date=11 July 2013 |archive-url=https://web.archive.org/web/20140810001217/http://litten.de/fulltext/ani1917.pdf |archive-date=10 August 2014 |url-status=live |df=mdy-all }}</ref> ແຕ່ຜົນງານໃນຊ່ວງຍຸກແຮກໆນີ້ສ່ວນຫຼາຍແມ່ນສູນຫາຍໄປຈາກການພັງທະລາຍຂອງຫ້ອງສາງຂອງຊິໂມຄາວະໃນເຫດ[[ແຜ່ນດິນໄຫວຄັ້ງໃຫຍ່ທີ່ຄັນໂຕໃນປີ1923]].{{sfn|Clements|McCarthy|2006|p=170}}
ໃນກາງທົດສະວັດທີ1930, ແອນິເມຊັ້ນໄດ້ຮັບຄວາມຍອມຮັບເປັນຢ່າງດີໃນຖານະອີກທາງເລືອກໜຶ່ງນອກເໜືອຈາກອຸດສາຫະກຳ[[ໜັງຄົນສະແດງ]]. ແຕ່ກໍປະສົບບັນຫາຍ້ອນມີຄູ່ແຂ່ງຈາກຕ່າງປະເທດເຊັ່ນ:[[ເດິ ວໍລ ດິສນີ|ດິສນີ]], ແລະ ນັກເຮັດແອນິເມຊັ້ນຫຼາຍຄົນ, ລວມມີ[[ໂນບຸໂອະ ໂອຟູຈິ|ໂອຟູຈິ ໂນບຸໂອະ]] ແລະ [[ຢາຊູຊິ ມູຣາຕະ|ມູຣາຕະ ຢາຊູຊິ]], ດຳເນີນງານດ້ວຍ[[ແອນິເມຊັ້ນພາບ|ແອນິເມຊັ້ນຕັດສາກພາບ]]ທີ່ໃຊ້ທຶນຕໍ່າກວ່າ[[ແອນິເມຊັ້ນດັ້ງເດີມ|ແອນິເມຊັ້ນແບບເຟຣມລະພາບ ຫຼື ເຊວ]].<ref>{{cite web|url=http://www.midnighteye.com/features/pioneers-of-anime.shtml |title=Pioneers of Japanese Animation (Part 1) |last=Sharp |first=Jasper |date=23 September 2004 |publisher=[[Midnight Eye]] |access-date=11 December 2009 |archive-url=https://web.archive.org/web/20100117151328/http://www.midnighteye.com/features/pioneers-of-anime.shtml |archive-date=17 January 2010 |url-status=live}}</ref> ຜູ້ສ້າງຄົນອື່ນໆລວມມີ[[ເຄນໂຊ ມາຊາໂອກະ|ມາຊາໂອກະ ເຄນໂຊ]] ແລະ [[ມິສຶໂຢະ ເຊໂອ|ເຊໂອ ມິສຶໂຢະ]], ໄດ້ມີຄວາມກ້າວໜ້າຢ່າງຫຼາຍໃນດ້ານເຕັກນິກ, ໂດຍໄດ້ຮັບການອຸປະຖຳຈາກລັດຖະບານ, ເຊິ່ງຈ້າງນັກເຮັດແອນິເມຊັ້ນໃນການຜະລິດເລື່ອງສັ້ນ ເພື່ອການສຶກສາ ແລະ [[ໂຄສະນາຊວນເຊື່ອ]].<ref>{{cite book|author-last1=Yamaguchi |author-first1=Katsunori |author-first2=Yasushi |author-last2=Watanabe |title=Nihon animēshon eigashi |publisher=Yūbunsha |year=1977 |pages=26–37}}</ref> ໃນປີ1940, ລັດຖະບານໄດ້ຍຸບອົງກອນສີລະປິນຫຼາຍແຫຼ່ງ ເພື່ອກໍ່ຕັ້ງຊິນ ນິບປອນ ມັງງະກະ ຄຽວໄຄ.{{sfn|Kinsella|2000|p=22}} ອະນິເມະເລື່ອງທຳອິດແມ່ນ''[[ຈິກະຣະ ໂຕ ອົນນະ ໂນ ໂຢ ໂນ ນາກະ]]'' (1933), ເຊິ່ງແມ່ນຮູບເງົາສັ້ນທີ່ກຳກັບໂດຍມາຊາໂອກະ.{{sfn|Baricordi|2000|page=12}}<ref name="kodanasha1993">{{cite book |title=Japan: An Illustrated Encyclopedia |url=https://archive.org/details/japanillustrated01koda |url-access=registration |year=1993 |publisher=[[Kodansha]] |location=Tokyo, Japan |isbn=978-4-06-206489-7}}</ref> ຮູບເງົາອະນິເມະເລື່ອງຍາວເລື່ອງທຳອິດແມ່ນ''[[ໂມໂມທາໂຣ້: ອູມິ ໂນ ຊິນເປ]]'' (1945), ເຊິ່ງຜະລິດໂດຍເຊໂອະໂດຍໄດ້ຮັບການສະໜັບສະໜຸນຈາກ[[ກອງທັບເຮືອຈັກກະວັດຍີ່ປຸ່ນ]].<ref>{{cite AV media |title=Official booklet, ''The Roots of Japanese Anime'' |type=DVD |publisher=Zakka Films |date=2009}}</ref> ໃນຊຸມປີ1950, ມີໂຄສະນາແອນິເມຊັ້ນສັ້ນຖືກສ້າງຂຶ້ນສຳລັບໂທລະທັດເພີ່ມຫຼາຍຂຶ້ນ.<ref>{{cite book |last1=Douglass |first1=Jason Cody |title=Beyond Anime? Rethinking Japanese Animation Through Early Animated Television Commercials |date=2019 |publisher=[[Palgrave MacMillan]] |isbn=9783030279394 |page=213 |url=https://books.google.com/books?id=7_rEDwAAQBAJ&q=animation+and+advertising}}</ref>
===ຍຸກປັດຈຸບັນ===
[[ຮູບ:Astro Boy 1963 opening.jpg|thumb|left|ເຟຣມໜຶ່ງຈາກສາກເປີດເລື່ອງຂອງ''[[ແອສໂຕຣບອຍ]]'' ຊຸດອະນິເມະໂທລະທັດຂອງເທຊຶກະໃນປີ1963.]]
ໃນຊຸມປີ1960, ນັກແຕ້ມກາຕູນ[[ມັງງະ]] ແລະ ນັກເຮັດແອນິເມຊັ້ນ[[ໂອຊາມຸ ເທຊຶກະ|ເທຊຶກະ ໂອຊາມຸ]]ໄດ້ດັດແປງ ແລະ ປັບໃຊ້ເຕັກນິກການເຮັດແອນິເມຊັ້ນຂອງ[[ດິສນີ]]ໃຫ້ງ່າຍຂຶ້ນ ເພື່ອຫຼຸດຕົ້ນທຶນ ແລະ ຈຳກັດຈຳນວນເຟຣມໃນການຜະລິດແອນິເມຊັ້ນຂອງລາວ.{{sfn|Brenner|2007|p=6}} ໃນຕອນແຮກແມ່ນຕັ້ງໃຈໃຫ້ເປັນມາດຕະການຊົ່ວຄາວ ເພື່ອໃຫ້ລາວສາມາດຜະລິດສື່ໄດ້ທັນຕາມກຳນົດເວລາທີ່ມີຈຳກັດກັບທີມງານທີ່ບໍ່ມີປະສົບການ, ການເຝິກເຮັດ[[ແນິເມຊັ້ນແບບຈຳກັດ|ແອນິເມຊັ້ນທີ່ມີຂໍ້ຈຳກັດ]]ຫຼາຍດ້ານຂອງລາວໄດ້ກາຍມາເປັນການກຳນົດຮູບແບບຂອງເມະໃນທຸກມື້ນີ້.<ref>{{cite web|url=http://novaonline.nvcc.edu/eli/evans/his135/Events/Anime62/Anime62.html |title=The History of Anime & Manga |last=Zagzoug |first=Marwa |date=April 2001 |publisher=[[Northern Virginia Community College]] |access-date=22 November 2012 |archive-url=https://web.archive.org/web/20130519110530/http://novaonline.nvcc.edu/eli/evans/his135/Events/Anime62/Anime62.html |archive-date=19 May 2013 |url-status=live}}</ref> ''ສາມເລື່ອງລາວ''(ມິດຊຶ ໂນະ ຮານາຊິ)(1960)ເປັນຮູບເງົາອະນິເມະເລື່ອງທຳອິດທີ່ອອກອາກາດທາງໂທລະທັດ;{{sfn|Patten|2004|p=271}} ຊຸດອະນິເມະໂທລະທັດເລື່ອງທຳອິດແມ່ນ''[[ປະຫວັດສາດທັນທີ (ອະນິເມະ)|ປະຫວັດສາດທັນໃດ]]''(Instant History)(1961-64).{{sfn|Patten|2004|p=219}} ຄວາມສຳເລັດຄັ້ງທຳອິດໃນຍຸກແຮກ ແລະ ມີອິດທິພົນຫຼາຍແມ່ນ''[[ແອສໂຕຣບອຍ]]''(1963-66), ຊຸດອະນິເມະໂທລະທັດທີ່ກຳກັບໂດຍເທຊຶກະ ໂດຍເຮັດມາຈາກມັງງະຂອງລາວໃນຊື່ດຽວກັນ. ນັກເຮັດແອນິເມຊັ້ນຫຼາຍຄົນທີ່[[ມູຊິ ໂປຣດັກຊັນ]]ຂອງເທຊຶກະໄດ້ແຍກຕົວອອກມາກໍ່ຕັ້ງສະຕູດິໂອເຮັດອະນິເມະເອງທີ່ຈະກາຍມາເປັນບໍລິສັດໃຫຍ່ໆໃນເວລາຕໍ່ມາ(ລວມມີ[[ແມດເຮົາສ໌]], [[ບັນໄດ ນັມໂຄ ຟລິມເວີກສ໌|ຊັນຊາຍສ໌]] ແລະ [[ເປຍໂຣຕ໌]]).
ໃນຊຸມປີ1970, ມັງງະໄດ້ຮັບຄວາມນິຍົມເພີ່ມຫຼາຍຂຶ້ນ, ເຊິ່ງຫຼາຍເລື່ອງຈະໄດ້ຮັບການດັດແປງມາເປັນອະນິເມະໃນໄລຍະຕໍ່ມາ. ຜົນງານຂອງເທຊຶກະ ແລະ ເຫຼົ່າຜູ້ບຸກເບິກທ່ານອື່ນໆໃນແນວທາງນີ້ໄດ້ກາຍເປັນແຮງບັນດານໃຈໃຫ້ກັບລັກສະນະ, ແບບຕົວລະຄອນ ແລະ ແນວປະເພດທີ່ຍັງຄົງເປັນອົງປະກອບພື້ນຖານຂອງອະນິເມະໃນປັດຈຸບັນ. ຕົວຢ່າງເຊັ່ນ: ແນວຫຸ່ນຍົນຍັກ ຫຼື [[ເມຄະ]](mecha), ເກີດຂຶ້ນຜ່ານການສ້າງຂອງເທຊຶກະ, ພັດທະນາເປັນປະເພດ[[ອະນິເມະ ແລະ ມັງງະແນວເມຄະ|ຫຸ່ນຍົນຂັ້ນສູງ]](super robot)ຜ່ານການຜະລິດຂອງ[[ໂກ ນາກາອິ|ນາກາອິ ໂກ]] ແລະ ຄົນອື່ນໆ, ແລະ ໄດ້ຮັບການປະຕິວັດແນວທາງໃນຊ່ວງປາຍທົດສະວັດໂດຍ[[ໂຢຊິຢູກິ ໂທມິໂນະ|ໂທມິໂນະ ໂຢຊິຢູກິ]], ເຊິ່ງພັດທະນາເປັນປະເພດ[[ອະນິເມະ ແລະ ມັງງະແນວເມຄະ|ຫຸ່ນຍົນແທ້]](real robot).{{sfn|Patten|2004|p=264}} ຊຸດອະນິເມະຫຸ່ນຍົນເຊັ່ນ: ''[[ກັນດັ້ມ]]'' ແລະ ''[[ຊູເປີ ໄດເມນຊັນ ຟໍເທຣສ ມາຄຣອສ]]'' ໄດ້ກາຍເປັນອະນິເມະຄລາສສິກໃນທົດສະວັດ1980, ແລະ ມັນກໍຍັງຄົງເປັນໜຶ່ງໃນປະເພດທີ່ໄດ້ຮັບຄວາມນິຍົມຫຼາຍທີ່ສຸດໃນທົດສະວັດຕໍ່ໆມາ.{{sfn|Patten|2004|pp=306–307}} [[ຟອງສະບູລາຄາສິນຊັບແຕກທີ່ຍີ່ປຸ່ນ|ພາວະຟອງສະບູລາຄາສິນຊັບແຕກ]]ໃນທົດສະວັດ1980ໄດ້ກະຕຸ້ນໃຫ້ເກີດຍຸກໃໝ່ຂອງຮູບເງົາອະນິເມະ ເຊັ່ນ: ''[[ມະຫາສົງຄາມຮ່ອມພູແຫ່ງສາຍລົມ]]''(1984), ''[[ໂອຣິສຶ ອຸຈູກຸນ: ໂອເນອາມິສຸ ໂນະ ສຶບາສະ]]''(1987), ແລະ ''[[ອາກິຣະ]]''(1988).{{sfn|Le Blanc|Odell|2017|page=56}}
''[[ນີອອນ ເຈເນຊິສ ເອວານເກລຽນ]]'' (1995), ຊຸດອະນິເມະໂທລະທັດທີ່ຜະລິດໂດຍ[[ໄກແນັກຊ໌]] ແລະ ກຳກັບໂດຍ[[ຮິເດອາກິ ອັນໂນະ|ອັນໂນະ ຮິເດອາກິ]] ໄດ້ເລີ່ມຕົ້ນຍຸກໃໝ່ອີກຍຸກໜຶ່ງດ້ວຍອະນິເມະແນວການທົດລອງ ເຊັ່ນ: ''[[ໂກສຕ໌ ອິນ ເດິ ເຊວລ໌]]'' (1995), ''[[ຄາວບອຍ ບີບອບ]]'' (1998). ໃນຊຸມປີ1990, ອະນິເມະເລີ່ມໄດ້ຮັບຄວາມສົນໃຈຈາກຊາວຕາເວັນຕົກ; ຄວາມສຳເລັດໃນລະດັບນານາຊາດທີ່ສຳຄັນຄັ້ງທຳອິດລວມມີ''[[ເຊເລີ ມູນ]]'' ແລະ ''[[ດຣາກອນບອລ Z]]'', ເຊິ່ງທັງສອງໄດ້ຮັບການພາກສຽງເປັນຫຼາຍພາສາທົ່ວໂລກ. ໃນປີ2003, ''[[ມິຕິວິນຍານມະຫັນສະຈັນ]]''(Spirited away), ຮູບເງົາຈາກ[[ສະຕູດີໂອຈິບລິ]]ທີ່ກຳກັບໂດຍ[[ຮາຢາໂອະ ມິຢາຊາກິ|ມິຢາຊາກິ ຮາຢາໂອະ]] ໄດ້ຮັບລາງວັນຊະນະເລີດ[[ລາງວັນອອສກ້າສາຂາຮູບເງົາແອນິເມຊັ້ນດີເດັ່ນ|ສາຂາຮູບເງົາແອນິເມຊັ້ນດີເດັ່ນ]]ໃນເວທີອອສກ້າຄັ້ງທີ75. ຕໍ່ມາໄດ້ກາຍເປັນໜັງອະນິເມະທີ່ຮັບລາຍໄດ້ສູງທີ່ສຸດໂດຍລາຍໄດ້ຫຼາຍກວ່າ355ລ້ານໂດລາສະຫະລັດ. ນັບແຕ່ປີ2000ມາ, ຜົນງານອະນິເມະຈຳນວນແມ່ນການດັດແປງມາຈາກ[[ໄລທ໌ໂນເວວ]] ແລະ [[ວີຊວລໂນເວວ]]; ຕົວຢ່າງທີ່ປະສົບຄວາມສຳເລັດເຊັ່ນ: ''[[ສຶຊຶມິຢະ ຮາຣຸຮິ]]'' ແລະ ''[[ເຟດ/ສະເຕຍ໌ ໄນທ໌]]'' (ທັງສອງເປີດຕົວໃນປີ2006). ''[[ດາບພິຄາດອະສູນ ເດິ ມູວີ: ເສິກລົດໄຟສູ່ນິລັນ]]'' ກາຍເປັນຮູບເງົາຍີ່ປຸ່ນທີ່ເຮັດລາຍໄດ້ສູງສຸດ ແລະ ເປັນໜຶ່ງໃນໜັງທີ່ເຮັດລາຍໄດ້ສູງສຸດຂອງໂລກປະຈຳປີ2020,<ref name="bbc1">{{cite web|url=https://www.bbc.com/news/world-asia-54730487 |title=How a demon-slaying film is drawing Japan back to the cinemas |date=31 October 2020 |website=[[BBC]] |archive-url=https://web.archive.org/web/20201103161257/https://www.bbc.com/news/world-asia-54730487 |archive-date=3 November 2020}}</ref><ref name="bbc">{{cite web |date=October 31, 2020 |title=How a demon-slaying film is drawing Japan back to the cinemas |url=https://www.bbc.com/news/world-asia-54730487 |archive-url=https://web.archive.org/web/20201103161257/https://www.bbc.com/news/world-asia-54730487 |archive-date=November 3, 2020 |website=BBC}}</ref> ນອກຈາກນີ້ຍັງກາຍເປັນໜັງທີ່ເຮັດລາຍໄດ້ໄວທີ່ສຸດໃນໂຮງຮູບເງົາຍີ່ປຸ່ນນຳ, ໂດຍເຮັດເງິນໄດ້ໜຶ່ງພັນລ້ານເຢນ($95.3ລ້ານ; £72ລ້ານ).<ref name="bbc"/> ເຊິ່ງໄດ້ທຳລາຍສະຖິຕິເກົ່າຂອງ''[[ມິຕິວິນຍານມະຫັນສະຈັນ]]''ໂດຍໃຊ້ເວລາ25ມື້.<ref name="bbc"/><ref>{{cite web |date=November 14, 2020 |title=The world is watching more anime and streaming services are buying |url=https://www.wsj.com/articles/the-world-is-watching-more-animeand-streaming-services-are-buying-11605365629 |website=[[The Wall Street Journal]]}}</ref><ref>{{cite news |date=June 5, 2021 |title=Streaming and covid-19 have entrenched anime's global popularity |newspaper=[[The Economist]] |url=https://www.economist.com/business/2021/06/05/streaming-and-covid-19-have-entrenched-animes-global-popularity}}</ref><ref>{{cite web |date=11 May 2023 |title=Streaming giants battle for anime supremacy |url=https://www.straitstimes.com/life/entertainment/streaming-giants-battle-for-anime-supremacy |website=[[The Straits Times]]}}</ref><ref>{{cite web |date=12 May 2023 |title=Streaming giants battle to be top platform for Japanese anime |url=https://www.scmp.com/video/asia/3220322/streaming-giants-battle-be-top-platform-japanese-anime |website=[[South China Morning Post]]}}</ref>
ໃນປີ2021, ອະນິເມະທີ່ດັດແປງມາຈາກ[[ມັງງະ]]ເລື່ອງ''[[ມະຫາເວດຜະນຶກມານ]]'', ''[[ດາບພິຄາດອະສູນ]]'' ແລະ ''[[ໂຕກຽວ ຣີເວນເຈີສ໌]]'' ຕິດອັນດັບໜຶ່ງໃນສິບລາຍການໂທລະທັດທີ່ມີຄົນເວົ້າເຖິງຫຼາຍທີ່ສຸດທົ່ວໂລກເທິງທະວິດເຕີ.<ref>{{cite web|url=https://blog.twitter.com/en_us/topics/insights/2021/2021--onlyontwitter|title=2021 #OnlyOnTwitter|date=9 December 2021|website=Twitter}}</ref><ref>{{cite news|url=https://www.cbr.com/jujutsu-kaisen-squid-game-wandavision-twitter-2021/|title=Jujutsu Kaisen Tops Squid Game, Wandavision in Social Media's 2021 Discussions|date= 9 December 2021|website=CBR}}</ref> ໃນປີ2022, ''[[ຜ່າພິພົບໄທທັນ]]'' ໄດ້ຊະນະລາງວັນ "ຊຸດເລື່ອງໂທລະທັດທີ່ນິຍົມຫຼາຍທີ່ສຸດໃນໂລກປີ2021" ໃນງານລາງວັນລາຍການໂທລະທັດນິຍົມທົ່ວໂລກ. ເລື່ອງນີ້ເປັນເລື່ອງທຳອິດທີ່ໄດ້ຮັບລາງວັນດັ່ງກ່າວທີ່ບໍ່ແມ່ນພາສາອັງກິດ, ເຊິ່ງກ່ອນໜ້ານີ້ແມ່ນ''[[ເດິ ວອກກິງ ເດດ]]'' ແລະ ''[[ເກມ ອອຟ ໂທນສ]]''.<ref name="WFMZ-TV">{{Cite web|title=Anime and Asian series dominate 4th Annual Global TV Demand Awards, highlighting industry and consumer trends towards international content|url=https://www.wfmz.com/news/pr_newswire/pr_newswire_entertainment/anime-and-asian-series-dominate-4th-annual-global-tv-demand-awards-highlighting-industry-and-consumer/article_28591ec0-befe-57c6-99c3-eebe66ad66c5.html|date=January 25, 2022|access-date=January 27, 2022|publisher=[[WFMZ-TV]]}}</ref> ໃນປີ2024, ''[[ມະຫາເວດຜະນຶກມານ]]''ໄດ້ທຳລາຍ[[ບັນທຶກສະຖິຕິໂລກກິນເນັດສ໌|ສະຖິຕິໂກິນເນັດສ໌]] "ຊຸດແອນິເມຊັ້ນໂທລະທັດທີ່ນິຍົມຫຼາຍທີ່ສຸດ" ໂດຍລະດັບຄວາມນິຍົມທົ່ວໂລກຫຼາຍເຖິງ71.2ເທົ່າຂອງຄວາມນິຍົມຂອງລາຍການເທິງໂທລະທັດໂດຍສະເລ່ຍ, ແຊງໜ້າ''ຜ່າພິພົບໄທທັນ''.<ref>{{cite web|url=https://www.guinnessworldrecords.com/world-records/566389-most-in-demand-animated-tv-show|title=Most in-demand animated TV show|work=[[Guinness World Records]]|access-date=April 5, 2024|archive-date=April 5, 2024|archive-url=https://web.archive.org/web/20240405002815/https://www.guinnessworldrecords.com/world-records/566389-most-in-demand-animated-tv-show|url-status=live}}</ref><ref>{{cite web|last=Mateo|first=Alex|title=Guinness World Records Names Jujutsu Kaisen 'Most In-Demand Animated TV Show'|url=https://www.animenewsnetwork.com/interest/2024-04-05/guinness-world-records-names-jujutsu-kaisen-most-in-demand-animated-tv-show/.209592|website=[[Anime News Network]]|date=April 5, 2024|access-date=April 5, 2024|archive-date=April 5, 2024|archive-url=https://web.archive.org/web/20240405204400/https://www.animenewsnetwork.com/interest/2024-04-05/guinness-world-records-names-jujutsu-kaisen-most-in-demand-animated-tv-show/.209592|url-status=live}}</ref>
==ຄຸນລັກສະນະເດັ່ນ==
[[File:Modernanime.jpg|thumb|upright=1.5|ນັກເຮັດອະນິເມະໃຊ້ລາຍເສັ້ນງານພາບທີ່ແຕກຕ່າງກັນຫຼາຍແນວ.<br> '''ແຫຼ່ງທີ່ມານັບແຕ່ຊ້າຍເທິງແລ້ວນັບຕາມເຂັມໂມງ: ''[[ເດດ ລິຟສ໌]]'', ''[[FLAG]]'', ''[[ການທົດລອງຕໍ່ເນື່ອງເລັນ]]'', ''[[ຄົນປີສາດ]]'', ''[[ມາຍດ໌ ເກມ]]'', ''[[ລັກກີ້ສະຕາ]]'', ''[[ແຄັດຊຸບ]]'' ແລະ ''[[ອະພິນິຫານຫຸ່ນທະລວງສະຫວັນ]]''
]]
ອະນິເມະແຕກຕ່າງຈາກແອນິເມຊັ້ນຮູບແບບອື່ນໆທາງດ້ານລາຍເສັ້ນ, ການຜະລິດ ແລະ ຂະບວນການສ້າງຂອງມັນ. ຜົນງານອະນິເມະຈະມີຮູບແບບງານພາບທີ່ຫຼາກຫຼາຍ ແລະ ກວ້າງຂວາງ, ເຊິ່ງແຕກຕ່າງກັນໄປຂຶ້ນກັບຜູ້ສ້າງ, ສິລະປິນ ແລະ ສະຕູດີໂອທີ່ເຮັດ.{{sfn|Brenner|2007|p=231}} ເຖິງແມ່ນວ່າບໍ່ມີຮູບແບບໃດທີ່ເປັນຕົວກຳນົດອະນິເມະໂດຍລວມ, ແຕ່ກໍຍັງມີຄຸນລັກສະນະທີ່ຄ້າຍຄືກັນບາງຂໍ້-ປະການໃນດ້ານຂອງເຕັກນິກການເຮັດການທຳແອນິເມຊັ້ນ ແລະ ການອອກແບບຕົວລະຄອນ.
ອະນິເມະມີເອກະລັກພື້ນຖານຈາກການໃຊ້[[ແອນິເມຊັ້ນແບບຈຳກັດ]], ການສະແດງອາລົມທີ່ລາບລື່ນ, ໄລຍະເວລາສາຍ, ການຄຸມຕີມ, ການນຳສະເໜີ, ການເລົ່າເລື່ອງທີ່ຊັບຊ້ອນ, ແລະ ເໜືອສິ່ງອື່ນໃດແມ່ນລາຍເສັ້ນທີ່ພິເສດຕ່າງໝູ່ ໂດຍແບບຂອງຕົວລະຄອນມີລັກສະນະເດັ່ນຄື: ມີດວງຕາທີ່ເປັນວົງ ແລະ ກວ້າງໃຫຍ່, ມີເສັ້ນແຕ້ມທີ່ຄົມຊັດເຈນ, ສີສັນສົດໃສ ແລະ ການເຄື່ອນໄຫວຂອງປາກທີ່ຫຼຸດໜ້ອຍລົງ.<ref>{{Cite journal |last=Horno Lopez |first=Antonio |year=2012 |title=Controversia sobre el origen del anime. Una nueva perspectiva sobre el primer dibujo animado japonés |url=https://polipapers.upv.es/index.php/CAA/article/view/1055 |journal=Con a de animación |location=Spain |publisher=[[Technical University of Valencia]] |issue=2 |pages=106–107 |doi=10.4995/caa.2012.1055 |issn=2173-3511|doi-access=free |hdl=10251/14879 |hdl-access=free }}</ref><ref>{{cite thesis |last=Horno Lopez |first=Antonio |year=2014 |title=Animación japonesa: análisis de series de anime actuales |trans-title=Japanese Animation: Analysis of Current Anime Series" |url=https://digibug.ugr.es/handle/10481/34010 |hdl=10481/34010 |type=Doctoral thesis |publisher=[[University of Granada]] |page=4 |isbn=9788490830222}}</ref>
===ເຕັກນິກ===
ອະນິເມະສະໄໜໃໝ່ດຳເນີນໄປຕາມຂະບວນການຜະລິດແອນິເມຊັ້ນທົ່ວໄປເຊັ່ນ: [[ການລຽງລຳດັບສາກ]], [[ການພາກສຽງ]], [[ການອອກແບບຕົວລະຄອນ]] ແລະ [[ແອນິເມຊັ້ນດັ້ງເດີມ|ການເຮັດຮູບພາບເຊວ]]. ນັບຕັ້ງແຕ່ປີ1990ມາ, ນັກເຮັດແອນິເມຊັ້ນໄດ້ນຳໃຊ້ຄອມພິວເຕີເຂົ້າໃນການຜະລິດ ເພື່ອເພີ່ມປະສິດທິພາບຂອງຂະບວນການຜະລິດ. ຜົນງານອະນິເມະໃນຍຸກແຮກແມ່ນການລອງຜິດລອງຖືກໄປ, ບໍ່ວ່າຈະດ້ວຍການແຕ້ມຮູບເທິງກະດານດຳ, [[ແອນິເມຊັ້ນສະຕັອບໄມຊັນ]]ໂດຍໃຊ້ເຈ້ຍ, ແລະ [[ແອນິເມຊັ້ນເງົາ]].<ref name="Jouvanceau2004"/><ref name="Cinémathèque2008">{{cite web|year=2008|title=Tribute to Noburō Ōfuji|url=http://www.cinematheque.qc.ca/animation_japonaise.pdf|url-status=dead|archive-url=https://web.archive.org/web/20080819214736/http://www.cinematheque.qc.ca/animation_japonaise.pdf|archive-date=August 19, 2008|access-date=July 21, 2008|work=To the Source of Anime: Japanese Animation|publisher=Cinémathèque québécoise}}</ref> ແອນິເມຊັ້ນແບບເຊວໄດ້ຮັບຄວາມນິຍົມຫຼາຍຈົນທ້າຍທີ່ສຸດມັນກໍກາຍເປັນມາດຖານຂອງອະນິເມະ. ໃນສະຕະວັດທີXXI, ການນຳໃຊ້ເຕັກນິກແອນິເມຊັ້ນແບບອື່ນໆສ່ວນໃຫຍ່ແມ່ນຈຳກັດຢູ່ກັບແຕ່[[ໜັງສັ້ນ|ຮູບເງົາສັ້ນ]]ອິດສະຫຼະ,<ref name="Sharp2003">{{cite web|last=Sharp|first=Jasper|title=Beyond Anime: A Brief Guide to Experimental Japanese Animation|work=[[Midnight Eye]]|year=2003|url=http://www.midnighteye.com/features/beyond_anime.shtml|access-date=July 21, 2008| archive-url= https://web.archive.org/web/20080725193748/http://www.midnighteye.com/features/beyond_anime.shtml| archive-date= July 25, 2008 | url-status=live}}</ref> ລວມເຖິງງານແອນິເມຊັ້ນຫຸ່ນສະຕັອບໂມຊັນທີ່ເຮັດໂດຍ[[ທາດາຮິໂຕະ ໂມຊິນາງະ|ໂມຊິນາງະ ທາດາຮິໂຕະ]], [[ຄິຮາຊິໂຣ ຄາວາໂມໂຕະ|ຄາວາໂມໂຕະ ຄິຮາຊິໂຣ]], ແລະ ມູຣາຕະ ໂທໂມຢາສຸ.<ref name="Sharp2004">{{cite web|last=Sharp|first=Jasper|title=Interview with Kihachirō Kawamoto|work=[[Midnight Eye]]|year=2004|url=http://www.midnighteye.com/interviews/kihachiro_kawamoto.shtml|access-date=July 21, 2008|archive-url=https://web.archive.org/web/20080919075703/http://www.midnighteye.com/interviews/kihachiro_kawamoto.shtml|archive-date=September 19, 2008|url-status=live}}</ref><ref>{{cite web|last=Munroe Hotes|first=Catherine|title=Tomoyasu Murata and Company|work=[[Midnight Eye]]|year=2008|url=http://www.midnighteye.com/features/tomoyasu-murata-and-company.shtml|access-date=July 21, 2008|archive-url=https://web.archive.org/web/20080527065156/http://www.midnighteye.com/features/tomoyasu-murata-and-company.shtml|archive-date=May 27, 2008|url-status=live}}</ref> ຄອມພິວເຕີໄດ້ຖືກນຳໃຊ້ເຂົ້າໃນຂະບວນການຜະລິດແອນິເມຊັ້ນໃນທົດສະວັດທີ1990 ເຊັ່ນ: ''[[ໂກສຕ໌ ອິນ ເດິ ເຊວລ໌]]'' ແລະ ''[[ເຈົ້າຍິງຈິດວິນຍານແຫ່ງພົງໄພ່]]'' ເຊິ່ງໄດ້ປະສົມປະສານການເຮັດແອນິເມຊັ້ນແບບເຊວດັ້ງເດີມກັບການໃຊ້ຮູບພາບທີ່ແຕ້ມຂຶ້ນໂດຍຄອມພິວເຕີ.{{sfn|Poitras|2000|p=29}} ຟູຈິ ຟລິມ ບໍລິສັດຜະລິດແຜ່ນເຊວລາຍໃຫຍ່ໄດ້ປະກາດວ່າຈະຢຸດຕິການຜະລິດແຜ່ນເຊວ ເຮັດໃຫ້ເກີດຄວາມແຕກຕື່ນໃນອຸດສາຫະກຳໃນການຈັດຫານຳເຂົ້າເຊວ ແລະ ກາຍເປັນການເລັ່ງໃຫ້ເກີດການປ່ຽນຂະບວນການຜະລິດໃຫ້ໄປໃຊ້ເຄື່ອງມືດີຈີຕ່ອນ.{{sfn|Poitras|2000|p=29}}
ກ່ອນຍຸກດີຈີຕ່ອນ, ອະນິເມະຖືກສ້າງຂຶ້ນໂດຍ[[ແອນິເມຊັ້ນດັ້ງເດີມ|ວິທີແບບດັ້ງເດີມ]]ແບບເຄື່ອນຈາກທ່າໜຶ່ງຫາທ່າໜຶ່ງ.<ref name="Jouvanceau2004">{{cite book|last=Jouvanceau |first=Pierre |translator=Clare Kitson |title=The Silhouette Film |publisher=Le Mani |year=2004 |location=Genoa |page=103 |url=http://www.heeza.fr/description.php?lang=2&path=64&sort=Article&page=0&id=296 |archive-url=https://web.archive.org/web/20080320051512/http://www.heeza.fr/description.php?lang=2&path=64&sort=Article&page=0&id=296 |url-status=dead |archive-date=March 20, 2008 |isbn=88-8012-299-1 |access-date=August 8, 2009 }}</ref> ສ່ວນອະນິເມະກະແສຫຼັກໃນປັດຈຸບັນສ່ວນຫຼາຍແມ່ນໃຊ້ເຟຣມພາບຫຼັກ ຫຼື [[ຄີເຟຣມ]]ທີ່ໃຊ້ສະແດງຜົນພາບອອກມາທີ່ໜ້ອຍກວ່າ ແລະ ເນັ້ນໃສ່[[ເຟຣມຫວ່າງກາງ]]ຫຼາຍກວ່າ.
ສະຕູດີໂອແອນິເມຊັ້ນຍີ່ປຸ່ນເປັນຜູ້ບຸກເບີກເຕັກນິກແອນິເມຊັ້ນແບບຈຳກັດຫຼາຍອັນ, ແລະ ເຮັດໃຫ້ອະນິເມະມີຫຼາກຫຼາຍຮູບແບບແຕກຕ່າງອອກໄປ. ຕ່າງຈາກແອນິເມຊັ້ນຂອງ[[ດິສນີ]]ທີ່ເນັ້ນໃສ່ກັບການເຄື່ອນໄຫວ, ອະນິເມະນັ້ນຊຸມໃສ່ກັບຄຸນນະພາບຂອງງານພາບ ແລະ ໃຊ້ເຕັກນິກທາງລັດຕ່າງໆຊ່ວຍຊົດເຊີຍກັບເວລາໃນການເຮັດພາບເຄື່ອນໄຫວເຫຼົ່ານັ້ນ. ເຕັກນິກເຫຼົ່ານີ້ໃຊ້ບໍ່ພຽງແຕ່ເພື່ອໃຫ້ທັນເວລາເສັ້ນຕາຍສົ່ງງານເທົ່ານັ້ນ ແຕ່ຍັງໃຊ້ເປັນເຄື່ອງມືທາງດ້ານສິລະປະນຳດ້ວຍ.<ref name="ChicksOnAnimeSep2008">{{cite news |url=https://www.animenewsnetwork.com/chicks-on-anime/2008-09-16 |last1=Dong |first1=Bamboo |last2=Brienza |first2=Casey |last3=Pocock |first3=Sara |last4=Sevakis |first4=Robin |title=Chicks on Anime - Sep 16th 2008 |series=Chicks on Anime |work=[[Anime News Network]] |date=September 16, 2008 |access-date=September 30, 2012 |archive-url=https://web.archive.org/web/20121108150611/http://www.animenewsnetwork.com/chicks-on-anime/2008-09-16 |archive-date=November 8, 2012 |url-status=live }}</ref> ການຈັດສາກອະນິເມະຈະໃຫ້ຄວາມສຳຄັນກັບການເບິ່ງໃຫ້ເຫັນເປັນພາບສາມມິຕິ ແລະ ພື້ນຫຼັງປະກອບສາກທີ່ເປັນສ່ວນສຳຄັນໃນການສ້າງບັນຍາກາດຂອງຕົວຜົນງານ.{{sfn|Schodt|1997}} ພື້ນຫຼັງບໍ່ຈຳເປັນຕ້ອງສ້າງຂຶ້ນເອງກໍໄດ້, ບາງເທື່ອກໍອີງຈາກສະຖານທີ່ ຫຼື ເຫດການຈິງເຊັ່ນ: ''[[ປາສາດເວດມົນຂອງຮາວລ໌]]'' ແລະ ''[[ສຶຊຶມິຢະ ຮາຣຸຮິ]]''.{{sfn|Cavallaro|2006|pages=157–171}}<ref>{{cite web| url= http://www.rinku.zaq.ne.jp/p_v/haruhi.html| title= Reference pictures to actual places| access-date= January 25, 2007| archive-url= https://web.archive.org/web/20070126012418/http://www.rinku.zaq.ne.jp/p_v/haruhi.html| archive-date= January 26, 2007| url-status=dead| df= mdy-all}}</ref> ອັອບປລິເກີກ່າວວ່າ ອະນິເມະເປັນໜຶ່ງໃນສື່ທີ່ຫາໄດ້ຍາກ ເຊິ່ງເປັນສື່ທີ່ໄດ້ລວບລວມນັກພາກທີ່ມີຊື່ສຽງຫຼາຍໆຄົນໄວ້ນຳກັນແລະກໍເຜີຍແຜ່ອອກມາໄດ້"ໜ້າປະທັບໃຈຢ່າງຍິ່ງ".<ref>{{cite web|last=Oppliger|first=John|date=October 1, 2012|title=Ask John: What Determines a Show's Animation Quality?|url=http://www.animenation.net/blog/2012/10/01/ask-john-what-determines-a-shows-animation-quality/|url-status=dead|archive-url=https://web.archive.org/web/20121015212153/http://www.animenation.net/blog/2012/10/01/ask-john-what-determines-a-shows-animation-quality/|archive-date=October 15, 2012|access-date=October 28, 2012|publisher=[[AnimeNation]]}}</ref>
ເອຟເຟກແບບຮູບເງົາຂອງອະນິເມະເຮັດໃຫ້ມັນເອງແຕກຕ່າງອອກໄປຈາກການຮູບແບບການນຳສະເໜີແບບລະຄອນເວທີຂອງແອນິເມຊັ້ນອາເມຣິກັນ. ອະນິເມະຖືກຖ່າຍແບບຮູບເງົາຄືກັບວ່າໃຊ້ກ້ອງຖ່າຍ, ບໍ່ວ່າຈະການແພນການເຄື່ອນກ້ອງ, ການຊູມ, ໄລຍະຫ່າງ ແລະ ມຸມກ້ອງໄປຈົນເຖິງການສັ່ນແບບໄດນາມິກທີ່ຊັບຊ້ອນຫຼາຍ ເຊິ່ງເປັນສິ່ງທີ່ຍາກໃນການຖ່າຍຮູບເງົາແທ້.{{sfn|Poitras|2000|p=58}}<ref name="production">{{cite web|url=http://www.huitula.com/productionIG2_page2.htm|title=Anime production process - feature film|year=2000|access-date=August 27, 2007|work=PRODUCTION I.G| archive-url= https://web.archive.org/web/20070815101432/http://www.huitula.com/productionIG2_page2.htm| archive-date= August 15, 2007 | url-status=live}}</ref><ref>{{cite web|url=http://www.understandinganime.com/cinematography.php |archive-url=https://web.archive.org/web/20070122113832/http://www.understandinganime.com/cinematography.php |url-status=dead |archive-date=January 22, 2007 |title=Cinematography: Looping and Animetion Techniques |year=1999 |access-date=August 29, 2007 |work=Understanding Anime}}</ref> ທາງອະນິເມະ, ແອນິເມຊັ້ນຈະສ້າງຂຶ້ນກ່ອນການພາກສຽງ ກົງກັນຂ້າມກັບແອນິເມຊັ້ນຂອງອາເມຣິກາທີ່ດຳເນີນພາກສຽງກ່ອນແລ້ວແຕ້ມຮູບພາບໂດຍອີງຕາມສຽງ.{{sfn|Poitras|2000|p=59}}
===ການອອກແບບຕົວລະຄອນ===
[[File:Anime Art Styles.png|thumb|left|ການອອກແບບຕົວລະຄອນອະນິເມະມີຄວາມຫຼາກຫຼາຍໆ, ແຕ່ມັກຈະມີອົງປະກອບລວມທົ່ວໄປເຂົ້ານຳ ຂຶ້ນຢູ່ກັບກຸ່ມເປົ້າໝາຍ ແລະ ຍຸກສະໄໝ. ພາບເຫຼົ່ານີ້ແມ່ນຕົວຢ່າງທີ່ເປັນຕົວແທນ. <br>'''ນັບແຕ່ຊ້າຍເທິງແລ້ວນັບຕາມເຂັມໂມງ''': ''[[ໂຈ ສິງສັງວຽນ]]'' (1970), ''[[ມາຄຣອສ: ເຈົ້າຈື່ຄວາມຮັກບໍ່]]'' (1984), ''[[ໂກສຕ໌ ອິນ ເດິ ເຊວລ໌ (ໜັງປີ1995)|ໂກສຕ໌ ອິນ ເດິ ເຊວລ໌]]'' (1995), ''[[ເຄ-ອົງ!]]'' (2009), ''[[ຫຼັບຕາຝັນ ເຖິງຊື່ເຈົ້າ]]'' (2016), ''[[ດັນຈຽນທີ່ມີແຕ່ຂ້າເທົ່ານັ້ນທີ່ເຂົ້າໄດ້]]'' (2021), ''[[ສະເໜສາວເຂົ້າປັ້ນ (ຊຸດກາຕູນໂທລະພາບປີ2001)|ສະເໜສາວເຂົ້າປັ້ນ]]'' (2001) ແລະ ''[[ຊາມູໄຣພະເນຈອນ]]'' (1996). ]]
ສັດສ່ວນຮ່າງກາຍຂອງຕົວລະຄອນທີ່ເປັນມະນຸດໃນອະນິເມະມັກຈະອີງສັດສ່ວນຂອງຮ່າງກາຍມະນຸດໃນຄວາມເປັນຈິງຢ່າງຖືກຕ້ອງ. ນັກແຕ້ມຖືເອົາຄວາມສູງຂອງຫົວເປັນໜ່ວຍຖານຂອງສັດສ່ວນ. ຄວາມສູງຂອງຫົວອາດແຕກຕ່າງກັນໄປ, ແຕ່ຕົວລະຄອນໃນອະນິເມະສ່ວນໃຫຍ່ຈະມີຄວາມສູງປະມານ7-8ຫົວ.<ref name="headheight">{{cite web |url=http://animeworld.com/howtodraw/bodies1.html |title=Body Proportion |access-date=August 16, 2007 |work=Akemi's Anime World| archive-url= https://web.archive.org/web/20070805152410/http://animeworld.com/howtodraw/bodies1.html| archive-date= August 5, 2007 | url-status=live}}</ref> ສີລະປິນອະນິເມະບາງເທື່ອຈົງໃຈປັບປ່ຽນສັດສ່ວນຂອງຮ່າງກາຍເພື່ອສ້າງສ້າງຕົວລະຄອນທີ່ມີ[[ຈິບິ(ຮູບແບບ)|ຮູບຮ່າງຜິດປົກກະຕິເປັນພິເສດ]] ເຊິ່ງມີຮ່າງກາຍທີ່ນ້ອຍບໍ່ສົນສ່ວນເມື່ອທຽບກັບຫົວ; ຕົວລະຄອນທີ່ມີຮູບຮ່າງຜິກປົກກະຕິຫຼາຍຕົວມີຄວາມສູງສອງຫາສີ່ຫົວ. ອະນິເມະບາງເລື່ອງເຊັ່ນ ''[[ເຄຣຢອນຊິນຈັງ]]'' ແມ່ນບໍ່ສົນໃຈສັດສ່ວນເຫຼົ່ານີ້ໂດຍສິ້ນເຊີງ, ໃນລັກສະນະຄືກັນກັບກາຕູນລໍ້ລຽນແບບຕາເວັນຕົກ.
[[File:Wikipe-tan in Different Anime Styles.png|thumb|right|300px|ຊຸດພາບຂອງ[[ວິກິພີເດຍ:ວິກິພີຕັງ|ວິກິພີຕັງ]] '''(#1)''' ລຸ່ມນີ້ແມ່ນການສະແດງເຖິງຮູບແບບການອອກຕົວລະຄອນອະນິເມະທີ່ຢູ່ຢ່າງຫຼວງຫຼາຍແບບ. '''ນັບຕັ້ງແຕ່ນໍ້າເບີ1-9, ແຫຼ່ງທີ່ມາພື້ນຖານຂອງແຕ່ລະລາຍເສັ້ນທີ່ອີງມາມີ''': ຜົນງານຕົ້ນສະບັບ, [[ກຽວໂຕ ແອນິເມຊັ້ນ]], ''[[ນາຣູໂຕະ (ຊຸດກາຕູນໂທລະພາບ)|ນາຣູໂຕະ]]'', [[ໄທປ໌-ມູນ]], ''[[ຍອດນັກສືບຈິ໋ວໂຄນັນ]]'', ''[[ເຊເລີ ມູນ]]'', [[ຟູຈິໂກະ ຟູຈິໂອະ]], [[ສະຕູດີໂອ ຈິບລິ]], ແລະ [[ມາໂຄໂຕະ ຊິນໄຄ]].]]
ແບບການອອກແບບຕົວລະຄອນອະນິເມະໂດຍທົ່ວໄປແມ່ນມັກຈະມີຕາທີ່ໃຫຍ່ເກີນຈິງ. ແອນິເມຊັ້ນຂອງຕົວລະຄອນທີ່ມີຕາໃຫຍ່ໃນອະນິເມະສາມາດຍ້ອນກັບໄປໄດ້ເຖິງສະໄໜຂອງ[[ໂອຊາມຸ ເທຊຶກະ|ເທຊຶກະ ໂອຊາມຸ]] ເຊິ່ງໄດ້ຮັບອິດທິພົນຢ່າງຫຼາຍຈາກຕົວລະຄອນແອນິເມຊັ້ນຕາເວັນຕົກໃນຍຸກຕົ້ນໆເຊັ່ນ: [[ເບດຕີ້ ບຸບ]], ເຊິ່ງຖືກອອກແບບດ້ວຍດວງຕາທີ່ໃຫຍ່ໂຕບໍ່ສົມສ່ວນ.{{sfn|Brenner|2007|pp=6–7}} ເທຊຶກະເປັນບຸກຄົນສຳຄັນໃນປະຫວັດສາດຂອງອະນິເມະ ແລະ ມັງງະ, ເຊິ່ງແມ່ນຜູ້ກຳນົດຮູບແບບລາຍເສັ້ນອັນເປັນເອກະລັກ ແລະ ການອອກແບບຕົວລະຄອນທີ່ເຮັດໃຫ້ສາມາດຖ່າຍທອດອາລົມຄວາມຮູ້ສຶກຂອງມະນຸດໄດ້ຜ່ານຕາພຽງຢ່າງດຽວ.{{sfn|Poitras|2000|p=60}} ສີລະປິນຜູ້ແຕ້ມຈະເພີ່ມເລັນເງົາສີທີ່ຫຼາກຫຼາຍໃຫ້ກັບຕາ ແລະ ໂດຍສະເພາະແກ້ວຕາ ເພື່ອໃຫ້ມີຄວາມເລິກຫຼາຍຂຶ້ນ. ໂດຍທົ່ວໄປຈະເປັນການປະສົມກັນຂອງແຖບສີອ່ອນ, ໂທນສີ ແລະ ແຖບສີເຂັ້ມ.<ref>{{cite web |url=http://www.biorust.com/tutorials/detail/141/en/ |title=Basic Anime Eye Tutorial |access-date=August 22, 2007 |work=Centi, Biorust.com |archive-url=https://web.archive.org/web/20070824072700/http://biorust.com/tutorials/detail/141/en/ |archive-date=August 24, 2007 |url-status=dead }}</ref><ref>{{cite web|author=Carlus|date=June 6, 2007|title=How to color anime eye|url=https://www.youtube.com/watch?v=VyJ9yfYl_Fc |archive-url=https://web.archive.org/web/20111211111545/http://www.youtube.com/watch?v=VyJ9yfYl_Fc|archive-date=December 11, 2011|access-date=August 22, 2007|publisher=[[YouTube]]}}</ref> ນັກມະນຸດວິທະຍາວັດທະນະທຳ[[ຣາເຊລ ທອນ]]ໄດ້ແຍ້ງວ່າ ນັກເຮັດແອນິເມຊັ້ນ ແລະ ຜູ້ເບິ່ງຊາວຍີ່ປຸ່ນບໍ່ໄດ້ເຂົ້າໃຈເຖິງດວງຕາທີ່ມີຮູບແບບໆນີ້ໂດຍແທ້ຈິງບໍ່ຫຼາຍກໍໜ້ອຍ.<ref name="manga characters look white">{{cite web |title=Do Manga Characters Look 'White'? |last=Thorn |first=Rachel |author-link=Rachel Thorn |url=http://www.matt-thorn.com/mangagaku/faceoftheother.html |access-date=December 11, 2005 |archive-url=https://web.archive.org/web/20110717060459/http://www.matt-thorn.com/mangagaku/faceoftheother.html |archive-date=July 17, 2011 |url-status=dead }}</ref> ຢ່າງໃດກໍຕາມ, ບໍ່ແມ່ນວ່າຕົວອະນິເມະທຸກຕົວຈະມີຕາທີ່ມົນໂຕ. ຕົວຢ່າງເຊັ່ນ: ຜົນງານຂອງ[[ຮາຢາໂອະ ມິຢາຊາກິ|ມິຢາຊາກິ ຮາຢາໂອະ]]ທີ່ເປັນທີ່ຮູ້ກັນວ່າຕົວລະຄອນທີ່ລາວເຮັດມີດວງຕາທີ່ຖືກຕ້ອງສັດສ່ວວນຕາມຄວາມຈິງ ເຊັ່ນດຽວກັນກັບສີຜົມທີ່ສົມຈິງຂອງຕົວລະຄອນ.
ຊົງຜົມໃນອະນິເມະມັກຈະມີຊີວິດຊີວາ ແລະ ຫຼາກສີສັນ ຫຼື ມີສະໄຕລ໌ທີ່ບໍ່ຊໍ້າໃຜ. ການເຄື່ອນໄຫວຂອງເສັ້ນຜົມໃນອະນິເມະນັ້ນເກີນຈິງ ແລະ ໃຊ້ "ການເຄື່ອນຂອງຜົມ" ເພື່ອເນັ້ນການກະທຳ ແລະ ອາລົມຂອງຕົວລະຄອນເພື່ອເພີ່ມເອຟເຟກຂອງພາບ.{{sfn|Poitras|2000|pp=61–62}} ການແຕ້ມແຕ່ງສີຜົມທີ່ມີຄວາມສູດສາດຕາ ແລະ ໂທນສີທີ່ມີສີສັນເພື່ອໃຊ້ເປັນພາບປົກໜັງສືຂອງມັງງະສຳລັບເດັກນ້ອຍໃຫ້ມີຄວາມໜ້າສົນໃຈ.{{sfn|Poitras|2000|pp=61–62}} ເຖິງແມ່ນວ່າຈະຜະລິດເພື່ອຕະຫຼາດພາຍໃນປະເທດ, ອະນິເມະກໍມີຕົວລະຄອນທີ່ຖືກນຳສະເໜີໂດຍບໍ່ໄດ້ກຳນົດເຊື້ອຊາດ ຫຼື ສັນຊາດໄວ້ສະເໝີໄປ, ແລະ ມັກຈະເປັນການຕັດສິນໃຈໂດຍເຈຕະນາເຊັ່ນ: ຊຸດແອນິເມຊັ້ນ[[ໂປເກມອນ]].{{sfn|Tobin|2004|page=88}}
{{multiple image
| perrow = 2
| total_width = 300
| image1 = Lilyu - Crying.svg
| image2 = Lilyu - grr.svg
| footer = ນັກແຕ້ມອະນິເມະ ແລະ ມັງງະມັກຈະໃຊ້ພາບເຄື່ອງໝາຍ ເພື່ອເປັນຕົວແທນອາລົມຄວາມຮູ້ສຶກໂດຍສະເພາະ.
}}
ນັກແຕ້ມອະນິເມະ ແລະ ມັງງະມັກຈະແຕ້ມໂດຍໃຊ້ຫຼັກການທົ່ວໄປຂອງພາບການສະແດງອອກທາງສີໜ້າອັນເປັນເອກະລັກ ເພື່ອສະແດງເຖິງອາລົມ ແລະ ຄວາມຄິດທີ່ສະເພາະເຈາະຈົງ.<ref>{{cite web |url=http://www.mangatutorials.com/tut/expressions.php |title=Manga Tutorials: Emotional Expressions |access-date=August 22, 2008 |work=Rio |archive-url=https://web.archive.org/web/20080729175352/http://www.mangatutorials.com/tut/expressions.php |archive-date=July 29, 2008 |url-status=dead }}</ref> ເຕັກນິກພວກນີ້ມັກຈະມີຮູບແບບທີ່ແຕກຕ່າງຈາກເຕັກນິກຂອງແອນິເມຊັ້ນຕາເວັນຕົກ, ແລະ ຍັງລວມເຖິງການໃຊ້[[ການໃຊ້ພາບບອກອາລົມໃນມັງງະ|ພາບ]]ການກະທຳໃນການສະແດງເຖິງຄວາມຮູ້ສຶກ ແລະ ອາລົມບາງຢ່າງ.<ref name="bloody" /> ຕົວຢ່າງເຊັ່ນ: ຕົວລະຄອນຊາຍອາດຈະ[[ເລືອດດັງ]]ອອກເມື່ອຖືກເລົ້າອາລົມ.<ref name="bloody">{{cite web |url=http://www.umich.edu/~anime/info_emotions.html |title=Emotional Iconography in Animae |author=University of Michigan Animae Project |access-date=August 8, 2009 |archive-url=https://web.archive.org/web/20090402130601/http://www.umich.edu/~anime/info_emotions.html |archive-date=April 2, 2009 |url-status=live }}</ref> ການໃຊ້ສັນຍະລັກທີ່ເບິ່ງເຫັນໄດ້ຢ່າງຫຼວງຫຼາຍ, ເຊັ່ນ: ເຫື່ອໄຫຼເພື່ອສະແດງຄວາມກັງວົນ, ການໜ້າແດງເພື່ອສະແດງຄວາມເຂີນອາຍ, ຫຼື ຕາທີ່ເປັ່ງປະກາຍເພື່ອສະແດງສາຍຕາທີ່ມີຄວາມສົນໃຈຢ່າງແຮງ.{{sfn|Brenner|2007|p=52}} ການສະແດງອີກແບບໜຶ່ງທີ່ເປັນແບບກາຕູນແກັກນັ້ນແມ່ນການໃຊ້ຕົວຈິບິ(ການອອກແບບຕົວລະຄອນທີ່ຜິດສັດສ່ວນແຕ່ຮຽບງ່າຍ) ເພື່ອຄັ້ນອາລົມໃຫ້ອອກມາຢ່າງຊັດເຈນຢ່າງຕະຫຼົກເຊັ່ນ: ຄວາມສັບສົນ ຫຼື ຄວາມອາຍ.<ref name="bloody" />
===ເພງ===
[[File:Yuki-Kajiura-artist-1000sq.jpg|thumb|right|250px|ນັກປະພັນເພງຊາວຍີ່ປຸ່ນ [[ຢູກິ ຄາຈິອຸຣະ]], ເປັນທີ່ຮູ້ຈັກກັນຈາກຜົນງານທາງດົນຕີຂອງລາວໃນເພງປະກອບຊຸດອະນິເມະຍອດນິຍົມຫຼາຍເລື່ອງເຊັ່ນ: ''[[ດາບພິຄາດອະສູນ]]'', ''[[ຊອດ ອາທ໌ ອອນລາຍ]]'' ແລະ ''[[ສາວນ້ອຍເວດມົນມາໂດກະ]]'']]
ສາກເປີດ ແລະ ສາກປິດຂອງຊຸດອະນິເມະໂທລະພາບສ່ວນຫຼາຍຈະມາພ້ອມກັບເພງ[[ເພງເຈປັອບ|ເຈປັອບ]] ຫຼື [[ເພງເຈຣັອກ|ເຈຣັອກ]], ເຊິ່ງມັກຈະເປັນວົງດົນຕີດັງທີ່ມາຂຽນເນື້ອເພງທີ່ຂ້ອງກ່ຽວກັບຕົວເລື່ອງ ແຕ່ກໍມີເປົ້າໝາຍໄປທີ່ກຸ່ມຕະຫຼາດທົ່ວໄປເຊັ່ນກັນ, ດັ່ງນັ້ນ ຈຶ່ງມັກມີການກ່າວເຖິງຢ່າງຜິວເພີນ ຫຼື ບໍ່ກ່າວເຖິງເລີຍ, ຂຶ້ນນຳສາກຫຼັງ ຫຼື ການຈັດເລື່ອງຂອງເລື່ອງນັ້ນໆ. ນອກຈາກນີ້ມັກຈະມີການໃສ່ເພງປະກອບ("ເພງແຊກ")ໃນຕອນໃດໜຶ່ງ ເພື່ອເນັ້ນສາກທີ່ສຳຄັນໂດຍສະເພາະ.<ref>{{cite web|title=Original Soundtrack (OST)|url=https://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=74|website=Anime News Network|publisher=ANN|access-date=October 15, 2014|archive-url=https://web.archive.org/web/20141017134333/http://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=74|archive-date=October 17, 2014|url-status=live}}</ref>
[[ຟິວເຈີ ຟັງຄ໌]] ແມ່ນ[[ແນວດົນຕີຍ່ອຍ|ແນວດົນຕີຂະໜາດນ້ອຍ]]ທີ່ພັດທະນາມາຈາກແນວ[[ໄວເປີຣ໌ເວຟ]]ໃນຊ່ວງຕົ້ນປີ2010 ໂດຍໄດ້ຮັບແຮງບັນດານໃຈຈາກ[[ຝຣັ່ງເຮົາສ໌]][[ດິດສະໂກເອີຣົບ]], ເຊິ່ງມີການໃຊ້ສະໄຕລ໌ພາບ ແລະ ສຽງສັ້ນໃນອະນິເມະຢ່າງຫຼາຍຄວບກັນກັບ[[ເພງຊິດຕີ້ປັອບ]]ຂອງຍີ່ປຸ່ນ ເພື່ອສ້າງຄວາມເປັນມື່ນໄຫຼໃຫ້ແກ່ຕົວເພງ.<ref>{{cite web |date=2021-02-24 |title=The Endless Life Cycle of Japanese City Pop |url=https://pitchfork.com/features/article/the-endless-life-cycle-of-japanese-city-pop/ |access-date=2021-11-09 |website=Pitchfork |language=en-US |archive-date=February 24, 2021 |archive-url=https://web.archive.org/web/20210224152747/https://pitchfork.com/features/article/the-endless-life-cycle-of-japanese-city-pop/ |url-status=live }}</ref>
ນັບຕັ້ງແຕ່ປີ2020, [[ເພງອະນິເມະ]]ໄດ້ຮັບຄວາມນີຍົມເພີ່ມຂຶ້ນຢ່າງວ່ອງໄວທາງໂລກອອນໄລນ໌ ອັນເນື່ອງມາຈາກຄວາມພ້ອມຂອງການບໍລິການທີ່ກວ້າງຂວາງຫຼາຍຂອງບໍລິການສະຕຣີມເພງ ຫຼື ຟັງເພງເຊັ່ນ: [[ສະປອດຕິຟາຍ]] ແລະ ໄດ້ຮັບການໂປຣໂມດໂດຍເຫຼົ່າແຟນໆ ແລະ ສີລະປິນເທິງສື່ໂຊຊຽວ.<ref>{{cite web|title=What are Anisongs? How Music for Anime Became a Growing Global Sensation|url=https://blog.chartmetric.com/anisongs-anime-music-growing-global-sensation/|website=Chartmetric|date=28 June 2023|access-date=August 31, 2023|archive-date=August 31, 2023|archive-url=https://web.archive.org/web/20230831134713/https://blog.chartmetric.com/anisongs-anime-music-growing-global-sensation/|url-status=live}}</ref> ໃນປີ2023, ເພງເປີດເມະ ''[[ໄອດອລ]]'' ໂດຍ[[ໂຢອາໂຊບິ]]ຂອງອະນິເມະເລື່ອງ''[[ເກີດໃໝ່ເປັນລູກໂອຊິ]]''ຕິດອັນດັບຊາຣ໌ຕເພງເທິງ[[ບິລບອດ ໂກລບອລ 200]]ໃນສະຫະລັດອາເມຣິກາໂດຍມີຍອດຟັງຜ່ານບໍລິການສະຕຣີມ45.7ລ້ານເທື່ອ ແລະ ຂາຍໄດ້24ພັນຊຸດນອກສະຫະລັດ. "ໄອດອລ" ກາຍເປັນເພງຍີ່ປຸ່ນ ແລະ ເພງອະນິເມະເພງທຳອິດທີ່ຕິດອັບດັບຊາຣ໌ຕບິລບອດ ໂກລບອລ ແລະ ຍັງຕິດທັອບອັນດັບໜຶ່ງຈາກຮ້ອຍທົ່ວໂລກໃນຊາຣ໌ຕຂອງ[[ແອັບເປີນມິວຊິດ]].<ref>{{cite magazine |last1=Trust |first1=Gary |title=YOASOBI's 'Idol' Surges to No. 1 on Billboard Global Excl. U.S. Chart |url=https://www.billboard.com/music/chart-beat/yoasobi-idol-tops-billboard-global-excl-us-chart-1235346245/ |access-date=June 6, 2023 |magazine=[[Billboard (magazine)|Billboard]] |date=June 5, 2023 |archive-date=June 12, 2023 |archive-url=https://web.archive.org/web/20230612151453/https://www.billboard.com/music/chart-beat/yoasobi-idol-tops-billboard-global-excl-us-chart-1235346245/ |url-status=live }}</ref><ref>{{cite web|url=https://www.hindustantimes.com/entertainment/anime/yoasobis-idol-tops-global-charts-creating-a-new-streaming-milestone-for-japanese-music-101687344690614.html|title=YOASOBI's 'Idol' tops global charts, creating a new streaming milestone for Japanese music|website=[[Hindustan Times]]|date=21 June 2023|access-date=August 19, 2023|archive-date=June 30, 2023|archive-url=https://web.archive.org/web/20230630225419/https://www.hindustantimes.com/entertainment/anime/yoasobis-idol-tops-global-charts-creating-a-new-streaming-milestone-for-japanese-music-101687344690614.html|url-status=live}}</ref>
=== ແນວປະເພດ ===
ອະນິເມະມັກຖືກຈຳແນກແນວປະເພດຕາມເປົ້າໝາຍກຸ່ມຜູ້ເບິ່ງ ເຊິ່ງລວມມີ: ເດັກນ້ອຍ(子供, [[ອະນິເມະ ແລະ ມັງງະເດັກນ້ອຍ|''ໂຄໂດໂມະ'']]), ເດັນຜູ້ຍິງ(少女,''[[ໂຊໂຈ]]''), ເດັກຜູ້ຊາຍ(少年, ''[[ໂຊເນັງ]]''), ໜຸ່ມ(青年, ''ເຊເນັງ''), ສາວ(女性, ''[[ໂຈເຊ]]'') ແລະ ກຸ່ມອື່ນໆອີກທີ່້ມີຄວາມຫຼາກຫຼາຍໂດຍເປົ້າໝາຍແມ່ນຜູ້ໃຫຍ່. ອະນິເມະແນວໂຊໂຈ ແລະ ໂຊເນັງ ບາງເທື່ອກໍຈະມີອົງປະກອບທີ່ໄດ້ຮັບຄວາມນິຍົມໃນໝູ່ເດັກທັງສອງເພດ ເພື່ອພະຍາຍາມດຶງດູດຄວາມສົນໃຈແບບຂ້າມແນວ. ອະນິເມະຜູ້ໃຫຍ່ອາດຈະມີຈັງຫວະການເດີນເລື່ອງທີ່ຊ້າ ແລະ ໂຄງເລື່ອງທີ່ຊັບຊ້ອນຫຼາຍ ເຊິ່ງຜູ້ເບິ່ງໄວນ້ອຍມັກຈະຮູ້ສຶກວ່າບໍ່ໜ້າສົນໃຈຫຼືເຂົ້າບໍ່ເຖິງ, ເຊັ່ນດຽວກັນກັບຕີມ ແລະ ສະຖານະການທີ່ຜູ້ໃຫຍ່ສາມາດເຂົ້າເຖິງໄດ້ຫຼາຍກວ່າພາຍໃນເລື່ອງ.{{sfn|Poitras|2000|pp=44–48}} ອະນິເມະຜູ້ໃຫຍ່ບາງສ່ວນແມ່ນມີອົງປະກອບລາມົກອະນາຈານຈະມີປ້າຍກຳກັບໄວ້ວ່າ "R18" ໃນປະເທດຍີ່ປຸ່ນ ແລະ ເປັນທີ່ຮູ້ຈັກກັນໃນລະດັບສາກົນໃນຊື່ ''[[ເຮັນໄຕ]]'' (変態, ຄວາມຜິດປົກກະຕິ ຫຼື ມັກຖືກແປວ່າ ໂລກຈິດໃນພາສາຍີ່ປຸ່ນ). ໃນອີກແບບ, ອະນິເມະມັກຈະມີອົງປະກອບຂອງ[[ເອດຈິ]], ເລື່ອງທາງເພດ ຫຼື ອົງປະກອບກ່ຽວກັບເລື່ອງແນວນັ້ນໂດຍບໍ່ມີການສະແດງພາບ[[ການຮ່ວມເພດ|ການມີເພດສຳພັນ]]ໂດຍກົງ, ມັກປະກົດໃນອະນິເມະປະເພດຕະຫຼົກ ແລະ [[ຮາເຣັມ (ແນວ)|ຮາເຣັມ]]; ຍ້ອນການໄດ້ຮັບຄວາມນິຍົມຫຼາຍໃນຜູ້ເບິ່ງໄວຮຸ່ນ ແລະ ຜູ້ໃຫຍ່, ການໃສ່ອົງປະກອບດັ່ງກ່າວຖືເປັນຮູບແບບໜຶ່ງຂອງການບໍລິການເອົາໃຈຜູ້ເບິ່ງເຊິ່ງເອີ້ນວ່າ "[[ແຟນເຊີວິສ|ແຟນ ເຊີຣ໌ວິສ]](fan service)".<ref name="askjohn">Ask John: [http://www.animenation.net/blog/2005/05/20/ask-john-why-do-americans-hate-harem-anime/ Why Do Americans Hate Harem Anime?] {{webarchive|url=https://web.archive.org/web/20080409032645/http://www.animenation.net/blog/2005/05/20/ask-john-why-do-americans-hate-harem-anime/|date=April 9, 2008}}. animenation.net. May 20. 2005. ''Note: fan service and ecchi are often considered the same in wording.''</ref>{{sfn|Brenner|2007|p=89}} ບາງແນວກໍເປັນເລື່ອງກ່ຽວກັບຄວາມຮັກຮ່ວມເພດຄື: ''[[ຢາໂອອິ]]'' ຫຼື ''ຢາໂອຍ''(やおい, Yaoi, ຊາຍຮັກຮ່ວມເພດ) ແລະ ''[[ຢູຣິ]]''(百合, Yuri, ຍິງຮັກຮ່ວມເພດ). ເຖິງແມ່ນວ່າມັກຈະຖືກໃຊ້ໃນບໍລິບົດລາມົກອະນາຈານ, ຄຳວ່າ ''ຢາໂອອິ'' ແລະ ''ຢູຣິ'' ກໍສາມາດໃຊ້ໄດ້ຢ່າງກວ້າງໆໃນບໍລິບົດທີ່ໃຊ້ ເພື່ອອະທິບາຍ ຫຼື ເນັ້ນເຖິງຄວາມສຳພັນແບບດັ່ງກ່າວນຳດ້ວຍ.{{sfn|Poitras|2000|p=50}}
ການແບ່ງປະເພດອະນິເມະແຕກຕ່າງຈາກຈາກແອນິເມຊັ້ນປະເພດອື່ນໆ ແລະ ບໍ່ສາມາດຈັດຈຳແນກໄດ້ງ່າຍໆ.{{sfn|Poitras|2000|p=34}} [[ກິລສ໌ ປົວຕຣາສ]]ໄດ້ປຽບທຽບເລື່ອງນີ້ກັບການຈັດປະເພດຂອງ''[[ໂມບິລສູທ ກັນດັ້ມ 0080: ວອຣ໌ອິນເດິພວກເກັດ|ກັນດັ້ມ 0080]]'' ແລະ ການສະແດງພາວະຂອງສົງຄາມຂອງມັນນັ້ນເປັນ"ປະເພດຫຸ່ນຍົນຍັກ" ແລະ ການຈັດປະເພດທີ່ມັກງ່າຍຂອງນິຍາຍ[[ສົງຄາມ ແລະ ສັນຕິພາບ|''ສົງຄາມ ແລະ ສັນຕິພາບ'']] ເປັນ"ນິຍາຍສົງຄາມ".{{sfn|Poitras|2000|p=34}} [[ເລື່ອງແຕ່ງແນວວິທະຍາສາດ|ແນວວິທະຍາສາດ]]ເປັນໜຶ່ງໃນປະເພດອະນິເມະທີ່ສຳຄັນ ແລະ ຍັງມີຜົນງານໃນປະຫວັດສາດທີ່ສຳຄັນເຊັ່ນ: ''[[ແອສໂຕຣບອຍ]]''ຂອງເທຊຶກະ ແລະ [[ເທສຶຈິນ 28-ໂກ|''ເທສຶຈິນ 28-ໂກ'']]ຂອງ[[ມິດສຶເທຣຸ ໂຢໂກຢາມະ|ໂຢໂກຢາມະ]]. ເຊິ່ງຍັງມີປະເພດຍ່ອຍທີ່ສຳຄັນຄື[[ເມຄະ]], ໂດຍມີແຟນໄຊສ໌''[[ກັນດັ້ມ]]''ເປັນສັນຍະລັກທີ່ໂດດເດັ່ນ.{{sfn|Poitras|2000|p=35}} ປະເພດແນວ[[ຈິນຕະນິມິດ|ແຟນຕາຊີ]] ຫຼື ຕ່າງໂລກກໍມີຄວາມຫຼາກຫຼາຍໆເຊິ່ງປະກອບມີທັງທີ່ອີງຈາກວັດທະນະທຳ ແລະ ນິທານຂອງທັງຝັ່ງອາຊີ ແລະ ຕາເວັນຕົກ; ຕົວຢ່າງເຊັ່ນ: ເລື່ອງລາວກ່ຽວກັບເທບນິຍາຍຍີ່ປຸ່ນໃນ''[[ອິນຸຢາຊະ ເທບອະສູນຈິ້ງຈອກເງິນ|ອິນຸຢາຊະ]]'' ແລະ ເລື່ອງລາວຂອງເທບທິດາສະກັງດີນາວີທີ່ຍ້າຍໄປຍີ່ປຸ່ນ ເພື່ອຮັກສາຄອມພິວເຕີທີ່ຊື່ວ່າ [[ອິກກ໌ດຣາຊິລ]]ໃນ''[[ໂອ້ເທບທິດາ|ໂອ້ ເທບທິດາ!]]''.{{sfn|Poitras|2000|pp=37–40}} ການຂ້າມແນວກໍມີຢ່າງແຜ່ຫຼາຍເຊັ່ນ: ການປະສົມປະສານລະຫວ່າງແນວແຟນຕາຊີ ແລະ ຕະຫຼົກໃນ[[ດຣາກອນ ຮາລ໌ຟ]], ແລະ ການຫຼິ້ນມຸກຕະຫຼົກໃນຮູບເງົາອະນິເມະອາດຊະຍະກຳ [[ປາສາດສົມບັດຄາກລິໂອສໂຕຣ]].{{sfn|Poitras|2000|pp=41–43}} ປະເພດຍ່ອຍອື່ນໆທີ່ມັກປະກົດໃນອະນິເມະກໍລວມມີ: [[ສາວນ້ອຍເວດມົນ]], ຮາເຣັມ, ກິລາ, ສີລະປະການຕໍ່ສູ້, ການດັດແປງມາຈາກວັນນະຄະດີ, [[ສະໄໝກາງ|ຍຸດກາງ]] ແລະ ສົງຄາມ.{{sfn|Poitras|2000|pp=45–49}}
=== ຮູບແບບ ===
ອະນິເມະໃນຍຸກທຳອິດແມ່ນຖືກສ້າງຂຶ້ນສະເພາະສາຍໃນໂຮງຮູບເງົາ ເຊິ່ງຈຳເປັນຕ້ອງມີສ່ວນປະກອບຂອງດົນຕີກ່ອນຈິ່ງຈະໃສ່ສຽງອື່ນໆອີກໃນຂັ້ນຕອນການຜະລິດ. ໃນປີ1958, [[ນິບປົງທີວີ]]ໄດ້ອອກອາກາດເລື່ອງ [[ການຜະຈົນໄພຂອງໂມລ໌|ໂມກຶຣະ ໂນະ ອະບັນຈູຣຸ]] ເຊິ່ງເປັນອະນິເມະເລື່ອງທຳອິດທີ່ໄດ້ສາຍທາງໂທລະພາບ ແລະ ຍັງເປັນເລື່ອງທຳອິດທີ່ເປັນພາບສີ.<ref>{{cite news|url=https://www.animenewsnetwork.com/news/2013-06-19/oldest-tv-anime-color-screenshots-posted|title=Oldest TV Anime's Color Screenshots Posted|work=[[Anime News Network]]|date=June 19, 2013|access-date=July 17, 2013|archive-url=https://web.archive.org/web/20130726055523/http://www.animenewsnetwork.com/news/2013-06-19/oldest-tv-anime-color-screenshots-posted|archive-date=July 26, 2013|url-status=live}}</ref> ຈົນເຖິງຊຸມປີ1960 ຊຸດອະນິເມະຫຼາຍເລື່ອງໄດ້ສາຍອອກອາກາດຜ່ານທາງໂທລະພາບ ແລະ ກໍຍັງຄົງເປັນຊ່ອງທາງທີ່ນິຍົມມາຈົນຮອດປັດຈຸບັນ.{{sfn|Poitras|2000|p=13}} ເລື່ອງທີ່ເຜີຍແຜ່ໃນຮູບແບບເປັນວີດີໂອໂດຍກົງເລີຍຮຽກວ່າ "[[ອໍຣໍຈີນັລວີດີໂອແອນິເມຊັ້ນ]]" (OVA) ຫຼື "[[ອໍຣໍຈິນັລແອນິເມຊັ້ນວີດີໂອ]]" (OAV) ເຊິ່ງໂດຍທົ່ວໄປຈະບໍ່ສາຍໃນໂຮງຮູບເງົາ ຫຼື ຜ່ານຊ່ອງທາງໂທລະພາບ.{{sfn|Poitras|2000|p=14}}<ref>{{cite news|url=https://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=35|title=Original Animation Video (OAV/OVA)|work=Anime News Network|access-date=September 5, 2013|archive-url=https://web.archive.org/web/20080215085311/http://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=35|archive-date=February 15, 2008|url-status=live|df=mdy-all}}</ref>{{ຕ້ອງການອ້າງອີງເຕັມ}} ແລະ ໃນເວລາຕໍ່ມາເມື່ອການມາເຖິງຂອງອິນເຕີເນັດ ກໍເຮັດໃຫ້ບັນຫານັກແອນິເມຊັ້ນພາກັນເຜີຍແຜ່ຜົນງານຂອງຕົນຜ່ານຊ່ອງທາງດັ່ງກ່າວໂດຍເອີ້ນວ່າ "[[ອໍຣໍຈີນັລເນັດແອນິເມຊັ້ນ]]" (ONA).<ref>{{cite news|url=https://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=37|title=Original Net Anime (ONA)|work=Anime News Network|access-date=September 5, 2013|archive-url=https://web.archive.org/web/20131002014105/http://www.animenewsnetwork.com/encyclopedia/lexicon.php?id=37|archive-date=October 2, 2013|url-status=live|df=mdy-all}}</ref>{{ຕ້ອງການອ້າງອີງເຕັມ}}
ການເຜີຍແຜ່ອະນິເມະເຂົ້າເຖິງສື່ໃນບ້ານໂດຍກົງເລີ່ມເປັນທີ່ແຜ່ຫຼາຍໃນຊຸມປີ80ດ້ວຍການມາເຖິງຂອງເທບ[[ວີເຮັດເອັສ]] ແລະ ແຜ່ນ[[ເລເຊີດິສ]].{{sfn|Poitras|2000|p=14}} ໂດຍຮູບແບບວີດີໂອແບບວີເຮັດເອັສ[[ເອັນທີເອັສຊີ]]ເປັນທີ່ນິຍົມຫຼາຍທັງໃນປະເທດຍີ່ປຸ່ນ ແລະ ສະຫະລັດອາເມຣິກາ ເຊິ່ງໃນຮັບການຍົກຍ້ອງວ່າເປັນໜຶ່ງໃນສາເຫດທີ່ເຮັດອະນິເມະແຮ່ງມີຄວາມນິຍົມຫຼາຍຂຶ້ນໃນຍຸກ90.{{sfn|Poitras|2000|p=14}} ແຕ່ໃນໄລຍະຕໍ່ມາ ທັງສອງຢ່າງທີ່ກ່າວມາກໍຈະຖືກແທນທີ່ດ້ວຍຮູບແບບແຜ່ນ[[ດີວີດີ]]ທີ່ມີຂໍ້ດີຫຼາຍກວ່າເຊັ່ນ: ການໃສ່ຄຳບັນຍາຍ ແລະ ສຽງພາກຫຼາຍພາສາໄດ້ໃນແຜ່ນດຽວ.{{sfn|Poitras|2000|p=15}} ໂດຍໂຕແຜ່ນດີວີດີນັ້ນມີການໃສ່[[ລະຫັດພູມິພາກດີວີດີ|ລະຫັດພູມິພາກ]]ເອົາໄວ້ເພື່ອລັອກການເຂົ້າເຖິງຈາກພູມິພາກທີ່ບໍ່ໄດ້ຮັບອະນຸຍາດເຊິ່ງເປັນຄວາມຕ້ອງການຂອງທາງຜູ້ຜະລິດ ແລະ ອຸດສາຫະກຳລວມ ເພື່ອແກ້ໄຂບັນຫາທາງດ້ານລີຂະສິດ, ການເຜີຍແຜ່ແບບຜິດກົດໝາຍ ແລະ ການສົ່ງອອກເຖື່ອນ ເຊິ່ງໂຕເຄື່ອງຫຼິ້ນແຜ່ນດີວີດີຈະມີລະຫັດລະບົບພູມິພາກຂອງຕົນເອງ ແລະ ສາມາດສະກັດແຜ່ນເຖື່ອນໄດ້.{{sfn|Poitras|2000|p=15}} ນອກນີ້, ຮູບແບບແຜ່ນ[[ວີດີໂອຊີດີ]] ຫຼື ວີຊີດີ ກໍເປັນທີ່ນິຍົມຫຼາຍໃນຂົງເຂດຮົງກົງ ແລະ ໄຕ້ຫວັນ, ເຊິ່ງມັກຈະເປັນໜຶ່ງໃນຊ່ອງທາງຂອງການລັກລອບ[[ການປອມແປງ|ປອມແປງ]]ເປັນແຜ່ນເຖື່ອນຕ່າງໆ.{{sfn|Poitras|2000|p=15}}
ໜຶ່ງໃນລັກສະນະເດັ່ນຂອງອະນິເມະໂທລະພາບແມ່ນການເຮັດໄປເປັນຕອນໆ ເພື່ອໃຫ້ເລື່ອງລາວປະຕິດປະຕໍ່ກັນໄປເປັນສາກໆ ແລະ ມີຫຼາຍພາກຫຼາຍຊີຊັນ. ສ່ວນ[[ແອນິເມຊັ້ນອາເມຣິກັນດັ້ງເດີມ|ແອນິເມຊັ້ນແບບຕາເວັນຕົກ]]ດັ່ງເດີມມັກເຮັດເປັນຕອນທີ່ເນື້ອເລື່ອງຈົບໃນຕອນໆດຽວ. ເຊິ່ງກົງກັນຂ້າມກັນຢ່າງສິ້ນເຊີງກັບອະນິເມະເຊັ່ນ ''[[ດຣາກອນບອລ Z]]'' ທີ່ກໍມີການເລົ່າເລື່ອງໄປເປັນຕອນໆ ເຮັດໃຫ້ເນື້ອເລື່ອງຂອງອະນິເມະນັ້ນດຳເນີນໄປຢ່າງຕໍ່ເນື່ອງຫຼາຍຕອນ ຫຼື ຫຼາຍຊີຊັນ, ເຊິ່ງແຕກຕ່າງຢ່າງຊັດເຈນກັບແອນິເມຊັ້ນຕາເວັນຕົກດັ້ງເດີມ. ໂດຍການເຮັດເປັນຕອນຫຼາຍຕອນຕໍ່ກັນກໍຈະມີອິດທິພົນຫຼາຍຕໍ່ລາຍການໂທລະພາບອາເມຣິກັນ[[ໂທລະພາບຜ່ານຊ່ອງທາງການສຕຣີມ|ຜ່ານຊ່ອງທາງສຕຣີມມິງ]]ໃນຊ່ວງ[[ຍຸກທອງຂອງໂທລະພາບ]]ໃນເວລາຕໍ່ມາ.<ref>{{cite book|last1=Ziegler|first1=John R.|last2=Richards|first2=Leah|title=Representation in Steven Universe|date=9 January 2020|publisher=[[Springer Nature]]|isbn=978-3-030-31881-9|page=10|url=https://books.google.com/books?id=1m_JDwAAQBAJ&pg=PA10|access-date=November 10, 2021|archive-date=September 28, 2023|archive-url=https://web.archive.org/web/20230928172717/https://books.google.com/books?id=1m_JDwAAQBAJ&pg=PA10#v=onepage&q&f=false|url-status=live}}</ref>
== ໝາຍເຫດ ==
{{notelist}}
== ອ້າງອິງ ==
[[ໝວດ:ອະນິເມະ]]
[[ໝວດ:ສິ່ງປະດິດຂອງຢີ່ປຸ່ນ]]
662031ypmyg9quq6tunmzm8kze17q4n
ອຸຍແນສໂກ
0
17459
129339
108194
2026-07-24T04:45:16Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:3|0|0 */
129339
wikitext
text/x-wiki
{{Infobox United Nations
|name = ອົງການເພື່ອການສຶກສາ ວິທະຍາສາດ ແລະ ວັດທະນະທຳແຫ່ງສະຫະປະຊາຊາດ
|type = [[ໜ່ວຍງານພິເສດຂອງສະຫະປະຊາຊາດ]]
|acronyms = ອຸຍແນສໂກ (UNESCO)
|image = Logo UNESCO 2021.svg
| image size = 300px
|map = Flag of UNESCO.svg
|map size =
|map_caption =ທຸງຂອງອຸຍແນສໂກ
| formation = {{start date and age|1945|11|04|df=yes}}
|headquarters = [[ປາຣີ]], [[ປະເທດຝຣັ່ງ]]
| status =
|head = {{flagdeco|France}} [[Audrey Azoulay]]<br /><small>ຜູ້ອຳນວຍການອົງການການສຶກສາ ວິທະຍາສາດ ແລະ ວັດທະນະທຳແຫ່ງສະຫະປະຊາຊາດ</small>
|language = English, French, Spanish, Russian, Arabic, Chinese
|membership = [[Member states of UNESCO|195 member states]]
|established = 16 ພະຈິກ 1945<ref name=history/>
|website = {{URL|unesco.org|www.unesco.org}}
|parent = [[ຄະນະມົນຕີເສດຖະກິດ ແລະ ສັງຄົມແຫ່ງສະຫະປະຊາຊາດ]]
|subsidiaries =
|commons = UNESCO
|footnotes =
}}
'''ອົງການເພື່ອການສຶກສາ ວິທະຍາສາດ ແລະ ວັດທະນະທຳແຫ່ງສະຫະປະຊາຊາດ''' ({{lang-en|United Nations Educational, Scientific and Cultural Organization}}) ຫຼື '''ອຸຍແນສໂກ''' ({{lang-en|UNESCO}}) ເປັນອົງການສະເພາະຂອງສະຫະປະຊາຊາດ ກໍ່ຕັ້ງໂດຍໄດ້ມີການລົງນາມໃນລັດຖະທຳມະນູນຂອງອົງການ ເມື່ອວັນທີ 16 ພະຈິກ 1945 ແລະ ຕໍ່ມາເມື່ອວັນທີ 4 ພະຈິກ 1946 ຫຼັງ[[ສົງຄາມໂລກຄັ້ງທີສອງ]] ປະເທດສະມາຊິກກໍ່ຕັ້ງ 20 ປະເທດ ໄດ້ຮ່ວມມືກັນໃຫ້ສັດຕະຍາບັນລັດຖະທຳມະນູນອົງການ .
ນອກຈາກນີ້ ລັດຖະທຳມະນູນອຸຍແນສໂກຍັງຊີ້ໃຫ້ເຫັນໄວ້ນຳວ່າ ສັນຕິພາບທີ່ເກີດຈາກການຕົກລົງທາງດ້ານການເມືອງ ທາງດ້ານເສດຖະກິດລະຫວ່າງລັດຖະບານພຽງຢ່າງດຽວ ຈະບໍ່ໄດ້ຮັບການສະໜັບສະໜູນຢ່າງເຕັມທີ່ແທ້ຈິງ ແລະ ຍືນດົນນານ ຈາກຫຼາຍປະເທດຕ່າງໆ ໃນໂລກ ສັນຕິພາບຈະຕ້ອງວາງຮາກຖານຢູ່ໃນຄວາມຮ່ວມມືທາງສະຕິປັນຍາ ແລະ ຈິດສຳນຶກຂອງມະນຸດຊາດ ດັ່ງນັ້ນອົງການອຸຍແນສໂກຈຶ່ງສຸມໃສ່ການສົ່ງເສີມສັນຕິພາບ ດ້ວຍການສົ່ງເສີມຄວາມຮ່ວມມືຂອງນານາຊາດ ດ້ານການສຶກສາ, ວິທະຍາສາດ ແລະ ວັດທະນະທຳ ເພື່ອໃຫ້ທົ່ວໂລກເຄົາລົບໃນຄວາມຍຸດຕິທຳ [[ກົດໝາຍ]], ສິດທິ ແລະ ເສລີພາບ ທີ່ມະນຸດຄວນມີ ໂດຍບໍ່ຖືເຊື້ອຊາດ, ເພດ, ພາສາ ຫຼື [[ສາສະໜາ]] ຕາມ[[ກົດບັດສະຫະປະຊາຊາດ]] ອຸຍແນສໂກມີສຳນັກງານໃຫຍ່ຢູ່ໃນເມືອງ[[ປາຣີ]], [[ປະເທດຝຣັ່ງ]]
ປັດຈຸບັນ ອຸຍແນວໂກມີປະເທດສະມາຊິກທັງໝົດ 194 ປະເທດ ສະມາຊິກສົມທົບອີກ 12 ປະເທດ<ref>{{cite web|url=https://en.unesco.org/countries|title=List of UNESCO members and associates|publisher=UNESCO|accessdate=11 March 2019|archive-url=https://web.archive.org/web/20190311145128/https://en.unesco.org/countries|archive-date=11 March 2019|url-status=live}}</ref> ປະເທດລາວເຂົ້າເປັນລັດສະມາຊິກຂອງອົງການອຸຍແນສໂກໃນວັນທີ 9 ກໍລະກົດ 1951
ໂດຍປົກກະຕິ ອຸຍແນສໂກຈະໃຊ້[[ພາສາອັງກິດ]] ແລະ [[ພາສາຝຣັ່ງ]]ເປັນພາສາທາງການ ແຕ່ໃນລະຫວ່າງການປະຊຸມສະໄໝສາມັນຂອງອຸຍແນສໂກ ແລະ ການປະຊຸມຄະນະກຳມະການບໍລິຫານຂອງອຸຍແນສໂກ ຈະໃຊ້ພາສາທີ່ກ່ຽວຂ້ອງເຖິງ 6 ພາສາ ແມ່ນ: [[ພາສາອັງກິດ|ອັງກິດ]], [[ພາສາຝຣັ່ງ|ຝຣັ່ງ]], [[ພາສາລັດເຊຍ|ລັດເຊຍ]], [[ພາສາອາຣັບ|ອາຣັບ]], [[ພາສາແອັດສະປາຍ|ແອັດສະປາຍ]] ແລະ [[ພາສາຈີນ|ຈີນ]]
ການດຳເນີນງານຂອງອຸຍແນສໂກນັ້ນຈະປາກົດໃນຮູບຂອງການປະຊຸມສະໄໝສາມັນ ເຊິ່ງມີທຸກໆ 2 ປີ ໂດຍຄະນະກຳມະການປະກອບດ້ວຍຜູ້ຊົງມີວຸດທິທາງດ້ານການສຶກສາ, ວິທະຍາສາດ ແລະ ວັດທະນະທຳ ຈຳນວນ 58 ຄົນ ທີ່ເລືອກມາຈາກຜູ້ແທນຂອງປະເທດສະມາຊິກ ກຳມະການຈະຢູ່ໃນໄລຍະ 4 ປີ ໂດຍຈັດໃຫ້ມີການເລືອກຕັ້ງກຳມະການໃໝ່ເຄິ່ງໜຶ່ງທຸກ 2 ປີ ຜູ້ອຳນວຍການໃຫຍ່ ເຊິ່ງເປັນເຈົ້າໜ້າທີ່ສູງສຸດຂອງອົງການ ຈະຢູ່ໃນໄລຍະ 6 ປີ
ອຸຍແນສໂກໄດ້ຈັດໃຫ້ມີສຳນັກງານສ່ວນພາກພື້ນ ແລະ ສຳນັກງານຍ່ອຍປະຈຳພື້ນທີ່ ເພື່ອໃຫ້ອຸຍແນສໂກປະສານກັບປະເທດຕ່າງໆ ໄດ້ຢ່າງໃກ້ຊິດ ແຕ່ລະປະເທດສະມາຊິກຈະຈັດໃຫ້ມີສຳນັກຜູ້ແທນຖາວອນປະຈຳອຸຍແນສໂກ ແລະ ສຳນັກເລຂາທິການຄະນະກຳມະການແຫ່ງຊາດວ່າດ້ວຍອຸຍແນສໂກຂອງປະເທດນັ້ນໆ ເພື່ອດຳເນີນງານໃນສ່ວນທີ່ກ່ຽວຂ້ອງກັບຂອບຄ່າຍງານຂອງອຸຍແນສໂກໂດຍສະເພາະ
== ກິດຈະກຳ/ໂຄງການ ==
ອຸຍແນສໂກກຳນົດ ແລະ ດຳເນີນການກິດຈະກຳພາຍໃຕ້ 5 ຫົວຂໍ້ ຄື [[ການສຶກສາ]] ວິທະຍາສາດທຳມະຊາດ ສັງຄົມ ແລະ ມະນຸດສາດ ວັດທະນະທຳ ແລະ ການສື່ສານ ແລະ ຂໍ້ມູນ
* ອຸຍແນສໂກສະໜັບສະໜູນການວິໄຈໃນ[[ການສຶກສາປຽບທຽບ]] (comparative education) ໂດຍຈັດຫາຜູ້ຊ່ຽວຊານ ແລະ ສົ່ງເສີມຄວາມຊ່ວຍເຫຼືອ ເພື່ອເສີມສ້າງຄວາມເປັນຜູ້ນຳດ້ານການສຶກສາລະດັບຊາດ ແລະ ທ່າແຮງຂອງປະເທດຕ່າງໆ ໃນການນຳສະເໜີການສຶກສາທີ່ມີຄຸນນະພາບສຳລັບທຸກຄົນ ໂດຍບໍ່ຈັດວ່າເປັນການ[[ອຸດົມສຶກສາ]] ເຊັ່ນ<ref>{{Cite web |url=http://www.cimea.it/files/fileusers/Diploma_mills_Luca_Lantero_EN.pdf |title=ສຳເນົາເກັບຖາວອນ |access-date=2021-10-09 |archive-date=2015-05-13 |archive-url=https://web.archive.org/web/20150513185433/http://www.cimea.it/files/fileusers/Diploma_mills_Luca_Lantero_EN.pdf |url-status=bot: unknown }}, [[Information Centre on Academic Mobility and Equivalence|Information Centre on Academic Mobility and Equivalence (CIMEA)]], Italy. and [http://arquivo.pt/wayback/20090521152755/http://portal.unesco.org/education/en/ev.php-URL_ID=48787&URL_DO=DO_TOPIC&URL_SECTION=201.html UNESCO "Alert: Misuse of UNESCO Name by Bogus Institutions"]</ref>
** [[UNESCO Chairs]]
** [[Convention against Discrimination in Education]]
** [[UNESCO ASPNet]]
* ອຸຍແນສໂກຖະແຫຼງການ [[Seville Statement on Violence]]
* ກຳນົດໂຄງການ ແລະ ສະຖານທີ່ ທີ່ມີຄວາມສຳຄັນທາງວັດທະນະທຳ ແລະ ວິທະຍາສາດ ເຊັ່ນ:
** [[ເຄືອຂ່າຍສວນສາທາລະນະທໍລະນີໂລກ]] (Global Geoparks Network)
** [[ເຄືອຂ່າຍພື້ນທີ່ສະຫງວນຊີວະມົນທົນໂລກ]] (World Network of Biosphere Reserves) ພາຍໃຕ້ໂຄງການມະນຸດ ແລະ ຊີວະມົນທົນ ຕັ້ງແຕ່ປີ 1971
** [[ເມືອງແຫ່ງວັນນະຄະດີ]] (City of Literature)
** ໂຄງການ[[ພາສາໃກ້ສູນ]] ແລະ [[ຄວາມຫຼາກຫຼາຍທາງພາສາ]] (Endangered languages and linguistic diversity projects)
** [[ຜົນງານດ້ານວາທະສິນ ແລະ ມໍລະດົກທີ່ບໍ່ເປັນກາຍຍະພາບຂອງມະນຸດຊາດ]] (Masterpieces of the Oral and Intangible Heritage of Humanity) ເຊິ່ງຕໍ່ມາພັດທະນາເປັນ [[ມໍລະດົກພູມປັນຢາທາງວັດທະນະທຳ|ມໍລະດົກທາງວັດທະນະທຳທີ່ຈັບຕ້ອງບໍ່ໄດ້ ຫຼື ມໍລະດົກພູມປັນຢາທາງວັດທະນະທຳ]] (Intangible Cultural Heritage)
** [[ຄວາມຊົງຈຳແຫ່ງໂລກ]] (Memory of the World) ຕັ້ງແຕ່ປີ 1997
** ການຈັດການຊັບພະຍາກອນນ້ຳ ພາຍໃຕ້[[ໂຄງການອຸທົກກະສາດນານາຊາດ]] (International Hydrological Programme: IHP),
** [[ແຫຼ່ງມໍລະດົກໂລກ]] (World Heritage Sites)
** [[ຫໍສະໝຸດດີຈີຕອນແຫ່ງໂລກ]] (World Digital Library)
* ສົ່ງເສີມ "ການໄຫຼຂອງຄວາມຄິດຢ່າງອິດສະຫຼະດ້ວຍພາບ ແລະ ຄຳເວົ້າ" ໂດຍວິທີ:
** ສົ່ງເສີມ[[ເສລີພາບໃນການເວົ້າ|ເສລີພາບໃນການສະແດງອອກ]] ລວມທັງ[[ເສລີພາບສື່]] ແລະ [[ກົດໝາຍເສລີດ້ານຂໍ້ມູນຂ່າວສານ]] ຜ່ານພະແນກເສລີພາບໃນການສະແດງອອກ ແລະ ການພັດທະນາສື່ (Division of Freedom of Expression and Media Development)<ref>{{cite web|url=https://en.unesco.org/themes/fostering-freedom-expression|title=Fostering Freedom of Expression|website=UNESCO|access-date=19 December 2016|date=30 January 2013|archive-url=https://web.archive.org/web/20191210053749/https://en.unesco.org/themes/fostering-freedom-expression|archive-date=10 December 2019|url-status=live}}</ref> ລວມເຖິງໂຄງການລະຫວ່າງປະເທດເພື່ອການພັດທະນາການສື່ສານ (International Programme for the Development of Communication)<ref>{{cite web|url=http://www.unesco.org/new/en/communication-and-information/intergovernmental-programmes/ipdc/homepage|title=International Programme for the Development of Communication (IPDC) {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170618011854/http://www.unesco.org/new/en/communication-and-information/intergovernmental-programmes/ipdc/homepage|archive-date=18 June 2017|url-status=live}}</ref>
** ສົ່ງເສີມຄວາມປອດໄພຂອງສື່ ແລະ ຕໍ່ສູ້ກັບການບໍ່ຕ້ອງຮັບໂທດສຳລັບຜູ້ທີ່ໂຈມຕີພວກເຂົາ<ref>{{cite web|url=https://en.unesco.org/themes/safety-journalists|title=Safety of Journalists|website=UNESCO|access-date=19 December 2016|date=22 May 2013|archive-url=https://web.archive.org/web/20200120131159/https://en.unesco.org/themes/safety-journalists|archive-date=20 January 2020|url-status=live}}</ref> ຜ່ານການປະສານງານຕາມ "ແຜນປະຕິບັດການສະຫະປະຊາຊາດວ່າດ້ວຍຄວາມປອດໄພຂອງນັກຂ່າວ ແລະ ປະເດັນການບໍ່ຕ້ອງຮັບໂທດ" (the UN Plan of Action on the Safety of Journalists and the Issue of Impunity)<ref>{{cite web|url=http://www.unesco.org/new/en/communication-and-information/freedom-of-expression/safety-of-journalists/un-plan-of-action/|title=UN Plan of Action {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170811103326/http://www.unesco.org/new/en/communication-and-information/freedom-of-expression/safety-of-journalists/un-plan-of-action|archive-date=11 August 2017|url-status=live}}</ref>
** ສົ່ງເສີມການເຂົ້າເຖິງ ແລະ ການເກັບຮັກສາຂໍ້ມູນຢ່າງທົ່ວເຖິງ ແລະ ການແກ້ບັນຫາແບບເປີດເພື່ອການພັດທະນາທີ່ຢັ້ງຢືນ ຜ່ານພະແນກສະມາຄົມຄວາມຮູ້ (Knowledge Societies Division)<ref>{{cite web|url=https://en.unesco.org/themes/building-knowledge-societies|title=Building Knowledge Societies|website=UNESCO|access-date=19 December 2016|date=18 June 2013|archive-url=https://web.archive.org/web/20200116181422/https://en.unesco.org/themes/building-knowledge-societies|archive-date=16 January 2020|url-status=live}}</ref> ລວມເຖິງ[[ຄວາມຊົງຈຳແຫ່ງໂລກ|ໂຄງການຄວາມຊົງຈຳແຫ່ງໂລກ]] (Memory of the World Programme)<ref>{{cite web|url=http://www.unesco.org/new/en/communication-and-information/flagship-project-activities/memory-of-the-world/homepage/|title=Memory of the World {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170710050933/http://www.unesco.org/new/en/communication-and-information/flagship-project-activities/memory-of-the-world/homepage|archive-date=10 July 2017|url-status=live}}</ref> ແລະ [[ໂຄງການຂໍ້ມູນຂ່າວສານເພື່ອປວງຊົນ]] (Information for All Programme)<ref>{{cite web|url=http://www.unesco.org/new/en/communication-and-information/intergovernmental-programmes/information-for-all-programme-ifap/|title=Information for All Programme (IFAP) {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170910112204/http://www.unesco.org/new/en/communication-and-information/intergovernmental-programmes/information-for-all-programme-ifap/|archive-date=10 September 2017|url-status=live}}</ref>
** ສົ່ງເສີມ[[ນິຍົມທາງການເມືອງ]], [[ຄວາມເທົ່າທຽມທາງເພດ]] ແລະ [[ຄວາມຫຼາກຫຼາຍທາງວັດທະນະທຳ]]ໃນສື່
** ສົ່ງເສີມຄວາມເປັນສາກົນຂອງອິນເຕີເນັດ ແລະ ຫຼັກການຂອງອິນເຕີເນັດ ວ່າອິນເຕີເນັດຄວນຕັ້ງຢູ່ໃນພື້ນຖານ (I) [[ສິດທິມະນຸດ]] (ii) ເປີດກວ້າງ (iii) ເຂົ້າເຖິງໄດ້ທຸກຄົນ ແລະ (iv) ຫຼໍ່ລ້ຽງໂດຍການມີສ່ວນຮ່ວມຂອງຜູ້ມີສ່ວນໄດ້ສ່ວນເສຍຫຼາຍຝ່າຍ (ສະຫຼຸບເປັນຄຳຫຍໍ້ R.O.A.M.)<ref>{{cite web|url=http://www.unesco.org/new/en/communication-and-information/crosscutting-priorities/unesco-internet-study/internet-universality/|title=Internet Universality {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170728033751/http://www.unesco.org/new/en/communication-and-information/crosscutting-priorities/unesco-internet-study/internet-universality/|archive-date=28 July 2017|url-status=live}}</ref>
** ການສ້າງຄວາມຮູ້ຜ່ານສິ່ງພິມ ເຊັ່ນ World Trends in Freedom of Expression and Media Development,<ref>{{cite web|url=http://www.unesco.org/new/en/world-media-trends|title=World Trends in Freedom of Expression and Media Development {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170826003315/http://www.unesco.org/new/en/world-media-trends|archive-date=26 August 2017|url-status=live}}</ref> the UNESCO Series on Internet Freedom,<ref>{{cite web|url=http://www.unesco.org/new/en/communication-and-information/resources/publications-and-communication-materials/publications/publications-by-series/unesco-series-on-internet-freedom|title=UNESCO Series on Internet Freedom {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170821161616/http://www.unesco.org/new/en/communication-and-information/resources/publications-and-communication-materials/publications/publications-by-series/unesco-series-on-internet-freedom|archive-date=21 August 2017|url-status=live}}</ref> and the Media Development Indicators,<ref>{{cite web|url=http://www.unesco.org/new/en/communication-and-information/intergovernmental-programmes/ipdc/initiatives/media-development-indicators-mdis/|title=Media Development Indicators (MDIs) {{!}} United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=19 December 2016|archive-url=https://web.archive.org/web/20170612042809/http://www.unesco.org/new/en/communication-and-information/intergovernmental-programmes/ipdc/initiatives/media-development-indicators-mdis/|archive-date=12 June 2017|url-status=live}}</ref> ຕະຫຼອດຈົນການສຶກສາອີງຕາມຕົວຊີ້ວັດອື່ນໆ
* ສະໜັບສະໜູນ ເຊັ່ນ:
** ທົດສະວັດສາກົນເພື່ອວັດທະນະທຳສັນຕິພາບ ແລະ ຄວາມບໍ່ຮຸນແຮງເພື່ອເດັກຂອງໂລກ (International Decade for the Promotion of a Culture of Peace and Non-Violence for the Children of the World) ລະຫວ່າງປີ 2001–2010
** [[ວັນເສລີພາບສື່ມວນຊົນໂລກ]] (World Press Freedom Day) ໃນວັນທີ 3 ພຶດສະພາ ຂອງທຸກໆປີ ເພື່ອສົ່ງເສີມເສລີພາບໃນການສະແດງອອກ ແລະ ເສລີພາບຂອງສື່ ໃນຖານະທີ່ເປັນສິດທິມະນຸດຂັ້ນພື້ນຖານ ແລະ ເປັນອົງປະກອບທີ່ສຳຄັນຂອງສັງຄົມທີ່ມີສຸຂະພາບດີ ເປັນປະຊາທິປະໄຕ ແລະ ເສລີ
** [[ວັນການຮູ້ໜັງສືສາກົນ]] (International Literacy Day)
** ປີສາກົນເພື່ອວັດທະນະທໍາສັນຕິພາບ (International Year for the Culture of Peace)
* ກໍ່ຕັ້ງແຕ່ໃຫ້ທຸກສະໜັບສະໜູນໂຄງການ ເຊັ່ນ:
** ໂຄງການຈັດຕັ້ງພິພິທະພັນການຍ້າຍຖິ່ນ (Migration Museums Initiative)<ref>{{cite web |url=http://www.migrationmuseums.org/web/ |archive-url=https://web.archive.org/web/20070305005432/http://www.migrationmuseums.org/web/ |url-status=dead |archive-date=5 March 2007 |title=Migration Institutions – Home |publisher=Migrationmuseums.org |access-date=23 April 2010 }}</ref>
** [[ສຳນັກຂາວແຫ່ງອາຊີ ແລະ ປາຊີຟິກ]] (OANA)
** [[ສະພາວິທະຍາສາດລະຫວ່າງປະເທດ]] (International Council of Science)
** [[ເອກອັກຄະລັດຖະທູດອຸຍແນສໂກ]] (UNESCO Goodwill Ambassador)
** [[UNESCO Collection of Representative Works]] ເພື່ອແປຜົນງານວັນນະຄະດີໂລກໃຫ້ເປັນຫຼາຍພາສາລະຫວ່າງປີ 1948 ເຖິງ 2005
** [[GoUNESCO]]<ref>{{cite web|url=https://www.gounesco.com/unesco-new-delhi-support-gounesco/|title=Official support for GoUNESCO from UNESCO New Delhi|date=24 March 2014|website=GoUNESCO – Make Heritage Fun!|language=en-US|access-date=15 August 2019|archive-url=https://web.archive.org/web/20190815083136/https://www.gounesco.com/unesco-new-delhi-support-gounesco/|archive-date=15 August 2019|url-status=live}}</ref>
ນອກຈາກນີ້ ມີການສະເໜີໃຫ້ຈັດຕັ້ງໂຄງການໃໝ່ໂດຍລັດສະມາຊິກ ໄດ້ແກ່ ໂຄງການທີ່ສຸມໃສ່ມໍລະດົກທາງວັດທະນະທໍາທີ່ສາມາດເຄື່ອນຍ້າຍໄດ້ (movable cultural heritage) ເຊັ່ນ: ສິ່ງປະດິດ, ຮູບແຕ້ມ ແລະ biofact ຕົວຢ່າງວັດຖຸທາງວັດທະນະທຳ ເຊັ່ນ: [[ໂມນາລິຊາ|ຮູບແຕ້ມໂມນາລິຊາ]], [[ດາວິດ (ມີເກສັນເຈໂລ)|ຮູບປັ້ນດາວີດ]], [[ທອງສຳລິດເມນິນ]] ແລະ [[ມົງກຸດແຫ່ງແພັກເຈ]] ເປັນຕົ້ນ ແລະ ໂຄງການສຸມໃສ່ສິ່ງຊີວິດ ເຊັ່ນ [[ມັງກອນໂຄໂມໂດ]], [[ແພນດ້າຍັກ]], [[ນົກອິນຊີຫົວຂາວ]], [[ອາຍ-ອາຍ]] ເປັນຕົ້ນ<ref>{{cite web|url=http://www.unesco.org/new/en/cairo/culture/tangible-cultural-heritage/|title=Tangible Cultural Heritage – United Nations Educational, Scientific and Cultural Organization|website=www.unesco.org|access-date=18 March 2018|archive-url=https://web.archive.org/web/20180319084612/http://www.unesco.org/new/en/cairo/culture/tangible-cultural-heritage/|archive-date=19 March 2018|url-status=live}}</ref><ref>{{cite web|url=https://whc.unesco.org/en/documents/114908|title=UNESCO World Heritage Centre – Document – Discovered artifacts under preservation, Archaeological Site, 18 Hoang Dieu street|first=UNESCO World Heritage|last=Centre|website=whc.unesco.org|access-date=26 December 2019|archive-url=https://web.archive.org/web/20191103001256/https://whc.unesco.org/en/documents/114908/|archive-date=3 November 2019|url-status=live}}</ref>
== ຜູ້ອຳນວຍການ ==
ລາຍຊື່ຜູ້ອຳນວຍການອົງການອຸຍແນສໂກ ມີດັ່ງນີ້: <ref>UNESCO official site: [http://www.unesco.org/new/en/unesco/about-us/who-we-are/history/directors-general/ Directors-General] {{Webarchive|url=https://web.archive.org/web/20180718234457/http://www.unesco.org/new/en/unesco/about-us/who-we-are/history/directors-general/ |date=18 July 2018 }}</ref>
{| class="wikitable"
|-
!ຊື່
!ສັນຊາດ
!ດຳລົງຕຳແໜ່ງ
|-
| Julian Huxley || {{flagcountry|UK}} || 1946–48
|-
| Jaime Torres Bodet || {{flagcountry|MEX|1934}} || 1948–52
|-
| John Wilkinson Taylor || {{flagcountry|USA|1912}} || ຮັກສາການ 1952–53
|-
| Luther Evans || {{flagcountry|USA|1912}} || 1953–58
|-
| Vittorino Veronese|| {{flagcountry|ITA}} || 1958–61
|-
| René Maheu || {{flagcountry|FRA}} || 1961–74; ຮັກສາການ 1961
|-
| Amadou-Mahtar M'Bow|| {{flagcountry|SEN}} || 1974–87
|-
| Federico Mayor Zaragoza || {{flagcountry|ESP}} || 1987–99
|-
| Koïchiro Matsuura || {{flagcountry|JPN}} || 1999–2009
|-
| Irina Bokova || {{flagcountry|BUL}} || 2009–2017
|-
| Audrey Azoulay || {{flagcountry|FRA}} || 2017–ປັດຈຸບັນ
|}
<!--
=== General Conference ===
This is the list of the sessions of the UNESCO General Conference held since 1946:<ref>UNESCO official site: [http://www.unesco.org/new/en/general-conference/previous-sessions/ Previous Sessions of the General Conference] {{Webarchive|url=https://web.archive.org/web/20111025045200/http://www.unesco.org/new/en/general-conference/previous-sessions/ |date=25 October 2011 }}</ref>
{| class="sortable wikitable"
|-
! Session
! Location
! Year
! Chaired by
! from
|-
| 40th || Paris || 2019 ||
[[Ahmet Altay Cengizer]]<ref>{{cite web
| title = UNESCO: President of the 40th session of the General Conference
| date = 14 October 2019
| url = https://en.unesco.org/generalconference/40/president
| access-date = 20 August 2020
}}</ref>
| | {{flagcountry|Turkey}}
|-
| 39th || Paris || 2017 || Zohour Alaoui<ref>{{cite web | url=https://en.unesco.org/generalconference/39/president | title=President of the 39th session of the General Conference | publisher=UNESCO | access-date=12 November 2017 | date=5 October 2017 | archive-url=https://web.archive.org/web/20171113003114/https://en.unesco.org/generalconference/39/president | archive-date=13 November 2017 | url-status=live }}</ref> || {{flagcountry|Morocco}}
|-
| 38th || Paris || 2015 || Stanley Mutumba Simataa<ref>{{cite web | url=http://www.unesco.org/new/en/general-conference-38th/president/ | title=President of the 38th session of the General Conference | publisher=UNESCO | access-date=11 November 2015 | archive-url=https://web.archive.org/web/20151116135603/http://www.unesco.org/new/en/general-conference-38th/president | archive-date=16 November 2015 | url-status=live }}</ref> || {{flagcountry|Namibia}}
|-
| 37th<ref>{{cite web|title = General Conference 37th {{!}} United Nations Educational, Scientific and Cultural Organization|url = http://www.unesco.org/new/en/general-conference-37th/|website = www.unesco.org|access-date = 25 September 2015|archive-url = https://web.archive.org/web/20151003103414/http://www.unesco.org/new/en/general-conference-37th/|archive-date = 3 October 2015|url-status = live}}</ref> || Paris || 2013 || [[Hao Ping]] || {{flagcountry|CHN}}
|-
| 36th || Paris || 2011 || [[Katalin Bogyay]] || {{flagcountry|HUN}}
|-
| 35th || Paris || 2009 || Davidson Hepburn || {{flagcountry|BHS}}
|-
| 34th || Paris || 2007 || [[Georgios Anastassopoulos]]|| {{flagcountry|GRC}}
|-
| 33rd || Paris || 2005 || [[Musa Bin Jaafar Bin Hassan]] || {{flagcountry|OMN}}
|-
| 32nd || Paris || 2003 || [[Michael Omolewa]] || {{flagcountry|NGA}}
|-
| 31st || Paris || 2001 || [[Ahmad Jalali]] || {{flagcountry|IRN}}
|-
| 30th || Paris || 1999 || [[Jaroslava Moserová]] || {{flagcountry|CZE}}
|-
| 29th || Paris || 1997 || [[Eduardo Portella]] || {{flagcountry|BRA}}
|-
| 28th || Paris || 1995 || Torben Krogh || {{flagcountry|DNK}}
|-
| 27th || Paris || 1993 || Ahmed Saleh Sayyad || {{flagcountry|YEM}}
|-
| 26th || Paris || 1991 || [[Bethwell Allan Ogot]] || {{flagcountry|KEN}}
|-
| 25th || Paris || 1989 || [[Anwar Ibrahim]] || {{flagcountry|MYS}}
|-
| 24th || Paris || 1987 || Guillermo Putzeys Alvarez || {{flagcountry|GTM}}
|-
| 23rd || [[Sofia]] || 1985 || [[Nikolai Todorov]] || {{flagcountry|BGR|1967}}
|-
| 22nd || Paris || 1983 || Saïd Tell || {{flagcountry|JOR}}
|-
| 4th extraordinary || Paris || 1982 || ||
|-
| 21st || [[Belgrade]] || 1980 || Ivo Margan || {{flagcountry|YUG}}
|-
| 20th || Paris || 1978 || Napoléon LeBlanc || {{flagcountry|CAN}}
|-
| 19th || [[Nairobi]] || 1976 || Taaita Toweett || {{flagcountry|KEN}}
|-
| 18th || Paris || 1974 || Magda Jóború || {{flagcountry|HUN}}
|-
| 3rd extraordinary || Paris || 1973 || ||
|-
| 17th || Paris || 1972 || Toru Haguiwara || {{flagcountry|JPN}}
|-
| 16th || Paris || 1970 || Atilio Dell'Oro Maini || {{flagcountry|ARG}}
|-
| 15th || Paris || 1968 || [[William Eteki Mboumoua]] || {{flagcountry|CMR}}
|-
| 14th || Paris || 1966 || Bedrettin Tuncel || {{flagcountry|TUR}}
|-
| 13th || Paris || 1964 || [[Norair Sisakian]] || {{flagcountry|USSR|1955}}
|-
| 12th || Paris || 1962 || Paulo de Berrêdo Carneiro || {{flagcountry|BRA}}
|-
| 11th || Paris || 1960 || Akale-Work Abte-Wold || {{flagcountry|ETH}}
|-
| 10th || Paris || 1958 || [[Jean Berthoin]] || {{flagcountry|FRA}}
|-
| 9th || New Delhi || 1956 || [[Abul Kalam Azad]] || {{flagcountry|IND}}
|-
| 8th || [[Montevideo]] || 1954 || [[Justino Zavala Muniz]] || {{flagcountry|URY}}
|-
| 2nd extraordinary || Paris || 1953 || ||
|-
| 7th || Paris || 1952 || [[Sarvepalli Radhakrishnan]] || {{flagcountry|IND}}
|-
| 6th || Paris || 1951 || [[Howland H. Sargeant]] || {{flagcountry|USA}}
|-
| 5th || [[Florence]] || 1950 || [[Stefano Jacini]] || {{flagcountry|ITA}}
|-
| 4th || Paris || 1949 || [[Edward Ronald Walker]] || {{flagcountry|AUS}}
|-
| 1st extraordinary || Paris || 1948 || ||
|-
| 3rd || [[Beirut]] || 1948 || Hamid Bey Frangie || {{flagcountry|LBN}}
|-
| 2nd || [[Mexico City]] || 1947 || [[Manuel Gual Vidal]] || {{flagcountry|MEX}}
|-
| 1st || Paris || 1946 || [[Léon Blum]] || {{flagcountry|FRA}}
|}
=== Executive Board ===
{| class="wikitable"
|- style="border-top: 2px solid;"
! Term
! Group I <br />(9 seats)
! Group II <br />(7 seats)
! Group III <br />(10 seats)
! Group IV <br />(12 seats)
! Group V(a) <br />(13 seats)
! Group V(b) <br />(7 seats)
|-
| 2019–2023<ref>{{cite web|url=https://en.unesco.org/generalconference/40/elections|title=40th Session of the General Conference – 12–27 November 2019|date=16 October 2019|website=UNESCO|language=en|url-status=live|archive-url=https://web.archive.org/web/20200102155643/https://en.unesco.org/generalconference/40/elections|archive-date=2 January 2020|access-date=20 November 2019}}</ref>
| {{flagcountry|France}}
{{flagcountry|Germany}}
{{flagcountry|Italy}}
{{flagcountry|Netherlands}}
{{flagcountry|Spain}}
{{Flag|Switzerland}}
| {{Flag|Hungary}}
{{Flag|Poland}}
{{Flag|Russia}}
{{Flag|Serbia}}
| {{flagcountry|Argentina}}
{{flagcountry|Brazil}}
{{flagcountry|Dominican Republic}}
{{Flag|Uruguay}}
| {{Flag|Afghanistan}}
{{Flag|Kyrgyzstan}}
{{Flag|Philippines}}
{{Flag|Pakistan}}
{{Flag|Republic of Korea}}
{{flagcountry|Thailand}}
| {{Flag|Benin}}
{{Flag|Congo}}
{{Flag|Guinea}}
{{Flag|Ghana}}
{{flagcountry|Kenya}}
{{Flag|Namibia}}
{{flagcountry|Senegal}}
{{Flag|Togo}}
| {{Flag|Saudi Arabia}}
{{Flag|UAE}}
{{flagcountry|Tunisia}}
|- style="background:#efe; border-top:2px solid;"
| '''2017–19'''<ref>[http://www.unesco.org/new/en/general-conference-38th/elections/results-executive-board Executive Board – Results of elections] {{Webarchive|url=https://web.archive.org/web/20151115093548/http://www.unesco.org/new/en/general-conference-38th/elections/results-executive-board |date=15 November 2015 }}. UNESCO General Conference, November 2015. Retrieved 12 November 2015.</ref>
|
{{flagcountry|France}} <br />
{{flagcountry|Greece}} <br />
{{flagcountry|Italy}} <br />
{{flagcountry|Spain}} <br />
{{flagcountry|United Kingdom}}
|
{{flagcountry|Lithuania}} <br />
{{flagcountry|Russian Federation}} <br />
{{flagcountry|Serbia}} <br />
{{flagcountry|Slovenia}}
|
{{flagcountry|Brazil}} <br />
{{flagcountry|Haiti}} <br />
{{flagcountry|Mexico}} <br />
{{flagcountry|Nicaragua}} <br />
{{flagcountry|Paraguay}}
|
{{flagcountry|India}}<br />
{{flagcountry|Iran}} <br />
{{flagcountry|Malaysia}} <br />
{{flagcountry|Pakistan}} <br />
{{flagcountry|Republic of Korea}} <br />
{{flagcountry|Sri Lanka}} <br />
{{flagcountry|Vietnam}}
|
{{flagcountry|Cameroon}} <br />
{{flagcountry|Cote d'Ivoire}} <br />
{{flagcountry|Ghana}} <br />
{{flagcountry|Kenya}} <br />
{{flagcountry|Nigeria}} <br />
{{flagcountry|Senegal}} <br />
{{flagcountry|South Africa}}
|
{{flagcountry|Lebanon}} <br />
{{flagcountry|Oman}} <br />
{{flagcountry|Qatar}} <br />
{{flagcountry|Sudan}}
|- style="background:#f7f7c7;border-top: 2px solid;"
| '''2014–17'''<ref>[http://www.unesco.org/new/fileadmin/MULTIMEDIA/HQ/GBS/SCX/pdfs/Table_2013-2015.pdf Table_2013-2015.pdf] {{Webarchive|url=https://web.archive.org/web/20160528012349/http://www.unesco.org/new/fileadmin/MULTIMEDIA/HQ/GBS/SCX/pdfs/Table_2013-2015.pdf |date=28 May 2016 }} UNESCO Membership by Electoral Groups. Retrieved 12 November 2015.</ref>
|
{{flagcountry|Germany}} <br />
{{flagcountry|Netherlands}} <br />
{{flagcountry|Sweden}}
|
{{flagcountry|Albania}} <br />
{{flagcountry|Estonia}} <br />
{{flagcountry|Ukraine}}
|
{{flagcountry|Argentina}} <br />
{{flagcountry|Belize}} <br />
{{flagcountry|Dominican Republic}} <br />
{{flagcountry|El Salvador}} <br />
{{flagcountry|Saint Kitts and Nevis}} <br />
{{flagcountry|Trinidad and Tobago}}
|
{{flagcountry|Bangladesh}} <br />
{{flagcountry|China}} <br />
{{flagcountry|India}} <br />
{{flagcountry|Japan}} <br />
{{flagcountry|Nepal}} <br />
{{flagcountry|Turkmenistan}}
|
{{flagcountry|Chad}} <br />
{{flagcountry|Guinea}} <br />
{{flagcountry|Mauritius}} <br />
{{flagcountry|Mozambique}} <br />
{{flagcountry|Togo}} <br />
{{flagcountry|Uganda}}
|
{{flagcountry|Algeria}} <br />
{{flagcountry|Egypt}} <br />
{{flagcountry|Kuwait}} <br />
{{flagcountry|Morocco}}
|- style="border-top: 2px solid;"
| '''2012–15'''
|
{{flagcountry|Austria}} <br />
{{flagcountry|France}} <br />
{{flagcountry|Italy}} <br />
{{flagcountry|India}} <br />
{{flagcountry|Spain}} <br />
{{flagcountry|United Kingdom}} <br />
{{flagcountry|United States of America}}
|
{{flagcountry|Czech Republic}} <br />
{{flagcountry|Montenegro}} <br />
{{flagcountry|North Macedonia}} <br />
{{flagcountry|Russian Federation}} <br />
|
{{flagcountry|Brazil}} <br />
{{flagcountry|Cuba}} <br />
{{flagcountry|Ecuador}} <br />
{{flagcountry|Mexico}}
|
{{flagcountry|Afghanistan}} <br />
{{flagcountry|Indonesia}} <br />
{{flagcountry|Pakistan}} <br />
{{flagcountry|Papua New Guinea}} <br />
{{flagcountry|Republic of Korea}} <br />
{{flagcountry|Thailand}}
|
{{flagcountry|Angola}} <br />
{{flagcountry|Ethiopia}} <br />
{{flagcountry|Gabon}} <br />
{{flagcountry|Gambia}} <br />
{{flagcountry|Malawi}} <br />
{{flagcountry|Mali}} <br />
{{flagcountry|Namibia}} <br />
{{flagcountry|Nigeria}}
|
{{flagcountry|Jordan}} <br />
{{flagcountry|Tunisia}} <br />
{{flagcountry|United Arab Emirates}}
|}
-->
== ສຳນັກງານ ==
{{ໂຄງສ່ວນ}}
== ອ້າງອີງ ==
{{ລາຍການອ້າງອີງ}}
{{ເລີ່ມອ້າງອີງ}}
* [http://www.moe.go.th/weberd/Unes.htm ອົງການອຸຍແນສໂກ] ສຳນັກຄວາມສຳພັນຕ່າງປະເທດ ກະຊວງສຶກສາທິການ
{{ຈົບອ້າງອີງ}}
== ເບິ່ງຕື່ມ ==
* [[ມໍລະດົກໂລກ]]
* [[ມໍລະດົກທາງວັນທະນາທຳທີ່ຈັບຕ້ອງບໍ່ໄດ້]]
* [[ຄວາມຊົງຈຳແຫ່ງໂລກ]]
* [[ພູມສັນຖານວັດທະນະທໍາ]]
* [[ເອກອັກຄະລັດຖະທູດອຸຍແນສໂກ]]
== ແຫຼ່ງຂໍ້ມູນອື່ນ ==
{{Commonscat|UNESCO}}
* [http://www.unesco.org/ UNESCO] ເວັບໄຊຢ່າງເປັນທາງການ
[[ໝວດ:ອົງການທີ່ກໍ່ຕັ້ງໃນປີ 1945]]
[[ໝວດ:ອຸຍແນສໂກ| ]]
[[ໝວດ:ສັງຄົມຂໍ້ມູນຂ່າວສານ]]
[[ໝວດ:ປາຣີ]]
r519eyyg5gpx58x5kog0p5vn9zn2k2s
Module:Convert/text
828
18578
129330
126453
2026-07-24T01:24:21Z
Khomphoi28
15846
129330
Scribunto
text/plain
-- Text used by Module:Convert, for th.wikipedia.org (Thai).
-- ຂໍ້ມູນໃນມໍດູນນີ້ໃຊ້ໂດຍ:convert ສຳລັບວິກິພີເດຍພາສາລາວ
-- ໜ້ານີ້ເປັນໂມດູນແຍກສຳລັບການຈັດການແປພາສາສຳລັບຜົນ
-- ເບິ່ງທີ່ [[:en:Template:Convert/Transwiki guide]] ສຳລັບຄູ່ມື
-- ຂອງສິ່ງທີ່ຈຳເປັນໃນການປັບມໍດູນໃຫ້ເຂົ້າກັບທ້ອງຖິ່ນ
local translation_table = {
per_word = 'ຕໍ່', -- for units like "liters per kilometer"
plural_suffix = '', -- disable plural unit name.
}
-- Some units accept an SI prefix before the unit code, such as "kg" for kilogram.
local SIprefixes = {
-- The prefix field is what the prefix should be, if different from the prefix used.
['Y'] = { exponent = 24, name = 'ຢອດຕາ', },
['Z'] = { exponent = 21, name = 'ເຊັດຕາ', },
['E'] = { exponent = 18, name = 'ເອັກຊາ', },
['P'] = { exponent = 15, name = 'ເປຕາ', },
['T'] = { exponent = 12, name = 'ເຕຣາ', },
['G'] = { exponent = 9, name = 'ກິກາ', },
['M'] = { exponent = 6, name = 'ເມກາ', },
['k'] = { exponent = 3, name = 'ກິໂລ', },
['ກ'] = { exponent = 3, name = 'ກິໂລ' , },
['h'] = { exponent = 2, name = 'ເຮັກໂຕ', },
['da']= { exponent = 1, name = 'ເດກາ' , },
['d'] = { exponent = -1, name = 'ເດຊີ' , },
['c'] = { exponent = -2, name = 'ຊັງຕີ' , prefix = 'ຊ' },
['ຊ'] = { exponent = -2, name = 'ຊັງຕີ' , },
['m'] = { exponent = -3, name = 'ມິລິ' , },
['ມ'] = { exponent = -3, name = 'ມິລິ' , },
['μ'] = { exponent = -6, name = 'ໄມໂຄຣ', prefix = 'µ' }, -- key = 'GREEK SMALL LETTER MU' (U+03BC) utf-8 CE BC
['µ'] = { exponent = -6, name = 'ໄມໂຄຣ', }, -- key = 'MICRO SIGN' (U+00B5) utf-8 C2 B5
['u'] = { exponent = -6, name = 'ໄມໂຄຣ', prefix = 'µ' }, -- not an SI prefix, but allow for people typing this
['n'] = { exponent = -9, name = 'ນາໂນ' , },
['p'] = { exponent =-12, name = 'ປີໂກ' , },
['f'] = { exponent =-15, name = 'ຟັງໂຕ', },
['a'] = { exponent =-18, name = 'ອັດໂຕ' , },
['z'] = { exponent =-21, name = 'ຊິບໂຕ', },
['y'] = { exponent =-24, name = 'ຢອດໂຕ', },
}
-- Some units can be qualified with one of the following prefixes, when linked.
local customary_units = {
{ "US", link = "United States customary units" },
{ "U.S.", link = "United States customary units" },
{ "imperial", link = "ໜ່ວຍວັດແບບອັງກິດ" },
{ "imp", link = "ໜ່ວຍວັດແບບອັງກິດ" },
{ "thai", link = "ໜ່ວຍວັດແບບໄທ" },
}
-- Names when using engineering notation (a prefix of "eN" where N is a number; example "e6km").
-- key = { "name", link = "article title", exponent = numeric_key_value }
-- If lk=on and link is defined, the name of the number will appear as a link.
local eng_scales = {
["3"] = { "ພັນ", exponent = 3 },
["6"] = { "ລ້ານ", exponent = 6 },
["9"] = { "ຕື້", link = "1000000000", exponent = 9 },
["12"] = { "ຕົງ", link = "1000000000000", exponent = 12 },
["15"] = { "ພັນຕື້", link = "1000000000000000", exponent = 15 },
}
-- One of the following categories is included in the text of each message.
local all_categories = {
unit = "[[ໝວດ:ການໃຊ້ໜ່ວຍກັບແມ່ແບບ Convert ທີ່ບໍ່ຖືກຕ້ອງ]]",
option = "[[ໝວດ:ການໃຊ້ແມ່ແບບ Convert ທີ່ໃຊ້ຕົວເລືອກຜິດພາດ]]",
warning = '[[ໝວດ:ການໃຊ້ແມ່ແບບ Convert ທີ່ໃຊ້ຕົວເລືອກທີ່ຖືກຕ້ອງ]]',
tracking = '[[ໝວດ:ຕິດຕາມການໃຊ້ການແມ່ແບບ Convert]]',
}
-- For some error messages, the following puts the wanted style around
-- each unit code marked like '...%{ft%}...'.
local unitcode_regex = '%%([{}])'
local unitcode_replace = { ['{'] = '"', ['}'] = '"' } -- no longer need the more elaborate substitute used before 2013-09-28
-- All messages that may be displayed if a problem occurs.
local all_messages = {
-- Message format string, %s parameters: anchor, title, text, category.
-- Each displayed message starts with "Convert:" so can easily locate by searching article.
cvt_format = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i>[[Help:Convert messages#%s|<span title="Convert: %s">convert: %s</span>]]</i>]</sup>%s',
cvt_format2 = '<sup class="noprint Inline-Template" style="white-space:nowrap;">[[Help:Convert messages#$4|<span title="Convert: $1">$2</span>]]</sup>$3<span class="error"></span>',
cvt_format_preview = '<strong class="error">Error in convert: $1 [[Help:Convert messages#$4|(help)]]</strong>$3',
-- Each of following messages is a table:
-- { [1] = 'title', -- mouseover title text
-- [2] = 'text', -- link text displayed in article
-- [3] = 'category key', -- key to lookup category in all_categories
-- [4] = 'anchor', -- anchor for link to relevant section on help page
-- regex = gsub_regex,
-- replace = gsub_table,
-- } Mouseover title text Link text CatKey Anchor
cvt_bad_num = { 'ຄ່າ "%s" ຕ້ອງເປັນຕົວເລກ' , 'invalid number' , 'option', 'invalid_number' },
cvt_big_prec = { 'Precision "%s" is too large' , 'precision too large' , 'option', 'precision_too_large' },
cvt_invalid_num = { 'Number has overflowed' , 'number overflow' , 'option', 'number_overflow' },
cvt_no_num = { 'Needs the number to be converted' , 'needs a number' , 'option', 'needs_number' },
cvt_no_num2 = { 'Needs another number for a range' , 'needs another number', 'option', 'needs_another_number' },
cvt_bad_frac = { 'frac "%s" must be an integer above 1' , 'invalid fraction' , 'option', 'invalid_fraction' },
cvt_bad_prec = { 'Precision "%s" must be an integer' , 'invalid precision' , 'option', 'invalid_precision' },
cvt_bad_sigfig = { 'sigfig "%s" must be a positive integer' , 'invalid sigfig' , 'option', 'invalid_sigfig' },
cvt_empty_option = { 'Ignored empty option "%s"' , 'empty option' , 'option', 'empty_option' },
cvt_no_spell = { 'Spelling is not available' , 'bug, ask for help' , 'option', 'ask_for_help' },
cvt_unknown_option = { 'Ignored invalid option "%s"' , 'invalid option' , 'option', 'invalid_option' },
cvt_bad_default = { 'Unit "%s" has an invalid default' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_bad_unit = { 'Unit "%s" is invalid here' , 'unit invalid here' , 'unit' , 'unit_invalid_here' },
cvt_no_default = { 'Unit "%s" has no default output unit' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_no_unit = { 'Needs name of unit' , 'needs unit name' , 'unit' , 'needs_unit_name' },
cvt_unknown = { 'Unit name "%s" is not known' , 'unknown unit' , 'unit' , 'unknown_unit' },
cvt_should_be = { '%s' , 'ambiguous unit' , 'unit' , 'ambiguous_unit', regex = unitcode_regex, replace = unitcode_replace },
cvt_mismatch = { 'Cannot convert "%s" to "%s"' , 'unit mismatch' , 'unit' , 'unit_mismatch' },
cvt_bug_convert = { 'Bug: Cannot convert between specified units', 'bug, ask for help' , 'unit' , 'ask_for_help' },
cvt_lookup = { 'Unit "%s" is incorrectly defined' , 'bug, ask for help' , 'unit' , 'ask_for_help' },
}
-- Text to join input value/unit with output value/unit.
local disp_joins = {
-- Position: before after between (wrt output; "between" is for a combination; default "; ").
["or"] = { " ຫຼື " , "" , " ຫຼື " },
["sqbr-sp"] = { " [" , "]" },
["sqbr-nbsp"] = { " [" , "]" },
["comma"] = { ", " , "" },
["slash-sp"] = { " / " , "" },
["slash-nbsp"] = { " / ", "" },
["slash-nosp"] = { "/" , "" },
["b"] = { " (" , ")" },
["(or)"] = { " (" , ")", " ຫຼື " },
["br"] = { "<br/>" , "" },
}
-- Text to separate values in a range.
local range_types = {
-- Specifying a table requires "off" and "on" values (for "abbr=off" and "abbr=on");
-- other fields are optional.
-- When "adj=on|abbr=off" applies, spaces in range text are replaced with hyphens.
-- With "exception = true", that also occurs with "adj=on|abbr=on".
-- If "adj" is defined here, that text (unchanged) is used with "adj=on".
["+"] = " + ",
[","] = ", ",
[", and"] = ", ແລະ ",
[", or"] = ", ຫຼື ",
["by"] = " ໂດຍ ",
["-"] = "–",
["to about"] = " ຫາປະມານ ",
["and"] = { off = " ແລະ ", on = " ແລະ ", exception = true },
["and(-)"] = { off = " ແລະ ", on = "–" },
["or"] = { off = " ຫຼື " , on = " ຫຼື " , exception = true },
["to"] = { off = " ຫາ " , on = " ຫາ " , exception = true },
["to(-)"] = { off = " ຫາ ", on = "–" },
["+/-"] = { off = " ± ", on = " ± ", adj = " ± ", is_range_change = true },
["x"] = { off = " ໂດຍ ", on = " × ", is_range_x = true },
["xx"] = " × ",
[""] = "×", -- use "" to replace "x" in {{convert/2}} which is different from "x" in old {{convert}}
}
local range_aliases = {
-- ["alternative name for a range"] = "standard range name"
["&"] = "and",
["–"] = "-",
["–"] = "-",
["to-"] = "to(-)",
["×"] = "x",
["×"] = "x",
["±"] = "+/-",
["±"] = "+/-",
["ແລະ"] = "and",
["ຫຼື"] = "or",
["ຫາ"] = "to",
}
-- The following "words" are accepted to make a simple range, for example, {{convert|1-2|ft}}.
-- Words must be in correct order for searching, for example, '-' after '+/-' and 'x' after 'xx'.
-- Put '-' last so can have a simple range with negative values as in {{convert|-5 to -1|C}}.
local range_words = { '+/-', 'to(-)', 'xx', 'x', '*', 'to', 'or', 'by', '–' , '-' }
local ranges = {
types = range_types,
aliases = range_aliases,
words = range_words,
}
-- Valid option names.
local en_option_name = {
-- ["local text for option name"] = "en name used in this module"
["abbr"] = "abbr",
["adj"] = "adj",
["comma"] = "comma",
["debug"] = "debug",
["disp"] = "disp",
["frac"] = "frac",
["lang"] = "lang",
["lk"] = "lk",
["near"] = "near",
["order"] = "order",
["round"] = "round",
["sigfig"] = "sigfig",
["sing"] = "adj", -- "sing" is an old alias for "adj"
["sortable"] = "sortable",
["sp"] = "sp",
["spell"] = "spell",
}
-- Valid option values.
-- Convention: parms.opt_xxx refers to an option that is set here
-- (not intended to be set by the template which invokes this module).
-- Example: At en.wiki, "abbr" includes:
-- ["comma"] = "opt_nocomma"
-- As a result, if the template uses abbr=comma, this script sets:
-- parms["opt_nocomma"] = true
-- parms["abbr"] = nil
-- Therefore parms.abbr will be nil, or will have one of the listed values
-- that do not start with "opt_".
local en_option_value = {
["abbr"] = {
-- ["local text for option value"] = "en value used in this module"
["comma"] = "opt_nocomma", -- no numsep in input or output numbers
["def"] = "", -- ignored (some wrapper templates call convert with "abbr=def" to mean "default abbreviation")
["h"] = "on", -- abbr=on + use "h" for hand unit (default)
["hh"] = "opt_hand_hh", -- abbr=on + use "hh" for hand unit
["in"] = "in", -- use symbol for LHS unit
["mos"] = "mos", -- in a range, repeat the input unit (no longer used)
["none"] = "off", -- old name for "off"
["off"] = "off", -- use name for all units
["on"] = "on", -- use symbol for all units
["out"] = "out", -- use symbol for RHS unit (default)
["values"] = "opt_values", -- show only input and output numbers, not units
["~"] = "opt_also_symbol", -- show input unit symbol as well as name
},
["adj"] = {
["1"] = "opt_singular", -- unit name is singular when value satisfies: (-1 <= v and v < 0) or (0 < v and v <= 1)
["flip"] = "opt_flip", -- reverse order of input/output
["j"] = "opt_use_nbsp", -- "join": use " " instead of " " between value and unit name
["mid"] = "opt_adjectival, opt_adj_mid", -- adj=on with user-specified text after input unit (between input and output)
["nocomma"] = "opt_nocomma", -- no numsep in input or output numbers
["off"] = "", -- ignored (off is the default)
["on"] = "opt_adjectival", -- unit name is singular and hyphenated
["pre"] = "opt_one_preunit", -- user-specified text before input unit
["ri0"] = "ri0", -- round input with precision = 0
["ri1"] = "ri1", -- round input with precision = 1
["ri2"] = "ri2", -- round input with precision = 2
["ri3"] = "ri3", -- round input with precision = 3
},
["comma"] = {
["5"] = "opt_comma5", -- only use numsep grouping if 5 or more digits
["gaps"] = "opt_gaps", -- use gaps, not numsep, to separate groups of digits
["gaps5"] = "opt_gaps, opt_comma5", -- opt_gaps + opt_comma5
},
["debug"] = {
["yes"] = "opt_sortable_debug", -- make the normally hidden sort key visible
},
["disp"] = {
["/"] = "slash", -- join: '/'
["2"] = "opt_output_only", -- display only output value and symbol/name (not input)
["5"] = "opt_round5", -- round output value to nearest 5
["b"] = "b", -- join: '(...)'
["(or)"] = "(or)", -- join: '(...)' with 'or' between outputs in a combination
["br"] = "br", -- join: '<br/>'
["comma"] = "comma", -- join: ','
["flip"] = "opt_flip", -- reverse order of input/output
["flip5"] = "opt_flip, opt_round5", -- disp=flip + disp=5
["nocomma"] = "opt_nocomma", -- no numsep in input or output numbers
["number"] = "opt_output_number_only", -- display output value (not input, and not output symbol/name)
["or"] = "or", -- join: 'or'
["out"] = "opt_output_only",
["output number only"] = "opt_output_number_only",
["output only"] = "opt_output_only",
["preunit"] = "opt_two_preunits", -- user-specified text before input and output units
["s"] = "slash", -- join: '/'
["slash"] = "slash", -- join: '/'
["sqbr"] = "sqbr", -- join: '[...]'
["table"] = "opt_table", -- output is suitable for a table cell with align="right"
["tablecen"] = "opt_tablecen", -- output is suitable for a table cell with align="center"
["u2"] = "opt_output_unit_only", -- display output symbol/name (not input, and not output value)
["unit"] = "opt_input_unit_only", -- display input symbol/name (not output, and not input value)
["unit or text"] = "opt_input_unit_only, opt_ignore_error", -- display input symbol/name, or given unit code if not known
["unit2"] = "opt_output_unit_only",
["x"] = "x", -- join: <first>...<second> (user-specified text)
},
-- frac=x is handled as a special case: x must be an integer (possibly in local language) = 2 or more
["lang"] = { -- language for output digits (both en and local digits are always accepted for input)
["en"] = "opt_lang_en", -- use en digits for numbers, regardless of local language
["local"] = "opt_lang_local", -- use local digits for numbers (default, although config can change default to en)
},
["lk"] = {
["in"] = "in", -- link LHS unit name or symbol
["off"] = "off", -- do not link: same as default except for hand unit
["on"] = "on", -- link all unit names or symbols (but not twice for the same unit)
["out"] = "out", -- link RHS unit name or symbol
},
["near"] = {
["5"] = "opt_round5", -- round output value to nearest 5
},
["order"] = {
["flip"] = "opt_flip", -- reverse order of input/output
},
["round"] = {
["5"] = "opt_round5", -- round output value to nearest 5
["25"] = "opt_round25", -- round output value to nearest 25
["each"] = "opt_round_each", -- using default precision in a range, round each output separately (default uses highest precision of each item in range)
},
-- sigfig=x is handled as a special case: x must be an integer (possibly in local language) = 1 or more
["sortable"] = {
["off"] = "", -- ignored (off is the default)
["in"] = "opt_sortable_in", -- output numeric hidden sort field for use in a sortable table, based on input
["on"] = "opt_sortable_in", -- same
["out"] = "opt_sortable_out", -- same, based on output
},
["sp"] = {
},
["spell"] = { -- only English spelling is supported; not scientific notation; only some fractions
["in"] = "opt_spell_in", -- spell input value in words
["In"] = "opt_spell_in, opt_spell_upper", -- spell input value in words with first letter uppercase
["on"] = "opt_spell_in, opt_spell_out", -- spell input and output values in words
["On"] = "opt_spell_in, opt_spell_out, opt_spell_upper", -- same, with first letter of first word in result uppercase
},
}
return {
SIprefixes = SIprefixes,
all_categories = all_categories,
all_messages = all_messages,
currency = { ['$'] = true, ['£'] = true, ['฿'] = true, ['₭'] = true },
customary_units = customary_units,
disp_joins = disp_joins,
en_option_name = en_option_name,
en_option_value = en_option_value,
eng_scales = eng_scales,
ranges = ranges,
translation_table = translation_table,
}
ac4lumu6izgwa03y98rh04vopu38yur
ຣູປີ
0
21950
129332
125899
2026-07-24T04:27:52Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:3|0|0 */
129332
wikitext
text/x-wiki
{{ປັບພາສາ}}[[ຮູບ:Countries_Using_a_Rupee_Currency.svg|thumb|450x450px|<br /><br /><br /><br />]]
'''ຣູປີ''' ('''Rupee''') ແມ່ນຊື່ທົ່ວໄປສໍາລັບ [[ສະກຸນເງິນຕາ|ສະກຸນເງິນ]] ຂອງ [[ປະເທດອິນເດຍ|ອິນເດຍ]], Mauritius, [[ປະເທດເນປານ|ເນປານ]], ປາກິສຖານ, Seychelles, ແລະ ສີລັງກາ, ແລະຂອງສະກຸນເງິນໃນອະດີດຂອງ Afghanistan, [[ປະເທດບາເຣນ]], Kuwait, Oman, ສະຫະລັດອາຣັບເອມີເຣດ (ເປັນ Gulf rupee ), ອາຟຣິກາຕາເວັນອອກອັງກິດ, [[ປະເທດມຽນມາ|ມຽນມາ]], ເຢຍລະມັນຕາເວັນອອກອາຟຣິກາ (ເປັນ Rupie /Rupien), ແລະ ທິເບດ. ໃນ [[ປະເທດອິນໂດເນເຊຍ]] ແລະ Maldives, ຫົວໜ່ວຍຂອງສະກຸນເງິນແມ່ນເປັນທີ່ຮູ້ຈັກເປັນ ''[[Rupiah ອິນໂດເນເຊຍ|rupiah]]'' ແລະ ''rufiyaa'' ຕາມລໍາດັບ, ຄໍາ ສັບຂອງ rupee.
ເງິນຣູປີອິນເດຍ ແລະ ຣູປີປາກີສະຖານ ຖືກແບ່ງອອກເປັນໜຶ່ງຮ້ອຍ paise (ແປເປັນ ''paisa'') ຫຼື pice. ເງິນຣູປີເນປານ (रू) ແບ່ງອອກເປັນໜຶ່ງຮ້ອຍ paisa (ຄຳແປ ແລະຫຼາຍນາມ) ຫຼືສີ່ ຊູກາ . Mauritian, Seychellois, ແລະ Sri Lankan rupees ແບ່ງອອກເປັນ 100 ເຊັນ.
2z86stb3m5rw0yj0oitoq4mvlz0qpnq
Module:Params
828
23661
129329
129085
2026-07-23T13:39:56Z
Grufo
23551
Update from [[d:Special:GoToLinkedPage/mediawikiwiki/Q122696746|master]] using [[mw:Synchronizer| #Synchronizer]]
129329
Scribunto
text/plain
require[[strict]]
--- ---
--- PRIVATE ENVIRONMENT ---
--- ________________________________ ---
--- ---
--[[ Abstract utilities ]]--
----------------------------
-- Helper function for `string.gsub()` (for managing zero-padded numbers)
local function zero_padded (str)
return ('%03d%s'):format(#str, str)
end
-- Helper function for `table.sort()` (for natural sorting)
local function natural_sort (var1, var2)
return var1:gsub('%d+', zero_padded) < var2:gsub('%d+', zero_padded)
end
-- Return a copy or a reference to a table
local function copy_or_ref_table (src, refonly)
if refonly then return src end
local newtab = {}
for key, val in pairs(src) do newtab[key] = val end
return newtab
end
-- Copy at most N items (of all kinds) from `src` to `dest` and return `dest`
local function copy_table_maxn (dest, src, len)
local idx = 1
for key, val in pairs(src) do
dest[key], idx = val, idx + 1
if idx > len then break end
end
return dest
end
-- Remove some numeric elements from a table, shifting everything to the left
local function remove_numeric_keys (tbl, idx, len)
local cache, tmp = {}, idx + len - 1
for key, val in pairs(tbl) do
if type(key) == 'number' and key >= idx then
if key > tmp then cache[key - len] = val end
tbl[key] = nil
end
end
for key, val in pairs(cache) do tbl[key] = val end
end
-- Make a reduced copy of a table (shifting in both directions if necessary)
local function copy_table_reduced (tbl, idx, len)
local ret, tmp = {}, idx + len - 1
if idx > 0 then
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key < idx then
ret[key] = val
elseif key > tmp then ret[key - len] = val end
end
elseif tmp > 0 then
local nshift = 1 - idx
for key, val in pairs(tbl) do
if type(key) ~= 'number' then ret[key] = val
elseif key > tmp then ret[key - tmp] = val
elseif key < idx then ret[key + nshift] = val end
end
else
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key > tmp then
ret[key] = val
elseif key < idx then ret[key + len] = val end
end
end
return ret
end
-- Make an expanded copy of a table (shifting in both directions if necessary)
local function copy_table_expanded (tbl, idx, len)
local ret, tmp = {}, idx + len - 1
if idx > 0 then
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key < idx then
ret[key] = val
else ret[key + len] = val end
end
elseif tmp > 0 then
local nshift = idx - 1
for key, val in pairs(tbl) do
if type(key) ~= 'number' then ret[key] = val
elseif key > 0 then ret[key + tmp] = val
elseif key < 1 then ret[key + nshift] = val end
end
else
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key > tmp then
ret[key] = val
else ret[key - len] = val end
end
end
return ret
end
-- Given a table, create two new tables containing the sorted list of keys
local function get_key_list_sorted (tbl, sort_fn)
local nums, words, nn, nw = {}, {}, 0, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
nn = nn + 1
nums[nn] = key
else
nw = nw + 1
words[nw] = key
end
end
table.sort(nums)
table.sort(words, sort_fn)
return nums, words, nn, nw
end
-- Parse a parameter name string and return it as a string or a number
local function get_parameter_name (par_str)
local ret = par_str:match'^%s*(.-)%s*$'
if ret ~= '0' and ret:find'^%-?[1-9]%d*$' == nil then return ret end
return tonumber(ret)
end
-- Move a key from a table to another, but only if under a different name and
-- always parsing numeric strings as numbers
local function steal_if_renamed (val, src, skey, dest, dkey)
local realkey = get_parameter_name(dkey)
if skey ~= realkey then dest[realkey], src[skey] = val, nil end
end
--[[ Public strings ]]--
------------------------
-- Special match keywords (functions and modifiers MUST avoid these names)
local mkeywords = {
['or'] = 0,
pattern = 1,
plain = 2,
strict = 3
}
-- Sort functions (functions and modifiers MUST avoid these names)
local sortfunctions = {
alphabetically = false,
naturally = natural_sort
}
-- Callback styles for the `mapping_*` and `renaming_*` class of modifiers
-- (functions and modifiers MUST avoid these names)
--[[
Meanings of the columns:
col[1] = Loop type (0-3)
col[2] = Number of module arguments that the style requires (1-3)
col[3] = Minimum number of sequential parameters passed to the callback
col[4] = Name of the callback parameter where to place each parameter name
col[5] = Name of the callback parameter where to place each parameter value
col[6] = Argument in the modifier's invocation that will override `col[4]`
col[7] = Argument in the modifier's invocation that will override `col[5]`
A value of `-1` indicates that no meaningful value is stored (i.e. `nil`)
]]--
local mapping_styles = {
names_and_values = { 3, 2, 2, 1, 2, -1, -1 },
values_and_names = { 3, 2, 2, 2, 1, -1, -1 },
values_only = { 1, 2, 1, -1, 1, -1, -1 },
names_only = { 2, 2, 1, 1, -1, -1, -1 },
names_and_values_as = { 3, 4, 0, -1, -1, 2, 3 },
names_only_as = { 2, 3, 0, -1, -1, 2, -1 },
values_only_as = { 1, 3, 0, -1, -1, -1, 2 },
blindly = { 0, 2, 0, -1, -1, -1, -1 }
}
-- Memory slots (functions and modifiers MUST avoid these names)
local memoryslots = {
h = 'header',
f = 'footer',
i = 'itersep',
l = 'lastsep',
n = 'ifngiven',
p = 'pairsep',
s = 'oxfordsep'
}
-- Possible trimming modes for the `parsing` modifier
local trim_parse_opts = {
trim_none = { false, false },
trim_positional = { false, true },
trim_named = { true, false },
trim_all = { true, true }
}
-- Possible string modes for the iteration separator in the `parsing` and
-- `reinterpreting` modifiers
local isep_parse_opts = {
splitter_pattern = false,
splitter_string = true
}
-- Possible string modes for the key-value separator in the `parsing` and
-- `reinterpreting` modifiers
local psep_parse_opts = {
setter_pattern = false,
setter_string = true
}
-- Possible position references for the `splicing` modifier
local position_references = {
add_nothing = 0,
add_smallest_number = 1,
add_last_of_sequence = 2,
add_largest_number = 3
}
-- Possible modes for the `reassigning` modifier
local a_modes = {
transfer = 0,
clone = 1,
rename = 2,
copy = 3,
sacrifice = 4,
provide = 5,
spare = 7
}
-- Functions and modifiers MUST avoid these names too: `here`, `in_substack`,
-- `let`, `expose`, `use`, `with_flushed_glue`, `without_flushed_glue`
-- `without_sorting`
--[[ Private constants ]]--
---------------------------
-- Hard-coded name of the module (to avoid going through `frame:getTitle()`)
local modulename = 'Module:Params'
-- The functions listed here declare that they don't need the `frame.args`
-- metatable to be copied into a regular table; if they are modifiers they also
-- guarantee that they will make their own (modified) copy available
local refpipe = {
call_for_each_group = true,
--coins = true,
count = true,
evaluating = true,
for_each = true,
list = true,
list_values = true,
list_maybe_with_names = true,
value_of = true
}
-- The functions listed here declare that they don't need the
-- `frame:getParent().args` metatable to be copied into a regular table; if
-- they are modifiers they also guarantee that they will make their own
-- (modified) copy available
local refparams = {
call_for_each_group = true,
combining = true,
combining_by_calling = true,
combining_values = true,
concat_and_call = true,
concat_and_invoke = true,
concat_and_magic = true,
count = true,
grouping_by_calling = true,
mixing_names_and_values = true,
keeping_at_most = true,
renaming_by_mixing = true,
renaming_to_sequence = true,
renaming_to_uppercase = true,
renaming_to_lowercase = true,
--renaming_to_values = true,
shifting = true,
splicing = true,
--swapping_names_and_values = true,
value_of = true,
with_name_matching = true
}
-- Maximum number of numeric parameters that can be filled, if missing (we
-- chose an arbitrary number for this constant; you can discuss about its
-- optimal value at Module talk:Params)
local maxfill = 1024
-- The private table of functions
local library = {}
-- Functions and modifiers that can only be invoked in first position
local static_iface = {}
--[[ Private functions ]]--
---------------------------
-- Create a new context
local function context_new (child_frame)
local main_frame = child_frame:getParent()
return {
frame = main_frame,
opipe = child_frame.args,
oparams = main_frame.args,
firstposonly = static_iface,
iterfunc = pairs,
sorttype = 0,
n_parents = 0,
n_children = 0,
n_available = maxfill
}
end
-- Move to the next action within the user-given list
local function context_iterate (ctx, n_forward)
local nextfn
if ctx.pipe[n_forward] ~= nil then
nextfn = ctx.pipe[n_forward]:match'^%s*(.*%S)'
end
if nextfn == nil then error(modulename ..
': You must specify a function to call', 0) end
if library[nextfn] == nil then
if ctx.firstposonly[nextfn] == nil then error(modulename ..
': The function ‘' .. nextfn .. '’ does not exist', 0)
else error(modulename .. ': The ‘' .. nextfn ..
'’ directive can only appear in first position', 0)
end
end
remove_numeric_keys(ctx.pipe, 1, n_forward)
return library[nextfn]
end
-- Main loop
local function main_loop (ctx, start_with)
local fn = start_with
repeat fn = fn(ctx) until not fn
if ctx.n_parents > 0 then error(modulename ..
': One or more ‘merging_substack’ directives are missing', 0) end
if ctx.n_children > 0 then error(modulename ..
', For some of the snapshots either the ‘flushing’ directive is missing or a group has not been properly closed with ‘merging_substack’', 0) end
end
-- Load a `setting`-like directive string into the `dest` table
local function set_strings_from_opts (dest, opts, start_from)
local cmd
if opts[start_from] == nil then return start_from - 1 end
cmd = opts[start_from]:gsub('%s+', ''):gsub('/+', '/')
:match'^/*(.*[^/])'
if cmd == nil then return start_from end
local vname, chr
local amap, sep, argc = {}, string.byte('/'), start_from + 1
for idx = 1, #cmd do
chr = cmd:byte(idx)
if chr == sep then
for key, val in ipairs(amap) do
dest[val], amap[key] = opts[argc], nil
end
argc = argc + 1
else
vname = memoryslots[string.char(chr)]
if vname == nil then error(modulename ..
', ‘setting’: Unknown slot ‘' ..
string.char(chr) .. '’', 0) end
table.insert(amap, vname)
end
end
for key, val in ipairs(amap) do dest[val] = opts[argc] end
return argc
end
-- Add a new stack of parameters to `ctx.children`
local function new_substack (ctx)
local currsnap, newparams = ctx.n_children + 1, {}
if ctx.children == nil then ctx.children = { newparams }
else ctx.children[currsnap] = newparams end
ctx.n_children = currsnap
return newparams
end
-- Parse a raw argument containing a `sortfunctions` directive, or
-- `'without_sorting'`, or `nil`
local function load_sort_opt (raw_arg)
if raw_arg == nil then return nil, 1, false end
local trarg = raw_arg:match'^%s*(.-)%s*$'
if trarg == 'without_sorting' then return nil, 2, false, trarg end
local tmp = sortfunctions[trarg]
if tmp == nil then return nil, 1, false, trarg end
return tmp or nil, 2, true, trarg
end
-- Parse optional user arguments of type `...|[let/use]|[...]|[let/use]|[...]|
-- [number of additional parameters]|[parameter 1]|[parameter 2]|[...]`
local function load_child_opts (src, start_from, append_after, params)
local tnamed, tmp1, tmp2
local pin, tbl, mem = start_from, {}, {}
while src[pin] ~= nil and src[pin + 1] ~= nil do
tmp1 = src[pin]:match'^%s*(.*%S)'
if tmp1 == 'let' and src[pin + 2] ~= nil then
tmp1 = get_parameter_name(src[pin + 1])
mem[tmp1], tbl[tmp1], pin = nil, src[pin + 2], pin + 3
--[[
elseif tmp1 == 'expose' then
tmp1 = get_parameter_name(src[pin + 1])
tmp2 = params[tmp1]
mem[tmp1], tbl[tmp1], pin = tmp2, tmp2, pin + 2
]]--
elseif tmp1 == 'use' and src[pin + 2] ~= nil then
tmp1 = get_parameter_name(src[pin + 2])
tmp2 = params[tmp1]
mem[tmp1], tbl[get_parameter_name(src[pin + 1])], pin =
tmp2, tmp2, pin + 3
else break end
end
local tnew = copy_or_ref_table(params, next(mem) == nil)
for key in pairs(mem) do tnew[key] = nil end
if pin ~= start_from then tnamed, tbl = tbl, {} end
tmp1 = tonumber(src[pin])
if tmp1 ~= nil and math.floor(tmp1) == tmp1 then
if tmp1 < 0 then tmp1 = -1 end
tmp2 = append_after - pin
for idx = pin + 1, pin + tmp1 do tbl[idx + tmp2] = src[idx] end
pin = pin + tmp1 + 1
end
if tnamed ~= nil then
for key, val in pairs(tnamed) do tbl[key] = val end
end
return tbl, pin, tnew, mem
end
-- Load the optional arguments of some of the `mapping_*` and `renaming_*`
-- class of modifiers
local function load_callback_opts (src, n_skip, default_style, params)
local style, shf
local tmp = src[n_skip + 1]
if tmp ~= nil then style = mapping_styles[tmp:match'^%s*(.-)%s*$'] end
if style == nil then style, shf = default_style, n_skip - 1
else shf = n_skip end
local n_exist, karg, varg = style[3], style[4], style[5]
tmp = style[6]
if tmp > -1 then
karg = src[tmp + shf]:match'^%s*(.-)%s*$'
if karg == '0' or karg:find'^%-?[1-9]%d*$' ~= nil then
karg = tonumber(karg)
n_exist = math.max(n_exist, karg)
end
end
tmp = style[7]
if tmp > -1 then
varg = src[tmp + shf]:match'^%s*(.-)%s*$'
if varg == '0' or varg:find'^%-?[1-9]%d*$' ~= nil then
varg = tonumber(varg)
n_exist = math.max(n_exist, varg)
end
end
local dest, argc, tnew, mem = load_child_opts(src, style[2] + shf,
n_exist, params)
tmp = style[1]
if (tmp == 3 or tmp == 2) and dest[karg] ~= nil then
tmp = tmp - 2 end
if (tmp == 3 or tmp == 1) and dest[varg] ~= nil then
tmp = tmp - 1 end
return dest, argc, tmp, karg, varg, tnew, mem
end
-- Parse the arguments of some of the `mapping_*` and `renaming_*` class of
-- modifiers
local function load_replace_args (opts, whoami)
if opts[1] == nil then error(modulename ..
', ‘' .. whoami .. '’: No pattern string was given', 0) end
if opts[2] == nil then error(modulename ..
', ‘' .. whoami .. '’: No replacement string was given', 0) end
local ptn, repl, nmax, argc = opts[1], opts[2], tonumber(opts[3]), 3
if nmax ~= nil or (opts[3] or ''):match'^%s*$' ~= nil then argc = 4 end
local flg = opts[argc]
if flg ~= nil then flg = mkeywords[flg:match'^%s*(.-)%s*$'] end
if flg == 0 then flg = nil elseif flg ~= nil then argc = argc + 1 end
return ptn, repl, nmax, flg, argc, (nmax ~= nil and nmax < 1) or
(flg == 3 and ptn == repl)
end
-- Parse the arguments of the `with_*_matching` class of modifiers
local function load_pattern_args (opts, whoami)
local keyw
local ptns, state, nptns, cnt = {}, 0, 0, 1
for _, val in ipairs(opts) do
if state == 0 then
nptns, state = nptns + 1, -1
ptns[nptns] = { val, false, false }
else
keyw = val:match'^%s*(.*%S)'
if keyw == nil or mkeywords[keyw] == nil or (
state > 0 and mkeywords[keyw] > 0
) then break
else
state = mkeywords[keyw]
if state > 1 then ptns[nptns][2] = true end
if state == 3 then ptns[nptns][3] = true end
end
end
cnt = cnt + 1
end
if state == 0 then error(modulename .. ', ‘' .. whoami ..
'’: No pattern was given', 0) end
return ptns, nptns, cnt
end
-- Load the optional arguments of the `parsing`, `reinterpreting` and
-- `evaluating` modifiers
local function load_parse_opts (opts, start_from, isp, psp)
local tmp
local optslots, noptslots, argc, trimn, trimu, iplain, pplain =
{ true, true, true }, 3, start_from, true, false, true, true
repeat
noptslots, tmp = noptslots - 1, opts[argc]
if tmp == nil then break end
tmp = tmp:match'^%s*(.-)%s*$'
if optslots[1] ~= nil and trim_parse_opts[tmp] ~= nil then
tmp = trim_parse_opts[tmp]
trimn, trimu, optslots[1] = tmp[1], tmp[2], nil
elseif optslots[2] ~= nil and isep_parse_opts[tmp] ~= nil then
argc = argc + 1
iplain, isp, optslots[2] = isep_parse_opts[tmp],
opts[argc], nil
elseif optslots[3] ~= nil and psep_parse_opts[tmp] ~= nil then
argc = argc + 1
pplain, psp, optslots[3] = psep_parse_opts[tmp],
opts[argc], nil
else break end
argc = argc + 1
until noptslots < 1
return isp, iplain, psp, pplain, trimn, trimu, argc
end
-- Map parameters' values using a custom callback and a referenced table
local value_maps = {
[0] = function (tbl, margs, karg, varg, fn)
for key in pairs(tbl) do tbl[key] = fn() end
end,
[1] = function (tbl, margs, karg, varg, fn)
for key, val in pairs(tbl) do
margs[varg] = val
tbl[key] = fn()
end
end,
[2] = function (tbl, margs, karg, varg, fn)
for key in pairs(tbl) do
margs[karg] = key
tbl[key] = fn()
end
end,
[3] = function (tbl, margs, karg, varg, fn)
for key, val in pairs(tbl) do
margs[karg], margs[varg] = key, val
tbl[key] = fn()
end
end
}
-- Private table for `map_names()`
local name_thieves = {
[0] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[1] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[varg] = val
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[2] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[karg] = key
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[3] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[karg], rargs[varg] = key, val
steal_if_renamed(val, tbl, key, cache, fn())
end
end
}
-- Map parameters' names using a custom callback and a referenced table
local function map_names (tbl, rargs, karg, varg, looptype, fn)
local cache = {}
name_thieves[looptype](cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(cache) do tbl[key] = val end
end
-- Return a new table that contains `src` regrouped according to the numeric
-- suffixes in its keys
local function make_groups (src)
-- NOTE: `src` might be the original metatable!
local prefix, gid
local groups = {}
for key, val in pairs(src) do
-- `key` must only be a string or a number...
if type(key) == 'string' then
prefix, gid = key:match'^%s*(.-)%s*(%-?%d*)%s*$'
gid = tonumber(gid) or ''
else
prefix, gid = '', key
end
if groups[gid] == nil then groups[gid] = {} end
if prefix == '0' or prefix:find'^%-?[1-9]%d*$' ~= nil then
prefix = tonumber(prefix)
if prefix < 1 then prefix = prefix - 1 end
end
groups[gid][prefix] = val
end
return groups
end
-- Split into parts a string containing the `$#` and `$@` placeholders and
-- return the information as a skeleton table, a canvas table and a length
local function parse_placeholder_string (target)
local idx, s_pos, skel, canvas = 1, 1, {}, {}
local e_pos = string.find(target, '%$[@#]', 1, false)
while e_pos ~= nil do
canvas[idx] = target:sub(s_pos, e_pos - 1)
skel[idx + 1] = target:sub(e_pos, e_pos + 1) == '$@'
idx = idx + 2
s_pos = e_pos + 2
e_pos = string.find(target, '%$[@#]', s_pos, false)
end
if (s_pos > target:len()) then idx = idx - 1
else canvas[idx] = target:sub(s_pos) end
return skel, canvas, idx
end
-- Populate a table by parsing a parameter string (heavy lifting for `parsing`,
-- `reinterpreting` and `evaluating`)
local function parse_parameter_string (tbl, str, isp, ipl, psp, ppl, trn, tru)
local key, val, spos1, spos2, pos1, pos2
local pos3, idx, lenplone = 0, 1, #str + 1
if isp == nil or isp == '' then
if psp == nil or psp == '' then
if tru then tbl[idx] = str:match'^%s*(.-)%s*$'
else tbl[idx] = str end
return idx
end
spos1, spos2 = str:find(psp, 1, ppl)
if spos1 == nil then
key = idx
if tru then val = str:match'^%s*(.-)%s*$'
else val = str end
idx = idx + 1
else
key = get_parameter_name(str:sub(1, spos1 - 1))
val = str:sub(spos2 + 1)
if trn then val = val:match'^%s*(.-)%s*$' end
end
tbl[key] = val
return idx
end
if psp == nil or psp == '' then
repeat
pos1 = pos3 + 1
pos2, pos3 = str:find(isp, pos1, ipl)
val = str:sub(pos1, (pos2 or lenplone) - 1)
if tru then val = val:match'^%s*(.-)%s*$' end
tbl[idx], idx = val, idx + 1
until pos2 == nil
return idx
end
repeat
pos1 = pos3 + 1
pos2, pos3 = str:find(isp, pos1, ipl)
val = str:sub(pos1, (pos2 or lenplone) - 1)
spos1, spos2 = val:find(psp, 1, ppl)
if spos1 == nil then
key = idx
if tru then val = val:match'^%s*(.-)%s*$' end
idx = idx + 1
else
key = get_parameter_name(val:sub(1, spos1 - 1))
val = val:sub(spos2 + 1)
if trn then val = val:match'^%s*(.-)%s*$' end
end
tbl[key] = val
until pos2 == nil
return idx
end
-- Heavy lifting for `snapshotting` and `remembering`
local function make_child (ctx, src, whoami)
local len = tonumber(ctx.pipe[1])
if len == nil or len == 0 then
local stack = new_substack(ctx)
for key, val in pairs(src) do stack[key] = val end
return len == nil and 1 or 2
end
if len < 0 or math.floor(len) ~= len then error(modulename ..
', ‘' .. whoami .. '’: The number of parameters to copy must be an integer greater than zero', 0) end
copy_table_maxn(new_substack(ctx), src, len)
return 2
end
-- Heavy lifting for `setting_by_flushing`, `combining` and `combining_values`
local function set_strings_from_substack (ctx, dest, whoami)
if ctx.n_children < 1 then error(modulename ..
', ‘' .. whoami .. '’: There are no substacks to flush', 0) end
local currsnap = ctx.n_children
local stack = ctx.children[currsnap]
for key, val in pairs(memoryslots) do
if stack[key] ~= nil then dest[val] = stack[key] end
end
ctx.children[currsnap], ctx.n_children = nil, currsnap - 1
end
-- Heavy lifting for `combining` and `combining_values`
local function combine_parameters (ctx, keyval_fn, whoami)
-- NOTE: `ctx.params` might be the original metatable! This function
-- MUST create a copy of it before returning
local opts = ctx.pipe
if ctx.pipe[1] == nil then error(modulename ..
', ‘' .. whoami .. '’: No parameter name was provided', 0) end
local argc
local tbl, vars = ctx.params, {}
local sortfn, varsarg0, do_sort, tmp = load_sort_opt(opts[2])
if varsarg0 == 2 then tmp = opts[3] and opts[3]:match'^%s*(.-)%s*$' end
if tmp == 'with_flushed_glue' then
varsarg0 = varsarg0 + 1
argc = set_strings_from_opts(vars, opts, varsarg0 + 1)
set_strings_from_substack(ctx, vars, whoami)
else
if tmp == 'without_flushed_glue' then varsarg0 = varsarg0 + 1 end
argc = set_strings_from_opts(vars, opts, varsarg0 + 1)
end
if argc < varsarg0 then error(modulename ..
', ‘' .. whoami .. '’: No setting directive was given', 0) end
if next(tbl) == nil then
if vars.ifngiven ~= nil then ctx.params =
{ [get_parameter_name(ctx.pipe[1])] = vars.ifngiven }
elseif tbl == ctx.oparams then ctx.params = {} end
return argc
end
local cache, len
if do_sort then
local words
cache, words, len, tmp = get_key_list_sorted(tbl, sortfn)
for idx = 1, tmp do cache[len + idx] = words[idx] end
len = len + tmp
else
len, cache = 0, {}
for key in pairs(tbl) do
len = len + 1
cache[len] = key
end
end
local pmap, nss, kvs, pps = {}, 0, vars.pairsep or '', vars.itersep or ''
for idx = 1, len do
tmp, pmap[nss + 1] = cache[idx], pps
pmap[nss + 2] = keyval_fn(tmp, tbl[tmp], kvs)
nss = nss + 2
end
tmp = vars.oxfordsep or vars.lastsep
if tmp ~= nil and nss > 4 then pmap[nss - 1] = tmp
elseif nss > 2 and vars.lastsep ~= nil then
pmap[nss - 1] = vars.lastsep
end
pmap[1] = vars.header or ''
if vars.footer ~= nil then pmap[nss + 1] = vars.footer end
ctx.params = { [get_parameter_name(ctx.pipe[1])] = table.concat(pmap) }
return argc
end
-- Concatenate the numeric keys from the table of parameters to the numeric
-- keys from the table of options; non-numeric keys from the table of options
-- will prevail over colliding non-numeric keys from the table of parameters
local function concat_params (ctx)
local retval, tbl, nmax = {}, ctx.params, table.maxn(ctx.pipe)
if ctx.subset == 1 then
-- We need only the sequence
for key, val in ipairs(tbl) do retval[key + nmax] = val end
else
if ctx.subset == -1 then
for key in ipairs(tbl) do tbl[key] = nil end
end
for key, val in pairs(tbl) do
if type(key) == 'number' and key > 0 then
retval[key + nmax] = val
else retval[key] = val end
end
end
for key, val in pairs(ctx.pipe) do retval[key] = val end
return retval
end
-- Flush the parameters by calling a custom function for each value (after this
-- function has been invoked `ctx.params` will be no longer usable)
local function flush_params (ctx, fn)
local tbl = ctx.params
if ctx.subset == 1 then
for key, val in ipairs(tbl) do fn(key, val) end
return
end
if ctx.subset == -1 then
for key, val in ipairs(tbl) do tbl[key] = nil end
end
if ctx.sorttype > 0 then
local nums, words, nn, nw = get_key_list_sorted(tbl, natural_sort)
if ctx.sorttype == 2 then
for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end
for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end
return
end
for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end
for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end
return
end
if ctx.subset ~= -1 then
for key, val in ipairs(tbl) do
fn(key, val)
tbl[key] = nil
end
end
for key, val in pairs(tbl) do fn(key, val) end
end
-- Flush the parameters by calling one of two custom functions for each value
-- (after this function has been invoked `ctx.params` will be no longer usable)
local function mixed_flush_params (ctx, fn_seq, fn_oth)
if ctx.subset == 1 then
for key, val in ipairs(ctx.params) do fn_seq(key, val) end
return
end
if ctx.subset == -1 then
flush_params(ctx, fn_oth)
return
end
local tbl = ctx.params
if ctx.sorttype > 0 then
local nums, words, nn, nw = get_key_list_sorted(tbl, natural_sort)
local sequence = {}
for key, val in ipairs(tbl) do sequence[key] = val end
if ctx.sorttype == 2 then
for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end
end
for idx = 1, nn do
if sequence[nums[idx]] then fn_seq(nums[idx], sequence[nums[idx]])
else fn_oth(nums[idx], tbl[nums[idx]]) end
end
if ctx.sorttype ~= 2 then
for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end
end
return
end
for key, val in ipairs(tbl) do
fn_seq(key, val)
tbl[key] = nil
end
for key, val in pairs(tbl) do fn_oth(key, val) end
end
-- Finalize and return a concatenated list
local function finalize_and_return_concatenated_list (ctx, lst, len, modsize)
if len > 0 then
local tmp = ctx.oxfordsep or ctx.lastsep
if tmp ~= nil and len > modsize * 2 then
lst[len - modsize + 1] = tmp
elseif len > modsize and ctx.lastsep ~= nil then
lst[len - modsize + 1] = ctx.lastsep
end
lst[1] = ctx.header or ''
if ctx.footer ~= nil then lst[len + 1] = ctx.footer end
ctx.text = table.concat(lst)
else ctx.text = ctx.ifngiven or '' end
end
--- ---
--- PUBLIC ENVIRONMENT ---
--- ________________________________ ---
--- ---
--[[ Modifiers ]]--
-------------------
-- Syntax: #invoke:params|sequential|pipe to
library.sequential = function (ctx)
if ctx.subset == 1 then error(modulename ..
': The ‘sequential’ directive has been provided more than once', 0) end
if ctx.subset == -1 then error(modulename ..
': The two directives ‘non-sequential’ and ‘sequential’ are in contradiction with each other', 0) end
if ctx.sorttype > 0 then error(modulename ..
': The ‘all_sorted’ and ‘reassorted’ directives are redundant when followed by ‘sequential’', 0) end
ctx.iterfunc, ctx.subset = ipairs, 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|non-sequential|pipe to
library['non-sequential'] = function (ctx)
if ctx.subset == -1 then error(modulename ..
': The ‘non-sequential’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The two directives ‘sequential’ and ‘non-sequential’ are in contradiction with each other', 0) end
ctx.iterfunc, ctx.subset = pairs, -1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|all_sorted|pipe to
library.all_sorted = function (ctx)
if ctx.sorttype == 1 then error(modulename ..
': The ‘all_sorted’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The ‘all_sorted’ directive is redundant after ‘sequential’', 0) end
if ctx.sorttype == 2 then error(modulename ..
': The two directives ‘reassorted’ and ‘sequential’ are in contradiction with each other', 0) end
ctx.sorttype = 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|reassorted|pipe to
library.reassorted = function (ctx)
if ctx.sorttype == 2 then error(modulename ..
': The ‘reassorted’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The ‘reassorted’ directive is redundant after ‘sequential’', 0) end
if ctx.sorttype == 1 then error(modulename ..
': The two directives ‘sequential’ and ‘reassorted’ are in contradiction with each other', 0) end
ctx.sorttype = 2
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|setting|directives|...|pipe to
library.setting = function (ctx)
local argc = set_strings_from_opts(ctx, ctx.pipe, 1)
if argc < 2 then error(modulename ..
', ‘setting’: No directive was given', 0) end
return context_iterate(ctx, argc + 1)
end
-- Syntax: #invoke:params|scoring|new parameter name|[container]|pipe to
library.scoring = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘scoring’: No parameter name was provided', 0) end
local tmp
local retval, opts = 0, ctx.pipe
for _ in pairs(ctx.params) do retval = retval + 1 end
if opts[2] ~= nil then tmp = opts[2]:match'^%s*(.*%S)' end
if tmp == 'in_substack' then
new_substack(ctx)[get_parameter_name(opts[1])] = tostring(retval)
return context_iterate(ctx, 3)
end
ctx.params[get_parameter_name(opts[1])] = tostring(retval)
return context_iterate(ctx, tmp == 'here' and 3 or 2)
end
-- Syntax: #invoke:params|squeezing|pipe to
library.squeezing = function (ctx)
local store, indices, tbl, newlen = {}, {}, ctx.params, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
newlen = newlen + 1
indices[newlen], store[key], tbl[key] = key, val, nil
end
end
table.sort(indices)
for idx = 1, newlen do tbl[idx] = store[indices[idx]] end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|filling_the_gaps|pipe to
library.filling_the_gaps = function (ctx)
local newval, tbl, tmp, nmin, nmax, nnums =
ctx.pipe[1], ctx.params, {}, 1, nil, -1
if newval == nil then error(modulename ..
', ‘filling_the_gaps’: No value was provided', 0) end
for key, val in pairs(tbl) do
if type(key) == 'number' then
if nmax == nil then
if key < nmin then nmin = key end
nmax = key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
tmp[key], nnums = val, nnums + 1
end
end
if nmax ~= nil and nmax - nmin > nnums then
ctx.n_available = ctx.n_available + nmin + nnums - nmax
if ctx.n_available < 0 then error(modulename ..
', ‘filling_the_gaps’: It is possible to fill at most ' ..
tostring(maxfill) .. ' parameters', 0) end
for idx = nmin, nmax, 1 do tbl[idx] = newval end
for key, val in pairs(tmp) do tbl[key] = val end
end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|clearing|pipe to
library.clearing = function (ctx)
local tbl, numerics = ctx.params, {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key], tbl[key] = val, nil
end
end
for key, val in ipairs(numerics) do tbl[key] = val end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|cutting|left cut|right cut|pipe to
library.cutting = function (ctx)
local lcut = tonumber(ctx.pipe[1])
if lcut == nil or math.floor(lcut) ~= lcut then error(modulename ..
', ‘cutting’: Left cut must be an integer number', 0) end
local rcut = tonumber(ctx.pipe[2])
if rcut == nil or math.floor(rcut) ~= rcut then error(modulename ..
', ‘cutting’: Right cut must be an integer number', 0) end
local tbl = ctx.params
local len = #tbl
if lcut < 0 then lcut = len + lcut end
if rcut < 0 then rcut = len + rcut end
local tot = lcut + rcut
if tot > 0 then
local cache = {}
if tot >= len then
for key in ipairs(tbl) do tbl[key] = nil end
tot = len
else
for idx = len - rcut + 1, len, 1 do tbl[idx] = nil end
for idx = 1, lcut, 1 do tbl[idx] = nil end
end
for key, val in pairs(tbl) do
if type(key) == 'number' and key > 0 then
if key > len then cache[key - tot] = val
else cache[key - lcut] = val end
tbl[key] = nil
end
end
for key, val in pairs(cache) do tbl[key] = val end
end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|cropping|left crop|right crop|pipe to
library.cropping = function (ctx)
local lcut = tonumber(ctx.pipe[1])
if lcut == nil or math.floor(lcut) ~= lcut then error(modulename ..
', ‘cropping’: Left crop must be an integer number', 0) end
local rcut = tonumber(ctx.pipe[2])
if rcut == nil or math.floor(rcut) ~= rcut then error(modulename ..
', ‘cropping’: Right crop must be an integer number', 0) end
local tbl = ctx.params
local nmin, nmax
for key in pairs(tbl) do
if type(key) == 'number' then
if nmin == nil then nmin, nmax = key, key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
end
end
if nmin ~= nil then
local len = nmax - nmin + 1
if lcut < 0 then lcut = len + lcut end
if rcut < 0 then rcut = len + rcut end
if lcut + rcut - len > -1 then
for key in pairs(tbl) do
if type(key) == 'number' then tbl[key] = nil end
end
elseif lcut + rcut > 0 then
for idx = nmax - rcut + 1, nmax do tbl[idx] = nil end
for idx = nmin, nmin + lcut - 1 do tbl[idx] = nil end
local lshift = nmin + lcut - 1
if lshift > 0 then
for idx = lshift + 1, nmax, 1 do
tbl[idx - lshift], tbl[idx] =
tbl[idx], nil
end
end
end
end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|purging|start offset|length|pipe to
library.purging = function (ctx)
local idx = tonumber(ctx.pipe[1])
if idx == nil or math.floor(idx) ~= idx then error(modulename ..
', ‘purging’: Start offset must be an integer number', 0) end
local len = tonumber(ctx.pipe[2])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘purging’: Length must be an integer number', 0) end
local tbl = ctx.params
if len < 1 then
len = len + table.maxn(tbl)
if idx > len then return context_iterate(ctx, 3) end
len = len - idx + 1
end
ctx.params = copy_table_reduced(tbl, idx, len)
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|backpurging|start offset|length|pipe to
library.backpurging = function (ctx)
local last = tonumber(ctx.pipe[1])
if last == nil or math.floor(last) ~= last then error(modulename ..
', ‘backpurging’: Start offset must be an integer number', 0) end
local len = tonumber(ctx.pipe[2])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘backpurging’: Length must be an integer number', 0) end
local idx
local tbl = ctx.params
if len > 0 then
idx = last - len + 1
else
for key in pairs(tbl) do
if type(key) == 'number' and (idx == nil or
key < idx) then idx = key end
end
if idx == nil then return context_iterate(ctx, 3) end
idx = idx - len
if last < idx then return context_iterate(ctx, 3) end
len = last - idx + 1
end
ctx.params = copy_table_reduced(ctx.params, idx, len)
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|shifting|addend|pipe to
library.shifting = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local nshift = tonumber(ctx.pipe[1])
if nshift == nil or nshift == 0 or math.floor(nshift) ~= nshift then
error(modulename .. ', ‘shifting’: A non-zero integer number must be provided', 0) end
local tbl = {}
for key, val in pairs(ctx.params) do
if type(key) == 'number' then tbl[key + nshift] = val
else tbl[key] = val end
end
ctx.params = tbl
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|reversing_numeric_names|pipe to
library.reversing_numeric_names = function (ctx)
local tbl, numerics, nmax = ctx.params, {}, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key], tbl[key] = val, nil
if key > nmax then nmax = key end
end
end
for key, val in pairs(numerics) do tbl[nmax - key + 1] = val end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|pivoting_numeric_names|pipe to
--[[
library.pivoting_numeric_names = function (ctx)
local tbl = ctx.params
local shift = #tbl + 1
if shift < 2 then return library.reversing_numeric_names(ctx) end
local numerics = {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key] = val
tbl[key] = nil
end
end
for key, val in pairs(numerics) do tbl[shift - key] = val end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|mirroring_numeric_names|pipe to
--[[
library.mirroring_numeric_names = function (ctx)
local nmax, nmin
local tbl, numerics = ctx.params, {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key] = val
tbl[key] = nil
if nmax == nil then nmin, nmax = key, key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
end
end
for key, val in pairs(numerics) do tbl[nmax + nmin - key] = val end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|swapping_numeric_names|pipe to
--[[
library.swapping_numeric_names = function (ctx)
local tmp
local tbl, cache, nsize = ctx.params, {}, 0
for key in pairs(tbl) do
if type(key) == 'number' then
nsize = nsize + 1
cache[nsize] = key
end
end
table.sort(cache)
for idx = math.floor(nsize / 2), 1, -1 do
tmp = tbl[cache[idx] ]
tbl[cache[idx] ] = tbl[cache[nsize - idx + 1] ]
tbl[cache[nsize - idx + 1] ] = tmp
end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|sorting_sequential_values|[criterion]|pipe to
library.sorting_sequential_values = function (ctx)
local sortfn
if ctx.pipe[1] ~= nil then
sortfn = sortfunctions[ctx.pipe[1]:match'^%s*(.-)%s*$']
end
if sortfn then table.sort(ctx.params, sortfn)
else table.sort(ctx.params) end -- i.e. either `false` or `nil`
if sortfn == nil then return context_iterate(ctx, 1) end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|splicing|[add to position]|position|increment|
-- [number of elements to write]|...|pipe to
library.splicing = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp2, argc, pos, refp
local opts, tbl = ctx.pipe, ctx.params
local tmp1 = opts[1]
if tmp1 ~= nil then
tmp2 = tonumber(tmp1)
if tmp2 == nil or math.floor(tmp2) ~= tmp2 then
pos, argc, tmp2 = tonumber(opts[2]), 4,
tmp1:match'^%s*(.*%S)'
if tmp2 ~= nil then
refp = position_references[tmp2]
if refp == nil then error(modulename ..
', ‘splicing’: ‘' .. tostring(tmp2) ..
'’ is not a valid first argument', 0) end
else refp = 0 end
else pos, argc, refp = tmp2, 3, 0 end
else pos, argc, refp = tonumber(opts[2]), 4, 0 end
if pos == nil or math.floor(pos) ~= pos then error(modulename ..
', ‘splicing’: The position must be an integer number', 0) end
local len = tonumber(opts[argc - 1])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘splicing’: The increment must be an integer number', 0) end
if refp == 2 then
for _ in ipairs(tbl) do pos = pos + 1 end
refp = 0
end
tmp1, tmp2 = nil, nil
if refp ~= 0 or len ~= 0 then
for key, val in pairs(tbl) do
if type(key) == 'number' then
if tmp1 == nil then tmp1, tmp2 = key, key
elseif key < tmp1 then tmp1 = key
elseif key > tmp2 then tmp2 = key end
end
end
end
if tmp2 == nil then len = 0
elseif refp == 3 then pos = pos + tmp2
elseif refp == 1 then pos = pos + tmp1 end
if len > 0 and pos + len > tmp1 and pos <= tmp2 then
tbl = copy_table_expanded(tbl, pos, len)
elseif len < 0 and pos - len > tmp1 and pos <= tmp2 then
tbl = copy_table_reduced(tbl, pos, -len)
else tbl = copy_or_ref_table(tbl, tbl ~= ctx.oparams) end
ctx.params = tbl
tmp1 = tonumber(opts[argc])
if len == 0 and (tmp1 == nil or tmp1 < 1) then error(modulename ..
', ‘splicing’: When the increment is zero the number of elements to add cannot be zero', 0) end
if tmp1 == nil or tmp1 < 0 or math.floor(tmp1) ~= tmp1 then
return context_iterate(ctx, argc)
end
tmp2 = argc - pos + 1
for key = pos, pos + tmp1 - 1 do tbl[key] = opts[key + tmp2] end
return context_iterate(ctx, argc + tmp1 + 1)
end
-- Syntax: #invoke:params|imposing|name|value|pipe to
library.imposing = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘imposing’: Missing parameter name to impose', 0) end
ctx.params[get_parameter_name(ctx.pipe[1])] = ctx.pipe[2]
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|providing|name|value|pipe to
library.providing = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘providing’: Missing parameter name to provide', 0) end
local key = get_parameter_name(ctx.pipe[1])
if ctx.params[key] == nil then ctx.params[key] = ctx.pipe[2] end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|reassigning|source|destination|[mode]|pipe to
library.reassigning = function (ctx)
local opts, tbl = ctx.pipe, ctx.params
if opts[1] == nil then error(modulename ..
', ‘reassigning’: Missing source parameter', 0) end
if opts[2] == nil then error(modulename ..
', ‘reassigning’: Missing destination parameter', 0) end
local mode, argc
local src = get_parameter_name(opts[1])
local val = tbl[src]
if opts[3] ~= nil then mode = a_modes[opts[3]:match'^%s*(.-)%s*$'] end
if mode == nil then mode, argc = 0, 3 else argc = 4 end
if val == nil and mode > 1 then return context_iterate(ctx, argc) end
local dest = get_parameter_name(opts[2])
local tmp = tbl[dest] == nil
if mode % 2 == 0 or (mode == 7 and tmp) then tbl[src] = nil end
if tmp or mode < 4 then tbl[dest] = val end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|discarding|name|[how many]|pipe to
library.discarding = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘discarding’: Missing parameter name to discard', 0) end
local len = tonumber(ctx.pipe[2])
if len == nil then
ctx.params[get_parameter_name(ctx.pipe[1])] = nil
return context_iterate(ctx, 2)
end
local key = tonumber(ctx.pipe[1])
if key == nil or math.floor(key) ~= key then error(modulename ..
', ‘discarding’: A range was provided, but the initial parameter name is not an integer number', 0) end
if len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘discarding’: A range can only be an integer number greater than zero', 0) end
for idx = key, key + len - 1 do ctx.params[idx] = nil end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|excluding_non-numeric_names|pipe to
library['excluding_non-numeric_names'] = function (ctx)
local tmp = ctx.params
for key, val in pairs(tmp) do
if type(key) ~= 'number' then tmp[key] = nil end
end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|excluding_numeric_names|pipe to
library.excluding_numeric_names = function (ctx)
local tmp = ctx.params
for key, val in pairs(tmp) do
if type(key) == 'number' then tmp[key] = nil end
end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|with_name_matching|target 1|[plain flag 1]|[or]
-- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag
-- N]|pipe to
library.with_name_matching = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp, ptn
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_name_matching')
local tbl, newparams = ctx.params, {}
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
tmp = ptn[1]
if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then
tmp = tonumber(tmp)
end
newparams[tmp] = tbl[tmp]
else
for key, val in pairs(tbl) do
if tostring(key):find(ptn[1], 1, ptn[2]) then
newparams[key] = val
end
end
end
end
ctx.params = newparams
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_name_not_matching|target 1|[plain flag 1]
-- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain
-- flag N]|pipe to
library.with_name_not_matching = function (ctx)
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_name_not_matching')
local tbl = ctx.params
if nptns == 1 and targets[1][3] then
local tmp = targets[1][1]
if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then
tbl[tonumber(tmp)] = nil
else tbl[tmp] = nil end
return context_iterate(ctx, argc)
end
local yesmatch, ptn
for key in pairs(tbl) do
yesmatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if tostring(key) ~= ptn[1] then
yesmatch = false
break
end
elseif not tostring(key):find(ptn[1], 1, ptn[2]) then
yesmatch = false
break
end
end
if yesmatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_value_matching|target 1|[plain flag 1]|[or]
-- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag
-- N]|pipe to
library.with_value_matching = function (ctx)
local nomatch, ptn
local tbl = ctx.params
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_value_matching')
for key, val in pairs(tbl) do
nomatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if val == ptn[1] then
nomatch = false
break
end
elseif val:find(ptn[1], 1, ptn[2]) then
nomatch = false
break
end
end
if nomatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_value_not_matching|target 1|[plain flag 1]
-- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain
-- flag N]|pipe to
library.with_value_not_matching = function (ctx)
local yesmatch, ptn
local tbl = ctx.params
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_value_not_matching')
for key, val in pairs(tbl) do
yesmatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if val ~= ptn[1] then
yesmatch = false
break
end
elseif not val:find(ptn[1], 1, ptn[2]) then
yesmatch = false
break
end
end
if yesmatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|keeping_at_most|number of parameters to pick|pipe to
library.keeping_at_most = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local len = tonumber(ctx.pipe[1])
if len == nil or len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘keeping_at_most’: The number of parameters to keep must be an integer greater than zero', 0) end
ctx.params = copy_table_maxn({}, ctx.params, len)
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|trimming_values|pipe to
library.trimming_values = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:match'^%s*(.-)%s*$' end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mapping_to_lowercase|pipe to
library.mapping_to_lowercase = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:lower() end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mapping_to_uppercase|pipe to
library.mapping_to_uppercase = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:upper() end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mapping_by_calling|template name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to
library.mapping_by_calling = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘mapping_by_calling’: No template name was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.values_only, ctx.params)
local model = { title = tname, args = margs }
value_maps[looptype](tbl, margs, karg, varg, function ()
return ctx.frame:expandTemplate(model)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_invoking|module name|function name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.mapping_by_invoking = function (ctx)
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘mapping_by_invoking’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘mapping_by_invoking’: No function name was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 2, mapping_styles.values_only, ctx.params)
local model = { title = 'Module:' .. mname, args = margs }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘mapping_by_invoking’: The function ‘' .. fname ..
'’ does not exist', 0) end
value_maps[looptype](tbl, margs, karg, varg, function ()
return tostring(mfunc(ctx.frame:newChild(model)))
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_magic|parser function|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.mapping_by_magic = function (ctx)
local magic
local opts = ctx.pipe
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘mapping_by_magic’: No parser function was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.values_only, ctx.params)
value_maps[looptype](tbl, margs, karg, varg, function ()
return ctx.frame:callParserFunction(magic, margs)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_replacing|target|replace|[count]|[plain
-- flag]|pipe to
library.mapping_by_replacing = function (ctx)
local ptn, repl, nmax, flg, argc, die =
load_replace_args(ctx.pipe, 'mapping_by_replacing')
if die then return context_iterate(ctx, argc) end
local tbl = ctx.params
if flg == 3 then
for key, val in pairs(tbl) do
if val == ptn then tbl[key] = repl end
end
else
if flg == 2 then
-- Copied from Module:String's `str._escapePattern()`
ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')
end
for key, val in pairs(tbl) do
tbl[key] = val:gsub(ptn, repl, nmax)
end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_mixing|mixing string|pipe to
library.mapping_by_mixing = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘mapping_by_mixing’: No mixing string was provided', 0) end
local tbl, mix = ctx.params, ctx.pipe[1]
if mix == '$#' then
for key in pairs(tbl) do tbl[key] = tostring(key) end
return context_iterate(ctx, 2)
end
local skel, cnv, n_parts = parse_placeholder_string(mix)
for key, val in pairs(tbl) do
for idx = 2, n_parts, 2 do
if skel[idx] then cnv[idx] = val
else cnv[idx] = tostring(key) end
end
tbl[key] = table.concat(cnv)
end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|mapping_to_names|pipe to
--[[
library.mapping_to_names = function (ctx)
local tbl = ctx.params
for key in pairs(tbl) do tbl[key] = tostring(key) end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|renaming_to_lowercase|pipe to
library.renaming_to_lowercase = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do
if type(key) == 'string' then cache[key:lower()] = val else
cache[key] = val end
end
ctx.params = cache
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|renaming_to_uppercase|pipe to
library.renaming_to_uppercase = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do
if type(key) == 'string' then cache[key:upper()] = val else
cache[key] = val end
end
ctx.params = cache
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|renaming_to_sequence|[sort order]|pipe to
library.renaming_to_sequence = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache, len
local tbl = ctx.params
local sortfn, argc, do_sort = load_sort_opt(ctx.pipe[1])
if do_sort then
local words, wl
cache, words, len, wl = get_key_list_sorted(tbl, sortfn)
for idx = 1, len do cache[idx] = tbl[cache[idx]] end
for idx = 1, wl do cache[len + idx] = tbl[words[idx]] end
else
len, cache = 0, {}
for _, val in pairs(tbl) do
len = len + 1
cache[len] = val
end
end
ctx.params = cache
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_calling|template name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to
library.renaming_by_calling = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘renaming_by_calling’: No template name was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.names_only, ctx.params)
local model = { title = tname, args = rargs }
map_names(tbl, rargs, karg, varg, looptype, function ()
return ctx.frame:expandTemplate(model)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_invoking|module name|function
-- name|[call style]|[let/use]|[...]|[let/use]|[...]|[number of
-- additional arguments]|[argument 1]|[argument 2]|[...]|[argument
-- N]|pipe to
library.renaming_by_invoking = function (ctx)
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘renaming_by_invoking’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘renaming_by_invoking’: No function name was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 2, mapping_styles.names_only, ctx.params)
local model = { title = 'Module:' .. mname, args = rargs }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘renaming_by_invoking’: The function ‘' .. fname ..
'’ does not exist', 0) end
map_names(tbl, rargs, karg, varg, looptype, function ()
return tostring(mfunc(ctx.frame:newChild(model)))
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_magic|parser function|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.renaming_by_magic = function (ctx)
local opts = ctx.pipe
local magic
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘renaming_by_magic’: No parser function was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.names_only, ctx.params)
map_names(tbl, rargs, karg, varg, looptype, function ()
return ctx.frame:callParserFunction(magic, rargs)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_replacing|target|replace|[count]|[plain
-- flag]|pipe to
library.renaming_by_replacing = function (ctx)
local ptn, repl, nmax, flg, argc, die =
load_replace_args(ctx.pipe, 'renaming_by_replacing')
if die then return context_iterate(ctx, argc) end
local tbl = ctx.params
if flg == 3 then
ptn = get_parameter_name(ptn)
local val = tbl[ptn]
if val ~= nil then
tbl[ptn], tbl[get_parameter_name(repl)] = nil, val
end
else
if flg == 2 then
-- Copied from Module:String's `str._escapePattern()`
ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')
end
local cache = {}
for key, val in pairs(tbl) do
steal_if_renamed(val, tbl, key, cache,
tostring(key):gsub(ptn, repl, nmax))
end
for key, val in pairs(cache) do tbl[key] = val end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_mixing|mixing string|pipe to
library.renaming_by_mixing = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
if ctx.pipe[1] == nil then error(modulename ..
', ‘renaming_by_mixing’: No mixing string was provided', 0) end
local mix = ctx.pipe[1]:match'^%s*(.-)%s*$'
local cache = {}
if mix == '$@' then
for _, val in pairs(ctx.params) do
cache[get_parameter_name(val)] = val
end
else
local skel, canvas, n_parts = parse_placeholder_string(mix)
for key, val in pairs(ctx.params) do
for idx = 2, n_parts, 2 do
if skel[idx] then canvas[idx] = val
else canvas[idx] = tostring(key) end
end
cache[get_parameter_name(table.concat(canvas))] = val
end
end
ctx.params = cache
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|renaming_to_values|pipe to
--[[
library.renaming_to_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for _, val in pairs(ctx.params) do cache[val] = val end
ctx.params = cache
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|grouping_by_calling|template
-- name|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.grouping_by_calling = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp, argc, tbl, mem = load_child_opts(ctx.pipe, 2, 0, ctx.params)
local gargs = {}
for key, val in pairs(tmp) do
if type(key) == 'number' and key < 1 then gargs[key - 1] = val
else gargs[key] = val end
end
tmp = ctx.pipe[1]
if tmp ~= nil then tmp = tmp:match'^%s*(.*%S)' end
if tmp == nil then error(modulename ..
', ‘grouping_by_calling’: No template name was provided', 0) end
local model = { title = tmp }
local groups = make_groups(tbl)
for gid, group in pairs(groups) do
for key, val in pairs(gargs) do group[key] = val end
group[0], model.args = gid, group
groups[gid] = ctx.frame:expandTemplate(model)
end
for key, val in pairs(mem) do groups[key] = val end
ctx.params = groups
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|parsing|string to parse|[trim flag]|[iteration
-- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to
library.parsing = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘parsing’: No string to parse was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, 2, '|', '=')
parse_parameter_string(ctx.params, opts[1], isep, iplain, psep, pplain,
trimnamed, trimunnamed)
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|reinterpreting|parameter to reinterpret|[trim
-- flag]|[iteration delimiter setter]|[...]|[key-value delimiter
-- setter]|[...]|pipe to
library.reinterpreting = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘reinterpreting’: No parameter to reinterpret was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, 2, '|', '=')
local tbl, tmp = ctx.params, get_parameter_name(opts[1])
local str = tbl[tmp]
if str ~= nil then
tbl[tmp] = nil
parse_parameter_string(tbl, str, isep, iplain, psep, pplain,
trimnamed, trimunnamed)
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|evaluating|string to parse|[trim flag]|[iteration
-- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to
library.evaluating = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘evaluating’: No string to parse was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, 2, '!', ':')
if opts[1]:match'^%s*(.*%S)' == nil then
ctx.pipe = copy_or_ref_table(opts, opts ~= ctx.opipe)
return context_iterate(ctx, argc)
end
local new_opts, cache = {}, {}
local shift = parse_parameter_string(cache, opts[1], isep, iplain,
psep, pplain, trimnamed, trimunnamed) - argc
for key, val in pairs(opts) do
if type(key) ~= 'number' or key < 1 then new_opts[key] = val
elseif key >= argc then new_opts[key + shift] = val end
end
for key, val in pairs(cache) do new_opts[key] = val end
ctx.pipe = new_opts
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mixing_names_and_values|mixing string|pipe to
library.mixing_names_and_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
if ctx.pipe[1] == nil then error(modulename ..
', ‘mixing_names_and_values’: No mixing string was provided for parameter names', 0) end
if ctx.pipe[2] == nil then error(modulename ..
', ‘mixing_names_and_values’: No mixing string was provided for parameter values', 0) end
local tmp
local mix_k = ctx.pipe[1]:match'^%s*(.-)%s*$'
local cache, mix_v = {}, ctx.pipe[2]
if mix_k == '$@' and mix_v == '$@' then
for _, val in pairs(ctx.params) do
cache[get_parameter_name(val)] = val
end
elseif mix_k == '$@' and mix_v == '$#' then
for key, val in pairs(ctx.params) do
cache[get_parameter_name(val)] = tostring(key)
end
elseif mix_k == '$#' and mix_v == '$#' then
for key in pairs(ctx.params) do cache[key] = tostring(key) end
else
local skel_k, cnv_k, n_parts_k = parse_placeholder_string(mix_k)
local skel_v, cnv_v, n_parts_v = parse_placeholder_string(mix_v)
for key, val in pairs(ctx.params) do
tmp = tostring(key)
for idx = 2, n_parts_k, 2 do
if skel_k[idx] then cnv_k[idx] = val else cnv_k[idx] = tmp end
end
for idx = 2, n_parts_v, 2 do
if skel_v[idx] then cnv_v[idx] = val else cnv_v[idx] = tmp end
end
cache[get_parameter_name(table.concat(cnv_k))] =
table.concat(cnv_v)
end
end
ctx.params = cache
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|swapping_names_and_values|pipe to
--[[
library.swapping_names_and_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do cache[val] = key end
ctx.params = cache
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|combining|new parameter name|[sort
-- order]|[with/without flushed glue]|setting directives|...|pipe to
library.combining = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
return context_iterate(ctx, combine_parameters(
ctx,
function (key, val, kvs) return key .. kvs .. val end,
'combining'
) + 1)
end
-- Syntax: #invoke:params|combining_values|new parameter name|[sort
-- order]|[with/without flushed glue]|setting directives|...|pipe to
library.combining_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
return context_iterate(ctx, combine_parameters(
ctx,
function (key, val, kvs) return val end,
'combining_values'
) + 1)
end
-- Syntax: #invoke:params|combining_by_calling|template name|new parameter
-- name|pipe to
library.combining_by_calling = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tname = ctx.pipe[1]
if tname ~= nil then tname = tname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_calling’: No template name was provided', 0) end
if ctx.pipe[2] == nil then error(modulename ..
', ‘combining_by_calling’: No parameter name was provided', 0) end
ctx.params = {
[get_parameter_name(ctx.pipe[2])] = ctx.frame:expandTemplate{
title = tname,
args = ctx.params
}
}
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|combining_by_invoking|module name|function name|new
-- parameter name|pipe to
library.combining_by_invoking = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local mname = ctx.pipe[1]
if mname ~= nil then mname = mname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_invoking’: No module name was provided', 0) end
local fname = ctx.pipe[2]
if fname ~= nil then fname = fname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_invoking’: No function name was provided', 0) end
if ctx.pipe[3] == nil then error(modulename ..
', ‘combining_by_invoking’: No parameter name was provided', 0) end
local model = { title = 'Module:' .. mname, args = ctx.params }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘mapping_by_invoking’: The function ‘' .. fname ..
'’ does not exist', 0) end
ctx.params = {
[get_parameter_name(ctx.pipe[3])] =
tostring(mfunc(ctx.frame:newChild(model)))
}
return context_iterate(ctx, 4)
end
-- Syntax: #invoke:params|combining_by_magic|parser function|new parameter
-- name|pipe to
library.combining_by_magic = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local magic = ctx.pipe[1]
if magic ~= nil then magic = magic:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_magic’: No parser function was provided', 0) end
if ctx.pipe[2] == nil then error(modulename ..
', ‘combining_by_magic’: No parameter name was provided', 0) end
ctx.params = {
[get_parameter_name(ctx.pipe[2])] =
ctx.frame:callParserFunction(magic, ctx.params)
}
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|snapshotting|[maximum number]|pipe to
library.snapshotting = function (ctx)
return context_iterate(ctx, make_child(ctx, ctx.params, 'snapshotting'))
end
-- Syntax: #invoke:params|remembering|[maximum number]|pipe to
library.remembering = function (ctx)
return context_iterate(ctx, make_child(ctx, ctx.oparams, 'remembering'))
end
-- Syntax: #invoke:params|entering_substack|[new]|pipe to
library.entering_substack = function (ctx)
local tbl, ncurrparent = ctx.params, ctx.n_parents + 1
if ctx.parents == nil then ctx.parents = { tbl }
else ctx.parents[ncurrparent] = tbl end
ctx.n_parents = ncurrparent
if ctx.pipe[1] ~= nil and ctx.pipe[1]:match'^%s*new%s*$' then
ctx.params = {}
return context_iterate(ctx, 2)
end
local currsnap = ctx.n_children
if currsnap > 0 then
ctx.params, ctx.children[currsnap], ctx.n_children =
ctx.children[currsnap], nil, currsnap - 1
else
local newparams = {}
for key, val in pairs(tbl) do newparams[key] = val end
ctx.params = newparams
end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|pulling|parameter name|pipe to
library.pulling = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘pulling’: No parameter to pull was provided', 0) end
local tmp = ctx.n_parents
local parent = tmp < 1 and ctx.oparams or ctx.parents[tmp]
tmp = get_parameter_name(opts[1])
if parent[tmp] ~= nil then ctx.params[tmp] = parent[tmp] end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|recalling|parameter name|pipe to
library.recalling = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘recalling’: No parameter to recall was provided', 0) end
local arg = get_parameter_name(opts[1])
if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|finding|parameter name|pipe to
--[[
library.finding = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘finding’: No parameter to find was provided', 0) end
local arg = get_parameter_name(opts[1])
local parent
for idx = ctx.n_parents, 1, -1 do
parent = ctx.parents[idx]
if parent[arg] ~= nil then
ctx.params[arg] = parent[arg]
return context_iterate(ctx, 2)
end
end
if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end
return context_iterate(ctx, 2)
end
]]--
-- Syntax: #invoke:params|picking|number of parameters to pick|pipe to
--[[
library.picking = function (ctx)
local len = tonumber(ctx.pipe[1])
if len == nil or len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘picking’: The number of parameters to pick must be an integer greater than zero', 0) end
if ctx.n_parents < 1 then copy_table_maxn(ctx.params, ctx.oparams, len)
else copy_table_maxn(ctx.params, ctx.parents[ctx.n_parents], len) end
return context_iterate(ctx, 2)
end
]]--
-- Syntax: #invoke:params|detaching_substack|pipe to
library.detaching_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘detaching_substack’: No substack has been created', 0) end
local parent = ctx.parents[ncurrparent]
for key in pairs(ctx.params) do parent[key] = nil end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|dropping_substack|pipe to
library.dropping_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘dropping_substack’: No substack has been created', 0) end
ctx.params, ctx.parents[ncurrparent], ctx.n_parents =
ctx.parents[ncurrparent], nil, ncurrparent - 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|leaving_substack|pipe to
library.leaving_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘leaving_substack’: No substack has been created', 0) end
local currsnap = ctx.n_children + 1
if ctx.children == nil then ctx.children = { ctx.params }
else ctx.children[currsnap] = ctx.params end
ctx.params, ctx.parents[ncurrparent], ctx.n_parents, ctx.n_children =
ctx.parents[ncurrparent], nil, ncurrparent - 1, currsnap
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|merging_substack|pipe to
library.merging_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘merging_substack’: No substack has been created', 0) end
local parent, child = ctx.parents[ncurrparent], ctx.params
ctx.params, ctx.parents[ncurrparent], ctx.n_parents = parent, nil,
ncurrparent - 1
for key, val in pairs(child) do parent[key] = val end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|flushing|pipe to
library.flushing = function (ctx)
if ctx.n_children < 1 then error(modulename ..
', ‘flushing’: There are no substacks to flush', 0) end
local parent, currsnap = ctx.params, ctx.n_children
for key, val in pairs(ctx.children[currsnap]) do parent[key] = val end
ctx.children[currsnap], ctx.n_children = nil, currsnap - 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|setting_by_flushing|pipe to
library.setting_by_flushing = function (ctx)
set_strings_from_substack(ctx, ctx, 'setting_by_flushing')
return context_iterate(ctx, 1)
end
--[[ Functions ]]--
-----------------------------
-- Syntax: #invoke:params|count
library.count = function (ctx)
-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables!
local retval = 0
for _ in ctx.iterfunc(ctx.params) do retval = retval + 1 end
if ctx.subset == -1 then retval = retval - #ctx.params end
ctx.text = retval
return false
end
-- Syntax: #invoke:args|concat_and_call|template name|[prepend 1]|[prepend 2]
-- |[...]|[item n]|[named item 1=value 1]|[...]|[named item n=value
-- n]|[...]
library.concat_and_call = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘concat_and_call’: No template name was provided', 0) end
remove_numeric_keys(opts, 1, 1)
ctx.text = ctx.frame:expandTemplate{
title = tname,
args = concat_params(ctx)
}
return false
end
-- Syntax: #invoke:args|concat_and_invoke|module name|function name|[prepend
-- 1]|[prepend 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named
-- item n=value n]|[...]
library.concat_and_invoke = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘concat_and_invoke’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘concat_and_invoke’: No function name was provided', 0) end
remove_numeric_keys(opts, 1, 2)
local mfunc = require('Module:' .. mname)[fname]
if mfunc == nil then error(modulename ..
', ‘concat_and_invoke’: The function ‘' .. fname ..
'’ does not exist', 0) end
ctx.text = mfunc(ctx.frame:newChild{
title = 'Module:' .. mname,
args = concat_params(ctx)
})
return false
end
-- Syntax: #invoke:args|concat_and_magic|parser function|[prepend 1]|[prepend
-- 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named item n=
-- value n]|[...]
library.concat_and_magic = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local magic
local opts = ctx.pipe
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘concat_and_magic’: No parser function was provided', 0) end
remove_numeric_keys(opts, 1, 1)
ctx.text = ctx.frame:callParserFunction(magic, concat_params(ctx))
return false
end
-- Syntax: #invoke:params|value_of|parameter name
library.value_of = function (ctx)
-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables!
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘value_of’: No parameter name was provided', 0) end
local val
local key = opts[1]:match'^%s*(.-)%s*$'
if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then
key = tonumber(key)
val = ctx.params[key]
-- No worries: #ctx.params is unused when the modifier is in
-- first position (and therefore `ctx.params` is a metatable)
if val ~= nil and (
ctx.subset ~= -1 or key > #ctx.params or key < 1
) and (
ctx.subset ~= 1 or (key <= #ctx.params and key > 0)
) then
ctx.text = (ctx.header or '') .. val .. (ctx.footer or '')
else ctx.text = ctx.ifngiven or '' end
else
val = ctx.params[key]
if ctx.subset ~= 1 and val ~= nil then ctx.text = (ctx.header
or '') .. val .. (ctx.footer or '')
else ctx.text = ctx.ifngiven or '' end
end
return false
end
-- Syntax: #invoke:params|list
library.list = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or ''
flush_params(ctx, function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3], ret[nss + 4], nss =
pps, key, kvs, val, nss + 4
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 4)
return false
end
-- Syntax: #invoke:params|list_values
library.list_values = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
-- NOTE: `library.coins()` and `library.unique_coins()` rely on us
local ret, nss, pps = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
ret[nss + 1], ret[nss + 2], nss = pps, val, nss + 2
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|list_maybe_with_names
library.list_maybe_with_names = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or ''
mixed_flush_params(
ctx,
function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3],
ret[nss + 4], nss = pps, '', '', val, nss + 4
end,
function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3],
ret[nss + 4], nss = pps, key, kvs, val, nss + 4
end
)
finalize_and_return_concatenated_list(ctx, ret, nss, 4)
return false
end
-- Syntax: #invoke:params|coins|[first coin = value 1]|[second coin = value
-- 2]|[...]|[last coin = value N]
--[[
library.coins = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local opts, tbl = ctx.pipe, ctx.params
for key, val in pairs(tbl) do tbl[key] = opts[get_parameter_name(val)] end
return library.list_values(ctx)
end
]]--
-- Syntax: #invoke:params|unique_coins|[first coin = value 1]|[second coin =
-- value 2]|[...]|[last coin = value N]
--[[
library.unique_coins = function (ctx)
local tmp
local opts, tbl = ctx.pipe, ctx.params
for key, val in pairs(tbl) do
tmp = get_parameter_name(val)
tbl[key], opts[tmp] = opts[tmp], nil
end
return library.list_values(ctx)
end
]]
-- Syntax: #invoke:params|for_each|wikitext
library.for_each = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local ret, nss, pps, txt = {}, 0, ctx.itersep or '', ctx.pipe[1] or ''
local skel, cnv, n_parts = parse_placeholder_string(txt)
flush_params(ctx, function (key, val)
for idx = 2, n_parts, 2 do
if skel[idx] then cnv[idx] = val
else cnv[idx] = tostring(key) end
end
ret[nss + 1], nss = pps, nss + 2
ret[nss] = table.concat(cnv)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each|template name|[append 1]|[append 2]
-- |[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘call_for_each’: No template name was provided', 0) end
local model = { title = tname, args = opts }
local ret, nss, ccs = {}, 0, ctx.itersep or ''
table.insert(opts, 1, true)
flush_params(ctx, function (key, val)
opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|invoke_for_each|module name|module function|[append
-- 1]|[append 2]|[...]|[append n]|[named param 1=value 1]|[...]
-- |[named param n=value n]|[...]
library.invoke_for_each = function (ctx)
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘invoke_for_each’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘invoke_for_each’: No function name was provided', 0) end
local model = { title = 'Module:' .. mname, args = opts }
local mfunc = require(model.title)[fname]
local ret, nss, ccs = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = mfunc(ctx.frame:newChild(model))
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|magic_for_each|parser function|[append 1]|[append 2]
-- |[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.magic_for_each = function (ctx)
local magic
local opts = ctx.pipe
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘magic_for_each’: No parser function was provided', 0) end
local ret, nss, ccs = {}, 0, ctx.itersep or ''
table.insert(opts, 1, true)
flush_params(ctx, function (key, val)
opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = ctx.frame:callParserFunction(magic, opts)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each_value|template name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each_value = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘call_for_each_value’: No template name was provided', 0) end
local model = { title = tname, args = opts }
local ret, nss, ccs = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
opts[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|invoke_for_each_value|module name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.invoke_for_each_value = function (ctx)
local opts = ctx.pipe
local mname, fname
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘invoke_for_each_value’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘invoke_for_each_value’: No function name was provided', 0) end
local model = { title = 'Module:' .. mname, args = opts }
local mfunc = require(model.title)[fname]
local ret, nss, ccs = {}, 0, ctx.itersep or ''
remove_numeric_keys(opts, 1, 1)
flush_params(ctx, function (key, val)
opts[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = mfunc(ctx.frame:newChild(model))
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|magic_for_each_value|parser function|[append 1]
-- |[append 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named
-- param n=value n]|[...]
library.magic_for_each_value = function (ctx)
local opts = ctx.pipe
local magic
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘magic_for_each_value’: No parser function was provided', 0) end
local ret, nss, ccs = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
opts[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = ctx.frame:callParserFunction(magic, opts)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each_group|template name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each_group = function (ctx)
-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables!
local tmp
if ctx.pipe[1] ~= nil then tmp = ctx.pipe[1]:match'^%s*(.*%S)' end
if tmp == nil then error(modulename ..
', ‘call_for_each_group’: No template name was provided', 0) end
local model = { title = tmp }
local opts, ret, nss, ccs = {}, {}, 0, ctx.itersep or ''
for key, val in pairs(ctx.pipe) do
if type(key) == 'number' then opts[key - 1] = val
else opts[key] = val end
end
ctx.pipe = opts
ctx.params = make_groups(ctx.params)
flush_params(ctx, function (gid, group)
for key, val in pairs(opts) do group[key] = val end
group[0], model.args, ret[nss + 1], nss = gid, group, ccs,
nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
--[[ First-position-only modifiers ]]--
---------------------------------------
-- Syntax: #invoke:params|new|pipe to
static_iface.new = function (child_frame)
local ctx = context_new(child_frame)
ctx.pipe = copy_or_ref_table(ctx.opipe, false)
ctx.params = {}
main_loop(ctx, context_iterate(ctx, 1))
return ctx.text
end
--[[ First-position-only functions ]]--
---------------------------------------
-- Syntax: #invoke:params|self
static_iface.self = function (frame)
return frame:getParent():getTitle()
end
--[[ Public metatable of functions ]]--
---------------------------------------
return setmetatable({}, {
__index = function (_, query)
local fname = query:match'^%s*(.*%S)'
if fname == nil then error(modulename ..
': You must specify a function to call', 0) end
local func = static_iface[fname]
if func ~= nil then return func end
func = library[fname]
if func == nil then error(modulename ..
': The function ‘' .. fname .. '’ does not exist', 0) end
return function (child_frame)
local ctx = context_new(child_frame)
ctx.pipe = copy_or_ref_table(ctx.opipe, refpipe[fname])
ctx.params = copy_or_ref_table(ctx.oparams, refparams[fname])
main_loop(ctx, func)
return ctx.text
end
end
})
s0wwht3ty2l3u443tnfm9mh3z5pmpgj
129331
129329
2026-07-24T03:49:04Z
Grufo
23551
Update from [[d:Special:GoToLinkedPage/mediawikiwiki/Q122696746|master]] using [[mw:Synchronizer| #Synchronizer]]
129331
Scribunto
text/plain
require[[strict]]
--- ---
--- PRIVATE ENVIRONMENT ---
--- ________________________________ ---
--- ---
--[[ Abstract utilities ]]--
----------------------------
-- Helper function for `string.gsub()` (for managing zero-padded numbers)
local function zero_padded (str)
return ('%03d%s'):format(#str, str)
end
-- Helper function for `table.sort()` (for natural sorting)
local function natural_sort (var1, var2)
return var1:gsub('%d+', zero_padded) < var2:gsub('%d+', zero_padded)
end
-- Return a copy or a reference to a table
local function copy_or_ref_table (src, refonly)
if refonly then return src end
local newtab = {}
for key, val in pairs(src) do newtab[key] = val end
return newtab
end
-- Copy at most N items (of all kinds) from `src` to `dest` and return `dest`
local function copy_table_maxn (dest, src, len)
local idx = 1
for key, val in pairs(src) do
dest[key], idx = val, idx + 1
if idx > len then break end
end
return dest
end
-- Remove some numeric elements from a table, shifting everything to the left
local function remove_numeric_keys (tbl, idx, len)
local cache, tmp = {}, idx + len - 1
for key, val in pairs(tbl) do
if type(key) == 'number' and key >= idx then
if key > tmp then cache[key - len] = val end
tbl[key] = nil
end
end
for key, val in pairs(cache) do tbl[key] = val end
end
-- Make a reduced copy of a table (shifting in both directions if necessary)
local function copy_table_reduced (tbl, idx, len)
local ret, tmp = {}, idx + len - 1
if idx > 0 then
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key < idx then
ret[key] = val
elseif key > tmp then ret[key - len] = val end
end
elseif tmp > 0 then
local nshift = 1 - idx
for key, val in pairs(tbl) do
if type(key) ~= 'number' then ret[key] = val
elseif key > tmp then ret[key - tmp] = val
elseif key < idx then ret[key + nshift] = val end
end
else
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key > tmp then
ret[key] = val
elseif key < idx then ret[key + len] = val end
end
end
return ret
end
-- Make an expanded copy of a table (shifting in both directions if necessary)
local function copy_table_expanded (tbl, idx, len)
local ret, tmp = {}, idx + len - 1
if idx > 0 then
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key < idx then
ret[key] = val
else ret[key + len] = val end
end
elseif tmp > 0 then
local nshift = idx - 1
for key, val in pairs(tbl) do
if type(key) ~= 'number' then ret[key] = val
elseif key > 0 then ret[key + tmp] = val
elseif key < 1 then ret[key + nshift] = val end
end
else
for key, val in pairs(tbl) do
if type(key) ~= 'number' or key > tmp then
ret[key] = val
else ret[key - len] = val end
end
end
return ret
end
-- Given a table, create two new tables containing the sorted list of keys
local function get_key_list_sorted (tbl, sort_fn)
local nums, words, nn, nw = {}, {}, 0, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
nn = nn + 1
nums[nn] = key
else
nw = nw + 1
words[nw] = key
end
end
table.sort(nums)
table.sort(words, sort_fn)
return nums, words, nn, nw
end
-- Parse a parameter name string and return it as a string or a number
local function get_parameter_name (par_str)
local ret = par_str:match'^%s*(.-)%s*$'
if ret ~= '0' and ret:find'^%-?[1-9]%d*$' == nil then return ret end
return tonumber(ret)
end
-- Move a key from a table to another, but only if under a different name and
-- always parsing numeric strings as numbers
local function steal_if_renamed (val, src, skey, dest, dkey)
local realkey = get_parameter_name(dkey)
if skey ~= realkey then dest[realkey], src[skey] = val, nil end
end
--[[ Public strings ]]--
------------------------
-- Special match keywords (functions and modifiers MUST avoid these names)
local mkeywords = {
['or'] = 0,
pattern = 1,
plain = 2,
strict = 3
}
-- Sort functions (functions and modifiers MUST avoid these names)
local sortfunctions = {
alphabetically = false,
naturally = natural_sort
}
-- Callback styles for the `mapping_*` and `renaming_*` class of modifiers
-- (functions and modifiers MUST avoid these names)
--[[
Meanings of the columns:
col[1] = Loop type (0-3)
col[2] = Number of module arguments that the style requires (1-3)
col[3] = Minimum number of sequential parameters passed to the callback
col[4] = Name of the callback parameter where to place each parameter name
col[5] = Name of the callback parameter where to place each parameter value
col[6] = Argument in the modifier's invocation that will override `col[4]`
col[7] = Argument in the modifier's invocation that will override `col[5]`
A value of `-1` indicates that no meaningful value is stored (i.e. `nil`)
]]--
local mapping_styles = {
names_and_values = { 3, 2, 2, 1, 2, -1, -1 },
values_and_names = { 3, 2, 2, 2, 1, -1, -1 },
values_only = { 1, 2, 1, -1, 1, -1, -1 },
names_only = { 2, 2, 1, 1, -1, -1, -1 },
names_and_values_as = { 3, 4, 0, -1, -1, 2, 3 },
names_only_as = { 2, 3, 0, -1, -1, 2, -1 },
values_only_as = { 1, 3, 0, -1, -1, -1, 2 },
blindly = { 0, 2, 0, -1, -1, -1, -1 }
}
-- Memory slots (functions and modifiers MUST avoid these names)
local memoryslots = {
h = 'header',
f = 'footer',
i = 'itersep',
l = 'lastsep',
n = 'ifngiven',
p = 'pairsep',
s = 'oxfordsep'
}
-- Possible trimming modes for the `parsing` modifier
local trim_parse_opts = {
trim_none = { false, false },
trim_positional = { false, true },
trim_named = { true, false },
trim_all = { true, true }
}
-- Possible string modes for the iteration separator in the `parsing` and
-- `reinterpreting` modifiers
local isep_parse_opts = {
splitter_pattern = false,
splitter_string = true
}
-- Possible string modes for the key-value separator in the `parsing` and
-- `reinterpreting` modifiers
local psep_parse_opts = {
setter_pattern = false,
setter_string = true
}
-- Possible position references for the `splicing` modifier
local position_references = {
add_nothing = 0,
add_smallest_number = 1,
add_last_of_sequence = 2,
add_largest_number = 3
}
-- Possible modes for the `reassigning` modifier
local a_modes = {
transfer = 0,
clone = 1,
rename = 2,
copy = 3,
sacrifice = 4,
provide = 5,
spare = 7
}
-- Functions and modifiers MUST avoid these names too: `here`, `in_substack`,
-- `let`, `expose`, `use`, `with_flushed_glue`, `without_flushed_glue`
-- `without_sorting`
--[[ Private constants ]]--
---------------------------
-- Hard-coded name of the module (to avoid going through `frame:getTitle()`)
local modulename = 'Module:Params'
-- The functions listed here declare that they don't need the `frame.args`
-- metatable to be copied into a regular table; if they are modifiers they also
-- guarantee that they will make their own (modified) copy available
local refpipe = {
call_for_each_group = true,
--coins = true,
count = true,
evaluating = true,
for_each = true,
list = true,
list_values = true,
list_maybe_with_names = true,
value_of = true
}
-- The functions listed here declare that they don't need the
-- `frame:getParent().args` metatable to be copied into a regular table; if
-- they are modifiers they also guarantee that they will make their own
-- (modified) copy available
local refparams = {
call_for_each_group = true,
combining = true,
combining_by_calling = true,
combining_values = true,
concat_and_call = true,
concat_and_invoke = true,
concat_and_magic = true,
count = true,
grouping_by_calling = true,
mixing_names_and_values = true,
keeping_at_most = true,
renaming_by_mixing = true,
renaming_to_sequence = true,
renaming_to_uppercase = true,
renaming_to_lowercase = true,
--renaming_to_values = true,
shifting = true,
splicing = true,
--swapping_names_and_values = true,
value_of = true,
with_name_matching = true
}
-- Maximum number of numeric parameters that can be filled, if missing (we
-- chose an arbitrary number for this constant; you can discuss about its
-- optimal value at Module talk:Params)
local maxfill = 1024
-- The private table of functions
local library = {}
-- Functions and modifiers that can only be invoked in first position
local static_iface = {}
--[[ Private functions ]]--
---------------------------
-- Create a new context
local function context_new (child_frame)
local main_frame = child_frame:getParent()
return {
frame = main_frame,
opipe = child_frame.args,
oparams = main_frame.args,
firstposonly = static_iface,
iterfunc = pairs,
sorttype = 0,
n_parents = 0,
n_children = 0,
n_available = maxfill
}
end
-- Move to the next action within the user-given list
local function context_iterate (ctx, n_forward)
local nextfn
if ctx.pipe[n_forward] ~= nil then
nextfn = ctx.pipe[n_forward]:match'^%s*(.*%S)'
end
if nextfn == nil then error(modulename ..
': You must specify a function to call', 0) end
if library[nextfn] == nil then
if ctx.firstposonly[nextfn] == nil then error(modulename ..
': The function ‘' .. nextfn .. '’ does not exist', 0)
else error(modulename .. ': The ‘' .. nextfn ..
'’ directive can only appear in first position', 0)
end
end
remove_numeric_keys(ctx.pipe, 1, n_forward)
return library[nextfn]
end
-- Main loop
local function main_loop (ctx, start_with)
local fn = start_with
repeat fn = fn(ctx) until not fn
if ctx.n_parents > 0 then error(modulename ..
': One or more ‘merging_substack’ directives are missing', 0) end
if ctx.n_children > 0 then error(modulename ..
', For some of the snapshots either the ‘flushing’ directive is missing or a group has not been properly closed with ‘merging_substack’', 0) end
end
-- Load a `setting`-like directive string into the `dest` table
local function set_strings_from_opts (dest, opts, start_from)
local cmd
if opts[start_from] == nil then return start_from - 1 end
cmd = opts[start_from]:gsub('%s+', ''):gsub('/+', '/')
:match'^/*(.*[^/])'
if cmd == nil then return start_from end
local vname, chr
local amap, sep, argc = {}, string.byte('/'), start_from + 1
for idx = 1, #cmd do
chr = cmd:byte(idx)
if chr == sep then
for key, val in ipairs(amap) do
dest[val], amap[key] = opts[argc], nil
end
argc = argc + 1
else
vname = memoryslots[string.char(chr)]
if vname == nil then error(modulename ..
', ‘setting’: Unknown slot ‘' ..
string.char(chr) .. '’', 0) end
table.insert(amap, vname)
end
end
for key, val in ipairs(amap) do dest[val] = opts[argc] end
return argc
end
-- Add a new stack of parameters to `ctx.children`
local function new_substack (ctx)
local currsnap, newparams = ctx.n_children + 1, {}
if ctx.children == nil then ctx.children = { newparams }
else ctx.children[currsnap] = newparams end
ctx.n_children = currsnap
return newparams
end
-- Parse a raw argument containing a `sortfunctions` directive, or
-- `'without_sorting'`, or `nil`
local function load_sort_opt (raw_arg)
if raw_arg == nil then return nil, 1, false end
local trarg = raw_arg:match'^%s*(.-)%s*$'
if trarg == 'without_sorting' then return nil, 2, false, trarg end
local tmp = sortfunctions[trarg]
if tmp == nil then return nil, 1, false, trarg end
return tmp or nil, 2, true, trarg
end
-- Parse optional user arguments of type `...|[let/use]|[...]|[let/use]|[...]|
-- [number of additional parameters]|[parameter 1]|[parameter 2]|[...]`
local function load_child_opts (src, start_from, append_after, params)
local tnamed, tmp1, tmp2
local pin, tbl, mem = start_from, {}, {}
while src[pin] ~= nil and src[pin + 1] ~= nil do
tmp1 = src[pin]:match'^%s*(.*%S)'
if tmp1 == 'let' and src[pin + 2] ~= nil then
tmp1 = get_parameter_name(src[pin + 1])
mem[tmp1], tbl[tmp1], pin = nil, src[pin + 2], pin + 3
--[[
elseif tmp1 == 'expose' then
tmp1 = get_parameter_name(src[pin + 1])
tmp2 = params[tmp1]
mem[tmp1], tbl[tmp1], pin = tmp2, tmp2, pin + 2
]]--
elseif tmp1 == 'use' and src[pin + 2] ~= nil then
tmp1 = get_parameter_name(src[pin + 2])
tmp2 = params[tmp1]
mem[tmp1], tbl[get_parameter_name(src[pin + 1])], pin =
tmp2, tmp2, pin + 3
else break end
end
local tnew = copy_or_ref_table(params, next(mem) == nil)
for key in pairs(mem) do tnew[key] = nil end
if pin ~= start_from then tnamed, tbl = tbl, {} end
tmp1 = tonumber(src[pin])
if tmp1 ~= nil and math.floor(tmp1) == tmp1 then
if tmp1 < 0 then tmp1 = -1 end
tmp2 = append_after - pin
for idx = pin + 1, pin + tmp1 do tbl[idx + tmp2] = src[idx] end
pin = pin + tmp1 + 1
end
if tnamed ~= nil then
for key, val in pairs(tnamed) do tbl[key] = val end
end
return tbl, pin, tnew, mem
end
-- Load the optional arguments of some of the `mapping_*` and `renaming_*`
-- class of modifiers
local function load_callback_opts (src, n_skip, default_style, params)
local style, shf
local tmp = src[n_skip + 1]
if tmp ~= nil then style = mapping_styles[tmp:match'^%s*(.-)%s*$'] end
if style == nil then style, shf = default_style, n_skip - 1
else shf = n_skip end
local n_exist, karg, varg = style[3], style[4], style[5]
tmp = style[6]
if tmp > -1 then
karg = src[tmp + shf]:match'^%s*(.-)%s*$'
if karg == '0' or karg:find'^%-?[1-9]%d*$' ~= nil then
karg = tonumber(karg)
n_exist = math.max(n_exist, karg)
end
end
tmp = style[7]
if tmp > -1 then
varg = src[tmp + shf]:match'^%s*(.-)%s*$'
if varg == '0' or varg:find'^%-?[1-9]%d*$' ~= nil then
varg = tonumber(varg)
n_exist = math.max(n_exist, varg)
end
end
local dest, argc, tnew, mem = load_child_opts(src, style[2] + shf,
n_exist, params)
tmp = style[1]
if (tmp == 3 or tmp == 2) and dest[karg] ~= nil then
tmp = tmp - 2 end
if (tmp == 3 or tmp == 1) and dest[varg] ~= nil then
tmp = tmp - 1 end
return dest, argc, tmp, karg, varg, tnew, mem
end
-- Parse the arguments of some of the `mapping_*` and `renaming_*` class of
-- modifiers
local function load_replace_args (opts, whoami)
if opts[1] == nil then error(modulename ..
', ‘' .. whoami .. '’: No pattern string was given', 0) end
if opts[2] == nil then error(modulename ..
', ‘' .. whoami .. '’: No replacement string was given', 0) end
local ptn, repl, nmax, argc = opts[1], opts[2], tonumber(opts[3]), 3
if nmax ~= nil or (opts[3] or ''):match'^%s*$' ~= nil then argc = 4 end
local flg = opts[argc]
if flg ~= nil then flg = mkeywords[flg:match'^%s*(.-)%s*$'] end
if flg == 0 then flg = nil elseif flg ~= nil then argc = argc + 1 end
return ptn, repl, nmax, flg, argc, (nmax ~= nil and nmax < 1) or
(flg == 3 and ptn == repl)
end
-- Parse the arguments of the `with_*_matching` class of modifiers
local function load_pattern_args (opts, whoami)
local keyw
local ptns, state, nptns, cnt = {}, 0, 0, 1
for _, val in ipairs(opts) do
if state == 0 then
nptns, state = nptns + 1, -1
ptns[nptns] = { val, false, false }
else
keyw = val:match'^%s*(.*%S)'
if keyw == nil or mkeywords[keyw] == nil or (
state > 0 and mkeywords[keyw] > 0
) then break
else
state = mkeywords[keyw]
if state > 1 then ptns[nptns][2] = true end
if state == 3 then ptns[nptns][3] = true end
end
end
cnt = cnt + 1
end
if state == 0 then error(modulename .. ', ‘' .. whoami ..
'’: No pattern was given', 0) end
return ptns, nptns, cnt
end
-- Load the optional arguments of the `parsing`, `reinterpreting` and
-- `evaluating` modifiers
local function load_parse_opts (opts, start_from, isp, psp)
local tmp
local optslots, noptslots, argc, trimn, trimu, iplain, pplain =
{ true, true, true }, 3, start_from, true, false, true, true
repeat
noptslots, tmp = noptslots - 1, opts[argc]
if tmp == nil then break end
tmp = tmp:match'^%s*(.-)%s*$'
if optslots[1] ~= nil and trim_parse_opts[tmp] ~= nil then
tmp = trim_parse_opts[tmp]
trimn, trimu, optslots[1] = tmp[1], tmp[2], nil
elseif optslots[2] ~= nil and isep_parse_opts[tmp] ~= nil then
argc = argc + 1
iplain, isp, optslots[2] = isep_parse_opts[tmp],
opts[argc], nil
elseif optslots[3] ~= nil and psep_parse_opts[tmp] ~= nil then
argc = argc + 1
pplain, psp, optslots[3] = psep_parse_opts[tmp],
opts[argc], nil
else break end
argc = argc + 1
until noptslots < 1
return isp, iplain, psp, pplain, trimn, trimu, argc
end
-- Map parameters' values using a custom callback and a referenced table
local value_maps = {
[0] = function (tbl, margs, karg, varg, fn)
for key in pairs(tbl) do tbl[key] = fn() end
end,
[1] = function (tbl, margs, karg, varg, fn)
for key, val in pairs(tbl) do
margs[varg] = val
tbl[key] = fn()
end
end,
[2] = function (tbl, margs, karg, varg, fn)
for key in pairs(tbl) do
margs[karg] = key
tbl[key] = fn()
end
end,
[3] = function (tbl, margs, karg, varg, fn)
for key, val in pairs(tbl) do
margs[karg], margs[varg] = key, val
tbl[key] = fn()
end
end
}
-- Private table for `map_names()`
local name_thieves = {
[0] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[1] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[varg] = val
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[2] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[karg] = key
steal_if_renamed(val, tbl, key, cache, fn())
end
end,
[3] = function (cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(tbl) do
rargs[karg], rargs[varg] = key, val
steal_if_renamed(val, tbl, key, cache, fn())
end
end
}
-- Map parameters' names using a custom callback and a referenced table
local function map_names (tbl, rargs, karg, varg, looptype, fn)
local cache = {}
name_thieves[looptype](cache, tbl, rargs, karg, varg, fn)
for key, val in pairs(cache) do tbl[key] = val end
end
-- Return a new table that contains `src` regrouped according to the numeric
-- suffixes in its keys
local function make_groups (src)
-- NOTE: `src` might be the original metatable!
local prefix, gid
local groups = {}
for key, val in pairs(src) do
-- `key` must only be a string or a number...
if type(key) == 'string' then
prefix, gid = key:match'^%s*(.-)%s*(%-?%d*)%s*$'
gid = tonumber(gid) or ''
else
prefix, gid = '', key
end
if groups[gid] == nil then groups[gid] = {} end
if prefix == '0' or prefix:find'^%-?[1-9]%d*$' ~= nil then
prefix = tonumber(prefix)
if prefix < 1 then prefix = prefix - 1 end
end
groups[gid][prefix] = val
end
return groups
end
-- Split into parts a string containing the `$#` and `$@` placeholders and
-- return the information as a skeleton table, a canvas table and a length
local function parse_placeholder_string (target)
local idx, s_pos, skel, canvas = 1, 1, {}, {}
local e_pos = string.find(target, '%$[@#]', 1, false)
while e_pos ~= nil do
canvas[idx] = target:sub(s_pos, e_pos - 1)
skel[idx + 1] = target:sub(e_pos, e_pos + 1) == '$@'
idx = idx + 2
s_pos = e_pos + 2
e_pos = string.find(target, '%$[@#]', s_pos, false)
end
if (s_pos > target:len()) then idx = idx - 1
else canvas[idx] = target:sub(s_pos) end
return skel, canvas, idx
end
-- Populate a table by parsing a parameter string (heavy lifting for `parsing`,
-- `reinterpreting` and `evaluating`)
local function parse_parameter_string (tbl, str, isp, ipl, psp, ppl, trn, tru)
local key, val, spos1, spos2, pos1, pos2
local pos3, idx, lenplone = 0, 1, #str + 1
if isp == nil or isp == '' then
if psp == nil or psp == '' then
if tru then tbl[idx] = str:match'^%s*(.-)%s*$'
else tbl[idx] = str end
return idx
end
spos1, spos2 = str:find(psp, 1, ppl)
if spos1 == nil then
key = idx
if tru then val = str:match'^%s*(.-)%s*$'
else val = str end
idx = idx + 1
else
key = get_parameter_name(str:sub(1, spos1 - 1))
val = str:sub(spos2 + 1)
if trn then val = val:match'^%s*(.-)%s*$' end
end
tbl[key] = val
return idx
end
if psp == nil or psp == '' then
repeat
pos1 = pos3 + 1
pos2, pos3 = str:find(isp, pos1, ipl)
val = str:sub(pos1, (pos2 or lenplone) - 1)
if tru then val = val:match'^%s*(.-)%s*$' end
tbl[idx], idx = val, idx + 1
until pos2 == nil
return idx
end
repeat
pos1 = pos3 + 1
pos2, pos3 = str:find(isp, pos1, ipl)
val = str:sub(pos1, (pos2 or lenplone) - 1)
spos1, spos2 = val:find(psp, 1, ppl)
if spos1 == nil then
key = idx
if tru then val = val:match'^%s*(.-)%s*$' end
idx = idx + 1
else
key = get_parameter_name(val:sub(1, spos1 - 1))
val = val:sub(spos2 + 1)
if trn then val = val:match'^%s*(.-)%s*$' end
end
tbl[key] = val
until pos2 == nil
return idx
end
-- Heavy lifting for `snapshotting` and `remembering`
local function make_child (ctx, src, whoami)
local len = tonumber(ctx.pipe[1])
if len == nil or len == 0 then
local stack = new_substack(ctx)
for key, val in pairs(src) do stack[key] = val end
return len == nil and 1 or 2
end
if len < 0 or math.floor(len) ~= len then error(modulename ..
', ‘' .. whoami .. '’: The number of parameters to copy must be an integer greater than zero', 0) end
copy_table_maxn(new_substack(ctx), src, len)
return 2
end
-- Heavy lifting for `setting_by_flushing`, `combining` and `combining_values`
local function set_strings_from_substack (ctx, dest, whoami)
if ctx.n_children < 1 then error(modulename ..
', ‘' .. whoami .. '’: There are no substacks to flush', 0) end
local currsnap = ctx.n_children
local stack = ctx.children[currsnap]
for key, val in pairs(memoryslots) do
if stack[key] ~= nil then dest[val] = stack[key] end
end
ctx.children[currsnap], ctx.n_children = nil, currsnap - 1
end
-- Heavy lifting for `combining` and `combining_values`
local function combine_parameters (ctx, keyval_fn, whoami)
-- NOTE: `ctx.params` might be the original metatable! This function
-- MUST create a copy of it before returning
local opts = ctx.pipe
if ctx.pipe[1] == nil then error(modulename ..
', ‘' .. whoami .. '’: No parameter name was provided', 0) end
local argc
local tbl, vars = ctx.params, {}
local sortfn, varsarg0, do_sort, tmp = load_sort_opt(opts[2])
if varsarg0 == 2 then tmp = opts[3] and opts[3]:match'^%s*(.-)%s*$' end
if tmp == 'with_flushed_glue' then
varsarg0 = varsarg0 + 1
argc = set_strings_from_opts(vars, opts, varsarg0 + 1)
set_strings_from_substack(ctx, vars, whoami)
else
if tmp == 'without_flushed_glue' then varsarg0 = varsarg0 + 1 end
argc = set_strings_from_opts(vars, opts, varsarg0 + 1)
end
if argc < varsarg0 then error(modulename ..
', ‘' .. whoami .. '’: No setting directive was given', 0) end
if next(tbl) == nil then
if vars.ifngiven ~= nil then ctx.params =
{ [get_parameter_name(ctx.pipe[1])] = vars.ifngiven }
elseif tbl == ctx.oparams then ctx.params = {} end
return argc
end
local cache, len
if do_sort then
local words
cache, words, len, tmp = get_key_list_sorted(tbl, sortfn)
for idx = 1, tmp do cache[len + idx] = words[idx] end
len = len + tmp
else
len, cache = 0, {}
for key in pairs(tbl) do
len = len + 1
cache[len] = key
end
end
local pmap, nss, kvs, pps = {}, 0, vars.pairsep or '', vars.itersep or ''
for idx = 1, len do
tmp, pmap[nss + 1] = cache[idx], pps
pmap[nss + 2] = keyval_fn(tmp, tbl[tmp], kvs)
nss = nss + 2
end
tmp = vars.oxfordsep or vars.lastsep
if tmp ~= nil and nss > 4 then pmap[nss - 1] = tmp
elseif nss > 2 and vars.lastsep ~= nil then
pmap[nss - 1] = vars.lastsep
end
pmap[1] = vars.header or ''
if vars.footer ~= nil then pmap[nss + 1] = vars.footer end
ctx.params = { [get_parameter_name(ctx.pipe[1])] = table.concat(pmap) }
return argc
end
-- Concatenate the numeric keys from the table of parameters to the numeric
-- keys from the table of options; non-numeric keys from the table of options
-- will prevail over colliding non-numeric keys from the table of parameters
local function concat_params (ctx)
local retval, tbl, nmax = {}, ctx.params, table.maxn(ctx.pipe)
if ctx.subset == 1 then
-- We need only the sequence
for key, val in ipairs(tbl) do retval[key + nmax] = val end
else
if ctx.subset == -1 then
for key in ipairs(tbl) do tbl[key] = nil end
end
for key, val in pairs(tbl) do
if type(key) == 'number' and key > 0 then
retval[key + nmax] = val
else retval[key] = val end
end
end
for key, val in pairs(ctx.pipe) do retval[key] = val end
return retval
end
-- Flush the parameters by calling a custom function for each value (after this
-- function has been invoked `ctx.params` will be no longer usable)
local function flush_params (ctx, fn)
local tbl = ctx.params
if ctx.subset == 1 then
for key, val in ipairs(tbl) do fn(key, val) end
return
end
if ctx.subset == -1 then
for key, val in ipairs(tbl) do tbl[key] = nil end
end
if ctx.sorttype > 0 then
local nums, words, nn, nw = get_key_list_sorted(tbl, natural_sort)
if ctx.sorttype == 2 then
for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end
for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end
return
end
for idx = 1, nn do fn(nums[idx], tbl[nums[idx]]) end
for idx = 1, nw do fn(words[idx], tbl[words[idx]]) end
return
end
if ctx.subset ~= -1 then
for key, val in ipairs(tbl) do
fn(key, val)
tbl[key] = nil
end
end
for key, val in pairs(tbl) do fn(key, val) end
end
-- Flush the parameters by calling one of two custom functions for each value
-- (after this function has been invoked `ctx.params` will be no longer usable)
local function mixed_flush_params (ctx, fn_seq, fn_oth)
if ctx.subset == 1 then
for key, val in ipairs(ctx.params) do fn_seq(key, val) end
return
end
if ctx.subset == -1 then
flush_params(ctx, fn_oth)
return
end
local tbl = ctx.params
if ctx.sorttype > 0 then
local nums, words, nn, nw = get_key_list_sorted(tbl, natural_sort)
local sequence = {}
for key, val in ipairs(tbl) do sequence[key] = val end
if ctx.sorttype == 2 then
for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end
end
for idx = 1, nn do
if sequence[nums[idx]] then fn_seq(nums[idx], sequence[nums[idx]])
else fn_oth(nums[idx], tbl[nums[idx]]) end
end
if ctx.sorttype ~= 2 then
for idx = 1, nw do fn_oth(words[idx], tbl[words[idx]]) end
end
return
end
for key, val in ipairs(tbl) do
fn_seq(key, val)
tbl[key] = nil
end
for key, val in pairs(tbl) do fn_oth(key, val) end
end
-- Finalize and return a concatenated list
local function finalize_and_return_concatenated_list (ctx, lst, len, modsize)
if len > 0 then
local tmp = ctx.oxfordsep or ctx.lastsep
if tmp ~= nil and len > modsize * 2 then
lst[len - modsize + 1] = tmp
elseif len > modsize and ctx.lastsep ~= nil then
lst[len - modsize + 1] = ctx.lastsep
end
lst[1] = ctx.header or ''
if ctx.footer ~= nil then lst[len + 1] = ctx.footer end
ctx.text = table.concat(lst)
else ctx.text = ctx.ifngiven or '' end
end
--- ---
--- PUBLIC ENVIRONMENT ---
--- ________________________________ ---
--- ---
--[[ Modifiers ]]--
-------------------
-- Syntax: #invoke:params|sequential|pipe to
library.sequential = function (ctx)
if ctx.subset == 1 then error(modulename ..
': The ‘sequential’ directive has been provided more than once', 0) end
if ctx.subset == -1 then error(modulename ..
': The two directives ‘non-sequential’ and ‘sequential’ are in contradiction with each other', 0) end
if ctx.sorttype > 0 then error(modulename ..
': The ‘all_sorted’ and ‘reassorted’ directives are redundant when followed by ‘sequential’', 0) end
ctx.iterfunc, ctx.subset = ipairs, 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|non-sequential|pipe to
library['non-sequential'] = function (ctx)
if ctx.subset == -1 then error(modulename ..
': The ‘non-sequential’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The two directives ‘sequential’ and ‘non-sequential’ are in contradiction with each other', 0) end
ctx.iterfunc, ctx.subset = pairs, -1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|all_sorted|pipe to
library.all_sorted = function (ctx)
if ctx.sorttype == 1 then error(modulename ..
': The ‘all_sorted’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The ‘all_sorted’ directive is redundant after ‘sequential’', 0) end
if ctx.sorttype == 2 then error(modulename ..
': The two directives ‘reassorted’ and ‘sequential’ are in contradiction with each other', 0) end
ctx.sorttype = 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|reassorted|pipe to
library.reassorted = function (ctx)
if ctx.sorttype == 2 then error(modulename ..
': The ‘reassorted’ directive has been provided more than once', 0) end
if ctx.subset == 1 then error(modulename ..
': The ‘reassorted’ directive is redundant after ‘sequential’', 0) end
if ctx.sorttype == 1 then error(modulename ..
': The two directives ‘sequential’ and ‘reassorted’ are in contradiction with each other', 0) end
ctx.sorttype = 2
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|setting|directives|...|pipe to
library.setting = function (ctx)
local argc = set_strings_from_opts(ctx, ctx.pipe, 1)
if argc < 2 then error(modulename ..
', ‘setting’: No directive was given', 0) end
return context_iterate(ctx, argc + 1)
end
-- Syntax: #invoke:params|scoring|new parameter name|[container]|pipe to
library.scoring = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘scoring’: No parameter name was provided', 0) end
local tmp
local retval, opts = 0, ctx.pipe
for _ in pairs(ctx.params) do retval = retval + 1 end
if opts[2] ~= nil then tmp = opts[2]:match'^%s*(.*%S)' end
if tmp == 'in_substack' then
new_substack(ctx)[get_parameter_name(opts[1])] = tostring(retval)
return context_iterate(ctx, 3)
end
ctx.params[get_parameter_name(opts[1])] = tostring(retval)
return context_iterate(ctx, tmp == 'here' and 3 or 2)
end
-- Syntax: #invoke:params|squeezing|pipe to
library.squeezing = function (ctx)
local store, indices, tbl, newlen = {}, {}, ctx.params, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
newlen = newlen + 1
indices[newlen], store[key], tbl[key] = key, val, nil
end
end
table.sort(indices)
for idx = 1, newlen do tbl[idx] = store[indices[idx]] end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|filling_the_gaps|pipe to
library.filling_the_gaps = function (ctx)
local newval, tbl, tmp, nmin, nmax, nnums =
ctx.pipe[1], ctx.params, {}, 1, nil, -1
if newval == nil then error(modulename ..
', ‘filling_the_gaps’: No value was provided', 0) end
for key, val in pairs(tbl) do
if type(key) == 'number' then
if nmax == nil then
if key < nmin then nmin = key end
nmax = key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
tmp[key], nnums = val, nnums + 1
end
end
if nmax ~= nil and nmax - nmin > nnums then
ctx.n_available = ctx.n_available + nmin + nnums - nmax
if ctx.n_available < 0 then error(modulename ..
', ‘filling_the_gaps’: It is possible to fill at most ' ..
tostring(maxfill) .. ' parameters', 0) end
for idx = nmin, nmax, 1 do tbl[idx] = newval end
for key, val in pairs(tmp) do tbl[key] = val end
end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|clearing|pipe to
library.clearing = function (ctx)
local tbl, numerics = ctx.params, {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key], tbl[key] = val, nil
end
end
for key, val in ipairs(numerics) do tbl[key] = val end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|cutting|left cut|right cut|pipe to
library.cutting = function (ctx)
local lcut = tonumber(ctx.pipe[1])
if lcut == nil or math.floor(lcut) ~= lcut then error(modulename ..
', ‘cutting’: Left cut must be an integer number', 0) end
local rcut = tonumber(ctx.pipe[2])
if rcut == nil or math.floor(rcut) ~= rcut then error(modulename ..
', ‘cutting’: Right cut must be an integer number', 0) end
local tbl = ctx.params
local len = #tbl
if lcut < 0 then lcut = len + lcut end
if rcut < 0 then rcut = len + rcut end
local tot = lcut + rcut
if tot > 0 then
local cache = {}
if tot >= len then
for key in ipairs(tbl) do tbl[key] = nil end
tot = len
else
for idx = len - rcut + 1, len, 1 do tbl[idx] = nil end
for idx = 1, lcut, 1 do tbl[idx] = nil end
end
for key, val in pairs(tbl) do
if type(key) == 'number' and key > 0 then
if key > len then cache[key - tot] = val
else cache[key - lcut] = val end
tbl[key] = nil
end
end
for key, val in pairs(cache) do tbl[key] = val end
end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|cropping|left crop|right crop|pipe to
library.cropping = function (ctx)
local lcut = tonumber(ctx.pipe[1])
if lcut == nil or math.floor(lcut) ~= lcut then error(modulename ..
', ‘cropping’: Left crop must be an integer number', 0) end
local rcut = tonumber(ctx.pipe[2])
if rcut == nil or math.floor(rcut) ~= rcut then error(modulename ..
', ‘cropping’: Right crop must be an integer number', 0) end
local tbl = ctx.params
local nmin, nmax
for key in pairs(tbl) do
if type(key) == 'number' then
if nmin == nil then nmin, nmax = key, key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
end
end
if nmin ~= nil then
local len = nmax - nmin + 1
if lcut < 0 then lcut = len + lcut end
if rcut < 0 then rcut = len + rcut end
if lcut + rcut - len > -1 then
for key in pairs(tbl) do
if type(key) == 'number' then tbl[key] = nil end
end
elseif lcut + rcut > 0 then
for idx = nmax - rcut + 1, nmax do tbl[idx] = nil end
for idx = nmin, nmin + lcut - 1 do tbl[idx] = nil end
local lshift = nmin + lcut - 1
if lshift > 0 then
for idx = lshift + 1, nmax, 1 do
tbl[idx - lshift], tbl[idx] =
tbl[idx], nil
end
end
end
end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|purging|start offset|length|pipe to
library.purging = function (ctx)
local idx = tonumber(ctx.pipe[1])
if idx == nil or math.floor(idx) ~= idx then error(modulename ..
', ‘purging’: Start offset must be an integer number', 0) end
local len = tonumber(ctx.pipe[2])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘purging’: Length must be an integer number', 0) end
local tbl = ctx.params
if len < 1 then
len = len + table.maxn(tbl)
if idx > len then return context_iterate(ctx, 3) end
len = len - idx + 1
end
ctx.params = copy_table_reduced(tbl, idx, len)
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|backpurging|start offset|length|pipe to
library.backpurging = function (ctx)
local last = tonumber(ctx.pipe[1])
if last == nil or math.floor(last) ~= last then error(modulename ..
', ‘backpurging’: Start offset must be an integer number', 0) end
local len = tonumber(ctx.pipe[2])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘backpurging’: Length must be an integer number', 0) end
local idx
local tbl = ctx.params
if len > 0 then
idx = last - len + 1
else
for key in pairs(tbl) do
if type(key) == 'number' and (idx == nil or
key < idx) then idx = key end
end
if idx == nil then return context_iterate(ctx, 3) end
idx = idx - len
if last < idx then return context_iterate(ctx, 3) end
len = last - idx + 1
end
ctx.params = copy_table_reduced(ctx.params, idx, len)
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|shifting|addend|pipe to
library.shifting = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local nshift = tonumber(ctx.pipe[1])
if nshift == nil or nshift == 0 or math.floor(nshift) ~= nshift then
error(modulename .. ', ‘shifting’: A non-zero integer number must be provided', 0) end
local tbl = {}
for key, val in pairs(ctx.params) do
if type(key) == 'number' then tbl[key + nshift] = val
else tbl[key] = val end
end
ctx.params = tbl
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|reversing_numeric_names|pipe to
library.reversing_numeric_names = function (ctx)
local tbl, numerics, nmax = ctx.params, {}, 0
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key], tbl[key] = val, nil
if key > nmax then nmax = key end
end
end
for key, val in pairs(numerics) do tbl[nmax - key + 1] = val end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|pivoting_numeric_names|pipe to
--[[
library.pivoting_numeric_names = function (ctx)
local tbl = ctx.params
local shift = #tbl + 1
if shift < 2 then return library.reversing_numeric_names(ctx) end
local numerics = {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key] = val
tbl[key] = nil
end
end
for key, val in pairs(numerics) do tbl[shift - key] = val end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|mirroring_numeric_names|pipe to
--[[
library.mirroring_numeric_names = function (ctx)
local nmax, nmin
local tbl, numerics = ctx.params, {}
for key, val in pairs(tbl) do
if type(key) == 'number' then
numerics[key] = val
tbl[key] = nil
if nmax == nil then nmin, nmax = key, key
elseif key > nmax then nmax = key
elseif key < nmin then nmin = key end
end
end
for key, val in pairs(numerics) do tbl[nmax + nmin - key] = val end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|swapping_numeric_names|pipe to
--[[
library.swapping_numeric_names = function (ctx)
local tmp
local tbl, cache, nsize = ctx.params, {}, 0
for key in pairs(tbl) do
if type(key) == 'number' then
nsize = nsize + 1
cache[nsize] = key
end
end
table.sort(cache)
for idx = math.floor(nsize / 2), 1, -1 do
tmp = tbl[cache[idx] ]
tbl[cache[idx] ] = tbl[cache[nsize - idx + 1] ]
tbl[cache[nsize - idx + 1] ] = tmp
end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|sorting_sequential_values|[criterion]|pipe to
library.sorting_sequential_values = function (ctx)
local sortfn
if ctx.pipe[1] ~= nil then
sortfn = sortfunctions[ctx.pipe[1]:match'^%s*(.-)%s*$']
end
if sortfn then table.sort(ctx.params, sortfn)
else table.sort(ctx.params) end -- i.e. either `false` or `nil`
if sortfn == nil then return context_iterate(ctx, 1) end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|splicing|[add to position]|position|increment|
-- [number of elements to write]|...|pipe to
library.splicing = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp2, argc, pos, refp
local opts, tbl = ctx.pipe, ctx.params
local tmp1 = opts[1]
if tmp1 ~= nil then
tmp2 = tonumber(tmp1)
if tmp2 == nil or math.floor(tmp2) ~= tmp2 then
pos, argc, tmp2 = tonumber(opts[2]), 4,
tmp1:match'^%s*(.*%S)'
if tmp2 ~= nil then
refp = position_references[tmp2]
if refp == nil then error(modulename ..
', ‘splicing’: ‘' .. tostring(tmp2) ..
'’ is not a valid first argument', 0) end
else refp = 0 end
else pos, argc, refp = tmp2, 3, 0 end
else pos, argc, refp = tonumber(opts[2]), 4, 0 end
if pos == nil or math.floor(pos) ~= pos then error(modulename ..
', ‘splicing’: The position must be an integer number', 0) end
local len = tonumber(opts[argc - 1])
if len == nil or math.floor(len) ~= len then error(modulename ..
', ‘splicing’: The increment must be an integer number', 0) end
local insn = tonumber(opts[argc])
if len == 0 and (insn == nil or insn < 1) then error(modulename ..
', ‘splicing’: When the increment is zero the number of elements to write cannot be zero', 0) end
if refp == 2 then
for _ in ipairs(tbl) do pos = pos + 1 end
refp = 0
end
tmp1, tmp2 = nil, nil
if refp ~= 0 or len ~= 0 then
for key, val in pairs(tbl) do
if type(key) == 'number' then
if tmp1 == nil then tmp1, tmp2 = key, key
elseif key < tmp1 then tmp1 = key
elseif key > tmp2 then tmp2 = key end
end
end
end
if tmp2 == nil then len = 0
elseif refp == 3 then pos = pos + tmp2
elseif refp == 1 then pos = pos + tmp1 end
if len > 0 and pos + len > tmp1 and pos <= tmp2 then
tbl = copy_table_expanded(tbl, pos, len)
elseif len < 0 and pos - len > tmp1 and pos <= tmp2 then
tbl = copy_table_reduced(tbl, pos, -len)
else tbl = copy_or_ref_table(tbl, tbl ~= ctx.oparams) end
ctx.params = tbl
if insn == nil or insn < 0 or math.floor(insn) ~= insn then
return context_iterate(ctx, argc)
end
tmp1 = argc - pos + 1
for key = pos, pos + insn - 1 do tbl[key] = opts[key + tmp1] end
return context_iterate(ctx, argc + insn + 1)
end
-- Syntax: #invoke:params|imposing|name|value|pipe to
library.imposing = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘imposing’: Missing parameter name to impose', 0) end
ctx.params[get_parameter_name(ctx.pipe[1])] = ctx.pipe[2]
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|providing|name|value|pipe to
library.providing = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘providing’: Missing parameter name to provide', 0) end
local key = get_parameter_name(ctx.pipe[1])
if ctx.params[key] == nil then ctx.params[key] = ctx.pipe[2] end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|reassigning|source|destination|[mode]|pipe to
library.reassigning = function (ctx)
local opts, tbl = ctx.pipe, ctx.params
if opts[1] == nil then error(modulename ..
', ‘reassigning’: Missing source parameter', 0) end
if opts[2] == nil then error(modulename ..
', ‘reassigning’: Missing destination parameter', 0) end
local mode, argc
local src = get_parameter_name(opts[1])
local val = tbl[src]
if opts[3] ~= nil then mode = a_modes[opts[3]:match'^%s*(.-)%s*$'] end
if mode == nil then mode, argc = 0, 3 else argc = 4 end
if val == nil and mode > 1 then return context_iterate(ctx, argc) end
local dest = get_parameter_name(opts[2])
local tmp = tbl[dest] == nil
if mode % 2 == 0 or (mode == 7 and tmp) then tbl[src] = nil end
if tmp or mode < 4 then tbl[dest] = val end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|discarding|name|[how many]|pipe to
library.discarding = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘discarding’: Missing parameter name to discard', 0) end
local len = tonumber(ctx.pipe[2])
if len == nil then
ctx.params[get_parameter_name(ctx.pipe[1])] = nil
return context_iterate(ctx, 2)
end
local key = tonumber(ctx.pipe[1])
if key == nil or math.floor(key) ~= key then error(modulename ..
', ‘discarding’: A range was provided, but the initial parameter name is not an integer number', 0) end
if len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘discarding’: A range can only be an integer number greater than zero', 0) end
for idx = key, key + len - 1 do ctx.params[idx] = nil end
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|excluding_non-numeric_names|pipe to
library['excluding_non-numeric_names'] = function (ctx)
local tmp = ctx.params
for key, val in pairs(tmp) do
if type(key) ~= 'number' then tmp[key] = nil end
end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|excluding_numeric_names|pipe to
library.excluding_numeric_names = function (ctx)
local tmp = ctx.params
for key, val in pairs(tmp) do
if type(key) == 'number' then tmp[key] = nil end
end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|with_name_matching|target 1|[plain flag 1]|[or]
-- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag
-- N]|pipe to
library.with_name_matching = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp, ptn
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_name_matching')
local tbl, newparams = ctx.params, {}
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
tmp = ptn[1]
if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then
tmp = tonumber(tmp)
end
newparams[tmp] = tbl[tmp]
else
for key, val in pairs(tbl) do
if tostring(key):find(ptn[1], 1, ptn[2]) then
newparams[key] = val
end
end
end
end
ctx.params = newparams
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_name_not_matching|target 1|[plain flag 1]
-- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain
-- flag N]|pipe to
library.with_name_not_matching = function (ctx)
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_name_not_matching')
local tbl = ctx.params
if nptns == 1 and targets[1][3] then
local tmp = targets[1][1]
if tmp == '0' or tmp:find'^%-?[1-9]%d*$' ~= nil then
tbl[tonumber(tmp)] = nil
else tbl[tmp] = nil end
return context_iterate(ctx, argc)
end
local yesmatch, ptn
for key in pairs(tbl) do
yesmatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if tostring(key) ~= ptn[1] then
yesmatch = false
break
end
elseif not tostring(key):find(ptn[1], 1, ptn[2]) then
yesmatch = false
break
end
end
if yesmatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_value_matching|target 1|[plain flag 1]|[or]
-- |[target 2]|[plain flag 2]|[or]|[...]|[target N]|[plain flag
-- N]|pipe to
library.with_value_matching = function (ctx)
local nomatch, ptn
local tbl = ctx.params
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_value_matching')
for key, val in pairs(tbl) do
nomatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if val == ptn[1] then
nomatch = false
break
end
elseif val:find(ptn[1], 1, ptn[2]) then
nomatch = false
break
end
end
if nomatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|with_value_not_matching|target 1|[plain flag 1]
-- |[and]|[target 2]|[plain flag 2]|[and]|[...]|[target N]|[plain
-- flag N]|pipe to
library.with_value_not_matching = function (ctx)
local yesmatch, ptn
local tbl = ctx.params
local targets, nptns, argc = load_pattern_args(ctx.pipe,
'with_value_not_matching')
for key, val in pairs(tbl) do
yesmatch = true
for idx = 1, nptns do
ptn = targets[idx]
if ptn[3] then
if val ~= ptn[1] then
yesmatch = false
break
end
elseif not val:find(ptn[1], 1, ptn[2]) then
yesmatch = false
break
end
end
if yesmatch then tbl[key] = nil end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|keeping_at_most|number of parameters to pick|pipe to
library.keeping_at_most = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local len = tonumber(ctx.pipe[1])
if len == nil or len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘keeping_at_most’: The number of parameters to keep must be an integer greater than zero', 0) end
ctx.params = copy_table_maxn({}, ctx.params, len)
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|trimming_values|pipe to
library.trimming_values = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:match'^%s*(.-)%s*$' end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mapping_to_lowercase|pipe to
library.mapping_to_lowercase = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:lower() end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mapping_to_uppercase|pipe to
library.mapping_to_uppercase = function (ctx)
local tbl = ctx.params
for key, val in pairs(tbl) do tbl[key] = val:upper() end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mapping_by_calling|template name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to
library.mapping_by_calling = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘mapping_by_calling’: No template name was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.values_only, ctx.params)
local model = { title = tname, args = margs }
value_maps[looptype](tbl, margs, karg, varg, function ()
return ctx.frame:expandTemplate(model)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_invoking|module name|function name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.mapping_by_invoking = function (ctx)
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘mapping_by_invoking’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘mapping_by_invoking’: No function name was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 2, mapping_styles.values_only, ctx.params)
local model = { title = 'Module:' .. mname, args = margs }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘mapping_by_invoking’: The function ‘' .. fname ..
'’ does not exist', 0) end
value_maps[looptype](tbl, margs, karg, varg, function ()
return tostring(mfunc(ctx.frame:newChild(model)))
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_magic|parser function|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.mapping_by_magic = function (ctx)
local magic
local opts = ctx.pipe
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘mapping_by_magic’: No parser function was provided', 0) end
local margs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.values_only, ctx.params)
value_maps[looptype](tbl, margs, karg, varg, function ()
return ctx.frame:callParserFunction(magic, margs)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_replacing|target|replace|[count]|[plain
-- flag]|pipe to
library.mapping_by_replacing = function (ctx)
local ptn, repl, nmax, flg, argc, die =
load_replace_args(ctx.pipe, 'mapping_by_replacing')
if die then return context_iterate(ctx, argc) end
local tbl = ctx.params
if flg == 3 then
for key, val in pairs(tbl) do
if val == ptn then tbl[key] = repl end
end
else
if flg == 2 then
-- Copied from Module:String's `str._escapePattern()`
ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')
end
for key, val in pairs(tbl) do
tbl[key] = val:gsub(ptn, repl, nmax)
end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|mapping_by_mixing|mixing string|pipe to
library.mapping_by_mixing = function (ctx)
if ctx.pipe[1] == nil then error(modulename ..
', ‘mapping_by_mixing’: No mixing string was provided', 0) end
local tbl, mix = ctx.params, ctx.pipe[1]
if mix == '$#' then
for key in pairs(tbl) do tbl[key] = tostring(key) end
return context_iterate(ctx, 2)
end
local skel, cnv, n_parts = parse_placeholder_string(mix)
for key, val in pairs(tbl) do
for idx = 2, n_parts, 2 do
if skel[idx] then cnv[idx] = val
else cnv[idx] = tostring(key) end
end
tbl[key] = table.concat(cnv)
end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|mapping_to_names|pipe to
--[[
library.mapping_to_names = function (ctx)
local tbl = ctx.params
for key in pairs(tbl) do tbl[key] = tostring(key) end
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|renaming_to_lowercase|pipe to
library.renaming_to_lowercase = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do
if type(key) == 'string' then cache[key:lower()] = val else
cache[key] = val end
end
ctx.params = cache
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|renaming_to_uppercase|pipe to
library.renaming_to_uppercase = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do
if type(key) == 'string' then cache[key:upper()] = val else
cache[key] = val end
end
ctx.params = cache
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|renaming_to_sequence|[sort order]|pipe to
library.renaming_to_sequence = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache, len
local tbl = ctx.params
local sortfn, argc, do_sort = load_sort_opt(ctx.pipe[1])
if do_sort then
local words, wl
cache, words, len, wl = get_key_list_sorted(tbl, sortfn)
for idx = 1, len do cache[idx] = tbl[cache[idx]] end
for idx = 1, wl do cache[len + idx] = tbl[words[idx]] end
else
len, cache = 0, {}
for _, val in pairs(tbl) do
len = len + 1
cache[len] = val
end
end
ctx.params = cache
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_calling|template name|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- parameters]|[parameter 1]|[parameter 2]|[...]|[parameter N]|pipe to
library.renaming_by_calling = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘renaming_by_calling’: No template name was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.names_only, ctx.params)
local model = { title = tname, args = rargs }
map_names(tbl, rargs, karg, varg, looptype, function ()
return ctx.frame:expandTemplate(model)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_invoking|module name|function
-- name|[call style]|[let/use]|[...]|[let/use]|[...]|[number of
-- additional arguments]|[argument 1]|[argument 2]|[...]|[argument
-- N]|pipe to
library.renaming_by_invoking = function (ctx)
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘renaming_by_invoking’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘renaming_by_invoking’: No function name was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 2, mapping_styles.names_only, ctx.params)
local model = { title = 'Module:' .. mname, args = rargs }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘renaming_by_invoking’: The function ‘' .. fname ..
'’ does not exist', 0) end
map_names(tbl, rargs, karg, varg, looptype, function ()
return tostring(mfunc(ctx.frame:newChild(model)))
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_magic|parser function|[call
-- style]|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.renaming_by_magic = function (ctx)
local opts = ctx.pipe
local magic
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘renaming_by_magic’: No parser function was provided', 0) end
local rargs, argc, looptype, karg, varg, tbl, mem =
load_callback_opts(opts, 1, mapping_styles.names_only, ctx.params)
map_names(tbl, rargs, karg, varg, looptype, function ()
return ctx.frame:callParserFunction(magic, rargs)
end)
for key, val in pairs(mem) do tbl[key] = val end
ctx.params = tbl
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_replacing|target|replace|[count]|[plain
-- flag]|pipe to
library.renaming_by_replacing = function (ctx)
local ptn, repl, nmax, flg, argc, die =
load_replace_args(ctx.pipe, 'renaming_by_replacing')
if die then return context_iterate(ctx, argc) end
local tbl = ctx.params
if flg == 3 then
ptn = get_parameter_name(ptn)
local val = tbl[ptn]
if val ~= nil then
tbl[ptn], tbl[get_parameter_name(repl)] = nil, val
end
else
if flg == 2 then
-- Copied from Module:String's `str._escapePattern()`
ptn = ptn:gsub('[%(%)%.%%%+%-%*%?%[%^%$%]]', '%%%0')
end
local cache = {}
for key, val in pairs(tbl) do
steal_if_renamed(val, tbl, key, cache,
tostring(key):gsub(ptn, repl, nmax))
end
for key, val in pairs(cache) do tbl[key] = val end
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|renaming_by_mixing|mixing string|pipe to
library.renaming_by_mixing = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
if ctx.pipe[1] == nil then error(modulename ..
', ‘renaming_by_mixing’: No mixing string was provided', 0) end
local mix = ctx.pipe[1]:match'^%s*(.-)%s*$'
local cache = {}
if mix == '$@' then
for _, val in pairs(ctx.params) do
cache[get_parameter_name(val)] = val
end
else
local skel, canvas, n_parts = parse_placeholder_string(mix)
for key, val in pairs(ctx.params) do
for idx = 2, n_parts, 2 do
if skel[idx] then canvas[idx] = val
else canvas[idx] = tostring(key) end
end
cache[get_parameter_name(table.concat(canvas))] = val
end
end
ctx.params = cache
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|renaming_to_values|pipe to
--[[
library.renaming_to_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for _, val in pairs(ctx.params) do cache[val] = val end
ctx.params = cache
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|grouping_by_calling|template
-- name|[let/use]|[...]|[let/use]|[...]|[number of additional
-- arguments]|[argument 1]|[argument 2]|[...]|[argument N]|pipe to
library.grouping_by_calling = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tmp, argc, tbl, mem = load_child_opts(ctx.pipe, 2, 0, ctx.params)
local gargs = {}
for key, val in pairs(tmp) do
if type(key) == 'number' and key < 1 then gargs[key - 1] = val
else gargs[key] = val end
end
tmp = ctx.pipe[1]
if tmp ~= nil then tmp = tmp:match'^%s*(.*%S)' end
if tmp == nil then error(modulename ..
', ‘grouping_by_calling’: No template name was provided', 0) end
local model = { title = tmp }
local groups = make_groups(tbl)
for gid, group in pairs(groups) do
for key, val in pairs(gargs) do group[key] = val end
group[0], model.args = gid, group
groups[gid] = ctx.frame:expandTemplate(model)
end
for key, val in pairs(mem) do groups[key] = val end
ctx.params = groups
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|parsing|string to parse|[trim flag]|[iteration
-- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to
library.parsing = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘parsing’: No string to parse was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, 2, '|', '=')
parse_parameter_string(ctx.params, opts[1], isep, iplain, psep, pplain,
trimnamed, trimunnamed)
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|reinterpreting|parameter to reinterpret|[trim
-- flag]|[iteration delimiter setter]|[...]|[key-value delimiter
-- setter]|[...]|pipe to
library.reinterpreting = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘reinterpreting’: No parameter to reinterpret was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, 2, '|', '=')
local tbl, tmp = ctx.params, get_parameter_name(opts[1])
local str = tbl[tmp]
if str ~= nil then
tbl[tmp] = nil
parse_parameter_string(tbl, str, isep, iplain, psep, pplain,
trimnamed, trimunnamed)
end
return context_iterate(ctx, argc)
end
-- Syntax: #invoke:params|evaluating|string to parse|[trim flag]|[iteration
-- delimiter setter]|[...]|[key-value delimiter setter]|[...]|pipe to
library.evaluating = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘evaluating’: No string to parse was provided', 0) end
local isep, iplain, psep, pplain, trimnamed, trimunnamed, argc =
load_parse_opts(opts, 2, '!', ':')
if opts[1]:match'^%s*(.*%S)' == nil then
ctx.pipe = copy_or_ref_table(opts, opts ~= ctx.opipe)
return context_iterate(ctx, argc)
end
local new_opts, cache = {}, {}
local shift = parse_parameter_string(cache, opts[1], isep, iplain,
psep, pplain, trimnamed, trimunnamed) - argc
for key, val in pairs(opts) do
if type(key) ~= 'number' or key < 1 then new_opts[key] = val
elseif key >= argc then new_opts[key + shift] = val end
end
for key, val in pairs(cache) do new_opts[key] = val end
ctx.pipe = new_opts
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|mixing_names_and_values|mixing string|pipe to
library.mixing_names_and_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
if ctx.pipe[1] == nil then error(modulename ..
', ‘mixing_names_and_values’: No mixing string was provided for parameter names', 0) end
if ctx.pipe[2] == nil then error(modulename ..
', ‘mixing_names_and_values’: No mixing string was provided for parameter values', 0) end
local tmp
local mix_k = ctx.pipe[1]:match'^%s*(.-)%s*$'
local cache, mix_v = {}, ctx.pipe[2]
if mix_k == '$@' and mix_v == '$@' then
for _, val in pairs(ctx.params) do
cache[get_parameter_name(val)] = val
end
elseif mix_k == '$@' and mix_v == '$#' then
for key, val in pairs(ctx.params) do
cache[get_parameter_name(val)] = tostring(key)
end
elseif mix_k == '$#' and mix_v == '$#' then
for key in pairs(ctx.params) do cache[key] = tostring(key) end
else
local skel_k, cnv_k, n_parts_k = parse_placeholder_string(mix_k)
local skel_v, cnv_v, n_parts_v = parse_placeholder_string(mix_v)
for key, val in pairs(ctx.params) do
tmp = tostring(key)
for idx = 2, n_parts_k, 2 do
if skel_k[idx] then cnv_k[idx] = val else cnv_k[idx] = tmp end
end
for idx = 2, n_parts_v, 2 do
if skel_v[idx] then cnv_v[idx] = val else cnv_v[idx] = tmp end
end
cache[get_parameter_name(table.concat(cnv_k))] =
table.concat(cnv_v)
end
end
ctx.params = cache
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|swapping_names_and_values|pipe to
--[[
library.swapping_names_and_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local cache = {}
for key, val in pairs(ctx.params) do cache[val] = key end
ctx.params = cache
return context_iterate(ctx, 1)
end
]]--
-- Syntax: #invoke:params|combining|new parameter name|[sort
-- order]|[with/without flushed glue]|setting directives|...|pipe to
library.combining = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
return context_iterate(ctx, combine_parameters(
ctx,
function (key, val, kvs) return key .. kvs .. val end,
'combining'
) + 1)
end
-- Syntax: #invoke:params|combining_values|new parameter name|[sort
-- order]|[with/without flushed glue]|setting directives|...|pipe to
library.combining_values = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
return context_iterate(ctx, combine_parameters(
ctx,
function (key, val, kvs) return val end,
'combining_values'
) + 1)
end
-- Syntax: #invoke:params|combining_by_calling|template name|new parameter
-- name|pipe to
library.combining_by_calling = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local tname = ctx.pipe[1]
if tname ~= nil then tname = tname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_calling’: No template name was provided', 0) end
if ctx.pipe[2] == nil then error(modulename ..
', ‘combining_by_calling’: No parameter name was provided', 0) end
ctx.params = {
[get_parameter_name(ctx.pipe[2])] = ctx.frame:expandTemplate{
title = tname,
args = ctx.params
}
}
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|combining_by_invoking|module name|function name|new
-- parameter name|pipe to
library.combining_by_invoking = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local mname = ctx.pipe[1]
if mname ~= nil then mname = mname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_invoking’: No module name was provided', 0) end
local fname = ctx.pipe[2]
if fname ~= nil then fname = fname:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_invoking’: No function name was provided', 0) end
if ctx.pipe[3] == nil then error(modulename ..
', ‘combining_by_invoking’: No parameter name was provided', 0) end
local model = { title = 'Module:' .. mname, args = ctx.params }
local mfunc = require(model.title)[fname]
if mfunc == nil then error(modulename ..
', ‘mapping_by_invoking’: The function ‘' .. fname ..
'’ does not exist', 0) end
ctx.params = {
[get_parameter_name(ctx.pipe[3])] =
tostring(mfunc(ctx.frame:newChild(model)))
}
return context_iterate(ctx, 4)
end
-- Syntax: #invoke:params|combining_by_magic|parser function|new parameter
-- name|pipe to
library.combining_by_magic = function (ctx)
-- NOTE: `ctx.params` might be the original metatable! As a modifier,
-- this function MUST create a copy of it before returning
local magic = ctx.pipe[1]
if magic ~= nil then magic = magic:match'^%s*(.*%S)'
else error(modulename ..
', ‘combining_by_magic’: No parser function was provided', 0) end
if ctx.pipe[2] == nil then error(modulename ..
', ‘combining_by_magic’: No parameter name was provided', 0) end
ctx.params = {
[get_parameter_name(ctx.pipe[2])] =
ctx.frame:callParserFunction(magic, ctx.params)
}
return context_iterate(ctx, 3)
end
-- Syntax: #invoke:params|snapshotting|[maximum number]|pipe to
library.snapshotting = function (ctx)
return context_iterate(ctx, make_child(ctx, ctx.params, 'snapshotting'))
end
-- Syntax: #invoke:params|remembering|[maximum number]|pipe to
library.remembering = function (ctx)
return context_iterate(ctx, make_child(ctx, ctx.oparams, 'remembering'))
end
-- Syntax: #invoke:params|entering_substack|[new]|pipe to
library.entering_substack = function (ctx)
local tbl, ncurrparent = ctx.params, ctx.n_parents + 1
if ctx.parents == nil then ctx.parents = { tbl }
else ctx.parents[ncurrparent] = tbl end
ctx.n_parents = ncurrparent
if ctx.pipe[1] ~= nil and ctx.pipe[1]:match'^%s*new%s*$' then
ctx.params = {}
return context_iterate(ctx, 2)
end
local currsnap = ctx.n_children
if currsnap > 0 then
ctx.params, ctx.children[currsnap], ctx.n_children =
ctx.children[currsnap], nil, currsnap - 1
else
local newparams = {}
for key, val in pairs(tbl) do newparams[key] = val end
ctx.params = newparams
end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|pulling|parameter name|pipe to
library.pulling = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘pulling’: No parameter to pull was provided', 0) end
local tmp = ctx.n_parents
local parent = tmp < 1 and ctx.oparams or ctx.parents[tmp]
tmp = get_parameter_name(opts[1])
if parent[tmp] ~= nil then ctx.params[tmp] = parent[tmp] end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|recalling|parameter name|pipe to
library.recalling = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘recalling’: No parameter to recall was provided', 0) end
local arg = get_parameter_name(opts[1])
if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end
return context_iterate(ctx, 2)
end
-- Syntax: #invoke:params|finding|parameter name|pipe to
--[[
library.finding = function (ctx)
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘finding’: No parameter to find was provided', 0) end
local arg = get_parameter_name(opts[1])
local parent
for idx = ctx.n_parents, 1, -1 do
parent = ctx.parents[idx]
if parent[arg] ~= nil then
ctx.params[arg] = parent[arg]
return context_iterate(ctx, 2)
end
end
if ctx.oparams[arg] ~= nil then ctx.params[arg] = ctx.oparams[arg] end
return context_iterate(ctx, 2)
end
]]--
-- Syntax: #invoke:params|picking|number of parameters to pick|pipe to
--[[
library.picking = function (ctx)
local len = tonumber(ctx.pipe[1])
if len == nil or len < 1 or math.floor(len) ~= len then error(modulename ..
', ‘picking’: The number of parameters to pick must be an integer greater than zero', 0) end
if ctx.n_parents < 1 then copy_table_maxn(ctx.params, ctx.oparams, len)
else copy_table_maxn(ctx.params, ctx.parents[ctx.n_parents], len) end
return context_iterate(ctx, 2)
end
]]--
-- Syntax: #invoke:params|detaching_substack|pipe to
library.detaching_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘detaching_substack’: No substack has been created', 0) end
local parent = ctx.parents[ncurrparent]
for key in pairs(ctx.params) do parent[key] = nil end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|dropping_substack|pipe to
library.dropping_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘dropping_substack’: No substack has been created', 0) end
ctx.params, ctx.parents[ncurrparent], ctx.n_parents =
ctx.parents[ncurrparent], nil, ncurrparent - 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|leaving_substack|pipe to
library.leaving_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘leaving_substack’: No substack has been created', 0) end
local currsnap = ctx.n_children + 1
if ctx.children == nil then ctx.children = { ctx.params }
else ctx.children[currsnap] = ctx.params end
ctx.params, ctx.parents[ncurrparent], ctx.n_parents, ctx.n_children =
ctx.parents[ncurrparent], nil, ncurrparent - 1, currsnap
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|merging_substack|pipe to
library.merging_substack = function (ctx)
local ncurrparent = ctx.n_parents
if ncurrparent < 1 then error(modulename ..
', ‘merging_substack’: No substack has been created', 0) end
local parent, child = ctx.parents[ncurrparent], ctx.params
ctx.params, ctx.parents[ncurrparent], ctx.n_parents = parent, nil,
ncurrparent - 1
for key, val in pairs(child) do parent[key] = val end
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|flushing|pipe to
library.flushing = function (ctx)
if ctx.n_children < 1 then error(modulename ..
', ‘flushing’: There are no substacks to flush', 0) end
local parent, currsnap = ctx.params, ctx.n_children
for key, val in pairs(ctx.children[currsnap]) do parent[key] = val end
ctx.children[currsnap], ctx.n_children = nil, currsnap - 1
return context_iterate(ctx, 1)
end
-- Syntax: #invoke:params|setting_by_flushing|pipe to
library.setting_by_flushing = function (ctx)
set_strings_from_substack(ctx, ctx, 'setting_by_flushing')
return context_iterate(ctx, 1)
end
--[[ Functions ]]--
-----------------------------
-- Syntax: #invoke:params|count
library.count = function (ctx)
-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables!
local retval = 0
for _ in ctx.iterfunc(ctx.params) do retval = retval + 1 end
if ctx.subset == -1 then retval = retval - #ctx.params end
ctx.text = retval
return false
end
-- Syntax: #invoke:args|concat_and_call|template name|[prepend 1]|[prepend 2]
-- |[...]|[item n]|[named item 1=value 1]|[...]|[named item n=value
-- n]|[...]
library.concat_and_call = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘concat_and_call’: No template name was provided', 0) end
remove_numeric_keys(opts, 1, 1)
ctx.text = ctx.frame:expandTemplate{
title = tname,
args = concat_params(ctx)
}
return false
end
-- Syntax: #invoke:args|concat_and_invoke|module name|function name|[prepend
-- 1]|[prepend 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named
-- item n=value n]|[...]
library.concat_and_invoke = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘concat_and_invoke’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘concat_and_invoke’: No function name was provided', 0) end
remove_numeric_keys(opts, 1, 2)
local mfunc = require('Module:' .. mname)[fname]
if mfunc == nil then error(modulename ..
', ‘concat_and_invoke’: The function ‘' .. fname ..
'’ does not exist', 0) end
ctx.text = mfunc(ctx.frame:newChild{
title = 'Module:' .. mname,
args = concat_params(ctx)
})
return false
end
-- Syntax: #invoke:args|concat_and_magic|parser function|[prepend 1]|[prepend
-- 2]|[...]|[item n]|[named item 1=value 1]|[...]|[named item n=
-- value n]|[...]
library.concat_and_magic = function (ctx)
-- NOTE: `ctx.params` might be the original metatable!
local magic
local opts = ctx.pipe
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘concat_and_magic’: No parser function was provided', 0) end
remove_numeric_keys(opts, 1, 1)
ctx.text = ctx.frame:callParserFunction(magic, concat_params(ctx))
return false
end
-- Syntax: #invoke:params|value_of|parameter name
library.value_of = function (ctx)
-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables!
local opts = ctx.pipe
if opts[1] == nil then error(modulename ..
', ‘value_of’: No parameter name was provided', 0) end
local val
local key = opts[1]:match'^%s*(.-)%s*$'
if key == '0' or key:find'^%-?[1-9]%d*$' ~= nil then
key = tonumber(key)
val = ctx.params[key]
-- No worries: #ctx.params is unused when the modifier is in
-- first position (and therefore `ctx.params` is a metatable)
if val ~= nil and (
ctx.subset ~= -1 or key > #ctx.params or key < 1
) and (
ctx.subset ~= 1 or (key <= #ctx.params and key > 0)
) then
ctx.text = (ctx.header or '') .. val .. (ctx.footer or '')
else ctx.text = ctx.ifngiven or '' end
else
val = ctx.params[key]
if ctx.subset ~= 1 and val ~= nil then ctx.text = (ctx.header
or '') .. val .. (ctx.footer or '')
else ctx.text = ctx.ifngiven or '' end
end
return false
end
-- Syntax: #invoke:params|list
library.list = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or ''
flush_params(ctx, function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3], ret[nss + 4], nss =
pps, key, kvs, val, nss + 4
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 4)
return false
end
-- Syntax: #invoke:params|list_values
library.list_values = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
-- NOTE: `library.coins()` and `library.unique_coins()` rely on us
local ret, nss, pps = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
ret[nss + 1], ret[nss + 2], nss = pps, val, nss + 2
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|list_maybe_with_names
library.list_maybe_with_names = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local ret, nss, kvs, pps = {}, 0, ctx.pairsep or '', ctx.itersep or ''
mixed_flush_params(
ctx,
function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3],
ret[nss + 4], nss = pps, '', '', val, nss + 4
end,
function (key, val)
ret[nss + 1], ret[nss + 2], ret[nss + 3],
ret[nss + 4], nss = pps, key, kvs, val, nss + 4
end
)
finalize_and_return_concatenated_list(ctx, ret, nss, 4)
return false
end
-- Syntax: #invoke:params|coins|[first coin = value 1]|[second coin = value
-- 2]|[...]|[last coin = value N]
--[[
library.coins = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local opts, tbl = ctx.pipe, ctx.params
for key, val in pairs(tbl) do tbl[key] = opts[get_parameter_name(val)] end
return library.list_values(ctx)
end
]]--
-- Syntax: #invoke:params|unique_coins|[first coin = value 1]|[second coin =
-- value 2]|[...]|[last coin = value N]
--[[
library.unique_coins = function (ctx)
local tmp
local opts, tbl = ctx.pipe, ctx.params
for key, val in pairs(tbl) do
tmp = get_parameter_name(val)
tbl[key], opts[tmp] = opts[tmp], nil
end
return library.list_values(ctx)
end
]]
-- Syntax: #invoke:params|for_each|wikitext
library.for_each = function (ctx)
-- NOTE: `ctx.pipe` might be the original metatable!
local ret, nss, pps, txt = {}, 0, ctx.itersep or '', ctx.pipe[1] or ''
local skel, cnv, n_parts = parse_placeholder_string(txt)
flush_params(ctx, function (key, val)
for idx = 2, n_parts, 2 do
if skel[idx] then cnv[idx] = val
else cnv[idx] = tostring(key) end
end
ret[nss + 1], nss = pps, nss + 2
ret[nss] = table.concat(cnv)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each|template name|[append 1]|[append 2]
-- |[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘call_for_each’: No template name was provided', 0) end
local model = { title = tname, args = opts }
local ret, nss, ccs = {}, 0, ctx.itersep or ''
table.insert(opts, 1, true)
flush_params(ctx, function (key, val)
opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|invoke_for_each|module name|module function|[append
-- 1]|[append 2]|[...]|[append n]|[named param 1=value 1]|[...]
-- |[named param n=value n]|[...]
library.invoke_for_each = function (ctx)
local mname, fname
local opts = ctx.pipe
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘invoke_for_each’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘invoke_for_each’: No function name was provided', 0) end
local model = { title = 'Module:' .. mname, args = opts }
local mfunc = require(model.title)[fname]
local ret, nss, ccs = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = mfunc(ctx.frame:newChild(model))
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|magic_for_each|parser function|[append 1]|[append 2]
-- |[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.magic_for_each = function (ctx)
local magic
local opts = ctx.pipe
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘magic_for_each’: No parser function was provided', 0) end
local ret, nss, ccs = {}, 0, ctx.itersep or ''
table.insert(opts, 1, true)
flush_params(ctx, function (key, val)
opts[1], opts[2], ret[nss + 1], nss = key, val, ccs, nss + 2
ret[nss] = ctx.frame:callParserFunction(magic, opts)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each_value|template name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each_value = function (ctx)
local tname
local opts = ctx.pipe
if opts[1] ~= nil then tname = opts[1]:match'^%s*(.*%S)' end
if tname == nil then error(modulename ..
', ‘call_for_each_value’: No template name was provided', 0) end
local model = { title = tname, args = opts }
local ret, nss, ccs = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
opts[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|invoke_for_each_value|module name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.invoke_for_each_value = function (ctx)
local opts = ctx.pipe
local mname, fname
if opts[1] ~= nil then mname = opts[1]:match'^%s*(.*%S)' end
if mname == nil then error(modulename ..
', ‘invoke_for_each_value’: No module name was provided', 0) end
if opts[2] ~= nil then fname = opts[2]:match'^%s*(.*%S)' end
if fname == nil then error(modulename ..
', ‘invoke_for_each_value’: No function name was provided', 0) end
local model = { title = 'Module:' .. mname, args = opts }
local mfunc = require(model.title)[fname]
local ret, nss, ccs = {}, 0, ctx.itersep or ''
remove_numeric_keys(opts, 1, 1)
flush_params(ctx, function (key, val)
opts[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = mfunc(ctx.frame:newChild(model))
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|magic_for_each_value|parser function|[append 1]
-- |[append 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named
-- param n=value n]|[...]
library.magic_for_each_value = function (ctx)
local opts = ctx.pipe
local magic
if opts[1] ~= nil then magic = opts[1]:match'^%s*(.*%S)' end
if magic == nil then error(modulename ..
', ‘magic_for_each_value’: No parser function was provided', 0) end
local ret, nss, ccs = {}, 0, ctx.itersep or ''
flush_params(ctx, function (key, val)
opts[1], ret[nss + 1], nss = val, ccs, nss + 2
ret[nss] = ctx.frame:callParserFunction(magic, opts)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
-- Syntax: #invoke:params|call_for_each_group|template name|[append 1]|[append
-- 2]|[...]|[append n]|[named param 1=value 1]|[...]|[named param
-- n=value n]|[...]
library.call_for_each_group = function (ctx)
-- NOTE: `ctx.pipe` and `ctx.params` might be the original metatables!
local tmp
if ctx.pipe[1] ~= nil then tmp = ctx.pipe[1]:match'^%s*(.*%S)' end
if tmp == nil then error(modulename ..
', ‘call_for_each_group’: No template name was provided', 0) end
local model = { title = tmp }
local opts, ret, nss, ccs = {}, {}, 0, ctx.itersep or ''
for key, val in pairs(ctx.pipe) do
if type(key) == 'number' then opts[key - 1] = val
else opts[key] = val end
end
ctx.pipe = opts
ctx.params = make_groups(ctx.params)
flush_params(ctx, function (gid, group)
for key, val in pairs(opts) do group[key] = val end
group[0], model.args, ret[nss + 1], nss = gid, group, ccs,
nss + 2
ret[nss] = ctx.frame:expandTemplate(model)
end)
finalize_and_return_concatenated_list(ctx, ret, nss, 2)
return false
end
--[[ First-position-only modifiers ]]--
---------------------------------------
-- Syntax: #invoke:params|new|pipe to
static_iface.new = function (child_frame)
local ctx = context_new(child_frame)
ctx.pipe = copy_or_ref_table(ctx.opipe, false)
ctx.params = {}
main_loop(ctx, context_iterate(ctx, 1))
return ctx.text
end
--[[ First-position-only functions ]]--
---------------------------------------
-- Syntax: #invoke:params|self
static_iface.self = function (frame)
return frame:getParent():getTitle()
end
--[[ Public metatable of functions ]]--
---------------------------------------
return setmetatable({}, {
__index = function (_, query)
local fname = query:match'^%s*(.*%S)'
if fname == nil then error(modulename ..
': You must specify a function to call', 0) end
local func = static_iface[fname]
if func ~= nil then return func end
func = library[fname]
if func == nil then error(modulename ..
': The function ‘' .. fname .. '’ does not exist', 0) end
return function (child_frame)
local ctx = context_new(child_frame)
ctx.pipe = copy_or_ref_table(ctx.opipe, refpipe[fname])
ctx.params = copy_or_ref_table(ctx.oparams, refparams[fname])
main_loop(ctx, func)
return ctx.text
end
end
})
9ko1dij40e2ajwgg59fvqm72uoivi2f
ບຣູໂນ ມາດ
0
24465
129338
126559
2026-07-24T04:43:38Z
Seephommah Vongsuvath
23277
/* growthexperiments-addlink-summary-summary:2|0|0 */
129338
wikitext
text/x-wiki
{{Infobox musical artist
| name = ບຣູໂນ ມາດ
| image = BrunoMars24KMagicWorldTourLive (cropped).jpg
| caption = ບຣູໂນ ມາດ ໃນຄອນເສີດ 24K Magic World Tour
| birth_name = ປີເຕີ ຈີນ ເຮີນານເດສ
| birth_date = {{birth date and age|1985|10|8}}
| birth_place = [[ໂຮໂນລູລູ]], [[ຮາວາຍ]], [[ສະຫະລັດອາເມຣິກາ]]
| occupation = {{hlist|ນັກຮ້ອງ|ນັກແຕ່ງເພງ|ໂປຣດິວເຊີ|ນັກເຕັ້ນ}}
| instrument = {{hlist|ສຽງຮ້ອງ|ກີຕ້າ|ເປຍໂນ|ກອງ}}
| genre = [[ປັອບ]], [[ອັນແອນບີ]], [[ຟັງ]], [[ໂຊລ]], [[ຣອກ]]
| label = [[Atlantic Records|ແອດແລນຕິກ]]
| associated_acts = {{hlist|[[Silk Sonic]]|[[The Hooligans]]|[[Lady Gaga]]|[[Rosé]]}}
}}
'''ບຣູໂນ ມາດ''' ({{lang-en|Bruno Mars}}; (ຊື່ຈິງ: '''ປີເຕີ ຈີນ ເຮີນານເດສ'''); ເກີດ 8 ຕຸລາ 1985) ແມ່ນນັກຮ້ອງ, ນັກແຕ່ງເພງ ແລະ ໂປຣດິວເຊີຊາວອາເມຣິກັນ ທີ່ມີຊື່ສຽງລະດັບໂລກ. ເຮອເປັນທີ່ຮູ້ຈັກຈາກການສະແດງສົດທີ່ເຕັມໄປດ້ວຍພະລັງ, ການເຕັ້ນທີ່ໂດດເດັ່ນ ແລະ ແນວເພງທີ່ປະສົມປະສານລະຫວ່າງປັອບ, ອັນແອນບີ, ຟັງ ແລະ ໂຊລ ແບບຍ້ອນຍຸກ (Retro).
ບຣູໂນ ມາດ ຖືເປັນໜຶ່ງໃນສິລະປິນທີ່ຂາຍດີທີ່ສຸດຕະຫຼອດການ ດ້ວຍຍອດຂາຍກວ່າ 130 ລ້ານແຜ່ນທົ່ວໂລກ. ລາວເປັນເຈົ້າຂອງລາງວັນ [[Grammy Awards]] ຈຳນວນ 15 ລາງວັນ. ໃນປີ 2024, ລາວໄດ້ກັບມາສ້າງກະແສຮືຮາອີກຄັ້ງດ້ວຍການຮ່ວມງານກັບ [[ເລດີ້ ກາກ້າ]] ໃນເພງ "Die With A Smile" ແລະ [[ໂຣເຊ]] (Blackpink) ໃນເພງ "APT.".<ref>{{cite news |url=https://www.billboard.com/music/chart-beat/rose-bruno-mars-apt-number-one-billboard-global-charts-1235813589/ |title=Rosé & Bruno Mars’ ‘APT.’ Leaps to No. 1 on Billboard Global Charts |publisher=Billboard |date=2024-10-28 |accessdate=2024-11-01}}</ref>
== ປະຫວັດ ແລະ ການເຮັດວຽກ ==
=== ຊີວິດຊ່ວງຕົ້ນ ===
ບຣູໂນ ມາດ ເກີດແລະເຕີບໃຫຍ່ໃນເມືອງ[[ໂຮໂນລູລູ]] ລັດ[[ຮາວາຍ]] ໃນຄອບຄົວທີ່ມີດົນຕີຢູ່ໃນຫົວໃຈ. ພໍ່ຂອງລາວເປັນຄົນເຊື້ອສາຍປວຍໂຕຣິໂກ ແລະ ແມ່ເປັນຊາວຟິລິບປິນ. ລາວເລີ່ມສະແດງດົນຕີຕັ້ງແຕ່ຍັງນ້ອຍໃນຊື່ "Little Elvis" (ເອວວິສນ້ອຍ). ຫຼັງຈາກຮຽນຈົບມັດທະຍົມ, ລາວໄດ້ຍ້າຍໄປ [[ລອດ ແອນເຈີລິສ]] ເພື່ອຕາມຄວາມຝັນໃນການເປັນນັກຮ້ອງ.
=== 2010–2016: ຄວາມສຳເລັດລະດັບໂລກ ===
ໃນປີ 2010, ລາວໄດ້ປ່ອຍອັນລະບັ້ມຊຸດທຳອິດ ''Doo-Wops & Hooligans'' ເຊິ່ງມີເພງຮິດອະມະຕະຢ່າງ "Just the Way You Are", "Grenade" ແລະ "The Lazy Song".
ຕໍ່ມາໃນປີ 2014, [[ເພງ]] "Uptown Funk" ທີ່ລາວຮ່ວມຮ້ອງກັບ Mark Ronson ໄດ້ກາຍເປັນປາກົດການໄປທົ່ວໂລກ ໂດຍຄອງອັນດັບ 1 ໃນ Billboard Hot 100 ດົນນານເຖິງ 14 ອາທິດ. ໃນປີ 2016, ລາວໄດ້ປ່ອຍອັນລະບັ້ມ ''24K Magic'' ທີ່ກວາດລາງວັນ Grammy ໃຫຍ່ທັງໝົດ ລວມທັງ Album of the Year.
=== 2024–ປະຈຸບັນ: ການຮ່ວມງານຄັ້ງຍິ່ງໃຫຍ່ ===
ຫຼັງຈາກປະສົບຄວາມສຳເລັດກັບໂປຣເຈັກວົງ '''Silk Sonic''' (ຮ່ວມກັບ Anderson .Paak) ໃນປີ 2021, ບຣູໂນ ມາດ ໄດ້ເນັ້ນການທົວຄອນເສີດທົ່ວໂລກ ລວມທັງການມາສະແດງທີ່ບາງກອກ ແລະ [[ປະເທດສິງກະໂປ|ສິງກະໂປ]] ໃນຕົ້ນປີ 2024.
ໃນຊ່ວງທ້າຍປີ 2024, ລາວໄດ້ປ່ອຍຜົນງານເພງພິເສດ 2 ເພງທີ່ປະສົບຄວາມສຳເລັດຢ່າງສູງ:
* '''"Die With A Smile"''' (ຮ່ວມກັບ [[ເລດີ້ ກາກ້າ]]): ເພງບັລລາດຊ້າໆ ທີ່ໄດ້ຮັບຄຳຊົມຈາກນັກວິຈານ.
* '''"APT."''' (ຮ່ວມກັບ [[ໂຣເຊ]]): ເພງຈັງຫວະມ່ວນຊື່ນທີ່ໄດ້ແຮງບັນດານໃຈຈາກເກມວົງເຫຼົ້າເກົາຫຼີ ເຊິ່ງກາຍເປັນໄວຣັລທົ່ວໂລກ ແລະ ຂຶ້ນອັນດັບ 1 ໃນຫຼາຍປະເທດ.<ref>{{cite web |url=https://www.nme.com/news/music/blackpink-rose-bruno-mars-apt-perfect-all-kill-korean-charts-3806786 |title=BLACKPINK’s Rosé and Bruno Mars’ ‘APT.’ achieves “perfect all-kill” |publisher=NME |date=2024-10-27 |accessdate=2024-10-30}}</ref>
== ຜົນງານເພງ ==
=== ອັນລະບັ້ມສະຕູດິໂອ ===
* ''Doo-Wops & Hooligans'' (2010)
* ''Unorthodox Jukebox'' (2012)
* ''24K Magic'' (2016)
* ''The Romantic'' (2026)
=== ອັນລະບັ້ມຮ່ວມ ===
* ''An Evening with Silk Sonic'' (ຮ່ວມກັບ Anderson .Paak ໃນນາມ Silk Sonic) (2021)
=== ຊິງເກິລຍອດນິຍົມ (ຄັດເລືອກ) ===
{| class="wikitable"
! ປີ
! ຊື່ເພງ
! ໝາຍເຫດ
|-
| 2010
| "Just the Way You Are"
| ເພງສ້າງຊື່ສຽງ
|-
| 2014
| "Uptown Funk"
| (ຮ່ວມກັບ Mark Ronson)
|-
| 2016
| "24K Magic"
|
|-
| 2021
| "Leave the Door Open"
| (ໃນນາມ Silk Sonic)
|-
| 2024
| "Die With A Smile"
| (ຮ່ວມກັບ [[ເລດີ້ ກາກ້າ]])
|-
| 2024
| "APT."
| (ຮ່ວມກັບ [[ໂຣເຊ]])
|}
== ອ້າງອິງ ==
{{reflist}}
[[ໝວດ:ນັກຮ້ອງອາເມລິກັນ]]
[[ໝວດ:ບຣູໂນ ມາດ]]
[[ໝວດ:ຜູ້ໄດ້ຮັບລາງວັນກຣາມມີ]]
chz15dki7vc1csxrpemanecniyugzxb