| 001 | #!/usr/bin/env osascript |
| 002 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
| 003 | (* |
| 004 | ATS (Apple Font Registration System)の内容のTSV出力 |
| 005 | FontRegistryの内容の取得です |
| 006 |
|
| 007 | com.cocolog-nifty.quicktimer.icefloe *) |
| 008 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
| 009 | use AppleScript version "2.8" |
| 010 | use framework "Foundation" |
| 011 | use framework "AppKit" |
| 012 | use scripting additions |
| 013 | property refMe : a reference to current application |
| 014 | ###################### |
| 015 | #PLIST |
| 016 | set appFileManager to refMe's NSFileManager's defaultManager() |
| 017 | set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSLibraryDirectory) inDomains:(refMe's NSUserDomainMask)) |
| 018 | set ocidLibraryDirPathURL to ocidURLsArray's firstObject() |
| 019 | set ocidFilePathURL to ocidLibraryDirPathURL's URLByAppendingPathComponent:("Preferences/com.apple.FontRegistry.user.plist") isDirectory:(false) |
| 020 | #HTML保存先 |
| 021 | set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser() |
| 022 | set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true) |
| 023 | set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("FontList") isDirectory:(true) |
| 024 | set ocidHTMLSaveDirPath to ocidHTMLSaveDirPathURL's |path|() |
| 025 | set boolDirExists to appFileManager's fileExistsAtPath:(ocidHTMLSaveDirPath) isDirectory:(true) |
| 026 | if boolDirExists is false then |
| 027 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init() |
| 028 | ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions) |
| 029 | set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference) |
| 030 | if (item 1 of listDone) is false then |
| 031 | set strErrorNO to (item 2 of listDone)'s code() as text |
| 032 | set strErrorMes to (item 2 of listDone)'s localizedDescription() as text |
| 033 | refMe's NSLog("■:" & strErrorNO & strErrorMes) |
| 034 | log "createDirectoryAtURL エラーしました" & strErrorNO & strErrorMes |
| 035 | return false |
| 036 | end if |
| 037 | end if |
| 038 | #出力ファイル HTML |
| 039 | set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text |
| 040 | set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text |
| 041 | set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false) |
| 042 | ###################### |
| 043 | #NSDATA |
| 044 | set ocidOption to (refMe's NSDataReadingMappedIfSafe) |
| 045 | set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidFilePathURL) options:(ocidOption) |error|:(reference) |
| 046 | set ocidReadData to (item 1 of listResponse) |
| 047 | #NSPropertyListSerialization |
| 048 | set ocidFromat to (refMe's NSPropertyListBinaryFormat_v1_0) |
| 049 | set ocidOption to (refMe's NSPropertyListMutableContainersAndLeaves) |
| 050 | set listResponse to (refMe's NSPropertyListSerialization's propertyListWithData:(ocidReadData) options:(ocidOption) format:(ocidFromat) |error|:(reference)) |
| 051 | set ocidPlistDict to (item 1 of listResponse) |
| 052 | set ocidDisableArray to ocidPlistDict's objectForKey:("DisabledFonts") |
| 053 | if ocidDisableArray = (missing value) then |
| 054 | return "使用停止になっているフォントはありませんでした" |
| 055 | end if |
| 056 | ###################### |
| 057 | #戻り値整形 |
| 058 | set strTab to ("" & tab & "") as text |
| 059 | set strLF to ("" & linefeed & "") as text |
| 060 | set strCR to ("" & return & "") as text |
| 061 | set ocidSortedArray to refMe's NSMutableArray's alloc()'s init() |
| 062 | set numCnt to 0 as integer |
| 063 | repeat with itemURLString in ocidDisableArray |
| 064 | |
| 065 | set ocidURL to (refMe's NSURL's alloc()'s initWithString:(itemURLString)) |
| 066 | set ocidFilePath to ocidURL's |path|() |
| 067 | set ocidURLArray to (itemURLString's componentsSeparatedByString:("#postscript-name=")) |
| 068 | set ocidFileURLStr to ocidURLArray's firstObject() |
| 069 | set ocidPsName to ocidURLArray's lastObject() |
| 070 | set ocidFileName to ocidURL's lastPathComponent() |
| 071 | # |
| 072 | set ocidLineString to refMe's NSMutableString's alloc()'s init() |
| 073 | (ocidLineString's appendString:(ocidPsName)) |
| 074 | (ocidLineString's appendString:(strTab)) |
| 075 | (ocidLineString's appendString:(ocidFileName)) |
| 076 | (ocidLineString's appendString:(strTab)) |
| 077 | (ocidLineString's appendString:(ocidFilePath)) |
| 078 | (ocidLineString's appendString:(strTab)) |
| 079 | (ocidLineString's appendString:(ocidFileURLStr)) |
| 080 | (ocidLineString's appendString:(strTab)) |
| 081 | (ocidSortedArray's addObject:(ocidLineString)) |
| 082 | end repeat |
| 083 | set ocidReadArray to (missing value) |
| 084 |
|
| 085 | #ソート |
| 086 | set ocidSortedArray to ocidSortedArray's sortedArrayUsingSelector:("localizedStandardCompare:") |
| 087 |
|
| 088 | ###################### |
| 089 | #本処理 HTML生成 |
| 090 | set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser() |
| 091 | set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true) |
| 092 | set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("Apple/FontList") isDirectory:(true) |
| 093 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init() |
| 094 | ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions) |
| 095 | set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference) |
| 096 | #出力ファイル HTML |
| 097 | set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text |
| 098 | set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text |
| 099 | set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false) |
| 100 | #headerに渡すエレメント |
| 101 | set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 102 | set ocidH3Element to refMe's NSXMLElement's elementWithName:("h3") |
| 103 | (ocidH3Element's setStringValue:("ATS(Apple Type Services)FontRegistry停止中フォント一覧")) |
| 104 | (ocidSetHeaderElement's addChild:(ocidH3Element)) |
| 105 | ################### |
| 106 | #footerに渡すエレメント |
| 107 | set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 108 | set ocidAElement to refMe's NSXMLElement's elementWithName:("a") |
| 109 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://developer.apple.com/fonts/")) |
| 110 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 111 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
| 112 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 113 | set strContents to ("Fonts for Apple platforms") as text |
| 114 | (ocidAElement's setStringValue:(strContents)) |
| 115 | (ocidSetFooterElement's addChild:(ocidAElement)) |
| 116 | ################### |
| 117 | #articleに渡すエレメント |
| 118 | set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 119 | set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3")) |
| 120 | set strTime to doGetDateNo("yyyyMMdd") as text |
| 121 | set strSetValue to (strTime & "時点のリスト") as text |
| 122 | (ocidH3Element's setStringValue:(strSetValue)) |
| 123 | (ocidSetArticleElement's addChild:(ocidH3Element)) |
| 124 | ################### |
| 125 | #テーブル部生成開始 |
| 126 | set ocidTableElement to refMe's NSXMLElement's elementWithName:("table") |
| 127 | ################### |
| 128 | #【caption】 |
| 129 | set ocidCaptionElement to refMe's NSXMLElement's elementWithName:("caption") |
| 130 | ocidCaptionElement's setStringValue:("ATS(Apple Type Services)が使用中止(Disable)しているフォントリスト") |
| 131 | ocidTableElement's addChild:(ocidCaptionElement) |
| 132 | ################### |
| 133 | #【colgroup】 |
| 134 | set ocidColgroupElement to refMe's NSXMLElement's elementWithName:("colgroup") |
| 135 | ################### |
| 136 | #【col】col生成 |
| 137 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 138 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No")) |
| 139 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 140 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 141 |
|
| 142 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 143 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript")) |
| 144 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 145 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 146 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 147 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name")) |
| 148 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 149 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 150 |
|
| 151 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 152 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path")) |
| 153 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 154 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 155 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 156 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK")) |
| 157 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 158 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 159 | #テーブルエレメントに追加 |
| 160 | ocidTableElement's addChild:(ocidColgroupElement) |
| 161 | ################### |
| 162 | #【thead】 |
| 163 | set ocidTheadElement to refMe's NSXMLElement's elementWithName:("thead") |
| 164 | #TR |
| 165 | set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr") |
| 166 | #TH |
| 167 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 168 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No")) |
| 169 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 170 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("No")) |
| 171 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 172 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 173 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 174 | (ocidAddElement's setStringValue:("\")) |
| 175 | (ocidTrElement's addChild:(ocidAddElement)) |
| 176 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 177 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript")) |
| 178 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 179 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Postscript")) |
| 180 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 181 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 182 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 183 | (ocidAddElement's setStringValue:("Postscript")) |
| 184 | (ocidTrElement's addChild:(ocidAddElement)) |
| 185 |
|
| 186 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 187 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name")) |
| 188 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 189 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Full Name")) |
| 190 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 191 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 192 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 193 | (ocidAddElement's setStringValue:("Full Name")) |
| 194 | (ocidTrElement's addChild:(ocidAddElement)) |
| 195 |
|
| 196 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 197 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path")) |
| 198 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 199 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("File Path")) |
| 200 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 201 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 202 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 203 | (ocidAddElement's setStringValue:("File Path")) |
| 204 | (ocidTrElement's addChild:(ocidAddElement)) |
| 205 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 206 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK")) |
| 207 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 208 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("LINK")) |
| 209 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 210 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 211 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 212 | (ocidAddElement's setStringValue:("LINK")) |
| 213 | (ocidTrElement's addChild:(ocidAddElement)) |
| 214 | #TRをTHEADにセット |
| 215 | ocidTheadElement's addChild:(ocidTrElement) |
| 216 | #THEADをテーブルにセット |
| 217 | ocidTableElement's addChild:(ocidTheadElement) |
| 218 | ######################################## |
| 219 | #【tbody】 |
| 220 | set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody") |
| 221 | #ITEM |
| 222 | set numCntArray to ocidSortedArray's |count|() |
| 223 | #データ数繰り返し |
| 224 | repeat with itemNo from 0 to (numCntArray - 1) by 1 |
| 225 | #データ取り出し |
| 226 | set ocidLineString to (ocidSortedArray's objectAtIndex:(itemNo)) |
| 227 | set ocidLineItemArray to (ocidLineString's componentsSeparatedByString:(strTab)) |
| 228 | set strItemNo to (itemNo + 1) as text |
| 229 | ############## |
| 230 | #TRの開始 |
| 231 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 232 | ####項番処理 |
| 233 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 234 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号:" & strItemNo)) |
| 235 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 236 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("NO")) |
| 237 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 238 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
| 239 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 240 | (ocidThElement's setStringValue:(strItemNo)) |
| 241 | (ocidTrElement's addChild:(ocidThElement)) |
| 242 | |
| 243 | |
| 244 | # |
| 245 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 246 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript")) |
| 247 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 248 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Postscript")) |
| 249 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 250 | set strSetValue to (ocidLineItemArray's objectAtIndex:(0)) |
| 251 | (ocidTdElement's setStringValue:(strSetValue)) |
| 252 | (ocidTrElement's addChild:(ocidTdElement)) |
| 253 | # |
| 254 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 255 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name")) |
| 256 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 257 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Full Name")) |
| 258 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 259 | set strSetValue to (ocidLineItemArray's objectAtIndex:(1)) |
| 260 | (ocidTdElement's setStringValue:(strSetValue)) |
| 261 | (ocidTrElement's addChild:(ocidTdElement)) |
| 262 | # |
| 263 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 264 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path")) |
| 265 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 266 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("File Path")) |
| 267 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 268 | set strSetValue to (ocidLineItemArray's objectAtIndex:(2)) |
| 269 | (ocidTdElement's setStringValue:(strSetValue)) |
| 270 | (ocidTrElement's addChild:(ocidTdElement)) |
| 271 | |
| 272 | #リンクはAdobeのURL |
| 273 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 274 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK")) |
| 275 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 276 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("LINK")) |
| 277 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 278 | |
| 279 | set ocidAElement to (refMe's NSXMLElement's elementWithName:("a")) |
| 280 | set strSetValue to (ocidLineItemArray's objectAtIndex:(3)) |
| 281 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:(strSetValue)) |
| 282 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 283 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
| 284 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 285 | set strContents to ("LINK") as text |
| 286 | (ocidAElement's setStringValue:(strContents)) |
| 287 | (ocidTdElement's addChild:(ocidAElement)) |
| 288 | |
| 289 | (ocidTrElement's addChild:(ocidTdElement)) |
| 290 | # |
| 291 | (ocidTbodyElement's addChild:(ocidTrElement)) |
| 292 | end repeat |
| 293 | #TBODYをテーブルにセット |
| 294 | ocidTableElement's addChild:(ocidTbodyElement) |
| 295 | ############################## |
| 296 | #【tfoot】 |
| 297 | set ocidTfootElement to refMe's NSXMLElement's elementWithName:("tfoot") |
| 298 | #TR |
| 299 | set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr") |
| 300 | #colspan指定して1行でセット |
| 301 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 302 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり")) |
| 303 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 304 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("8")) |
| 305 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 306 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
| 307 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 308 | # |
| 309 | set strContents to ("項目数 : " & (numCntArray as text) & "") as text |
| 310 | (ocidThElement's setStringValue:(strContents)) |
| 311 | #THをTRにセットして |
| 312 | ocidTrElement's addChild:(ocidThElement) |
| 313 | #TRをTFOOTにセット |
| 314 | ocidTfootElement's addChild:(ocidTrElement) |
| 315 | #TFOOTをテーブルにセット |
| 316 | ocidTableElement's addChild:(ocidTfootElement) |
| 317 | #テーブルをアーティクルにセット |
| 318 | ocidSetArticleElement's addChild:(ocidTableElement) |
| 319 | ############################## |
| 320 | #HTMLにする |
| 321 | ############################## |
| 322 | set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement}) |
| 323 | #####保存 |
| 324 | #読み取りやすい表示 |
| 325 | set ocidXMLdata to ocidHTML's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint) |
| 326 | set listDone to ocidXMLdata's writeToURL:(ocidSaveHTMLPathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference) |
| 327 | ####ブラウザで開く(エラーしなければSafariで開く) |
| 328 | set strAppPath to ("/Applications/Safari.app") as text |
| 329 | set ocidAppPathStr to refMe's NSString's stringWithString:(strAppPath) |
| 330 | set ocidAppPath to ocidAppPathStr's stringByStandardizingPath() |
| 331 | set ocidAppPathURL to refMe's NSURL's fileURLWithPath:(ocidAppPath) isDirectory:(false) |
| 332 | try |
| 333 | set aliasFilePath to (ocidSaveHTMLPathURL's absoluteURL()) as alias |
| 334 | tell application "Safari" |
| 335 | open location aliasFilePath |
| 336 | end tell |
| 337 | on error strErrMsg number numErrNo |
| 338 | |
| 339 | set ocidURLsArray to refMe's NSMutableArray's alloc()'s init() |
| 340 | ocidURLsArray's addObject:(ocidSaveHTMLPathURL) |
| 341 | # |
| 342 | set appWorkspace to refMe's NSWorkspace's sharedWorkspace() |
| 343 | set ocidConfig to (refMe's NSWorkspaceOpenConfiguration's configuration()) |
| 344 | appWorkspace's openURLs:(ocidURLsArray) withApplicationAtURL:(ocidAppPathURL) configuration:(ocidConfig) completionHandler:(missing value) |
| 345 | |
| 346 | end try |
| 347 | ###################### |
| 348 | #開く |
| 349 | set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace() |
| 350 | set boolDone to appSharedWorkspace's openURL:(ocidHTMLSaveDirPathURL) |
| 351 |
|
| 352 | return true |
| 353 | ###################### |
| 354 | #日付番号 |
| 355 | to doGetDateNo(argFormatStrings) |
| 356 | ####日付情報の取得 |
| 357 | set ocidDate to refMe's NSDate's |date|() |
| 358 | ###日付のフォーマットを定義 |
| 359 | set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init() |
| 360 | ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX") |
| 361 | ocidNSDateFormatter's setDateFormat:(argFormatStrings) |
| 362 | set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:(ocidDate) |
| 363 | set strDateAndTime to ocidDateAndTime as text |
| 364 | return strDateAndTime |
| 365 | end doGetDateNo |
| 366 |
|
| 367 | ############################################################ |
| 368 | # 基本的なHTMLの構造 |
| 369 | (* |
| 370 | doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents}) |
| 371 | HTMLのBODY部 |
| 372 | header |
| 373 | article |
| 374 | footerにそれぞれAddchildするデータをリストで渡す |
| 375 | 戻り値はRootエレメントにセットされた |
| 376 | NSXMLDocumentを戻すので 保存すればOK |
| 377 | *) |
| 378 | ############################################################ |
| 379 | to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents}) |
| 380 | #XML初期化 |
| 381 | set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init() |
| 382 | ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind) |
| 383 | # DTD付与 |
| 384 | set ocidDTD to refMe's NSXMLDTD's alloc()'s init() |
| 385 | ocidDTD's setName:("html") |
| 386 | ocidXMLDoc's setDTD:(ocidDTD) |
| 387 | # |
| 388 | set ocidRootElement to refMe's NSXMLElement's elementWithName:("html") |
| 389 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja") |
| 390 | ocidRootElement's addAttribute:(ocidAddNode) |
| 391 | # |
| 392 | set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head") |
| 393 | # |
| 394 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("title") |
| 395 | ocidAddElement's setStringValue:("ATS(Apple Type Services)フォントリスト") |
| 396 | ocidHeadElement's addChild:(ocidAddElement) |
| 397 | # http-equiv |
| 398 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 399 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type") |
| 400 | ocidAddElement's addAttribute:(ocidAddNode) |
| 401 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8") |
| 402 | ocidAddElement's addAttribute:(ocidAddNode) |
| 403 | ocidHeadElement's addChild:(ocidAddElement) |
| 404 | # |
| 405 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 406 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport") |
| 407 | ocidAddElement's addAttribute:(ocidAddNode) |
| 408 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720") |
| 409 | ocidAddElement's addAttribute:(ocidAddNode) |
| 410 | ocidHeadElement's addChild:(ocidAddElement) |
| 411 | # |
| 412 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("style") |
| 413 | 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 } } tbody th { word-wrap: break-all;overflow-x: hidden;} tbody td { word-wrap: break-all;overflow-wrap: anywhere;text-overflow: ellipsis;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 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 } }") |
| 414 | ocidHeadElement's addChild:(ocidAddElement) |
| 415 | ocidRootElement's addChild:(ocidHeadElement) |
| 416 | # |
| 417 | #ボディエレメント |
| 418 | set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body") |
| 419 | #ヘッダー |
| 420 | set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header") |
| 421 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header") |
| 422 | ocidHeaderElement's addAttribute:(ocidAddNode) |
| 423 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header") |
| 424 | ocidHeaderElement's addAttribute:(ocidAddNode) |
| 425 | ocidHeaderElement's addChild:(argHeaderContents) |
| 426 | ocidBodyElement's addChild:(ocidHeaderElement) |
| 427 | #アーティクル |
| 428 | set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article") |
| 429 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article") |
| 430 | ocidArticleElement's addAttribute:(ocidAddNode) |
| 431 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article") |
| 432 | ocidArticleElement's addAttribute:(ocidAddNode) |
| 433 | ocidArticleElement's addChild:(argArticleContents) |
| 434 | ocidBodyElement's addChild:(ocidArticleElement) |
| 435 | #フッター |
| 436 | set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer") |
| 437 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer") |
| 438 | ocidFooterElement's addAttribute:(ocidAddNode) |
| 439 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer") |
| 440 | ocidFooterElement's addAttribute:(ocidAddNode) |
| 441 | ocidFooterElement's addChild:(argFooterContents) |
| 442 | ocidBodyElement's addChild:(ocidFooterElement) |
| 443 | #ボディをROOTエレメントにセット |
| 444 | ocidRootElement's addChild:(ocidBodyElement) |
| 445 | #ROOTをXMLにセット |
| 446 | ocidXMLDoc's setRootElement:(ocidRootElement) |
| 447 | #値を戻す |
| 448 | return ocidXMLDoc |
| 449 | end doMakeRootElement |