Script Editor (sebelumnya AppleScript Editor pre-Yosemite 10.10) menyimpan .scpt
file sebagai file biner, bukan file teks biasa.
Itu membuat bekerja dengan mereka dalam sistem kontrol kode sumber agak rumit.
Adakah yang tahu mengapa ini masalahnya? Apakah ada sejarah lama yang mengharuskan format file ini menjadi sesuatu selain file teks biasa?
applescript
Ian C.
sumber
sumber
Jawaban:
Makalah William R. Cook berisi sejarah dan wawasan yang sangat baik dari mereka yang terlibat dengan AppleScript pada tahun 1989.
Berikut ini menyenangkan dan spekulatif.
Konservasi Ruang dan Pemrosesan
AppleScript ditulis pada saat setiap byte dan bit bernilai. Pengkodean malas OS X sebagai format daftar properti akan sia-sia di mata para pengembang awal tersebut.
Format biner menyediakan formulir pra-parsing yang menghindari duplikasi proses parsing kompleks, rawan kesalahan, dan memakan waktu dengan setiap beban dari disk. Lebih baik memuat langsung ke memori dan jalankan.
Adaptif
Menyimpan dalam format biner memungkinkan AppleScripts untuk diikat ke kode AppleEvent yang mendasari kamus mereka dari terminologi bentuk panjang.
Ini akan memungkinkan AppleScript ditulis dan disimpan terhadap satu versi aplikasi untuk secara otomatis memperbarui ke perubahan terminologi antara versi aplikasi yang ditargetkan.
Objek integer dapat disebut 'integer' dalam skrip tetapi disimpan sebagai kode empat karakter '
int
' dalam representasi biner. Empat kode karakter berasal dari kamus AppleScript yang disediakan oleh sistem operasi.Jika terminologi AppleScript di masa depan memutuskan untuk mengubah kata yang menghadap pengguna untuk integer, representasi biner dapat memetakan ke nama yang lebih baru.
Sisi lain dari hal ini dimungkinkan untuk dilihat hari ini. Tulis AppleScript terhadap kamus aplikasi. Kemudian hapus aplikasi sepenuhnya dari Mac Anda. Apa yang Anda lihat di Editor Skrip saat membuka skrip?
Setidaknya dalam versi terbaru, Editor AppleScript menunjukkan chevron yang mengelilingi empat kode karakter . Kode telah diingat dan disorot. Bukan pengguna yang menghadapi terminologi.
Ini mungkin bukan manfaat utama tetapi manfaat yang mungkin.
Bias modern
Patut diakui bias modern kita untuk dokumen teks. Pengalaman telah mengajarkan banyak dari kita bahwa menyimpan konten yang berharga dalam format biner membawa risiko. Format biner seringkali tidak terdokumentasi dengan baik , buram bagi pengguna akhir, dan sulit dibuka ketika perangkat lunak yang dimiliki tidak dipelihara.
Ketika AppleScript dan format binernya dibuat, bias ini belum terbentuk. Batas penyimpanan dan komputasi sangat nyata dan setiap kilobyte atau ribuan siklus yang disimpan bermanfaat.
Sejarah dan Asal
Kisah-kisah tentang asal AppleScript luar biasa tetapi sulit dilacak akhir-akhir ini. AppleScript mencoba menjadi bahasa yang ramah, seperti bahasa Inggris, dan sangat menarik dalam visinya; implementasi aktual lebih sulit untuk diperbaiki!
sumber
Singkatnya,
.scpt
memungkinkan kompatibilitas ke belakang. Plus, applescript / javascript (dll) dapat disimpan dengan ekstensi yang sama, mengingatScript Editor
sekarang mendukung javascript.Untuk mendekompilasi
.scpt
dalam shell:https://github.com/rupa/applescript/blob/master/decompile.sh
Bagian yang paling relevan:
Textmate adalah editor pihak ketiga yang bisa membaca
.scpt
:https://github.com/textmate/textmate/blob/master/Applications/decompile_as/src/decompile_as.mm
Bagian yang paling relevan:
Fungsi ini berasal
OSAScript.h
, terlepas dari OS X SDK. DiOSAScript.h
, ada komentar panjang ini:Pada dasarnya, ketika disimpan
.scpt
,OSALanguageInstance
deskriptor juga disimpan dalam file.Jika suatu file disimpan sebagai
.applescript
/ teks, sistem akan mengompilasinya dengan versi bahasa applescript terbaru. Sebuah skrip, misalnya, ditulis untuk versi OS X yang lebih lama mungkin tidak berfungsi pada versi baru karena beberapa fungsi telah menjadi usang. Dengan.scpt
, sistem / aplikasi telah memilih versi applescipt untuk apa.Dari 10.10, javascript dapat disimpan
.scpt
dan dijalankan dengan benar.sumber
asprint
tersedia dari < hasseg.org/asprint > yang akan memungkinkan Anda 'cukup mencetak' file .scpt. Satu-satunya kelemahan adalah bahwa itu tidak berfungsi pada file JavaScript .scpt, hanya yang AppleScript.Setelah melihat perintah dekompilasi yang dibagikan oleh Fartheraway, saya menemukan solusinya. Jika Anda ingin file applescript (.scpt) tidak menjadi biner.
@fartheraway juga menyebutkannya di bawah jawabannya.
cukup lakukan semua pengembangan dengan ekstensi .applescript.
Editor Skrip akan dapat menjalankan kode dan tidak akan menyimpannya dalam format yang dikompilasi.
sumber