Script Editor .scpt फाइलें सादे पाठ फ़ाइलों के रूप में सहेजी क्यों नहीं जाती हैं?


16

स्क्रिप्ट एडिटर (पूर्व में AppleScript एडिटर प्री-योसेमाइट 10.10) .scptफाइलों को बाइनरी फाइलों के रूप में सेव करता है, न कि प्लेन टेक्स्ट फाइल्स को।

यह स्रोत कोड नियंत्रण प्रणालियों में उनके साथ काम करना कुछ बोझिल बनाता है।

क्या किसी को पता है कि यह मामला क्यों है? क्या कुछ लंबे समय तक चलने वाला इतिहास है जो इस फ़ाइल प्रारूप की आवश्यकता है, यह सादे पाठ फ़ाइलों के अलावा कुछ और है?


मुझे नहीं पता कि ऐसा क्यों है लेकिन जैसा कि यहां टिप्पणी की गई है , आप पाठ के रूप में सहेजने के लिए हॉटकी / स्क्रिप्ट मैक्रो लिख सकते हैं। यह एक दर्द है, लेकिन उल्लेखनीय है ...
विक

2
सहेजें पैनल में आप सादे पाठ सहित कई अलग-अलग स्वरूपों में स्क्रिप्ट को सहेज सकते हैं।
क्रिस पेज

: "Scpt फाइलों से पाठ के रूप में स्क्रिप्ट प्राप्त करें?" Lists.apple.com/archives/applescript-users/2007/Mar/...
pkamb

जवाबों:


20

विलियम आर। कुक के पेपर में 1989 में AppleScript से जुड़े लोगों का एक उत्कृष्ट इतिहास और अंतर्दृष्टि शामिल है।

क्या मजेदार और सट्टा है।

अंतरिक्ष और प्रसंस्करण का संरक्षण

AppleScript एक ऐसे समय में लिखा गया था जब हर बाइट और बिट मूल्यवान था। संपत्ति की सूची के प्रारूप के रूप में ओएस एक्स का आलसी एन्कोडिंग उन शुरुआती डेवलपर्स की आंखों में बेकार होगा।

द्विआधारी प्रारूप ने एक पूर्व-पार्स रूप प्रदान किया जो डिस्क से प्रत्येक लोड के साथ जटिल, त्रुटि प्रवण और समय लेने वाली पार्सिंग प्रक्रिया की नकल करने से बचता था। मेमोरी में सीधे लोड करने और चलाने के लिए बेहतर है।

अनुकूली

एक द्विआधारी प्रारूप में सहेजने से AppleScripts को अंतर्निहित AppleEvent कोड से बंधे रहने की अनुमति मिलती है, बजाय इसके कि वे लंबी अवधि की शब्दावली का शब्दकोश बनाते हैं।

यह किसी एप्‍लिकेशन को एक एप्‍लीकेशन के एक संस्‍करण के विरूद्ध लिखित और सहेजे जाने की अनुमति देता है जो लक्षित अनुप्रयोगों के संस्‍करणों के बीच स्वचालित रूप से परिवर्तन करने के लिए अद्यतन होता है।

किसी पूर्णांक ऑब्जेक्ट को स्क्रिप्ट में 'पूर्णांक' कहा जा सकता है, लेकिन int बाइनरी प्रतिनिधित्व में चार वर्ण कोड ' ' के रूप में सहेजा जाता है । ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए AppleScript डिक्शनरी से आने वाले चार कैरेक्टर कोड।

यदि भविष्य में AppleScript शब्दावली ने पूर्णांक के लिए उपयोगकर्ता का सामना करने वाले शब्द को बदलने का फैसला किया है, तो बाइनरी प्रतिनिधित्व नए नाम पर मैप कर सकता है।

इस पर एक फ्लिप पक्ष आज देखना संभव है। किसी एप्लिकेशन के डिक्शनरी के खिलाफ AppleScript लिखें। फिर अपने मैक से एप्लिकेशन को पूरी तरह से हटा दें। स्क्रिप्ट खोलने पर स्क्रिप्ट एडिटर में आप क्या देखते हैं?

कम से कम हाल के संस्करणों में, AppleScript एडिटर ने चार वर्ण कोड के आसपास के शेवरॉन दिखाए । कोड को याद और हाइलाइट किया गया है। शब्दावली का सामना करने वाला उपयोगकर्ता नहीं।

यह शायद प्राथमिक लाभ नहीं बल्कि एक संभावित लाभ है।

आधुनिक पूर्वाग्रह

यह पाठ दस्तावेजों के लिए हमारे आधुनिक पूर्वाग्रह को स्वीकार करने योग्य है। अनुभव ने हम में से कई को सिखाया है कि एक द्विआधारी प्रारूप में मूल्यवान सामग्री संग्रहीत करना जोखिम का वहन करता है। द्विआधारी प्रारूप अक्सर खराब दस्तावेज होते हैं, अंत उपयोगकर्ता के लिए अपारदर्शी, और जब मालिक सॉफ्टवेयर को बनाए नहीं रखते हैं, तो इसे खोलना मुश्किल होता है।

जब AppleScript और यह द्विआधारी प्रारूप बनाया गया था, यह पूर्वाग्रह अभी तक नहीं बना था। भंडारण और कम्प्यूटेशनल सीमाएं बहुत वास्तविक थीं और प्रत्येक किलोबाइट या बचाया गया हजारों चक्र सार्थक थे।

इतिहास और मूल

AppleScript की उत्पत्ति की कहानियाँ इन दिनों ट्रैक करने के लिए अद्भुत लेकिन कठिन हैं। AppleScript एक दोस्ताना, अंग्रेजी भाषा की तरह होने की कोशिश की, भाषा और अपनी दृष्टि में सांस ले रहा था; वास्तविक कार्यान्वयन सही होने के लिए कठिन था!


16

संक्षेप में, .scptपिछड़े संगतता की अनुमति देता है। इसके अलावा, एपलस्क्रिप्ट / जावास्क्रिप्ट (आदि) को उसी एक्सटेंशन के साथ सहेजा जा सकता है, जो Script Editorअब जावास्क्रिप्ट का समर्थन करता है।

.scptखोल में विघटित करने के लिए :

https://github.com/rupa/applescript/blob/master/decompile.sh

सबसे प्रासंगिक हिस्सा:

osadecompile

टेक्स्टमेट एक तृतीय-पक्ष संपादक है जो पढ़ सकता है .scpt:

https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm

सबसे प्रासंगिक हिस्सा:

[[OSAScript alloc] initWithCompiledData:];

यह फ़ंक्शन OSAScript.hOS X SDK के अलावा आता है । इसमें OSAScript.h, यह लंबी टिप्पणी है:

एक ऐसे URL को देखते हुए जो एक संकलित स्क्रिप्ट, स्क्रिप्ट एप्लिकेशन या स्क्रिप्ट स्रोत का पता लगाता है, अपनी सामग्री के साथ एक ऑटोरेल्ड स्क्रिप्ट डेटा डिस्क्रिप्टर को बनाता और वापस करता है। आप एक स्क्रिप्ट बनाने के लिए डिस्क्रिप्टर का उपयोग कर सकते हैं - [OSAScript initWithScriptDataDescriptor: ...]। यह आपको एक विशिष्ट OSALanguageInstance के साथ एक स्क्रिप्ट बनाने में सक्षम बनाता है। आप स्क्रिप्ट डेटा के लिए भाषा प्राप्त करने के लिए + [OSALanguage languageForScriptDataDescriptor:] का उपयोग कर सकते हैं, जो तब OSAScript के लिए एक उपयुक्त भाषा उदाहरण बनाने या चुनने के लिए उपयोग किया जा सकता है। स्क्रिप्ट स्रोत डेटा द्वारा संकलित किया जा सकता है - [OSAScript initWithScriptDataDescriptor: ...], या आप एक स्ट्रिंग के लिए डिस्क्रिप्टर को दबा सकते हैं (NSAppleEventDescriptor विधियों का उपयोग करके) और स्पष्ट रूप से स्रोत के साथ एक OSAScript बनाएँ। + (NSAppleEventDescriptor *) scriptDataDescriptorWithContentsOfURL:

मूल रूप से, सहेजे जाने पर, फ़ाइल में .scptएक OSALanguageInstanceडिस्क्रिप्टर भी सहेजा जाता है।

यदि किसी फ़ाइल को .applescript/ टेक्स्ट के रूप में सहेजा जाता है , तो सिस्टम इसे एपलस्क्रिप्ट भाषा के अंतिम संस्करण के साथ संकलित करेगा। उदाहरण के लिए, OS X के पुराने संस्करण के लिए लिखी गई एक स्क्रिप्ट नए संस्करण पर काम नहीं कर सकती है क्योंकि कुछ कार्य अप्रचलित हो गए हैं। इसके साथ .scpt, सिस्टम / ऐप ने चुन लिया है कि यह किस ऐप्पलसीप के संस्करण के लिए है।

10.10 से, जावास्क्रिप्ट को सहेजा जा सकता है .scptऔर सही तरीके से निष्पादित किया जा सकता है।


समझ में नहीं आया 'irOSASourceNotAvailable (-1756)।' इसका क्या मतलब है?
TCB13

1
डिकम्पाइल लिंक के लिए +1। @ TCB13 तब होता है जब आपकी .scpt फ़ाइल बाइनरी नहीं होती है और यह होना चाहिए इसलिए संपादक को परेशानी होती है कि आस-पास के काम को खिड़की बंद करना है जो आपको एक प्रतिलिपि बनाने के लिए कहेगा। इसके बाद कॉपी को संकलित प्रारूप में सहेज कर रखी गई जानकारी आगे बढ़ जाएगी। हालाँकि यह सब उस उत्तर में हल किया जाएगा जो मैं पोस्ट करने के बारे में हूं जो मैंने इस दूर के उत्तर से सीखा है जिसमें डिकॉम्पाइल कमांड शामिल है।
माइकल डिमिट

बस इसे जोड़ने के लिए, asprint< hasseg.org/asprint > से भी उपलब्ध है, जो आपको 'सुंदर प्रिंट' .scpt फाइलें देगा। एकमात्र दोष यह है कि यह जावास्क्रिप्ट पर काम नहीं करता है। केवल फाइलें, केवल AppleScript वाले।
टीजे लुओमा

1

Fartheraway द्वारा साझा किए गए डिकंपाइल कमांड को देखने के बाद मैंने इसका हल खोजा। यदि आप चाहते हैं कि applescript (.scpt) फाइल बाइनरी न हो।

@fartheraway ने भी अपने जवाब के निचले भाग में इसका उल्लेख किया है।

बस .applescript एक्सटेंशन के साथ सभी विकास करें।

स्क्रिप्ट एडिटर कोड को चलाने में सक्षम होगा और यह एक संकलित प्रारूप में इसे नहीं बचाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.