AppleScript غير صالح: المسارات الفرعية ومسارات الملفات

click fraud protection

عندما تعلمت البرمجة ، كانت البرامج تحتوي على أرقام سطور. عليك أن تكتب اذهب 10 أو GOSUB 5000 وسيتحكم ذلك في تدفق برنامجك. عندما رأيت لغة برمجة لا تحتوي على أرقام سطور - أعتقد أنها لغة باسكال - لم أستطع فهمها.

حسنًا ، لقد قطعنا شوطًا طويلاً. لا أستطيع الكتابة GOSUB 5000 بعد الآن ، ولكن يمكن أن تكون الإجراءات الفرعية ذات قيمة كبيرة في تبسيط حتى برامج AppleScripts السيئة.

أنا وكثير من زملائي أكتب مقالاتنا من أجل مكوورلد في محرر نصوص BBEdit من Bare Bones Software ، باستخدام لغة Markdown التي ابتكرها John Gruber. من الأشياء الرائعة في العمل على الويب عدم الحاجة إلى التوحيد القياسي في أي تطبيق واحد أو حتى تطبيق واحد style - في النهاية ، كل ما يهم هو أن نلصق قصتنا في أداة النشر المستندة إلى الويب بتنسيق HTML شكل.

لذلك كتبت AppleScript يأخذ ما كتبته في BBEdit - حتى هذا المقال بالذات - ويحوله إلى شيء جاهز للصقه في هذا النظام. نعم ، يمكنني فقط استخدام نص Markdown perl الأصلي من Gruber ، لكني بحاجة إلى إجراء مجموعة كاملة من التغييرات الأخرى من أجل إنشاء قصة مكوورلد-مستعد. وقد جعلت بعض الإجراءات الفرعية القابلة لإعادة الاستخدام حياتي أسهل بكثير.

عند الاستبدال (البحث ، الاستبدال) أخبر التطبيق "BBEdit" استبدل البحث باستخدام خيارات استبدال البحث في نص نافذة النص 1 {وضع البحث: grep ، يبدأ من أعلى: صحيح ، يلتف حول: صحيح ، خلفي: خطأ ، حساس لحالة الأحرف: خطأ ، كلمات مطابقة: خطأ ، تمديد التحديد: خطأ} النهاية tellend يحل محل

هذا الروتين ، يحل محل، بسيط - إنه في الأساس أمر BBEdit مكون من سطر واحد - ولكنه يوفر الكثير من الوقت. إذا كنت أرغب في استبدال جميع حالات "cat" في مستند BBEdit الخاص بي بكلمة "dog" باستخدام هذا الأمر ، فسوف أحتاج إلى كتابة:

اطلب من التطبيق "BBedit" استبدال البحث باستخدام خيارات استبدال البحث في نص نافذة النص 1 {وضع البحث: grep، البدء من الأعلى: صحيح ، الالتفاف: صحيح ، للخلف: خطأ ، حساس لحالة الأحرف: خطأ ، كلمات المطابقة: خطأ ، توسيع التحديد: خطأ شنيع}

بدلاً من ذلك ، أكتب فقط:

استبدال ("قطة" ، "كلب")

مفيد ، أليس كذلك؟ ال يحل محل يستخدم الروتين الفرعي صيغة مطابقة الأنماط المعروفة باسم grep. لقد وجدت أنه في بعض الأحيان الرموز التي grep يستخدم نوعًا ما في طريقه ، لذلك قمت بإنشاء روتين ثانوي ، بديل، الذي يبحث عن نص حرفي ولا يستخدم grep. مع هذين الإجراءين الفرعيين ، يمكنني فعل الكثير.

فحص النمط

بعض الأشياء لا علاقة لها بتنسيق HTML المناسب. يتعلق الأمر بعقلي ، الذي يحتوي على دليل أسلوب يختلف عن دليل أسلوب IDG الرسمي. يُصلح البرنامج النصي بعض أخطائي الشخصية الأكثر شيوعًا:

Replacemeliteral ("موقع ويب" ، "موقع ويب") replacemeliteral ("بريد إلكتروني" ، "بريد إلكتروني") replacemeliteral ("e-book"، "ebook") replacemeliteral ("Ethernet"، "ethernet")

كان لدينا أيضًا مجموعة من الكتاب الذين أصروا على كتابة اختصارات لوحة المفاتيح برمز زائد بدلاً من شرطة ، وهو أسلوبنا: الأوامر- Shift-3 بدلاً من Command + Shift + 3. هناك بديلان لمطابقة الأنماط يعملان بسرعة على ذلك.

استبدال ("(أمر | تحكم | خيار | Shift) + (أمر | تحكم | خيار | Shift) + (.)" ، "1-2-3") استبدل ("(Command | Control | Option | Shift) + ( .) "،" 1-2 ")

من بين العديد من مشكلات الأنماط الصغيرة الأخرى ، هناك أيضًا فحص كبير للتأكد من أن الارتباطات التشعبية الموجودة في المستند تذهب إلى يعيش الخادم ، وليس الخادم الذي نستخدمه لمعاينة القصص (والتي لا يستطيع العالم الخارجي رؤيتها):

replacemeliteral ("معاينة بوابة.www.idgesg."، "www.")

هل البرنامج النصي الخاص بي على علم بموقعه؟

أقوم بتوزيع هذا البرنامج النصي على المحررين باستخدام BBEdit حزمة bb الذي يسمح لي بإرسال ملف واحد يحتوي على حزمة من البرامج النصية وأشياء أخرى. جزء من السبب في ذلك هو أن سكريبت يستخدم نصي برل مختلفين وزعتهما Gruber: Markdown (الذي يحول النص المنسق Markdown إلى HTML) و SmartyPants (الذي يولد علامات اقتباس "ذكية" وغيرها من الشخصيات).

ولكن لكي تتمكن BBEdit من تشغيل تلك البرامج النصية ، فإنها تحتاج إلى معرفة مكانها على محرك الأقراص الثابتة بجهاز Mac. هذا أمر سهل - فهي موجودة في مجلد "عوامل تصفية النص" ، المجاور لمجلد البرامج النصية الذي يوجد البرنامج النصي بداخله. مما يعني أنه إذا كان بإمكاني معرفة مكان النص الخاص بي ، فيمكنني معرفة مكان وجود تلك البرامج النصية الأخرى.

اضبط المسار على (المسار لي كنص)

فقاعة! سهل جدا. سطر واحد وانتهينا. لدي الآن متغير يسمى المسار الذي يحتوي على موقع البرنامج النصي الخاص بي على محرك الأقراص الثابتة بتنسيق مثل هذا: Macintosh HD: المستخدمون: jsnell: Dropbox: دعم التطبيق: BBEdit: الحزم: IDG.bbpackage: المحتويات: البرامج النصية: CMS.

ما عدا... لا أريد المسار على طول الطريق إلى ملفي. أريد المسار إلى المجلد الذي يحتوي على المجلد الذي يوجد البرنامج النصي الخاص بي بداخله ، لأن هذا هو المجلد الأصلي لهذا المجلد الآخر حيث توجد نصوص Markdown و SmartyPants. للقيام بذلك ، أحتاج إلى حذف العنصرين الأخيرين في هذا المسار. إليك الطريقة:

عيّن oldDelims إلى محددات عنصر نص AppleScript ، اضبط محددات عنصر نص AppleScript على ":" تعيين thePathItems إلى عناصر نصية من محددات عنصر نص مسار AppleScript إلى oldDelimsset parsedPath للعناصر من 1 إلى ((عدد عناصر thePathItems) - 2) من thePathItemsset محددات عنصر نص AppleScript إلى ":" تعيين مسار الوالد على parsedPath باعتباره محددات عنصر نص AppleScript لمجموعة سلاسل إلى الدليم القديم

أستخدم إحدى أقدم الحيل في كتاب AppleScript ، محددات عنصر نص AppleScript. تبين أن لدى AppleScript طريقة مضمنة لتقطيع النص إلى عناصر فردية ، محددة ببعض الأحرف. على سبيل المثال ، يتم تحديد قائمة الكلمات بواسطة حرف المسافة الذي يفصل بينها. سطر بيانات محدد بفواصل مثل 12,13,14,15,16 محدد بفاصلة. في حالة مسارات الملفات ، يتم تحديدها بنقطتين.

إليك ما يفعله الرمز أعلاه:

قم بتعيين oldDelims إلى محددات عنصر نص AppleScript

يحفظ أيًا من محددات العناصر النصية الحالية لـ AppleScript في المتغير oldDelims. هذه مجرد ممارسة جيدة للتدبير المنزلي ؛ إذا استمررت في التعامل مع محددات AppleScript ، فإن أجزاء أخرى من النص الخاص بك يمكن أن تصاب بالذهول.

تعيين محددات عنصر نص AppleScript على ":"

الآن سيحدد النقطتان كيفية تحديد النص الخاص بي!

قم بتعيين thePathItems إلى عناصر نصية للمسار

هذا يحول متغير النص الخاص بي ، الطريق، إلى متغير يمثل قائمة بالعناصر الفردية — العناصر المحددة بنقطتين. في هذه المرحلة ، سلسلة مثل Macintosh HD: المستخدمون: jsnell ستصبح قائمة بها ثلاثة عناصر: ماكنتوش HD, المستخدمون، و jsnell.

قم بتعيين محددات عنصر نص AppleScript على الحواف القديمة

تتطلب مبادئ التدبير المنزلي الجيد أن تعيد المحددات إلى حيث تركتها.

قم بتعيين parsedPath على العناصر من 1 إلى ((عدد عناصر thePathItems) - 2) من عناصر PathItems

هذا يجعل متغيرًا جديدًا ، parsedPath، التي تحتوي على مجموعة فرعية من العناصر الموجودة في thePathItems. وبالتحديد ، العنصر 1 من خلال العنصر الذي يمثل اثنين من النهاية. الجملة عد عناصر المتغير هو بناء مفيد للغاية في AppleScript ، لأنه يسمح لك بالعد التنازلي. في هذه الحالة، عدد عناصر المسار هو العدد الإجمالي للعناصر في القائمة ، وبطرح 2 من هذا العدد ، أقوم باستبعاد آخر عنصرين في القائمة.

الآن إليك خدعة أخرى رائعة:

قم بتعيين محددات عنصر نص AppleScript على ":" تعيين مسار الوالد على parsedPath مثل محددات عنصر نص AppleScript لمجموعة السلاسل إلى oldDelims

يمكن أيضًا تعديل محددات عنصر نص AppleScript للإدراج فواصل بين العناصر عند إعادة القائمة إلى سلسلة. في المثال أعلاه ، إذا حذفت السطرين الأول والثالث (وأبقيت المحددات على الإعداد الافتراضي لـ AppleScript - وهو لا شيء) ، فإن المتغير مسار الوالدين سيبدو مثل هذا: ماكنتوش HDUsersjsnell. أريد مسار ملف محدد بنقطتين مثل المسار الذي حصلت عليه في البداية! لذا أغير المحددات مرة أخرى ، ثم أضبط المتغير الجديد ، وأحصل على شيء بتنسيق Macintosh HD: المستخدمون: jsnell.

الآن بعد أن عرفت اسم المجلد الموجود أعلى المجلد الذي يوجد فيه البرنامج النصي الخاص بي ، يمكنني إنشاء مسارات لبرامج بيرل النصية التي أحتاجها ، تلك التي تعيش في الجوار:

تعيين SmartyPants إلى المسار الرئيسي & ": عوامل تصفية النص: SmartyPants.pl" تعيين Markdown إلى المسار الرئيسي & ": عوامل تصفية النص: Markdown.pl"

بمجرد تعيين هذا المسار ، يمكنني استخدامه للحصول على BBEdit لتشغيل هذا البرنامج النصي على المستند النصي الخاص بي باستخدام أمر بسيط:

أخبر التطبيق "BBEdit" قم بتشغيل مرشح يونكس Markdown مع استبدال selectend tell

الشيء الوحيد المخادع الآخر في النص بأكمله هو التأكد من أن البرنامج النصي الخاص بي يعمل على ملف ينسخ من القصة وليس الأصلية. في BBEdit ، هذه هي الطريقة التي أحقق بها ما يلي:

أخبر التطبيق "BBEdit" اضبط العنصر على (محتويات النافذة 1 كنص) اضبط المستند على (إنشاء مستند نصي جديد للنافذة 1) قم بتعيين تشفير يقوم المستند إلى "Unicode (UTF-8)" بتعيين نص المستند إلى اسم مجموعة العنصر الخاص بالمستند على "إخراج HTML" ، قم بتعيين لغة مصدر المستند إلى نهاية "HTML" اقول

في النهاية ، لدي برنامج نصي يحول Markdown إلى HTML ، ويدير عامل تصفية SmartyPants لتعليم جميع علامات الاقتباس ، والمشي من خلال مجموعة من المراوغات الأخرى في دليل الأسلوب ونظام إدارة المحتوى لدينا من أجل إنشاء مستند ملائم للصق و نشر.

  • Apr 17, 2023
  • 70
  • 0
instagram story viewer