هذه الأداة في مرحلة التطوير المبكر
من المتوقع حدوث تغييرات وأخطاء
قراءة وتحليل وتضمين متغيرات البيئة ومحتوى الملف في كود Elm الخاص بك.
يتم تضمين البيانات مع Embedders . يوجد المضمنون داخل مجلد خاص، elm-embed-scripts
، وهم عبارة عن إعلان Elm مع التوقيع Embed.Task
. العمل مع أدوات التضمين يشبه العمل مع وحدات فك ترميز JSON، يمكنك على سبيل المثال قراءة ملف باستخدام Embed.File.read
، وتحليله باستخدام Embed.andThen
. إذا نجح التحليل، فيمكنك تضمين القيمة باستخدام Embed.succeed
، وإذا فشل، فيمكنك الإبلاغ عن السبب باستخدام Embed.fail
. إذا نجحت جميع أدوات التضمين، فسيتم إنشاء القيم الناتجة ووضعها كرمز Elm داخل src/generated
حيث يمكن استهلاكها بواسطة بقية قاعدة التعليمات البرمجية.
عند التطوير، قد ترغب في استخدام خادم محلي بدلاً من خادم الإنتاج. ولتحقيق ذلك، يمكن تضمين متغير بيئة يحتوي على عنوان URL للخادم المراد استخدامه.
elm-embed-scripts/Server.elm
:
import Embed
import Embed.Environment
server : Embed . Task String
server =
Embed . Environment . string " server_url "
تشغيل elm-embed run
عندما يتم تعيين متغير البيئة server_url
على localhost:8080
سيعطيك هذا داخل src/Generated/Server.elm
:
server : String
server =
" localhost:8080 "
قد ترغب في إنشاء صفحة من مستند تخفيض السعر بدلاً من رمز Elm. سيكون الأسلوب الطبيعي هو تضمين المستند كسلسلة ثم تحليله وعرضه في وقت التشغيل. وهذا له عدة عيوب. التحليل يستغرق وقتا. كما أنه أمر مزعج وعرضة للخطأ لتضمين تخفيض السعر في سلسلة Elm يدويًا. وأخيرًا، يتعين عليك التعامل مع الحالة التي يفشل فيها التحليل وتمنح المستخدم نوعًا من صفحة الخطأ. باستخدام elm-embed
يمكنك قراءة ملف .md
، وتحليله في وقت الإنشاء، وإذا فشل التحليل، فستحصل على الخطأ كمطور في وقت الإنشاء بدلاً من كمستخدم في وقت التشغيل.
يوزع هذا المثال مستند تخفيض السعر باستخدام dillonkearns/elm-markdown
-- elm-embed-scripts/Markdown.elm
import Embed
import Embed.File
import Markdown.Block exposing ( Block (..) , HeadingLevel (..) , Inline (..) )
import Markdown.Parser
document : Embed . Task ( List Block )
document =
Embed . andThen
( markdown ->
case Markdown . Parser . parse markdown of
Ok blocks ->
Embed . succeed blocks
Err _ ->
Embed . fail " Parse error "
)
( Embed . File . read " markdown.md " )
ملاحظة: إذا كنت مهتمًا بهذا، فقد يكون من المفيد الاطلاع على صفحات الدردار أيضًا. يمكنه إجراء تحليل تخفيض السعر في وقت البناء ومجموعة من الأشياء الرائعة الأخرى، بما في ذلك البطاريات. تعد elm-embed
أداة لشيء واحد محدد بينما تعد elm-pages
بمثابة نوع من الصفقات الإطارية.
يضع elm-embed
بعض الوحدات النمطية الخاصة به في elm-embed-scripts
ليستخدمها القائمون على التضمين. يمكنك رؤية واجهة برمجة التطبيقات الكاملة لتلك الوحدات هنا.
سيؤدي تشغيل الكود أدناه إلى تنزيل ملف ثنائي مُعد مسبقًا لنظام التشغيل Linux 64 بت، وجعله قابلاً للتنفيذ ووضعه في /usr/local/bin
. يعمل هذا مع معظم توزيعات Linux.
curl -L -o elm-embed.gz https://github.com/emmabastas/elm-embed/releases/download/0.1.0/elm-embed-0.1.0-linux-x64.gz
gunzip elm-embed.gz
chmod +x elm-embed
sudo mv elm-embed /usr/local/bin/
الآن يجب أن يكون elm-embed
قابلاً للاستدعاء من سطر الأوامر.
قم بإلغاء التثبيت باستخدام sudo rm /usr/local/bin/elm-embed
لا توجد حاليًا أي ثنائيات تم إنشاؤها مسبقًا لنظامي التشغيل Windows أو Mac، والخيار الوحيد هو البناء من المصدر، وهي نفس العملية التي تتم عند إنشاء برنامج التحويل البرمجي Elm.
قم بالتهيئة باستخدام elm-embed init
.
قم بتشغيل أدوات التضمين باستخدام elm-embed run
.
احصل على مساعدة بخصوص elm-embed --help
.
أفضل طريقة للمساهمة الآن هي تزويدي بحالات الاستخدام من خلال ترك تعليق هنا. كن مفصلاً قدر الإمكان. ما الذي يمكن أن يفعله elm-embed
لك وكيف؟ ما الذي يجب تغييره/إضافةه؟
ستساعدني حالات الاستخدام هذه حقًا في اتخاذ قرارات تصميمية أكثر استنارة في المستقبل، لكن لا يمكنني أن أعدك بأنه سيتم تنفيذ حالة الاستخدام المحددة الخاصة بك. أريد أن يكون elm-embed
هو أفضل ما يمكن في نطاقه، وهذا يعني رفض الأشياء التي تقع خارج النطاق، وكذلك أخذ الوقت للتفكير في الأمور، بدلاً من التسرع في الميزات.