
【Adobe Font Development Kit for OpenType】tx テキストダンプHTML表示・ヘルパースクリプト
【Safari・FireFox用Script Editorで開く】 |
| ソース | |
|---|---|
| 001 | #!/usr/bin/env osascript |
| 002 | #coding: utf-8 |
| 003 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
| 004 | (* |
| 005 | AFDKO を先にインストール済みの必要があります |
| 006 | https://note.com/quicktimer/n/nef5d603f562c |
| 007 | |
| 008 | ヘルプ |
| 009 | "${HOME}/Library/Python/3.12/bin/tx" -h |
| 010 | -->proofpdf |
| 011 | https://adobe-type-tools.github.io/afdko/AFDKO-Overview.html#22-proofing |
| 012 | |
| 013 | com.cocolog-nifty.quicktimer.icefloe *) |
| 014 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
| 015 | use AppleScript version "2.8" |
| 016 | use framework "Foundation" |
| 017 | use framework "AppKit" |
| 018 | use framework "UniformTypeIdentifiers" |
| 019 | use scripting additions |
| 020 | property refMe : a reference to current application |
| 021 | |
| 022 | ################# |
| 023 | ##設定項目 |
| 024 | set strSaveExtension to ("html") as text |
| 025 | |
| 026 | |
| 027 | ################# |
| 028 | ## |
| 029 | set strCommandText to ("/usr/bin/which python3") as text |
| 030 | try |
| 031 | do shell script strCommandText |
| 032 | on error |
| 033 | return "python3未インストール" |
| 034 | end try |
| 035 | ################# |
| 036 | ## |
| 037 | set appFileManager to refMe's NSFileManager's defaultManager() |
| 038 | set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser() |
| 039 | set ocidSaveDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites/FontList") isDirectory:(true) |
| 040 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init() |
| 041 | ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions) |
| 042 | set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference) |
| 043 | |
| 044 | ################# |
| 045 | ##バイナリーへのパス |
| 046 | set appFileManager to refMe's NSFileManager's defaultManager() |
| 047 | set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask)) |
| 048 | set ocidLibraryDirPathURL to ocidURLsArray's firstObject() |
| 049 | set ocidBinFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Python/3.12/bin/tx") isDirectory:(false) |
| 050 | set strBinFilePath to ocidBinFilePathURL's |path|() as text |
| 051 | |
| 052 | ################# |
| 053 | ## ダイアログ関連 |
| 054 | set strName to (name of current application) as text |
| 055 | if strName is "osascript" then |
| 056 | tell application "Finder" to activate |
| 057 | else |
| 058 | tell current application to activate |
| 059 | end if |
| 060 | |
| 061 | tell application "Finder" |
| 062 | set aliasDefaultLocation to (path to fonts folder from user domain) as alias |
| 063 | end tell |
| 064 | set listUTI to {"public.truetype-ttf-font", "public.opentype-font"} as list |
| 065 | set strPromptText to "フォントファイルを選んでください" as text |
| 066 | set strMes to "選んでください" as text |
| 067 | set aliasFilePath to (choose file strMes with prompt strPromptText default location (aliasDefaultLocation) of type listUTI without invisibles, multiple selections allowed and showing package contents) as alias |
| 068 | |
| 069 | ####ファイルパス |
| 070 | set strFilePath to (POSIX path of aliasFilePath) as text |
| 071 | set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath) |
| 072 | set ocidFilePath to ocidFilePathStr's stringByStandardizingPath() |
| 073 | set ocidFilePathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:(false) |
| 074 | set strFontsFilePath to ocidFilePathURL's absoluteString() as text |
| 075 | # |
| 076 | set strExtensionName to ocidFilePathURL's pathExtension() as text |
| 077 | set ocidFileName to ocidFilePathURL's lastPathComponent() |
| 078 | set ocidBaseFilePathURL to ocidFilePathURL's URLByDeletingPathExtension() |
| 079 | set strBaseFileName to ocidBaseFilePathURL's lastPathComponent() as text |
| 080 | # |
| 081 | set ocidSaveBasePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strBaseFileName) isDirectory:(false) |
| 082 | set ocidSaveFilePathURL to ocidSaveBasePathURL's URLByAppendingPathExtension:("html") |
| 083 | |
| 084 | |
| 085 | |
| 086 | ################# |
| 087 | #コマンド整形 |
| 088 | set strBinFilePath to doPathEscape(strBinFilePath) |
| 089 | set strFilePath to doPathEscape(strFilePath) |
| 090 | |
| 091 | #リストのみ |
| 092 | set strCommandText to ("PATH=\\\"$HOME/Library/Python/3.12/bin:$PATH\\\";\\\"" & strBinFilePath & "\\\" -dump -0 -y \\\"" & strFilePath & "\\\"") as text |
| 093 | ## |
| 094 | log (return & strCommandText & return) |
| 095 | #コマンド実行 |
| 096 | set strExecCommand to ("/bin/zsh -c \"" & strCommandText & "\"") as text |
| 097 | try |
| 098 | set strResponse to (do shell script strExecCommand) as text |
| 099 | |
| 100 | on error |
| 101 | log "osascript でエラーしました" |
| 102 | return false |
| 103 | end try |
| 104 | |
| 105 | ################# |
| 106 | # |
| 107 | set ocidTmpArrayM to refMe's NSMutableArray's alloc()'s initWithCapacity:(0) |
| 108 | set ocidTmpStringM to (refMe's NSMutableString's alloc()'s initWithCapacity:(0)) |
| 109 | # |
| 110 | set ocidResponse to refMe's NSString's stringWithString:(strResponse) |
| 111 | set ocidResponseArray to ocidResponse's componentsSeparatedByString:("\r") |
| 112 | # |
| 113 | repeat with itemArray in ocidResponseArray |
| 114 | set boolPreFixStart to (itemArray's hasPrefix:("## Top Dict")) as boolean |
| 115 | if boolPreFixStart is true then |
| 116 | set boolStart to true as boolean |
| 117 | set ocidTmpStringM to (refMe's NSMutableString's alloc()'s initWithCapacity:(0)) |
| 118 | else if boolPreFixStart is false then |
| 119 | set boolPreFixEnd to (itemArray's hasPrefix:("## Private")) as boolean |
| 120 | if boolPreFixEnd is true then |
| 121 | set boolStart to false as boolean |
| 122 | (ocidTmpArrayM's addObject:(ocidTmpStringM)) |
| 123 | else |
| 124 | set boolPreFixFileName to (itemArray's hasPrefix:("## Filename")) as boolean |
| 125 | if boolPreFixFileName is false then |
| 126 | set boolPreFixDict to (itemArray's hasPrefix:("## FontDict[")) as boolean |
| 127 | if boolPreFixDict is false then |
| 128 | (ocidTmpStringM's appendString:(itemArray)) |
| 129 | (ocidTmpStringM's appendString:("\n")) |
| 130 | else if boolPreFixDict is true then |
| 131 | set itemArray to (itemArray's stringByReplacingOccurrencesOfString:("## ") withString:("")) |
| 132 | (ocidTmpStringM's appendString:(itemArray)) |
| 133 | (ocidTmpStringM's appendString:("\n")) |
| 134 | end if |
| 135 | end if |
| 136 | end if |
| 137 | end if |
| 138 | |
| 139 | end repeat |
| 140 | |
| 141 | |
| 142 | ################# |
| 143 | # |
| 144 | set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init() |
| 145 | (ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind)) |
| 146 | # DTD付与 |
| 147 | set ocidDTD to refMe's NSXMLDTD's alloc()'s init() |
| 148 | (ocidDTD's setName:("html")) |
| 149 | (ocidXMLDoc's setDTD:(ocidDTD)) |
| 150 | # XML主要部分を生成 |
| 151 | set ocidRootElement to doMakeRootElement() |
| 152 | #ボディエレメント |
| 153 | set ocidBodyElement to (refMe's NSXMLElement's elementWithName:("body")) |
| 154 | #ヘッダー |
| 155 | set ocidHeaderElement to (refMe's NSXMLElement's elementWithName:("header")) |
| 156 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("header")) |
| 157 | (ocidHeaderElement's addAttribute:(ocidAddNode)) |
| 158 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header")) |
| 159 | (ocidHeaderElement's addAttribute:(ocidAddNode)) |
| 160 | (ocidBodyElement's addChild:(ocidHeaderElement)) |
| 161 | #アーティクル |
| 162 | set ocidArticleElement to (refMe's NSXMLElement's elementWithName:("article")) |
| 163 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("article")) |
| 164 | (ocidArticleElement's addAttribute:(ocidAddNode)) |
| 165 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article")) |
| 166 | (ocidArticleElement's addAttribute:(ocidAddNode)) |
| 167 | (ocidBodyElement's addChild:(ocidArticleElement)) |
| 168 | #フッター |
| 169 | set ocidFooterElement to (refMe's NSXMLElement's elementWithName:("footer")) |
| 170 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer")) |
| 171 | (ocidFooterElement's addAttribute:(ocidAddNode)) |
| 172 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer")) |
| 173 | (ocidFooterElement's addAttribute:(ocidAddNode)) |
| 174 | #リンク付与(不要なら削除可) |
| 175 | set ocidAElement to (refMe's NSXMLElement's elementWithName:("a")) |
| 176 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://note.com/search?context=note&q=from%3A%40quicktimer%20&sort=new")) |
| 177 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 178 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
| 179 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 180 | set strContents to ("AppleScriptで生成しました") as text |
| 181 | (ocidAElement's setStringValue:(strContents)) |
| 182 | (ocidFooterElement's addChild:(ocidAElement)) |
| 183 | (ocidBodyElement's addChild:(ocidFooterElement)) |
| 184 | |
| 185 | log "HTMLヘッダー部終了" |
| 186 | ############################## |
| 187 | # TABLE コンテンツ部分生成開始 |
| 188 | ############################## |
| 189 | #【table】 |
| 190 | set ocidTableElement to (refMe's NSXMLElement's elementWithName:("table")) |
| 191 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("summary") stringValue:("ADKFOリスト")) |
| 192 | (ocidTableElement's addAttribute:(ocidAddNode)) |
| 193 | |
| 194 | ######################## |
| 195 | #【caption】 |
| 196 | set ocidCaptionElement to (refMe's NSXMLElement's elementWithName:("caption")) |
| 197 | (ocidCaptionElement's setStringValue:(strFontsFilePath)) |
| 198 | (ocidTableElement's addChild:(ocidCaptionElement)) |
| 199 | ######################## |
| 200 | #【colgroup】 |
| 201 | set ocidColgroupElement to (refMe's NSXMLElement's elementWithName:("colgroup")) |
| 202 | #テーブルのタイトル部 |
| 203 | set listColName to {"行番号", "キー名", "値"} as list |
| 204 | set listColID to {"liineNO", "KeyName", "Value"} as list |
| 205 | #項目数を取得して |
| 206 | set numCntCol to (count of listColName) as integer |
| 207 | #タイトル部の数だけ繰り返し |
| 208 | repeat with itemNo from 1 to numCntCol by 1 |
| 209 | set strItemName to (item itemNo of listColName) as text |
| 210 | #【col】col生成 |
| 211 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 212 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:(strItemName)) |
| 213 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 214 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 215 | end repeat |
| 216 | #テーブルエレメントに追加 |
| 217 | (ocidTableElement's addChild:(ocidColgroupElement)) |
| 218 | |
| 219 | ######################## |
| 220 | #【thead】 |
| 221 | set ocidTheadElement to (refMe's NSXMLElement's elementWithName:("thead")) |
| 222 | #TR |
| 223 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 224 | #項目数を取得して |
| 225 | set numCntCol to (count of listColName) as integer |
| 226 | #タイトル部の数だけ繰り返し |
| 227 | repeat with itemNo from 1 to numCntCol by 1 |
| 228 | set strItemName to (item itemNo of listColName) as text |
| 229 | set strColID to (item itemNo of listColID) as text |
| 230 | #【col】col生成 |
| 231 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 232 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:(strItemName)) |
| 233 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 234 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:(strColID)) |
| 235 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 236 | (ocidThElement's setStringValue:(strItemName)) |
| 237 | # |
| 238 | (ocidTrElement's addChild:(ocidThElement)) |
| 239 | end repeat |
| 240 | #TRをTHEADに入れる |
| 241 | (ocidTheadElement's addChild:(ocidTrElement)) |
| 242 | #THEADをテーブルにセット |
| 243 | (ocidTableElement's addChild:(ocidTheadElement)) |
| 244 | |
| 245 | log "THEAD部終了" |
| 246 | ######################## |
| 247 | #【tbody】 |
| 248 | set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody") |
| 249 | |
| 250 | # |
| 251 | set numCntLineNO to 1 as integer |
| 252 | # |
| 253 | repeat with itemArray in ocidTmpArrayM |
| 254 | # |
| 255 | set ocidLineArray to (itemArray's componentsSeparatedByString:("\n")) |
| 256 | |
| 257 | # |
| 258 | repeat with itemLineArray in ocidLineArray |
| 259 | # |
| 260 | set ocidContentsArray to (itemLineArray's componentsSeparatedByString:(" ")) |
| 261 | set ocidSetKey to ocidContentsArray's firstObject() |
| 262 | set ocidSetValue to ocidContentsArray's lastObject() |
| 263 | # |
| 264 | if (ocidSetKey as text) is "" then |
| 265 | set ocidSetKey to "" as text |
| 266 | set ocidSetValue to "" as text |
| 267 | set strSetCnt to (refMe's NSString's stringWithString:(" ")) |
| 268 | set numCntLineNO to numCntLineNO - 1 as integer |
| 269 | else |
| 270 | set strSetCnt to numCntLineNO as text |
| 271 | end if |
| 272 | #TR |
| 273 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 274 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
| 275 | (ocidTrElement's addAttribute:(ocidAddNode)) |
| 276 | #TD |
| 277 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 278 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("liineNO")) |
| 279 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 280 | (ocidTdElement's setStringValue:(strSetCnt)) |
| 281 | (ocidTrElement's addChild:(ocidTdElement)) |
| 282 | #TD |
| 283 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 284 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("KeyName")) |
| 285 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 286 | (ocidTdElement's setStringValue:(ocidSetKey)) |
| 287 | (ocidTrElement's addChild:(ocidTdElement)) |
| 288 | #TD |
| 289 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 290 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Value")) |
| 291 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 292 | (ocidTdElement's setStringValue:(ocidSetValue)) |
| 293 | (ocidTrElement's addChild:(ocidTdElement)) |
| 294 | # |
| 295 | (ocidTbodyElement's addChild:(ocidTrElement)) |
| 296 | set numCntLineNO to numCntLineNO + 1 as integer |
| 297 | end repeat |
| 298 | |
| 299 | end repeat |
| 300 | |
| 301 | |
| 302 | |
| 303 | ############ |
| 304 | #TBODYをテーブルにセット |
| 305 | (ocidTableElement's addChild:(ocidTbodyElement)) |
| 306 | ############################## |
| 307 | ############ |
| 308 | #【tfoot】 TRで |
| 309 | set ocidTfootElement to (refMe's NSXMLElement's elementWithName:("tfoot")) |
| 310 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 311 | #colspan指定して1行でセット |
| 312 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 313 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり")) |
| 314 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 315 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:(numCntCol as text)) |
| 316 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 317 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
| 318 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 319 | (ocidThElement's setStringValue:("AFDKO Adobe Font Development Kit for OpenType")) |
| 320 | #THをTRにセットして |
| 321 | (ocidTrElement's addChild:(ocidThElement)) |
| 322 | #TRをTFOOTにセット |
| 323 | (ocidTfootElement's addChild:(ocidTrElement)) |
| 324 | #TFOOTをテーブルにセット |
| 325 | (ocidTableElement's addChild:(ocidTfootElement)) |
| 326 | |
| 327 | ############################## |
| 328 | # ROOT |
| 329 | ############################## |
| 330 | # 出来上がったテーブルをArticleエレメントにセット |
| 331 | (ocidArticleElement's addChild:(ocidTableElement)) |
| 332 | # |
| 333 | (ocidRootElement's addChild:(ocidBodyElement)) |
| 334 | #ROOTエレメントをXMLにセット |
| 335 | ocidXMLDoc's setRootElement:(ocidRootElement) |
| 336 | #読み取りやすい表示 |
| 337 | set ocidXMLdata to ocidXMLDoc's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint) |
| 338 | |
| 339 | |
| 340 | |
| 341 | ############################## |
| 342 | # 保存 |
| 343 | set listDone to ocidXMLdata's writeToURL:(ocidSaveFilePathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference) |
| 344 | if (item 1 of listDone) is true then |
| 345 | log "正常終了" |
| 346 | else if (item 1 of listDone) is false then |
| 347 | log (item 2 of listDone)'s localizedDescription() as text |
| 348 | return "保存に失敗しました" |
| 349 | end if |
| 350 | ############################## |
| 351 | # 開く |
| 352 | set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace() |
| 353 | set boolDone to appSharedWorkspace's openURL:(ocidSaveFilePathURL) |
| 354 | # |
| 355 | set ocidOpenURLsArray to (refMe's NSMutableArray's alloc()'s init()) |
| 356 | (ocidOpenURLsArray's addObject:(ocidSaveDirPathURL)) |
| 357 | appSharedWorkspace's activateFileViewerSelectingURLs:(ocidOpenURLsArray) |
| 358 | |
| 359 | |
| 360 | |
| 361 | return "終了" |
| 362 | |
| 363 | |
| 364 | |
| 365 | ############################## |
| 366 | # 基本的なHTMLの構造 |
| 367 | ############################## |
| 368 | to doMakeRootElement() |
| 369 | # |
| 370 | set ocidRootElement to refMe's NSXMLElement's elementWithName:("html") |
| 371 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja") |
| 372 | ocidRootElement's addAttribute:(ocidAddNode) |
| 373 | # |
| 374 | set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head") |
| 375 | # |
| 376 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("title") |
| 377 | ocidAddElement's setStringValue:("ファイル比較") |
| 378 | ocidHeadElement's addChild:(ocidAddElement) |
| 379 | # http-equiv |
| 380 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 381 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type") |
| 382 | ocidAddElement's addAttribute:(ocidAddNode) |
| 383 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8") |
| 384 | ocidAddElement's addAttribute:(ocidAddNode) |
| 385 | ocidHeadElement's addChild:(ocidAddElement) |
| 386 | # |
| 387 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 388 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Style-Type") |
| 389 | ocidAddElement's addAttribute:(ocidAddNode) |
| 390 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/css") |
| 391 | ocidAddElement's addAttribute:(ocidAddNode) |
| 392 | ocidHeadElement's addChild:(ocidAddElement) |
| 393 | # |
| 394 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 395 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Script-Type") |
| 396 | ocidAddElement's addAttribute:(ocidAddNode) |
| 397 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/javascript") |
| 398 | ocidAddElement's addAttribute:(ocidAddNode) |
| 399 | ocidHeadElement's addChild:(ocidAddElement) |
| 400 | # |
| 401 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 402 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport") |
| 403 | ocidAddElement's addAttribute:(ocidAddNode) |
| 404 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720") |
| 405 | ocidAddElement's addAttribute:(ocidAddNode) |
| 406 | ocidHeadElement's addChild:(ocidAddElement) |
| 407 | # |
| 408 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("style") |
| 409 | ocidAddElement's setStringValue:("body { margin: 10px; background-color: #FFFFFF; } table { border-spacing: 0; caption-side: top; font-family: system-ui; } thead th { border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:first-of-type { border-start-start-radius: .5em } &:last-of-type { border-start-end-radius: .5em; border-inline-end-width: 1px }} thead td {border: solid 1px #666666;padding: .5ch 1ch;border-block-width: 1px 0;border-inline-width: 1px 0;&:last-of-type {border-inline-end-width: 1px}}tbody td { word-wrap: break-word;max-width: 360px;border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; &:last-of-type { border-inline-end-width: 1px }} tbody p { margin-block-end: 2px; margin-block-start: 2px;} tbody th { border-spacing: 0; border: solid 1px #666666; padding: .5ch 1ch; border-block-width: 1px 0; border-inline-width: 1px 0; } tbody tr:nth-of-type(odd) { background: #F2F2F2; } .kind_string { font-size: 0.75em; } .date_string { font-size: 0.5em; } tfoot th { border: solid 1px #666666; padding: .5ch 1ch; &:first-of-type { border-end-start-radius: .5em } &:last-of-type { border-end-end-radius: .5em; border-inline-end-width: 1px }}") |
| 410 | ocidHeadElement's addChild:(ocidAddElement) |
| 411 | # |
| 412 | ocidRootElement's addChild:(ocidHeadElement) |
| 413 | # |
| 414 | return ocidRootElement |
| 415 | end doMakeRootElement |
| 416 | |
| 417 | ######################## |
| 418 | #パスのエスケープ |
| 419 | to doPathEscape(strFilePath) |
| 420 | set strFilePath to strFilePath as text |
| 421 | set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath) |
| 422 | set ocidFilePath to ocidFilePathStr's stringByStandardizingPath() |
| 423 | set ocidFilePathURL to refMe's NSURL's fileURLWithPath:(ocidFilePath) isDirectory:(false) |
| 424 | set listEscChar to {"\\", "\"", "$", "`"} as list |
| 425 | repeat with itemEscChar in listEscChar |
| 426 | set ocidFilePath to (ocidFilePath's stringByReplacingOccurrencesOfString:(itemEscChar) withString:("\\\\\\" & itemEscChar & "")) |
| 427 | end repeat |
| 428 | set ocidFilePath to (ocidFilePath's stringByReplacingOccurrencesOfString:("!") withString:("\\\"'!'\\\"")) |
| 429 | |
| 430 | return ocidFilePath |
| 431 | end doPathEscape |
| AppleScriptで生成しました | |
