| 001 | #!/usr/bin/env osascript |
| 002 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
| 003 | (* |
| 004 | ATS (Apple Font Registration System)の内容のTSV出力 |
| 005 | 基本フォントで3000件程度あると思います |
| 006 | デザイナーだと1万件超える人も多いかな |
| 007 | PS名 フルネーム ファイルパスを出力します |
| 008 | テキストファイルでだいたい1mb超ええるサイズになります |
| 009 | fontregistry.userのDBから値を取得しています |
| 010 | ATSNoの飛び番について |
| 011 | ATSNoの番号が飛んでいる部分は |
| 012 | 未ダウンロード・未使用・廃番のassetフォントの予約分と思われます |
| 013 | TSVをエクセルで読み込む場合は |
| 014 | 文字コードをUTF8指定で読み込んでください |
| 015 |
|
| 016 | com.cocolog-nifty.quicktimer.icefloe *) |
| 017 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
| 018 | use AppleScript version "2.8" |
| 019 | use framework "Foundation" |
| 020 | use framework "AppKit" |
| 021 | use scripting additions |
| 022 | property refMe : a reference to current application |
| 023 | ###################### |
| 024 | #DBファイルの複製 |
| 025 | set appFileManager to refMe's NSFileManager's defaultManager() |
| 026 | set ocidTempDirURL to appFileManager's temporaryDirectory() |
| 027 | set ocidUUID to refMe's NSUUID's alloc()'s init() |
| 028 | set ocidUUIDString to ocidUUID's UUIDString |
| 029 | set ocidSaveDirPathURL to ocidTempDirURL's URLByAppendingPathComponent:(ocidUUIDString) isDirectory:(true) |
| 030 | #テンポラリ(起動時に削除される項目に作業用ディレクトリ) |
| 031 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init() |
| 032 | ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions) |
| 033 | set listBoolMakeDir to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference) |
| 034 | #DB元ファイル |
| 035 | set ocidContainerDirPathURL to ocidTempDirURL's URLByDeletingLastPathComponent() |
| 036 | set ocidDBFilePathURL to ocidContainerDirPathURL's URLByAppendingPathComponent:("C/com.apple.FontRegistry/fontregistry.user") isDirectory:(false) |
| 037 | #DBコピー先パス |
| 038 | set strSaveDBFileName to "fontregistry.user.sqlite" as text |
| 039 | set ocidSaveDBFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strSaveDBFileName) isDirectory:false |
| 040 | set strDBFilePath to ocidSaveDBFilePathURL's |path|() as text |
| 041 | #DBコピー |
| 042 | set listDone to (appFileManager's copyItemAtURL:(ocidDBFilePathURL) toURL:(ocidSaveDBFilePathURL) |error|:(reference)) |
| 043 |
|
| 044 | #出力ファイルパス |
| 045 | set strOutputFileName to "output.tsv" as text |
| 046 | set ocidOutputFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strOutputFileName) isDirectory:false |
| 047 | set strOutputFilePath to ocidOutputFilePathURL's |path|() as text |
| 048 |
|
| 049 | #HTML保存先 |
| 050 | set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser() |
| 051 | set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true) |
| 052 | set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("FontList") isDirectory:(true) |
| 053 | set ocidHTMLSaveDirPath to ocidHTMLSaveDirPathURL's |path|() |
| 054 | set boolDirExists to appFileManager's fileExistsAtPath:(ocidHTMLSaveDirPath) isDirectory:(true) |
| 055 | if boolDirExists is false then |
| 056 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init() |
| 057 | ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions) |
| 058 | set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference) |
| 059 | if (item 1 of listDone) is false then |
| 060 | set strErrorNO to (item 2 of listDone)'s code() as text |
| 061 | set strErrorMes to (item 2 of listDone)'s localizedDescription() as text |
| 062 | refMe's NSLog("■:" & strErrorNO & strErrorMes) |
| 063 | log "createDirectoryAtURL エラーしました" & strErrorNO & strErrorMes |
| 064 | return false |
| 065 | end if |
| 066 | end if |
| 067 | #出力ファイル HTML |
| 068 | set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text |
| 069 | set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text |
| 070 | set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false) |
| 071 |
|
| 072 | ###################### |
| 073 | #コマンド実行 |
| 074 | #v2 |
| 075 | set strCommandText to ("/usr/bin/sqlite3 \"" & strDBFilePath & "\" \".headers off\" \".headers off\" \".mode tabs\" \"SELECT DISTINCT ft.font_column || '" & tab & "' || nt.name_column || '" & tab & "' || fnt.full_name_column || '" & tab & "' || COALESCE(loc.family_name_column, '') || '" & tab & "' || COALESCE(loc.subfamily_name_column, '') || '" & tab & "' || ft.path_column FROM font_table AS ft JOIN fullname_table AS fnt ON ft.font_column = fnt.font_column JOIN name_table AS nt ON ft.font_column = nt.font_column LEFT JOIN loc_names_table AS loc ON ft.font_column = loc.font_column GROUP BY ft.font_column;\" > \"" & strOutputFilePath & "\"") as text |
| 076 | log "" & linefeed & strCommandText & linefeed & "" as text |
| 077 | try |
| 078 | do shell script strCommandText |
| 079 | end try |
| 080 | ###################### |
| 081 | #戻り値整形 |
| 082 | set strTab to ("" & tab & "") as text |
| 083 | set strLF to ("" & linefeed & "") as text |
| 084 | set strCR to ("" & return & "") as text |
| 085 | #NSSTRING |
| 086 | set listResponse to refMe's NSString's alloc()'s initWithContentsOfURL:(ocidOutputFilePathURL) encoding:(refMe's NSUTF8StringEncoding) |error|:(reference) |
| 087 | set ocidReadStrings to (first item of listResponse) |
| 088 | #改行をUNIXに強制 |
| 089 | set ocidReadStrings to (ocidReadStrings's stringByReplacingOccurrencesOfString:(strCR & strLF) withString:(strLF)) |
| 090 | set ocidReadStrings to (ocidReadStrings's stringByReplacingOccurrencesOfString:(strCR) withString:(strLF)) |
| 091 | set ocidReadStrings to (ocidReadStrings's stringByReplacingOccurrencesOfString:(strLF & strLF) withString:(strLF)) |
| 092 | #行末の改行を削除 |
| 093 | set boolHas to (ocidReadStrings's hasSuffix:(strLF)) as boolean |
| 094 | if boolHas is true then |
| 095 | set ocidLength to ((ocidReadStrings's |length|()) - 1) as integer |
| 096 | set ocidReadStrings to ocidReadStrings's substringToIndex:(ocidLength) |
| 097 | end if |
| 098 | set ocidCharSet to refMe's NSCharacterSet's newlineCharacterSet() |
| 099 | set ocidReadArray to ocidReadStrings's componentsSeparatedByCharactersInSet:(ocidCharSet) |
| 100 | set ocidReadStrings to (missing value) |
| 101 | set ocidSortedArray to refMe's NSMutableArray's alloc()'s init() |
| 102 | repeat with itemLineString in ocidReadArray |
| 103 | set boonUset to (itemLineString's containsString:("/Users/")) |
| 104 | if boonUset is true then |
| 105 | set ocidItemLineArray to (itemLineString's componentsSeparatedByString:(strTab)) |
| 106 | ##ここで順番入れ替え |
| 107 | (ocidItemLineArray's exchangeObjectAtIndex:(0) withObjectAtIndex:(1)) |
| 108 | set ocidJoinText to (ocidItemLineArray's componentsJoinedByString:(strTab)) |
| 109 | (ocidSortedArray's addObject:(ocidJoinText)) |
| 110 | end if |
| 111 | set ocidItemLineArray to (missing value) |
| 112 | set itemLineString to (missing value) |
| 113 | end repeat |
| 114 | set ocidReadArray to (missing value) |
| 115 | #ソート |
| 116 | set ocidSortedArray to ocidSortedArray's sortedArrayUsingSelector:("localizedStandardCompare:") |
| 117 |
|
| 118 | ###################### |
| 119 | #本処理 HTML生成 |
| 120 | set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser() |
| 121 | set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true) |
| 122 | set ocidHTMLSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("Apple/FontList") isDirectory:(true) |
| 123 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s init() |
| 124 | ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions) |
| 125 | set listDone to appFileManager's createDirectoryAtURL:(ocidHTMLSaveDirPathURL) withIntermediateDirectories:(true) attributes:(ocidAttrDict) |error|:(reference) |
| 126 | #出力ファイル HTML |
| 127 | set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text |
| 128 | set strHTMLFileName to ("ATSFontsList." & strTime & ".html") as text |
| 129 | set ocidSaveHTMLPathURL to ocidHTMLSaveDirPathURL's URLByAppendingPathComponent:(strHTMLFileName) isDirectory:(false) |
| 130 | #headerに渡すエレメント |
| 131 | set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 132 | set ocidH3Element to refMe's NSXMLElement's elementWithName:("h3") |
| 133 | (ocidH3Element's setStringValue:("ATS(Apple Type Services)一覧")) |
| 134 | (ocidSetHeaderElement's addChild:(ocidH3Element)) |
| 135 | ################### |
| 136 | #footerに渡すエレメント |
| 137 | set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 138 | set ocidAElement to refMe's NSXMLElement's elementWithName:("a") |
| 139 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://developer.apple.com/fonts/")) |
| 140 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 141 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
| 142 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 143 | set strContents to ("Fonts for Apple platforms") as text |
| 144 | (ocidAElement's setStringValue:(strContents)) |
| 145 | (ocidSetFooterElement's addChild:(ocidAElement)) |
| 146 | ################### |
| 147 | #articleに渡すエレメント |
| 148 | set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div")) |
| 149 | set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3")) |
| 150 | set strTime to doGetDateNo("yyyyMMdd") as text |
| 151 | set strSetValue to (strTime & "時点のリスト") as text |
| 152 | (ocidH3Element's setStringValue:(strSetValue)) |
| 153 | (ocidSetArticleElement's addChild:(ocidH3Element)) |
| 154 | ################### |
| 155 | #テーブル部生成開始 |
| 156 | set ocidTableElement to refMe's NSXMLElement's elementWithName:("table") |
| 157 | ################### |
| 158 | #【caption】 |
| 159 | set ocidCaptionElement to refMe's NSXMLElement's elementWithName:("caption") |
| 160 | ocidCaptionElement's setStringValue:("ATS(Apple Type Services)が認識しているフォントリスト") |
| 161 | ocidTableElement's addChild:(ocidCaptionElement) |
| 162 | ################### |
| 163 | #【colgroup】 |
| 164 | set ocidColgroupElement to refMe's NSXMLElement's elementWithName:("colgroup") |
| 165 | ################### |
| 166 | #【col】col生成 |
| 167 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 168 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No")) |
| 169 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 170 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 171 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 172 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo")) |
| 173 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 174 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 175 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 176 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript")) |
| 177 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 178 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 179 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 180 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name")) |
| 181 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 182 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 183 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 184 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family")) |
| 185 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 186 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 187 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 188 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily")) |
| 189 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 190 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 191 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 192 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path")) |
| 193 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 194 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 195 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
| 196 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK")) |
| 197 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 198 | (ocidColgroupElement's addChild:(ocidAddElement)) |
| 199 | #テーブルエレメントに追加 |
| 200 | ocidTableElement's addChild:(ocidColgroupElement) |
| 201 | ################### |
| 202 | #【thead】 |
| 203 | set ocidTheadElement to refMe's NSXMLElement's elementWithName:("thead") |
| 204 | #TR |
| 205 | set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr") |
| 206 | #TH |
| 207 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 208 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("No")) |
| 209 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 210 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("No")) |
| 211 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 212 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 213 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 214 | (ocidAddElement's setStringValue:("\")) |
| 215 | (ocidTrElement's addChild:(ocidAddElement)) |
| 216 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 217 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo")) |
| 218 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 219 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("ATSNo")) |
| 220 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 221 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 222 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 223 | (ocidAddElement's setStringValue:("ATSNo")) |
| 224 | (ocidTrElement's addChild:(ocidAddElement)) |
| 225 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 226 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript")) |
| 227 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 228 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Postscript")) |
| 229 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 230 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 231 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 232 | (ocidAddElement's setStringValue:("Postscript")) |
| 233 | (ocidTrElement's addChild:(ocidAddElement)) |
| 234 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 235 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name")) |
| 236 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 237 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Full Name")) |
| 238 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 239 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 240 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 241 | (ocidAddElement's setStringValue:("Full Name")) |
| 242 | (ocidTrElement's addChild:(ocidAddElement)) |
| 243 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 244 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family")) |
| 245 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 246 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("Family")) |
| 247 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 248 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 249 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 250 | (ocidAddElement's setStringValue:("Family")) |
| 251 | (ocidTrElement's addChild:(ocidAddElement)) |
| 252 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 253 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily")) |
| 254 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 255 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("SubFamily")) |
| 256 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 257 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 258 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 259 | (ocidAddElement's setStringValue:("SubFamily")) |
| 260 | (ocidTrElement's addChild:(ocidAddElement)) |
| 261 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 262 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path")) |
| 263 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 264 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("File Path")) |
| 265 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 266 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 267 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 268 | (ocidAddElement's setStringValue:("File Path")) |
| 269 | (ocidTrElement's addChild:(ocidAddElement)) |
| 270 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 271 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK")) |
| 272 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 273 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("LINK")) |
| 274 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 275 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
| 276 | (ocidAddElement's addAttribute:(ocidAddNode)) |
| 277 | (ocidAddElement's setStringValue:("LINK")) |
| 278 | (ocidTrElement's addChild:(ocidAddElement)) |
| 279 | #TRをTHEADにセット |
| 280 | ocidTheadElement's addChild:(ocidTrElement) |
| 281 | #THEADをテーブルにセット |
| 282 | ocidTableElement's addChild:(ocidTheadElement) |
| 283 | ######################################## |
| 284 | #【tbody】 |
| 285 | set ocidTbodyElement to refMe's NSXMLElement's elementWithName:("tbody") |
| 286 | #ITEM |
| 287 | set numCntArray to ocidSortedArray's |count|() |
| 288 | #データ数繰り返し |
| 289 | repeat with itemNo from 0 to (numCntArray - 1) by 1 |
| 290 | #データ取り出し |
| 291 | set ocidLineString to (ocidSortedArray's objectAtIndex:(itemNo)) |
| 292 | set ocidLineItemArray to (ocidLineString's componentsSeparatedByString:(strTab)) |
| 293 | set strItemNo to (itemNo + 1) as text |
| 294 | ############## |
| 295 | #TRの開始 |
| 296 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
| 297 | ####項番処理 |
| 298 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 299 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号:" & strItemNo)) |
| 300 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 301 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("NO")) |
| 302 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 303 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
| 304 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 305 | (ocidThElement's setStringValue:(strItemNo)) |
| 306 | (ocidTrElement's addChild:(ocidThElement)) |
| 307 | |
| 308 | |
| 309 | #ATSNo |
| 310 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 311 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("ATSNo")) |
| 312 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 313 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("style") stringValue:("max-width:120px;")) |
| 314 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 315 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("ATSNo")) |
| 316 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 317 | set strSetValue to (ocidLineItemArray's objectAtIndex:(1)) |
| 318 | (ocidTdElement's setStringValue:(strSetValue)) |
| 319 | (ocidTrElement's addChild:(ocidTdElement)) |
| 320 | # |
| 321 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 322 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Postscript")) |
| 323 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 324 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Postscript")) |
| 325 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 326 | set strSetValue to (ocidLineItemArray's objectAtIndex:(0)) |
| 327 | (ocidTdElement's setStringValue:(strSetValue)) |
| 328 | (ocidTrElement's addChild:(ocidTdElement)) |
| 329 | # |
| 330 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 331 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Full Name")) |
| 332 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 333 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Full Name")) |
| 334 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 335 | set strSetValue to (ocidLineItemArray's objectAtIndex:(2)) |
| 336 | (ocidTdElement's setStringValue:(strSetValue)) |
| 337 | (ocidTrElement's addChild:(ocidTdElement)) |
| 338 | # |
| 339 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 340 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Family")) |
| 341 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 342 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Family")) |
| 343 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 344 | set strSetValue to (ocidLineItemArray's objectAtIndex:(3)) |
| 345 | (ocidTdElement's setStringValue:(strSetValue)) |
| 346 | (ocidTrElement's addChild:(ocidTdElement)) |
| 347 | # |
| 348 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 349 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("SubFamily")) |
| 350 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 351 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("SubFamily")) |
| 352 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 353 | set strSetValue to (ocidLineItemArray's objectAtIndex:(4)) |
| 354 | (ocidTdElement's setStringValue:(strSetValue)) |
| 355 | (ocidTrElement's addChild:(ocidTdElement)) |
| 356 | # |
| 357 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 358 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("File Path")) |
| 359 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 360 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("File Path")) |
| 361 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 362 | set strSetValue to (ocidLineItemArray's objectAtIndex:(5)) |
| 363 | (ocidTdElement's setStringValue:(strSetValue)) |
| 364 | (ocidTrElement's addChild:(ocidTdElement)) |
| 365 | |
| 366 | #リンクはAdobeのURL |
| 367 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
| 368 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LINK")) |
| 369 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 370 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("LINK")) |
| 371 | (ocidTdElement's addAttribute:(ocidAddNode)) |
| 372 | |
| 373 | set ocidAElement to (refMe's NSXMLElement's elementWithName:("a")) |
| 374 | set strSetValue to (ocidLineItemArray's objectAtIndex:(5)) |
| 375 | set strURLValue to ("file://" & strSetValue & "") |
| 376 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:(strURLValue)) |
| 377 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 378 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
| 379 | (ocidAElement's addAttribute:(ocidAddNode)) |
| 380 | set strContents to ("LINK") as text |
| 381 | (ocidAElement's setStringValue:(strContents)) |
| 382 | (ocidTdElement's addChild:(ocidAElement)) |
| 383 | |
| 384 | (ocidTrElement's addChild:(ocidTdElement)) |
| 385 | # |
| 386 | (ocidTbodyElement's addChild:(ocidTrElement)) |
| 387 | end repeat |
| 388 | #TBODYをテーブルにセット |
| 389 | ocidTableElement's addChild:(ocidTbodyElement) |
| 390 | ############################## |
| 391 | #【tfoot】 |
| 392 | set ocidTfootElement to refMe's NSXMLElement's elementWithName:("tfoot") |
| 393 | #TR |
| 394 | set ocidTrElement to refMe's NSXMLElement's elementWithName:("tr") |
| 395 | #colspan指定して1行でセット |
| 396 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
| 397 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり")) |
| 398 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 399 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("8")) |
| 400 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 401 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
| 402 | (ocidThElement's addAttribute:(ocidAddNode)) |
| 403 | # |
| 404 | set strContents to ("項目数 : " & (numCntArray as text) & "") as text |
| 405 | (ocidThElement's setStringValue:(strContents)) |
| 406 | #THをTRにセットして |
| 407 | ocidTrElement's addChild:(ocidThElement) |
| 408 | #TRをTFOOTにセット |
| 409 | ocidTfootElement's addChild:(ocidTrElement) |
| 410 | #TFOOTをテーブルにセット |
| 411 | ocidTableElement's addChild:(ocidTfootElement) |
| 412 | #テーブルをアーティクルにセット |
| 413 | ocidSetArticleElement's addChild:(ocidTableElement) |
| 414 | ############################## |
| 415 | #HTMLにする |
| 416 | ############################## |
| 417 | set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement}) |
| 418 | #####保存 |
| 419 | #読み取りやすい表示 |
| 420 | set ocidXMLdata to ocidHTML's XMLDataWithOptions:(refMe's NSXMLNodePrettyPrint) |
| 421 | set listDone to ocidXMLdata's writeToURL:(ocidSaveHTMLPathURL) options:(refMe's NSDataWritingAtomic) |error|:(reference) |
| 422 | ####ブラウザで開く(エラーしなければSafariで開く) |
| 423 | set strAppPath to ("/Applications/Safari.app") as text |
| 424 | set ocidAppPathStr to refMe's NSString's stringWithString:(strAppPath) |
| 425 | set ocidAppPath to ocidAppPathStr's stringByStandardizingPath() |
| 426 | set ocidAppPathURL to refMe's NSURL's fileURLWithPath:(ocidAppPath) isDirectory:(false) |
| 427 | try |
| 428 | set aliasFilePath to (ocidSaveHTMLPathURL's absoluteURL()) as alias |
| 429 | tell application "Safari" |
| 430 | open location aliasFilePath |
| 431 | end tell |
| 432 | on error strErrMsg number numErrNo |
| 433 | |
| 434 | set ocidURLsArray to refMe's NSMutableArray's alloc()'s init() |
| 435 | ocidURLsArray's addObject:(ocidSaveHTMLPathURL) |
| 436 | # |
| 437 | set appWorkspace to refMe's NSWorkspace's sharedWorkspace() |
| 438 | set ocidConfig to (refMe's NSWorkspaceOpenConfiguration's configuration()) |
| 439 | appWorkspace's openURLs:(ocidURLsArray) withApplicationAtURL:(ocidAppPathURL) configuration:(ocidConfig) completionHandler:(missing value) |
| 440 | |
| 441 | end try |
| 442 | ###################### |
| 443 | #開く |
| 444 | set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace() |
| 445 | set boolDone to appSharedWorkspace's openURL:(ocidHTMLSaveDirPathURL) |
| 446 | ###################### |
| 447 | #コピーしたDBをゴミ箱に |
| 448 | set appFileManager to refMe's NSFileManager's defaultManager() |
| 449 | set listDone to (appFileManager's trashItemAtURL:(ocidSaveDBFilePathURL) resultingItemURL:(ocidSaveDirPathURL) |error|:(reference)) |
| 450 | if (item 2 of listDone) ≠ (missing value) then |
| 451 | set strErrorNO to (item 2 of listDone)'s code() as text |
| 452 | set strErrorMes to (item 2 of listDone)'s localizedDescription() as text |
| 453 | refMe's NSLog("■:" & strErrorNO & strErrorMes) |
| 454 | return "エラーしました" & strErrorNO & strErrorMes |
| 455 | end if |
| 456 | return true |
| 457 | ###################### |
| 458 | #日付番号 |
| 459 | to doGetDateNo(argFormatStrings) |
| 460 | ####日付情報の取得 |
| 461 | set ocidDate to refMe's NSDate's |date|() |
| 462 | ###日付のフォーマットを定義 |
| 463 | set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init() |
| 464 | ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX") |
| 465 | ocidNSDateFormatter's setDateFormat:(argFormatStrings) |
| 466 | set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:(ocidDate) |
| 467 | set strDateAndTime to ocidDateAndTime as text |
| 468 | return strDateAndTime |
| 469 | end doGetDateNo |
| 470 |
|
| 471 | ############################################################ |
| 472 | # 基本的なHTMLの構造 |
| 473 | (* |
| 474 | doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents}) |
| 475 | HTMLのBODY部 |
| 476 | header |
| 477 | article |
| 478 | footerにそれぞれAddchildするデータをリストで渡す |
| 479 | 戻り値はRootエレメントにセットされた |
| 480 | NSXMLDocumentを戻すので 保存すればOK |
| 481 | *) |
| 482 | ############################################################ |
| 483 | to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents}) |
| 484 | #XML初期化 |
| 485 | set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init() |
| 486 | ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind) |
| 487 | # DTD付与 |
| 488 | set ocidDTD to refMe's NSXMLDTD's alloc()'s init() |
| 489 | ocidDTD's setName:("html") |
| 490 | ocidXMLDoc's setDTD:(ocidDTD) |
| 491 | # |
| 492 | set ocidRootElement to refMe's NSXMLElement's elementWithName:("html") |
| 493 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja") |
| 494 | ocidRootElement's addAttribute:(ocidAddNode) |
| 495 | # |
| 496 | set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head") |
| 497 | # |
| 498 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("title") |
| 499 | ocidAddElement's setStringValue:("ATS(Apple Type Services)フォントリスト") |
| 500 | ocidHeadElement's addChild:(ocidAddElement) |
| 501 | # http-equiv |
| 502 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 503 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type") |
| 504 | ocidAddElement's addAttribute:(ocidAddNode) |
| 505 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8") |
| 506 | ocidAddElement's addAttribute:(ocidAddNode) |
| 507 | ocidHeadElement's addChild:(ocidAddElement) |
| 508 | # |
| 509 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
| 510 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport") |
| 511 | ocidAddElement's addAttribute:(ocidAddNode) |
| 512 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=720") |
| 513 | ocidAddElement's addAttribute:(ocidAddNode) |
| 514 | ocidHeadElement's addChild:(ocidAddElement) |
| 515 | # |
| 516 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("style") |
| 517 | 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 } }") |
| 518 | ocidHeadElement's addChild:(ocidAddElement) |
| 519 | ocidRootElement's addChild:(ocidHeadElement) |
| 520 | # |
| 521 | #ボディエレメント |
| 522 | set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body") |
| 523 | #ヘッダー |
| 524 | set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header") |
| 525 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header") |
| 526 | ocidHeaderElement's addAttribute:(ocidAddNode) |
| 527 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header") |
| 528 | ocidHeaderElement's addAttribute:(ocidAddNode) |
| 529 | ocidHeaderElement's addChild:(argHeaderContents) |
| 530 | ocidBodyElement's addChild:(ocidHeaderElement) |
| 531 | #アーティクル |
| 532 | set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article") |
| 533 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article") |
| 534 | ocidArticleElement's addAttribute:(ocidAddNode) |
| 535 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article") |
| 536 | ocidArticleElement's addAttribute:(ocidAddNode) |
| 537 | ocidArticleElement's addChild:(argArticleContents) |
| 538 | ocidBodyElement's addChild:(ocidArticleElement) |
| 539 | #フッター |
| 540 | set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer") |
| 541 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer") |
| 542 | ocidFooterElement's addAttribute:(ocidAddNode) |
| 543 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer") |
| 544 | ocidFooterElement's addAttribute:(ocidAddNode) |
| 545 | ocidFooterElement's addChild:(argFooterContents) |
| 546 | ocidBodyElement's addChild:(ocidFooterElement) |
| 547 | #ボディをROOTエレメントにセット |
| 548 | ocidRootElement's addChild:(ocidBodyElement) |
| 549 | #ROOTをXMLにセット |
| 550 | ocidXMLDoc's setRootElement:(ocidRootElement) |
| 551 | #値を戻す |
| 552 | return ocidXMLDoc |
| 553 | end doMakeRootElement |