与えられた文字列がURLエンコードずみ文字列かどうかをチェックするAppleScriptです。
なんでそんなものが必要になったかといえば、macOS 10.15のPDFView上で発生した(”applescript://” schemeの)URL EventがデコードされずにOSデフォルト指定のスクリプトエディタに転送される、URLデコード不良バグが発生。これに対処した簡易PDFビューワーも用意しましたが、macOS 10.15.2 Beta3でこのバグが修正されているように見えます。
# 一度発生したバグは、今後もAppleが再発しないよう継続して監視する必要があります
すると、今度は簡易PDFビューワー側でURLイベントをデコードしてからScript Editorに転送している処理が「余計」になってしまいます。再デコードした文字列は途中で途切れてしまうので、処理対象の文字列がURLエンコードされたものかどうかをチェックする必要が出てきました。
このままOSにURLデコード不良バグが残存するよりは、こうしたプログラムでチェックしてから処理するほうがよいでしょう。
AppleScript名:URLエンコードずみ文字列チェック.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/11/29 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions property |NSURL| : a reference to current application’s |NSURL| property NSString : a reference to current application’s NSString set aStr to "applescript://com.apple.scripteditor?action=new&script=display%20dialog%20%22TEST%22" set aRes to chkEncodedURLorNot(aStr) of me –> true –URL Encoded set bStr to "display dialog \"TEST\"" set bRes to chkEncodedURLorNot(bStr) of me –> false –Not URL encoded on chkEncodedURLorNot(aStr) set nsStr to NSString’s stringWithString:aStr set decodedStr to nsStr’s stringByRemovingPercentEncoding() if (nsStr’s isEqualToString:decodedStr) then return false –encoded URL else return true –Not encoded URL end if end chkEncodedURLorNot |
More from my site
(Visited 47 times, 1 visits today)