مرجع
آخر الزيارات

أبل سكريبت

2٬255 كلمة•0 مشاهدة•🗒️ منذ يوم
باختصار: أبل سكربت هي لغة برمجة نصية أنشأتها شركة آبل، تُسهل التحكم الآلي (الأتمتة) في تطبيقات نظام الماك. في هذه المقالة 34 قسماً: «say ans»، «else» و«print document 2» وغيرها.
المحتويات
  1. say ans
  2. else
  3. print document 2
  4. else
  5. برنامج أهلا بالعالم
  6. التعليقات برمجياً
  7. نظرة عامة
  8. متعدد
  9. أمثلة
  10. tell text box 1
  11. on error
  12. - هذا تعليق من سطر واحد
  13. end tell
  14. تاريخ
  15. else
  16. end try
  17. delay 1
  18. giving up after 2
  19. display alert "Hello, world!" buttons {"رفض", "قبول"}
  20. -- أو
  21. end tell
  22. say ans
  23. -- أو
  24. استعارات اللغة الطبيعية
  25. -- Set variables
  26. جافا سكريبت للأتمتة
  27. -- أختيار من قائمة
  28. tell application "Microsoft Word" to quit
  29. end tell
  30. أسلوب البرمجة النصية المفتوح
  31. say ans
  32. -- أظهار تنبية
  33. getTIFF("my bitmap").getRow(3).getPixel(7);
  34. -- أو

قبل الخوض في التفاصيل، أبل سكربت هي لغة برمجة نصية أنشأتها شركة آبل، تُسهل التحكم الآلي (الأتمتة) في تطبيقات نظام الماك. تم تقديمها لأول مرة في نظام التشغيل 7، وهي مضمنه في الوقت الحالي في جميع إصدارات ماك أو إس كجزء من حزمة أدوات أتمتة النظام. قد يشير المصطلح أبل سكربت "AppleScript" إلى اللغة نفسها ،أو إلى نص مكتوب بلغة أبل سكربت ، أو بشكل غير رسمي ،قد يشير إلى macOS Open Scripting Architecture الذي يشكل أساس لغة أبل سكربت. وفيما يلي تفاصيل أوسع عن ذلك.

say ans

-- Subtract?

في هذا الإطار، display dialog ans with title "Answer" buttons {"OK"} default button 1

علاوةً على ذلك، else if the button returned of (display dialog "Subtract?" buttons {"No", "Yes"} default button 2) is "Yes" then

set ans to (the1 - the2)

else

  • display dialog "Incorrect username" buttons {"OK"} default button 1
  • end if
  • end tell

print document 2

tell application "Microsoft Word"

quit

print pages 1 thru 5 of document 2

وفي السياق ذاته، بشكل عام ، تحدد AEOM عددًا من الكائنات - مثل مستند "document" أو فقرة "paragraph" - والإجراءات المقابلة - مثل "cut" و "close". يحدد النظام كذلك طرقًا للإشارة إلى خصائص الكائنات ، بحيث يمكن للمرء الرجوع إلى "الفقرة الثالثة من المستند 'يوم جيد'"--"'third paragraph of the document 'Good Day"، أو" لون الكلمة الأخيرة من النافذة الأمامية "--"color of the last word of the front window". يستعمل AEOM تطبيق القاموسdictionary" لربط أحداث أبل بمصطلحات يمكن للبشر قراءتها ، مما يسمح بالترجمة ذهابًا وإيابًا بين أحداث أبل سكربت القابلة للقراءة البشرية وأحداث أبل ذات الرمز الثانوي. لاكتشاف عناصر البرنامج القابلة للبرمجة ، يمكن عرض قواميس التطبيقات المدعومة. (في تطبيقي Xcode و Script Editor ، يوجد هذا ضمن File → Open Dictionary.)

وفي هذا الصدد، لتحديد التطبيق المقصود أن يكون هدفًا لمثل هذه الرسالة ، تستعمل أبل سكربت بنية "tell":

else

ومن جهة أخرى، display dialog "Incorrect password" buttons {"OK"} default button 1

end if

برنامج أهلا بالعالم

إضافةً إلى ذلك، display dialog "Hello, world!" -- نافذة منبثقة بها زران "موافق" و "إلغاء"

من جهة ثانية، في أبل سكربت ، يمكن كتابة البرنامج التقليدي أهلا بالعالم(!Hello World) في عدة أشكال مختلفة ، بما في ذلك:

التعليقات برمجياً

كذلك، يمكن عمل التعليقات بطرق متعددة. يمكن أن يبدأ التعليق المكون من سطر واحد بشرطتين (--). في أبل سكربت 2.0 ، التي تم إصدارها لأول مرة في نظام التشغيل Mac OS X Leopard ، قد يبدأ كذلك بعلامة (#). يسمح هذا بتخزين برنامج نصي أبل سكربت قائم بذاته كملف نصي قابل للتنفيذ يبدأ بسطر #!/usr/bin/osascript مثال:

نظرة عامة

وفي هذا السياق، أبل سكربت هي لغة برمجة نصية تم تطويرها بواسطة أبل لإجراء اتصالات بين التطبيقات (IAC) باستخدام أحداث أبل. ترتبط أبل سكربت بأحداث أبل ولكنها تختلف عنها. تم تصميم أحداث أبل لتبادل البيانات والتحكم في التطبيقات الأخرى من أجل أتمتة المهام المتكررة.

علاوةً على ذلك، تمتلك أبل سكربت بعض قدرات المعالجة الخاصة بها ، إلى جانب إرسال واستقبال أحداث أبل إلى التطبيقات. يمكن لـ أبل سكربت إجراء العمليات الحسابية الأساسية ومعالجة النصوص ، وهي قابلة للتوسيع ، مما يسمح باستخدام إضافات البرمجة النصية التي تضيف وظائف جديدة إلى اللغة. ومع ذلك ، تعتمد أبل سكربت بشكل أساسي على وظائف التطبيقات والعمليات للتعامل مع المهام المعقدة. كلغة أوامر منظمة ، يمكن مقارنة أبل سكربت بشل يونكس أو Microsoft Windows Script Host أو IBM REXX ولكنها تختلف عن الثلاثة. حقيقة أن تطبيقات ماكنتوش تنشر "قواميس" للكائنات والعمليات القابلة للتوجيه;ضروري جداً حتى يتمكن أبل سكربت من تأدية وظائفه.

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

متعدد

السطور *)

أمثلة

tell application "Finder"

حاسبة أمنة من الفشل:

tell text box 1

  • set word 5 to "Apple"
  • end tell
  • end tell
  • end tell

on error

return

في هذا الإطار، display dialog "You may only input numbers into a calculator." with title "ERROR" buttons {"OK"} default button 1

- هذا تعليق من سطر واحد

# وايضاً هذا! (في Mac OS X Leopard أو أحدث)

كذلك، بالنسبة إلى التعليقات التي تشغل سطورًا متعددة ، تستعمل أبل سكربت أقواسًا بداخلها علامات نجمية، مثال:

تعليق

(* هذا

end tell

وعلى صعيد آخر، بدلاً من ذلك ، يمكن التعبير عن tell في سطر واحد باستخدام المصدر:

تاريخ

علاوةً على ذلك، في أواخر الثمانينيات من القرن الماضي ، اعتبرت شركة أبل استخدام لغة البرمجة HyperTalk الخاصة بـ HyperCard كلغة تطوير قياسية للمستعمل النهائي، عبر الشركة وضمن نظام تشغيل ماك أو إس الكلاسيكي ، وكذلك لتمكين التواصل بين العمليات الخاصة بمنتجات أبل مع عمليات المنتجات الأخرى. يمكن للمبتدئين استخدام HyperTalk لبرمجة مكدس HyperCard. أدرك مهندسو أبل أنه يمكن تصميم لغة برمجة نصية مماثلة ، ولكن أكثر توجهاً للكائنات ، لاستخدامها مع أي تطبيق ، وقد وُلد مشروع أبل سكربت كبرنامج منبثق عن جهد بحثي لتحديث نظام ماكنتوش ككل وأصبح أخيرًا جزءًا من النظام 7 (Mac OS 7).

إضافةً إلى ذلك، تم إصدار أبل سكربت في أكتوبر 1993 كجزء من نظام 7.1.1 (نظام ماك 7 Pro ، أول ترقية رئيسية للنظام 7). كان QuarkXPress (الإصدار 3.2) من أوائل التطبيقات البرمجية الرئيسية التي دعمت أبل سكربت. أدى هذا بدوره إلى اعتماد أبل سكربت على نطاق واسع في عالم النشر وما قبل الطباعة ، وغالبًا ما يربط معًا مهام سير العمل المعقدة. كان هذا عاملاً رئيسيًا في الحفاظ على موقع Macintosh المهيمن في النشر وما قبل الطباعة ، حتى بعد نقل QuarkXpress وتطبيقات النشر الأخرى إلى Microsoft Windows.

من جهة ثانية، بعد بعض الشكوك بشأن مستقبل أبل سكربت في الجيل التالي من نظام التشغيل من أبل ، أدى الانتقال إلى Mac OS X (قرابة 2002) وأطر عمل Cocoa إلى زيادة فائدة ومرونة أبل سكربت إلى حدّ كبير. تتيح تطبيقات Cocoa لمطوري التطبيقات تحقيق قابلية البرمجة الأساسية لتطبيقاتهم بأقل جهد ممكن ، مما يؤدي إلى زيادة عدد التطبيقات القابلة للبرمجة مباشرة. وفي الوقت نفسه ،وبسبب التحول إلى أسس يونكس وقدرة أبل سكربت على تشغيل أوامر Unix مباشرة ، باستخدام الأمر do shell script أتاح ذلك لأبل سكريبت تحكم أكبر بكثير في نظام التشغيل نفسه.

وفي هذا السياق، تم إصدار AppleScript Studio مع نظام التشغيل Mac OS X 10.2 كجزء من Xcode (بيئة برمجية) ،ولاحقاً تم إصدار إطار العمل AppleScriptObjC ضمن نظام التشغيل Mac OS X 10.6 ، وكل ذلك سمح للمستعملين بإنشاء تطبيقات Cocoa باستخدام أبل سكربت.

وفي هذا الصدد، في أكتوبر 2016 ، غادر سال سوجويان ، مدير منتج أبل سكربت ومبشر الأتمتة ، شركة أبل عندما تم إلغاء منصبه "لأسباب تتعلق بالعمل". استجاب الخبراء في مجتمع ماك مثل جون غروبر و Andy Ihnatko بشكل عام بقلق ، وشككوا في التزام أبل تجاه مجتمع المطورين والمستعملين المحترفين. رد نائب الرئيس الأول لهندسة البرمجيات في أبل ، كريج فيديريغي ، في رسالة بريد إلكتروني قائلاً: "لدينا كل النية لمواصلة دعمنا لتقنيات الأتمتة العظيمة في ماك أو إس!" ، على الرغم من أن جيف جاميت في Mac Observer رأى أن ذلك لم يفعل شيئًا يذكر لتهدئة شكوكه حول مستقبل أتمتة أبل بشكل عام وابل سكربت بشكل خاص. في الوقت الحالي ، تظل أبل سكربت أحد مكونات تقنيات أتمتة ماك أو إس ، جنبًا إلى جنب مع Automator و Shortcuts و Services و shell scripting.

else

say "عفواً!"

end if

end try

set ans to (the1 + the2)

-- Add?

كذلك، if the button returned of (display dialog "Add?" buttons {"No", "Yes"} default button 2) is "Yes" then

ومن ناحية أخرى، display dialog ans with title "Answer" buttons {"OK"} default button 1

delay 1

end if

ومن ناحية أخرى، say "You haven't selected a function. The operation has cancelled."

giving up after 2

كذلك، يمكن لكل طريقة تفاعل للمستعمل إرجاع قيم الأزرار التي تم النقر عليها أو العناصر المختارة أو النص الذي تم إدخاله لمزيد من المعالجة. فمثلا:

display alert "Hello, world!" buttons {"رفض", "قبول"}

  • set theAnswer to button returned of the result
  • if theAnswer is "قبول" then
  • beep 5

-- أو

  • -- نافذة حوار
  • set dialogReply to display dialog ¬
  • "حوار نصي" default answer ¬
  • "أجابة نصية" hidden answer false ¬
  • buttons {"تخطي", "نعم", "إلغاء"} ¬
  • default button ¬
  • "نعم" cancel button ¬
  • "تخطي" with title ¬
  • "عنوان النافذة" with icon note ¬
  • giving up after 15

return "Hello, world!"

وفي السياق ذاته، تحتوي أبل سكربت على الكثير من خيارات واجهة المستعمل ، بما في ذلك الحوارات والتنبيهات وقائمة الاختيارات. (يشير الرمز ¬ ، الناتج عن الضغط على في المحرر ، إلى استمرار جملة واحدة عبر عدة أسطر.)

end tell

من جانب آخر، تسلسل بسيط لمربع حوار اسم المستعمل و كلمة المرور. هنا ، اسم المستعمل هو احمد وكلمة المرور app123:

  • tell application "Finder"
  • set passAns to "app123"
  • set userAns to "احمد"

وفي هذا الصدد، if the text returned of (display dialog "Username" default answer "") is userAns then

ومن ناحية أخرى، display dialog "Access granted" buttons {"OK"} default button 1

ومن جهة أخرى، if the text returned of (display dialog "Username : John" & return & "Password" default answer "" buttons {"Continue"} default button 1 with hidden answer) is passAns then

وفي هذا الصدد، display dialog "Correct" buttons {"Continue"} default button 1

say ans

من جانب آخر، else if the button returned of (display dialog "Divide?" buttons {"No", "Yes"} default button 2) is "Yes" then

-- Divide?

  • set ans to (the1 / the2)
  • display dialog ans with title "Answer" buttons {"OK"} default button 1
  • say ans
  • else

-- أو

ومن ناحية أخرى، display alert "Hello, world!" --نافذة منبثقة بها زر واحد "موافق" وأيقونة تمثل التطبيق الذي يعرض التنبيه

استعارات اللغة الطبيعية

إضافةً إلى ذلك، في حين أن أحداث أبل هي وسيلة لإرسال الرسائل إلى التطبيقات ، فإن أبل سكربت هي لغة معينة مصممة لإرسال أحداث أبل. تماشياً مع هدف سهولة الاستخدام للمبتدئين ، تم تصميم لغة أبل سكربت على استعارة اللغة الطبيعية ، تمامًا كما تم تصميم واجهة المستعمل الرسومية على استعارة سطح المكتب. يجب أن يكون كود أبل سكربت المكتوب جيدًا واضحًا بما يكفي ليقرأه ويفهمه أي شخص ، كما يجب تحريره بسهولة. تعتمد اللغة إلى حد كبير على لغة HyperTalk التابعة لـ HyperCard ، والتي امتدت لتشير ليس فقط إلى عالم HyperCard للبطاقات والمكدسات ، ولكن كذلك من الناحية النظرية إلى أي مستند. تحقيقًا لهذه الغاية ، قدم فريق أبل سكربت نموذج كائن حدث أبل (AEOM) ، والذي يحدد الكائنات التي "يعرفها" أي تطبيق معين.

print page 1

من جهة ثانية، جوهر لغة أبل سكربت هو استخدام المصطلحات التي تعمل كأسماء وأفعال يمكن دمجها. مثلًا ، بدلاً من فعل مختلف لطباعة صفحة أو مستند أو نطاق من الصفحات (مثل printPage و printDocument و printRange) ، تستعمل أبل سكربت فعل "print" واحد يمكن دمجه مع كائن ، مثل صفحة أو وثيقة أو مجموعة من الصفحات.

-- Set variables

كذلك، set the2 to text returned of (display dialog "2nd" default answer "Number here" buttons {"Continue"} default button 1)

وفي السياق ذاته، set the1 to text returned of (display dialog "1st" default answer "Number here" buttons {"Continue"} default button 1)

  • try
  • set the1 to the1 as integer
  • set the2 to the2 as integer

جافا سكريبت للأتمتة

من جهة ثانية، ضمن OS X Yosemite والإصدارات الأحدث من ماك او اس ، يظل مكون (JavaScript for Automation (JXA هو لغة OSA الوحيدة الجادة والبديلة لـ أبل سكربت ، على الرغم من أن إصدارات ماكنتوش من بيرل وبايثون وروبي وTcl تدعم جميعها وسائل العمل الأصلية مع أحداث أبل دون أن تكون مكونات OSA.

  • انظر كذلك
  • حدث أبل
  • معالجة اللغة الطبيعية

من جانب آخر، توفر JXA كذلك واجهة لغة أجنبية Objective-C (ولغة C). نظرًا لكونها بيئة تعتمد على محرك JavaScriptCore الخاص بـ WebKit ، فإن مجموعة ميزات جافا سكربت متزامنة مع محرك متصفح سفاري الخاص بالنظام. توفر JXA نظام وحدة جافا سكربت ويمكن كذلك استخدام وحدات CommonJS عبر browserify.

-- أختيار من قائمة

  • set chosenListItem to choose from list {"A", "B", "3"} ¬
  • with title "List Title" ¬
  • with prompt "Prompt Text" ¬
  • default items "B" ¬
  • OK button name "Looks Good!" ¬
  • cancel button name "Nope, try again" ¬
  • multiple selections allowed false ¬
  • with empty selection allowed

tell application "Microsoft Word" to quit

وفي السياق ذاته، بالنسبة للأحداث في (activate و open و reopen و close و print و quit) ، قد يتم ألحاق التطبيق ككائن مباشر لأوامر متعدية:

  • quit application "Microsoft Word"
  • يمكن التعبير عن مفهوم التسلسل الهرمي للكائن باستخدام الكتل المتداخلة:
  • tell application "QuarkXPress"
  • tell document 1
  • tell page 2

end tell

pixel 7 of row 3 of TIFF image "my bitmap"

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

علاوةً على ذلك، يمكن كذلك التعبير عن مفهوم التسلسل الهرمي للكائن باستخدام عبارات الجر المتداخلة:

أسلوب البرمجة النصية المفتوح

إضافةً إلى ذلك، أحد الجوانب المهمة لتطبيق أبل سكربت هو (Open Scripting Architecture (OSA. توفر Apple OSA للغات البرمجة النصية الأخرى ومنتجات البرمجة النصية/الأتمتة التابعة لجهات خارجية مثل QuicKeys و UserLand Frontier ، للعمل في حالة متساوية مع أبل سكربت. تم تنفيذ أبل سكربت كمكون برمجة نصية ، وكانت المواصفات الأساسية لربط هذه المكونات بـ OSA عامة ، مما يسمح للمطورين الآخرين بإضافة مكونات البرمجة النصية الخاصة بهم إلى النظام. ستعمل واجهات برمجة التطبيقات العامة الخاصة بالعميل (Public client APIs) لتحميل النصوص البرمجية وحفظها وتجميعها بنفس الطريقة لجميع هذه المكونات ، مما يعني كذلك أن التطبيقات الصغيرة والقطيرات يمكنها الاحتفاظ بنصوص برمجية في أي من لغات البرمجة النصية هذه.

من جانب آخر، إحدى ميزات OSA هي إضافات البرمجة النصية ، أو OSAX لـ Open Scripting Architecture eXtension ، المستوحاة من أوامر HyperCard الخارجية.إضافات البرمجة النصية هي مكتبات تسمح للمبرمجين بتوسيع وظيفة أبل سكربت. الأوامر المضمنة كإضافات نصية متاحة على مستوى النظام ، ولا تعتمد على أحد التطبيقات . محرر أبل سكربت قادر كذلك على تحرير وتشغيل بعض لغات OSA مباشرة.

say ans

في هذا الإطار، else if the button returned of (display dialog "Multiply?" buttons {"No", "Yes"} default button 2) is "Yes" then

من جانب آخر، display dialog ans with title "Answer" buttons {"OK"} default button 1

-- Multiply?

set ans to (the1 * the2)

-- أظهار تنبية

  • set resultAlertReply to display alert "Alert Text" ¬
  • as warning ¬
  • buttons {"تخطي", "موافق", "إلغاء"} ¬
  • default button 2 ¬
  • cancel button 1 ¬

getTIFF("my bitmap").getRow(3).getPixel(7);

ومن ناحية أخرى، يتضمن أبل سكربت بناء الجملة للعد الترتيبي ، مثلاً: 'الفقرة الأولى' "the first paragraph" ، وكذلك الأساسي ،مثلاً:'الفقرة واحد' "paragraph one". وبالمثل ، يمكن الإشارة إلى الأرقام نفسها على أنها نص أو رقميًا ، "five"و "fifth" و "5" كلها مدعومة ؛ هم مرادفات في أبل سكربت. كذلك ، يمكن استخدام كلمة "the" قانونيًا في أي مكان في البرنامج النصي من أجل تعزيز إمكانية القراءة: ليس لها أي تأثير على وظائف البرنامج النصي.

-- أو

وفي السياق ذاته، say "Hello, world!" -- رسالة صوتية باستخدام صوت الكمبيوتر المركب

ما رأيك في هذه المقالة؟

📝 هل في هذه المقالة خطأ؟

إذا وجدت معلومة تحتاج تصحيحاً أو إضافة، أو أردت حذف المقالة، أرسل لنا طلباً وسنراجعه.