001 | #!/usr/bin/env osascript |
---|
002 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
---|
003 | (* |
---|
004 | 元になっているのはVS CODE用のスクリプト |
---|
005 | v5 テキストファイルを後から開くようにした |
---|
006 | v5 HTMLのファイル名の日付を24時間表記にした |
---|
007 | v6 1行目の表記を戻した |
---|
008 | v6 1行目の判定方法を変更した |
---|
009 | v6 ファイル名を反映させるようにした |
---|
010 | v6.1 一部無駄な改行が入るのを修正した |
---|
011 | ---ここまでCODE用 |
---|
012 | 違っているのは |
---|
013 | バンドルIDとプロセス名ぐらいでほとんど修正していない |
---|
014 | v1 Cursor用に手直し版 |
---|
015 | |
---|
016 | |
---|
017 | 要アクセシビリティアクセス |
---|
018 | システム設定>プライバシーとセキュリティ>アクセシビリティで |
---|
019 | Cursorに許可を与えないとファイル名は取得できない |
---|
020 | |
---|
021 | 対象のアプリケーションの前面ドキュメントをコピーしてから実行 |
---|
022 | |
---|
023 | com.cocolog-nifty.quicktimer.icefloe *) |
---|
024 | ----+----1----+----2----+-----3----+----4----+----5----+----6----+----7 |
---|
025 | use AppleScript version "2.8" |
---|
026 | use framework "Foundation" |
---|
027 | use framework "AppKit" |
---|
028 | use scripting additions |
---|
029 | property refMe : a reference to current application |
---|
030 | set appFileManager to refMe's NSFileManager's defaultManager() |
---|
031 | |
---|
032 | ########################################## |
---|
033 | #ファイル名の取得を試みる |
---|
034 | #ここ=バンドルIDは今後変更になる可能性が高い |
---|
035 | tell application id "com.todesktop.230313mzl4w4u92" |
---|
036 | tell application "System Events" |
---|
037 | -->VS CODEと違いプロセス名はちゃんとしている |
---|
038 | tell application process "Cursor" |
---|
039 | tell front window |
---|
040 | try |
---|
041 | set strFileName to name as text |
---|
042 | on error |
---|
043 | set strFileName to "com.cocolog-nifty.quicktimer.scpt" as text |
---|
044 | end try |
---|
045 | end tell |
---|
046 | end tell |
---|
047 | end tell |
---|
048 | end tell |
---|
049 | |
---|
050 | |
---|
051 | #拡張子をscptにする |
---|
052 | set strDelim to AppleScript's text item delimiters |
---|
053 | set AppleScript's text item delimiters to "." |
---|
054 | set listFileName to every text item of strFileName |
---|
055 | copy "scpt" to last item of listFileName |
---|
056 | set strScptFileName to listFileName as text |
---|
057 | set AppleScript's text item delimiters to strDelim |
---|
058 | |
---|
059 | |
---|
060 | |
---|
061 | ########################################## |
---|
062 | ###保存先確保 |
---|
063 | ########################################## |
---|
064 | set ocidHomeDirURL to appFileManager's homeDirectoryForCurrentUser() |
---|
065 | set ocidSitesDirPathURL to ocidHomeDirURL's URLByAppendingPathComponent:("Sites") isDirectory:(true) |
---|
066 | set ocidLocalizedFilePathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:(".localized") isDirectory:(false) |
---|
067 | set ocidLocalizedFilePath to ocidLocalizedFilePathURL's |path|() |
---|
068 | set ocidSaveDirPathURL to ocidSitesDirPathURL's URLByAppendingPathComponent:("TemporaryItems") isDirectory:(true) |
---|
069 | set ocidSaveDirPath to ocidSaveDirPathURL's |path|() |
---|
070 | set boolExists to appFileManager's fileExistsAtPath:(ocidSaveDirPath) isDirectory:(true) |
---|
071 | if boolExists = true then |
---|
072 | log "すでに保存先はあります" |
---|
073 | else if boolExists = false then |
---|
074 | log "保存先が無いのでフォルダを作ります" |
---|
075 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0 |
---|
076 | # 777-->511 755-->493 700-->448 766-->502 |
---|
077 | ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions) |
---|
078 | set listDone to appFileManager's createDirectoryAtURL:(ocidSitesDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference) |
---|
079 | if (item 2 of listDone) ≠ (missing value) then |
---|
080 | log (item 2 of listDone)'s localizedDescription() as text |
---|
081 | return "フォルダの作成に失敗しました" |
---|
082 | end if |
---|
083 | ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions) |
---|
084 | set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference) |
---|
085 | if (item 2 of listDone) ≠ (missing value) then |
---|
086 | log (item 2 of listDone)'s localizedDescription() as text |
---|
087 | return "フォルダの作成に失敗しました" |
---|
088 | end if |
---|
089 | ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions) |
---|
090 | set boolDone to appFileManager's createFileAtPath:(ocidLocalizedFilePath) |contents|:("") attributes:(ocidAttrDict) |
---|
091 | if (boolDone) is (false) then |
---|
092 | return "Localizedファイルの作成に失敗しました" |
---|
093 | end if |
---|
094 | end if |
---|
095 | ###テキストはテンポラリに保存ディレクトリ |
---|
096 | set ocidTempDirURL to appFileManager's temporaryDirectory() |
---|
097 | set ocidTdirPathURL to ocidTempDirURL's URLByDeletingLastPathComponent() |
---|
098 | set ocidTtmpDirPathURL to ocidTdirPathURL's URLByAppendingPathComponent:("TemporaryItems") isDirectory:(true) |
---|
099 | set ocidTtmpDirPath to ocidTtmpDirPathURL's |path|() |
---|
100 | set boolExists to appFileManager's fileExistsAtPath:(ocidTtmpDirPath) isDirectory:(true) |
---|
101 | if boolExists = true then |
---|
102 | log "すでに保存先はあります" |
---|
103 | else if boolExists = false then |
---|
104 | log "保存先が無いのでフォルダを作ります" |
---|
105 | set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0 |
---|
106 | # 777-->511 755-->493 700-->448 766-->502 |
---|
107 | ocidAttrDict's setValue:(511) forKey:(refMe's NSFilePosixPermissions) |
---|
108 | set listDone to appFileManager's createDirectoryAtURL:(ocidTtmpDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference) |
---|
109 | if (item 2 of listDone) ≠ (missing value) then |
---|
110 | log (item 2 of listDone)'s localizedDescription() as text |
---|
111 | return "フォルダの作成に失敗しました" |
---|
112 | end if |
---|
113 | end if |
---|
114 | ###保存ファイルパス |
---|
115 | set strTime to doGetDateNo("yyyyMMdd_HHmmss") as text |
---|
116 | ####ファイル名 |
---|
117 | set strHtmlFileName to ("" & strTime & ".html") as text |
---|
118 | set strTextFileName to ("" & strTime & ".txt") as text |
---|
119 | ###パスURL |
---|
120 | set ocidHTMLFilePathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strHtmlFileName) isDirectory:(false) |
---|
121 | set ocidTextFilePathURL to ocidTtmpDirPathURL's URLByAppendingPathComponent:(strTextFileName) isDirectory:(false) |
---|
122 | ########################################## |
---|
123 | ###ペーストボード |
---|
124 | ########################################## |
---|
125 | set ocidPasteboard to refMe's NSPasteboard's generalPasteboard() |
---|
126 | ##中に格納されているデータタイプを取得 |
---|
127 | set ocidPastBoardTypeArray to ocidPasteboard's types |
---|
128 | ##TEXTを受け取る |
---|
129 | set boolRTF to ocidPastBoardTypeArray's containsObject:("public.rtf") |
---|
130 | set boolText to ocidPastBoardTypeArray's containsObject:("public.utf8-plain-text") |
---|
131 | set boolHTML to ocidPastBoardTypeArray's containsObject:("public.html") |
---|
132 | if boolText is true then |
---|
133 | set ocidPublicText to ocidPasteboard's stringForType:(refMe's NSPasteboardTypeString) |
---|
134 | set ocidTextArray to ocidPublicText's componentsSeparatedByString:"\n" |
---|
135 | set ocidFirstLine to ocidTextArray's firstObject() |
---|
136 | set boolOsa to ocidFirstLine's containsString:("osascript") |
---|
137 | else |
---|
138 | display alert "内容をコピーしてから実行してね(Visual Studio Code専用です。)" |
---|
139 | return "内容をコピーしてから実行してね(Visual Studio Code専用です。)" |
---|
140 | end if |
---|
141 | if boolHTML is true then |
---|
142 | set ocidPublicHTML to ocidPasteboard's stringForType:(refMe's NSPasteboardTypeHTML) |
---|
143 | else |
---|
144 | display alert "内容をコピーしてから実行してね(Visual Studio Code専用です。)" |
---|
145 | return "内容をコピーしてから実行してね(Visual Studio Code専用です。)" |
---|
146 | end if |
---|
147 | ########################################## |
---|
148 | ######コピー用のテキストの事前置換 ここはお好み用 |
---|
149 | ########################################## |
---|
150 | set ocidPublicText to doRegrExReplace(ocidPublicText, "#!/", "#!/") |
---|
151 | set ocidPublicText to doRegrExReplace(ocidPublicText, "APPkit", "AppKit") |
---|
152 | |
---|
153 | |
---|
154 | ########################################## |
---|
155 | ######コピーボタン用 text |
---|
156 | ########################################## |
---|
157 | ###置換レコード |
---|
158 | set recordEntityMap to {|&|:"&", |<|:"<", |>|:">", |"|:""", |'|:"'", |=|:"=", |+|:"+", |\\|:"\", |$|:"$"} as record |
---|
159 | ###ディクショナリにして |
---|
160 | set ocidEntityMap to refMe's NSDictionary's alloc()'s initWithDictionary:(recordEntityMap) |
---|
161 | ###キーの一覧を取り出します |
---|
162 | set ocidAllKeys to ocidEntityMap's allKeys() |
---|
163 | ###可変テキストにして |
---|
164 | set ocidTextToEncode to refMe's NSMutableString's alloc()'s initWithCapacity:0 |
---|
165 | ocidTextToEncode's setString:(ocidPublicText) |
---|
166 | ###取り出したキー一覧を順番に処理 |
---|
167 | repeat with itemAllKey in ocidAllKeys |
---|
168 | ##キーの値を取り出して |
---|
169 | set ocidMapValue to (ocidEntityMap's valueForKey:itemAllKey) |
---|
170 | ##置換 |
---|
171 | set ocidEncodedText to (ocidTextToEncode's stringByReplacingOccurrencesOfString:(itemAllKey) withString:(ocidMapValue)) |
---|
172 | ##次の変換に備える |
---|
173 | set ocidTextToEncode to ocidEncodedText |
---|
174 | end repeat |
---|
175 | ####テキスト確定させて |
---|
176 | set strEncodedText to ocidEncodedText as text |
---|
177 | ###HTMLのエレメントID用のランダム番号3桁 |
---|
178 | set num3Digit to random number from 100 to 999 |
---|
179 | ###JAVAASCRIPT整形 |
---|
180 | set strJsText to ("<script>const elmentButtonCopy" & num3Digit & " = document.getElementById('buttonCopy" & num3Digit & "');const elmentInputText" & num3Digit & " = document.getElementById('inputText" & num3Digit & "');elmentButtonCopy" & num3Digit & ".addEventListener('click', () => {const strInputTextValue = elmentInputText" & num3Digit & ".value;return navigator.clipboard.writeText(strInputTextValue);})</script>") as text |
---|
181 | ###HTML整形 |
---|
182 | set strCopyHTML to ("<textarea id=\"inputText" & num3Digit & "\" type=\"text\" hidden readonly>" & strEncodedText & "</textarea>") as text |
---|
183 | ###ボタン用CSS |
---|
184 | set strCopyBottonCSS to ("#buttonCopy" & num3Digit & "{background-color:#569cd6;border:none;color:white;padding:15px32px;text-align:center;text-decoration:none;display:inline-block;font-size:16px;margin:4px2px;cursor:pointer;border-radius:10px;}") as text |
---|
185 | ###出来上がり |
---|
186 | set strCopyLinkText to (strCopyHTML & "<button id=\"buttonCopy" & num3Digit & "\">クリップボードへコピー</button>" & strJsText) as text |
---|
187 | set strJsLinkText to ("<span class=\"javascript_botton\">" & strCopyLinkText & "</span>") as text |
---|
188 | |
---|
189 | ########################################## |
---|
190 | ######リンクボタン AppleScript |
---|
191 | ########################################## |
---|
192 | if boolOsa is true then |
---|
193 | ######## %エンコードする |
---|
194 | ##キャラクタセットを指定 |
---|
195 | set ocidChrSet to refMe's NSCharacterSet's URLQueryAllowedCharacterSet |
---|
196 | ###ペーストボードの内容をキャラクタセットで変換 |
---|
197 | set ocidTextEncodeAS to ocidPublicText's stringByAddingPercentEncodingWithAllowedCharacters:(ocidChrSet) |
---|
198 | ###可変テキストに格納しておく |
---|
199 | set ocidEncodedText to refMe's NSMutableString's alloc()'s initWithCapacity:0 |
---|
200 | ocidEncodedText's setString:(ocidTextEncodeAS) |
---|
201 | ######## 置換 %エンコードの追加処理 |
---|
202 | ###置換レコード |
---|
203 | set recordPercentMap to {|+|:"%2B", |=|:"%3D", |&|:"%26", |$|:"%24"} as record |
---|
204 | ###ディクショナリにして |
---|
205 | set ocidPercentMap to refMe's NSDictionary's alloc()'s initWithDictionary:(recordPercentMap) |
---|
206 | ###キーの一覧を取り出します |
---|
207 | set ocidAllKeys to ocidPercentMap's allKeys() |
---|
208 | ###取り出したキー一覧を順番に処理 |
---|
209 | repeat with itemAllKey in ocidAllKeys |
---|
210 | ##キーの値を取り出して |
---|
211 | set ocidMapValue to (ocidPercentMap's valueForKey:itemAllKey) |
---|
212 | ##置換 |
---|
213 | set ocidEncodedText to (ocidEncodedText's stringByReplacingOccurrencesOfString:(itemAllKey) withString:(ocidMapValue)) |
---|
214 | ##次の変換に備える |
---|
215 | set ocidTextToEncode to ocidEncodedText |
---|
216 | end repeat |
---|
217 | set strEncodedText to ocidTextToEncode as text |
---|
218 | ##HTML生成 |
---|
219 | set strAsLinkText to "<span class=\"openscript\"><a href=\"applescript://com.apple.scripteditor?action=new&name=" & strScptFileName & "&script=" & strEncodedText & "\" title=\"Open in Script Editor\" class=\"open-script-editor\">【スクリプトエディタで開く】</a></span>" as text |
---|
220 | set strLinkBotton to ("<p class=\"script-copy-botton\">" & strAsLinkText & " | " & strJsLinkText & "</p>") as text |
---|
221 | else |
---|
222 | set strLinkBotton to ("<p class=\"script-copy-botton\">" & strJsLinkText & "</p>") as text |
---|
223 | end if |
---|
224 | ## |
---|
225 | |
---|
226 | ########################################## |
---|
227 | ######本処理 開始 |
---|
228 | ########################################## |
---|
229 | ##メタとDiv要素だけあらかじめ削除しておく |
---|
230 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, " ", " ") |
---|
231 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "#!/", "#!/") |
---|
232 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "<meta charset='utf-8'>", "") |
---|
233 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "<br>", "\n") |
---|
234 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "<div><span", "\n<span") |
---|
235 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "</span></div>", "</span>") |
---|
236 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "</span></div>", "</span>\n</div>") |
---|
237 | set ocidPublicHTML to doRegrExReplace(ocidPublicHTML, "\n</div>", "") |
---|
238 | |
---|
239 | #好みの追加 |
---|
240 | set ocidBaseHTML to (ocidPublicHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #ffffff;font-style: italic;\">") withString:("<span style=\"color: #6D6D6D;font-style: italic;\">")) |
---|
241 | set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #d4d4d4;\">use ") withString:("<span style=\"color: #569cd6;\">use ")) |
---|
242 | set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #d4d4d4;\"> as ") withString:("<span style=\"color: #569cd6;\"> as ")) |
---|
243 | set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("refMe's") withString:("</span><span style=\"color: #C55F8F;\">refMe's</span><span style=\"color: #d4d4d4;\">")) |
---|
244 | |
---|
245 | set ocidStrRange to ocidBaseHTML's rangeOfString:(ocidBaseHTML) |
---|
246 | ocidBaseHTML's replaceOccurrencesOfString:("(\\bNS\\w*?\\b)") withString:("</span><span style=\"color: #C55F8F;\">$1</span><span style=\"color: #d4d4d4;\">") options:(refMe's NSRegularExpressionSearch) range:(ocidStrRange) |
---|
247 | |
---|
248 | set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("set</span><span style=\"color: #d4d4d4;\"> ") withString:("set</span><span style=\"color: #F1EEC8;\"> ")) |
---|
249 | set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("<span style=\"color: #d4d4d4;\">return</span>") withString:("<span style=\"color: #569cd6;\">return</span>")) |
---|
250 | set ocidBaseHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:(" |error| ") withString:("</span><span style=\"color: #569cd6;\"> |error| </span><span style=\"color: #d4d4d4;\">")) |
---|
251 | |
---|
252 | set ocidStrRange to ocidBaseHTML's rangeOfString:(ocidBaseHTML) |
---|
253 | ocidBaseHTML's replaceOccurrencesOfString:("(\\bocid\\w*?\\b)") withString:("</span><span style=\"color: #F1EEC8;\">$1</span><span style=\"color: #d4d4d4;\">") options:(refMe's NSRegularExpressionSearch) range:(ocidStrRange) |
---|
254 | |
---|
255 | set ocidPublicHTML to (ocidBaseHTML's stringByReplacingOccurrencesOfString:("\"> </span>") withString:("\"> </span>")) |
---|
256 | ########################################## |
---|
257 | #行毎のリストにしておく |
---|
258 | set ocidCharSet to refMe's NSCharacterSet's newlineCharacterSet() |
---|
259 | set ocidHTMLArray to ocidPublicHTML's componentsSeparatedByCharactersInSet:(ocidCharSet) |
---|
260 | #一番外になるDIVをとっておく |
---|
261 | set ocidOuterDiv to ocidHTMLArray's objectAtIndex:(0) |
---|
262 | #その上で削除 |
---|
263 | ocidHTMLArray's removeObjectAtIndex:(0) |
---|
264 | ########################################## |
---|
265 | ######XML テーブル生成開始 |
---|
266 | ########################################## |
---|
267 | if boolOsa is true then |
---|
268 | # タイトル headerとタイトル用 |
---|
269 | set strTitleText to ("AppleScript サンプルコード") as text |
---|
270 | #サブタイトル article |
---|
271 | set strSubTitle to ("AppleScript サンプルコード") as text |
---|
272 | #キャプション用のテキスト |
---|
273 | set strCaption to ("AppleScript サンプルソース(参考)") as text |
---|
274 | else |
---|
275 | # タイトル headerとタイトル用 |
---|
276 | set strTitleText to ("サンプルコード") as text |
---|
277 | #サブタイトル article |
---|
278 | set strSubTitle to ("サンプルコード") as text |
---|
279 | #キャプション用のテキスト |
---|
280 | set strCaption to ("サンプルソース(参考)") as text |
---|
281 | end if |
---|
282 | ########################################## |
---|
283 | #headerに渡すエレメント |
---|
284 | set ocidSetHeaderElement to (refMe's NSXMLElement's elementWithName:("div")) |
---|
285 | set ocidH3Element to (refMe's NSXMLElement's elementWithName:("h3")) |
---|
286 | ##タイトルを入れる |
---|
287 | (ocidH3Element's setStringValue:(strTitleText)) |
---|
288 | (ocidSetHeaderElement's addChild:(ocidH3Element)) |
---|
289 | |
---|
290 | ######################################## |
---|
291 | #footerに渡すエレメント |
---|
292 | set ocidSetFooterElement to (refMe's NSXMLElement's elementWithName:("div")) |
---|
293 | set ocidPElement to (refMe's NSXMLElement's elementWithName:("p")) |
---|
294 | set strContents to ("あくまでも参考にしてください") as text |
---|
295 | (ocidPElement's setStringValue:(strContents)) |
---|
296 | (ocidSetFooterElement's addChild:(ocidPElement)) |
---|
297 | |
---|
298 | (* |
---|
299 | #リンクをつける |
---|
300 | set ocidAElement to (refMe's NSXMLElement's elementWithName:("a")) |
---|
301 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://quicktimer.cocolog-nifty.com/")) |
---|
302 | (ocidAElement's addAttribute:(ocidAddNode)) |
---|
303 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
---|
304 | (ocidAElement's addAttribute:(ocidAddNode)) |
---|
305 | set strContents to ("AppleScriptで生成しました") as text |
---|
306 | (ocidAElement's setStringValue:(strContents)) |
---|
307 | (ocidSetFooterElement's addChild:(ocidAElement)) |
---|
308 | ## |
---|
309 | set ocidButtonElement to (refMe's NSXMLElement's elementWithName:("button")) |
---|
310 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("id") stringValue:("closeWindow")) |
---|
311 | (ocidButtonElement's addAttribute:(ocidAddNode)) |
---|
312 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("close-botton")) |
---|
313 | (ocidButtonElement's addAttribute:(ocidAddNode)) |
---|
314 | set strContents to ("ウィンドウを閉じる") as text |
---|
315 | (ocidButtonElement's setStringValue:(strContents)) |
---|
316 | (ocidSetFooterElement's addChild:(ocidButtonElement)) |
---|
317 | # |
---|
318 | set ocidScriptElement to (refMe's NSXMLElement's elementWithName:("script")) |
---|
319 | (ocidScriptElement's setStringValue:("document.getElementById(\"closeWindow\").addEventListener(\"click\", function() {window.close();});")) |
---|
320 | (ocidSetFooterElement's addChild:(ocidScriptElement)) |
---|
321 | *) |
---|
322 | |
---|
323 | ######################################## |
---|
324 | #articleに渡すエレメント |
---|
325 | set ocidSetArticleElement to (refMe's NSXMLElement's elementWithName:("div")) |
---|
326 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("source-table-outer")) |
---|
327 | (ocidSetArticleElement's addAttribute:(ocidAddNode)) |
---|
328 | |
---|
329 | set ocidH5Element to (refMe's NSXMLElement's elementWithName:("h5")) |
---|
330 | (ocidH5Element's setStringValue:(strSubTitle)) |
---|
331 | (ocidSetArticleElement's addChild:(ocidH5Element)) |
---|
332 | # |
---|
333 | set ocidPElement to (refMe's NSXMLElement's elementWithName:("p")) |
---|
334 | (ocidPElement's setStringValue:("ボタン置換用のPタグ")) |
---|
335 | (ocidSetArticleElement's addChild:(ocidPElement)) |
---|
336 | |
---|
337 | |
---|
338 | ######################################## |
---|
339 | #テーブル部生成開始 |
---|
340 | set ocidTableElement to (refMe's NSXMLElement's elementWithName:("table")) |
---|
341 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("source-table")) |
---|
342 | (ocidTableElement's addAttribute:(ocidAddNode)) |
---|
343 | ######################################## |
---|
344 | #【caption】 |
---|
345 | set ocidCaptionElement to (refMe's NSXMLElement's elementWithName:("caption")) |
---|
346 | (ocidCaptionElement's setStringValue:(strCaption)) |
---|
347 | (ocidTableElement's addChild:(ocidCaptionElement)) |
---|
348 | ####################### |
---|
349 | #【colgroup】 |
---|
350 | set ocidColgroupElement to (refMe's NSXMLElement's elementWithName:("colgroup")) |
---|
351 | ####################### |
---|
352 | #【col】col生成 |
---|
353 | #項目番号 |
---|
354 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
---|
355 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("LineNo")) |
---|
356 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
357 | (ocidColgroupElement's addChild:(ocidAddElement)) |
---|
358 | #値 |
---|
359 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("col")) |
---|
360 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Source")) |
---|
361 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
362 | (ocidColgroupElement's addChild:(ocidAddElement)) |
---|
363 | #テーブルエレメントに追加 |
---|
364 | (ocidTableElement's addChild:(ocidColgroupElement)) |
---|
365 | ######################################## |
---|
366 | #【thead】 |
---|
367 | set ocidTheadElement to (refMe's NSXMLElement's elementWithName:("thead")) |
---|
368 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
---|
369 | #項目番号 |
---|
370 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
---|
371 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("lineNo")) |
---|
372 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
373 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("lineNo")) |
---|
374 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
375 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
---|
376 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
377 | (ocidAddElement's setStringValue:("行番号")) |
---|
378 | (ocidTrElement's addChild:(ocidAddElement)) |
---|
379 | #値 |
---|
380 | set ocidAddElement to (refMe's NSXMLElement's elementWithName:("th")) |
---|
381 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Source")) |
---|
382 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
383 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("class") stringValue:("Source")) |
---|
384 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
385 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("col")) |
---|
386 | (ocidAddElement's addAttribute:(ocidAddNode)) |
---|
387 | (ocidAddElement's setStringValue:("ソース")) |
---|
388 | (ocidTrElement's addChild:(ocidAddElement)) |
---|
389 | #TRをTHEADにセット |
---|
390 | (ocidTheadElement's addChild:(ocidTrElement)) |
---|
391 | #THEADをテーブルにセット |
---|
392 | (ocidTableElement's addChild:(ocidTheadElement)) |
---|
393 | ######################################## |
---|
394 | #【tbody】 |
---|
395 | set ocidTbodyElement to (refMe's NSXMLElement's elementWithName:("tbody")) |
---|
396 | #行番号初期化 |
---|
397 | set numLineNo to 1 as integer |
---|
398 | #HTMLのソースの数だけ繰り返し |
---|
399 | repeat with itemArray in ocidHTMLArray |
---|
400 | #行番号を3桁ゼロサプレス |
---|
401 | set ocidFormatter to refMe's NSNumberFormatter's alloc()'s init() |
---|
402 | (ocidFormatter's setMinimumIntegerDigits:(3)) |
---|
403 | (ocidFormatter's setMaximumIntegerDigits:(3)) |
---|
404 | set strLineNo to (ocidFormatter's stringFromNumber:(numLineNo)) as text |
---|
405 | #TRの開始 |
---|
406 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
---|
407 | ####項番処理 |
---|
408 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
---|
409 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("項目番号 : " & strLineNo)) |
---|
410 | (ocidThElement's addAttribute:(ocidAddNode)) |
---|
411 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("lineNo")) |
---|
412 | (ocidThElement's addAttribute:(ocidAddNode)) |
---|
413 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
---|
414 | (ocidThElement's addAttribute:(ocidAddNode)) |
---|
415 | (ocidThElement's setStringValue:(strLineNo)) |
---|
416 | (ocidTrElement's addChild:(ocidThElement)) |
---|
417 | ####値 |
---|
418 | set ocidTdElement to (refMe's NSXMLElement's elementWithName:("td")) |
---|
419 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("Source")) |
---|
420 | (ocidTdElement's addAttribute:(ocidAddNode)) |
---|
421 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("headers") stringValue:("Source")) |
---|
422 | (ocidTdElement's addAttribute:(ocidAddNode)) |
---|
423 | # ここで取得したHTMLからspanを挿入していく |
---|
424 | # 1行に複数のspanがあるのでspan毎に処理する |
---|
425 | set ocidReplacedStrings to (itemArray's stringByReplacingOccurrencesOfString:("</span><span") withString:("</span>\n<span")) |
---|
426 | set ocidLineItemArray to (ocidReplacedStrings's componentsSeparatedByCharactersInSet:(ocidCharSet)) |
---|
427 | repeat with itemLine in ocidLineItemArray |
---|
428 | if (itemLine as text) is "" then |
---|
429 | log "改行のみの空行" |
---|
430 | else |
---|
431 | set listResponse to (refMe's NSXMLElement's alloc()'s initWithXMLString:(itemLine) |error| :(reference)) |
---|
432 | if (item 2 of listResponse) ≠ (missing value) then |
---|
433 | log (item 2 of listResponse)'s localizedDescription() as text |
---|
434 | log itemArray as text |
---|
435 | return "HTMLの挿入に失敗しました" |
---|
436 | else if (item 2 of listResponse) = (missing value) then |
---|
437 | set ocidInsHTMLElement to (item 1 of listResponse) |
---|
438 | end if |
---|
439 | (ocidTdElement's addChild:(ocidInsHTMLElement)) |
---|
440 | end if |
---|
441 | end repeat |
---|
442 | (ocidTrElement's addChild:(ocidTdElement)) |
---|
443 | # |
---|
444 | (ocidTbodyElement's addChild:(ocidTrElement)) |
---|
445 | #### |
---|
446 | set numLineNo to numLineNo + 1 as integer |
---|
447 | end repeat |
---|
448 | #TBODYをテーブルにセット |
---|
449 | (ocidTableElement's addChild:(ocidTbodyElement)) |
---|
450 | #【tfoot】 TRで |
---|
451 | set ocidTfootElement to (refMe's NSXMLElement's elementWithName:("tfoot")) |
---|
452 | set ocidTrElement to (refMe's NSXMLElement's elementWithName:("tr")) |
---|
453 | #colspan指定して1行でセット |
---|
454 | set ocidThElement to (refMe's NSXMLElement's elementWithName:("th")) |
---|
455 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("title") stringValue:("テーブルの終わり")) |
---|
456 | (ocidThElement's addAttribute:(ocidAddNode)) |
---|
457 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("colspan") stringValue:("2")) |
---|
458 | (ocidThElement's addAttribute:(ocidAddNode)) |
---|
459 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("scope") stringValue:("row")) |
---|
460 | (ocidThElement's addAttribute:(ocidAddNode)) |
---|
461 | # |
---|
462 | #リンクをつける |
---|
463 | set ocidAElement to (refMe's NSXMLElement's elementWithName:("a")) |
---|
464 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("href") stringValue:("https://quicktimer.cocolog-nifty.com/icefloe/2025/05/post-a8519b.html")) |
---|
465 | (ocidAElement's addAttribute:(ocidAddNode)) |
---|
466 | set ocidAddNode to (refMe's NSXMLNode's attributeWithName:("target") stringValue:("_blank")) |
---|
467 | (ocidAElement's addAttribute:(ocidAddNode)) |
---|
468 | set strContents to ("AppleScriptで生成しました") as text |
---|
469 | (ocidAElement's setStringValue:(strContents)) |
---|
470 | (ocidThElement's addChild:(ocidAElement)) |
---|
471 | # |
---|
472 | #(ocidThElement's setStringValue:("行数 : " & (numLineNo - 1) & "")) |
---|
473 | #THをTRにセットして |
---|
474 | (ocidTrElement's addChild:(ocidThElement)) |
---|
475 | #TRをTFOOTにセット |
---|
476 | (ocidTfootElement's addChild:(ocidTrElement)) |
---|
477 | #TFOOTをテーブルにセット |
---|
478 | (ocidTableElement's addChild:(ocidTfootElement)) |
---|
479 | #テーブルをアーティクルにセット |
---|
480 | (ocidSetArticleElement's addChild:(ocidTableElement)) |
---|
481 | |
---|
482 | ########################################## |
---|
483 | #テキストファイルを生成する |
---|
484 | ########################################## |
---|
485 | #テキストにして |
---|
486 | set ocidTableXML to ocidSetArticleElement's XMLString() |
---|
487 | #必要に応じて置換 |
---|
488 | set ocidReplacedStrings to (ocidTableXML's stringByReplacingOccurrencesOfString:(" ") withString:(" ")) |
---|
489 | |
---|
490 | #set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("#!/usr/bin/env osascript") withString:("#!/usr/bin/env osascript")) |
---|
491 | #set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("#!/bin/bash") withString:("#!/bin/bash")) |
---|
492 | set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("AppKit") withString:("AppKit")) |
---|
493 | set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:(" ") withString:("  ")) |
---|
494 | set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("> </span>") withString:("> </span>")) |
---|
495 | set ocidTableHTML to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:("<p>ボタン置換用のPタグ</p>") withString:(strLinkBotton)) |
---|
496 | |
---|
497 | (* |
---|
498 | set ocidSaveXMLStrings to doRegrExReplace(ocidTableXML, " ", " ") |
---|
499 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/usr/bin/env osascript", "#!/usr/bin/env osascript") |
---|
500 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/bin/bash", "#!/bin/bash") |
---|
501 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "AppKit", "AppKit") |
---|
502 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, " ", "  ") |
---|
503 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "> </span>", "> </span>") |
---|
504 | set ocidTableHTML to doRegrExReplace(ocidSaveXMLStrings, "<p>ボタン置換用のPタグ</p>", strLinkBotton) |
---|
505 | |
---|
506 | *) |
---|
507 | |
---|
508 | #CSS取得 |
---|
509 | set strCSS to doGetTextCss() as text |
---|
510 | set strStyle to ("<style>" & strCSS & strCopyBottonCSS & "</style>") as text |
---|
511 | #出力用テキスト |
---|
512 | set ocidSaveTextStrings to refMe's NSMutableString's alloc()'s initWithCapacity:(0) |
---|
513 | # |
---|
514 | if boolOsa is true then |
---|
515 | ocidSaveTextStrings's appendString:(strScptFileName) |
---|
516 | else |
---|
517 | ocidSaveTextStrings's appendString:(strFileName) |
---|
518 | end if |
---|
519 | # |
---|
520 | ocidSaveTextStrings's appendString:("<br />") |
---|
521 | ocidSaveTextStrings's appendString:("<hr>") |
---|
522 | ocidSaveTextStrings's appendString:(strStyle) |
---|
523 | ocidSaveTextStrings's appendString:(ocidTableHTML) |
---|
524 | ocidSaveTextStrings's appendString:("<hr>") |
---|
525 | |
---|
526 | ####################### |
---|
527 | #テキストファイル保存 |
---|
528 | set listDone to ocidSaveTextStrings's writeToURL:(ocidTextFilePathURL) atomically:false encoding:(refMe's NSUTF8StringEncoding) |error| :(reference) |
---|
529 | if (item 2 of listDone) ≠ (missing value) then |
---|
530 | log (item 2 of listDone)'s localizedDescription() as text |
---|
531 | return "HTMLの保存に失敗しまし" |
---|
532 | else if (item 2 of listDone) = (missing value) then |
---|
533 | log "HTMLファイルを保存しました" |
---|
534 | end if |
---|
535 | |
---|
536 | |
---|
537 | ########################################## |
---|
538 | #HTMLファイルを生成する |
---|
539 | ########################################## |
---|
540 | set ocidHTML to doMakeRootElement({ocidSetHeaderElement, ocidSetArticleElement, ocidSetFooterElement, strTitleText}) |
---|
541 | set ocidXMLString to ocidHTML's XMLString() |
---|
542 | set ocidSaveXMLStrings to doRegrExReplace(ocidXMLString, " ", " ") |
---|
543 | #set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/usr/bin/env osascript", "#!/usr/bin/env osascript") |
---|
544 | #set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "#!/bin/bash", "#!/bin/bash") |
---|
545 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "AppKit", "AppKit") |
---|
546 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, " ", " ") |
---|
547 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "> </span>", "> </span>") |
---|
548 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "<p>ボタン置換用のPタグ</p>", strLinkBotton) |
---|
549 | set strRepText to (strCopyBottonCSS & "</style>") as text |
---|
550 | set ocidSaveXMLStrings to doRegrExReplace(ocidSaveXMLStrings, "</style>", strRepText) |
---|
551 | |
---|
552 | |
---|
553 | set listDone to ocidSaveXMLStrings's writeToURL:(ocidHTMLFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error| :(reference) |
---|
554 | if (item 2 of listDone) ≠ (missing value) then |
---|
555 | log (item 2 of listDone)'s localizedDescription() as text |
---|
556 | return "HTMLの保存に失敗しまし" |
---|
557 | else if (item 2 of listDone) = (missing value) then |
---|
558 | log "HTMLファイルを保存しました" |
---|
559 | end if |
---|
560 | ########################################## |
---|
561 | ####保存先を開く |
---|
562 | ########################################## |
---|
563 | set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace() |
---|
564 | set boolDone to appSharedWorkspace's openURL:(ocidSaveDirPathURL) |
---|
565 | if (boolDone) is (true) then |
---|
566 | log "正常終了" as text |
---|
567 | # return "正常終了" |
---|
568 | else if (boolDone) is (false) then |
---|
569 | return "ファイルの保存先を開けません" |
---|
570 | end if |
---|
571 | |
---|
572 | ########################################## |
---|
573 | ####テキストファイルを後で開くようにした |
---|
574 | ########################################## |
---|
575 | |
---|
576 | set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace() |
---|
577 | set boolDone to appSharedWorkspace's openURL:(ocidTextFilePathURL) |
---|
578 | if (boolDone) is (true) then |
---|
579 | log "テキストファイル正常終了" as text |
---|
580 | return "テキストファイル正常終了" |
---|
581 | else if (boolDone) is (false) then |
---|
582 | return "ファイルの保存先を開けません" |
---|
583 | end if |
---|
584 | |
---|
585 | return |
---|
586 | |
---|
587 | ########################################## |
---|
588 | ####CSS部分 |
---|
589 | ########################################## |
---|
590 | to doGetTextCss() |
---|
591 | set strCSS to ("@font-face {font-family: 'OsakaMonoLocal';src: url('file:///System/Library/AssetsV2/com_apple_MobileAsset_Font7/0818d874bf1d0e24a1fe62e79f407717792c5ee1.asset/AssetData/OsakaMono.ttf') format('truetype');}div.source-table-outer {margin: 5px;padding: 10px;background-color: #1e1e1e;color: #679AD1;max-width: 680px;}div.source-table-outer h5 {display: none;visibility: hidden;-webkit-user-select: none;user-select: none;}table.source-table {border-spacing: 0;caption-side: top;color: #679AD1;font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New',monospace;}table.source-table caption {display: none;visibility: hidden;}table.source-table thead th {border: solid 1px #666666;padding: .5ch 1ch;border-block-width: 1px 1px;border-inline-width: 1px 0;-webkit-user-select: none;user-select: none;font-weight: normal;font-size: 10pt;&:first-of-type {border-start-start-radius: .5em}&:last-of-type {border-start-end-radius: .5em;border-inline-end-width: 1px}}table.source-table tbody th {border-spacing: 0;border-top: none;border-bottom: solid 1px #666666;border-left: solid 1px #666666;border-right: solid 1px #666666;padding: .5ch 1ch;font-weight: normal;border-block-width: 1px 0;border-inline-width: 1px 0;-webkit-user-select: none;user-select: none;font-size: 10pt;}table.source-table tbody td {max-width: 580px;word-wrap: break-word;border-spacing: 0;border-top: none;border-bottom: solid 1px #666666;border-left: solid 1px #666666;border-right: solid 1px #666666;padding-left: .5ch;padding-right: 1ch;border-block-width: 1px 0;border-inline-width: 1px 0;&:last-of-type {border-inline-end-width: 1px}}table.source-table tbody td span {font-size: 12pt;line-height: 12.5pt;}table.source-table tbody tr:nth-of-type(odd) {background-color: #2e2e2e;}.kind_string {font-size: 0.75em;}.date_string {font-size: 0.5em;}table.source-table tfoot th {border: solid 1px #666666;padding: .5ch 1ch;-webkit-user-select: none;user-select: none;font-weight: normal;&:first-of-type {border-end-start-radius: .5em}&:last-of-type {border-end-end-radius: .5em;border-inline-end-width: 1px}}table.source-table tfoot th a {color: #679AD1;}a.open-script-editor {color: #679AD1;-webkit-user-select: none;user-select: none;}#buttonCopy387 {background-color: #569cd6;border: none;color: white;padding: 15px32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px2px;cursor: pointer;border-radius: 10px;-webkit-user-select: none;user-select: none;}") as text |
---|
592 | # |
---|
593 | return strCSS |
---|
594 | end doGetTextCss |
---|
595 | |
---|
596 | ########################################## |
---|
597 | ####CSS部分 |
---|
598 | ########################################## |
---|
599 | |
---|
600 | to doGetAppendCss() |
---|
601 | set strCSS to ("body {margin: 10px;background-color: #1e1e1e;font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New' ,monospace;font-weight: 400;font-size: 12pt;color: #679AD1;}header {font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New', monospace, Menlo, Monaco, 'Courier New', monospace;-webkit-user-select: none;user-select: none;}article {font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New', monospace, Menlo, Monaco, 'Courier New', monospace;}footer {font-family: OsakaMonoLocal, Osaka-Mono, Menlo, Monaco, 'Courier New', monospace, Menlo, Monaco, 'Courier New', monospace;-webkit-user-select: none;user-select: none;}footer a {color: #679AD1;}#closeWindow {background-color: #569cd6;border: none;color: white;padding: 15px32px;text-align: center;text-decoration: none;display: inline-block;font-size: 16px;margin: 4px2px;cursor: pointer;border-radius: 10px;-webkit-user-select: none;user-select: none;}") as text |
---|
602 | return strCSS |
---|
603 | end doGetAppendCss |
---|
604 | |
---|
605 | ########################################## |
---|
606 | ####HTMLの置換 正規表現 |
---|
607 | ########################################## |
---|
608 | to doRegrExReplace(argText, argReplaceString, argWithString) |
---|
609 | set ocidReturnText to refMe's NSMutableString's alloc()'s initWithCapacity:0 |
---|
610 | ocidReturnText's setString:(argText) |
---|
611 | ###レンンジを取って(元データの元データのレンジ=最初から最後まで) |
---|
612 | set ocidArgTextRange to ocidReturnText's rangeOfString:(ocidReturnText) |
---|
613 | ###置換 |
---|
614 | ocidReturnText's replaceOccurrencesOfString:(argReplaceString) withString:(argWithString) options:(refMe's NSRegularExpressionSearch) range:(ocidArgTextRange) |
---|
615 | return ocidReturnText |
---|
616 | end doRegrExReplace |
---|
617 | |
---|
618 | |
---|
619 | ########################################## |
---|
620 | ####日付情報の取得 |
---|
621 | ########################################## |
---|
622 | to doGetDateNo(strDateFormat) |
---|
623 | ####日付情報の取得 |
---|
624 | set ocidDate to refMe's NSDate's |date|() |
---|
625 | ###日付のフォーマットを定義 |
---|
626 | set ocidNSDateFormatter to refMe's NSDateFormatter's alloc()'s init() |
---|
627 | ocidNSDateFormatter's setLocale:(refMe's NSLocale's localeWithLocaleIdentifier:"en_US") |
---|
628 | ocidNSDateFormatter's setDateFormat:strDateFormat |
---|
629 | set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate |
---|
630 | set strDateAndTime to ocidDateAndTime as text |
---|
631 | return strDateAndTime |
---|
632 | end doGetDateNo |
---|
633 | |
---|
634 | |
---|
635 | |
---|
636 | |
---|
637 | ############################################################ |
---|
638 | # 基本的なHTMLの構造 |
---|
639 | (* |
---|
640 | doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents,argTitleText}) |
---|
641 | HTMLのBODY部 |
---|
642 | header |
---|
643 | article |
---|
644 | footerにそれぞれAddchildするデータをリストで渡す |
---|
645 | 戻り値はRootエレメントにセットされた |
---|
646 | NSXMLDocumentを戻すので 保存すればOK |
---|
647 | *) |
---|
648 | ############################################################ |
---|
649 | to doMakeRootElement({argHeaderContents, argArticleContents, argFooterContents, argTitleText}) |
---|
650 | #XML初期化 |
---|
651 | set ocidXMLDoc to refMe's NSXMLDocument's alloc()'s init() |
---|
652 | ocidXMLDoc's setDocumentContentKind:(refMe's NSXMLDocumentHTMLKind) |
---|
653 | # DTD付与 |
---|
654 | set ocidDTD to refMe's NSXMLDTD's alloc()'s init() |
---|
655 | ocidDTD's setName:("html") |
---|
656 | ocidXMLDoc's setDTD:(ocidDTD) |
---|
657 | # |
---|
658 | set ocidRootElement to refMe's NSXMLElement's elementWithName:("html") |
---|
659 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("lang") stringValue:("ja") |
---|
660 | ocidRootElement's addAttribute:(ocidAddNode) |
---|
661 | # |
---|
662 | set ocidHeadElement to refMe's NSXMLElement's elementWithName:("head") |
---|
663 | # |
---|
664 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("title") |
---|
665 | ocidAddElement's setStringValue:(argTitleText) |
---|
666 | ocidHeadElement's addChild:(ocidAddElement) |
---|
667 | # http-equiv |
---|
668 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
---|
669 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Type") |
---|
670 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
671 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/html; charset=UTF-8") |
---|
672 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
673 | ocidHeadElement's addChild:(ocidAddElement) |
---|
674 | # |
---|
675 | (* |
---|
676 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
---|
677 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Style-Type") |
---|
678 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
679 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/css") |
---|
680 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
681 | ocidHeadElement's addChild:(ocidAddElement) |
---|
682 | # |
---|
683 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
---|
684 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("http-equiv") stringValue:("Content-Script-Type") |
---|
685 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
686 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("text/javascript") |
---|
687 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
688 | ocidHeadElement's addChild:(ocidAddElement) |
---|
689 | *) |
---|
690 | # |
---|
691 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("meta") |
---|
692 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport") |
---|
693 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
694 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=740") |
---|
695 | ocidAddElement's addAttribute:(ocidAddNode) |
---|
696 | ocidHeadElement's addChild:(ocidAddElement) |
---|
697 | # |
---|
698 | set strCSS to doGetTextCss() |
---|
699 | set strAppendCss to doGetAppendCss() |
---|
700 | set strSetCSS to (strAppendCss & strCSS) as text |
---|
701 | set ocidAddElement to refMe's NSXMLElement's elementWithName:("style") |
---|
702 | ocidAddElement's setStringValue:(strSetCSS) |
---|
703 | ocidHeadElement's addChild:(ocidAddElement) |
---|
704 | ocidRootElement's addChild:(ocidHeadElement) |
---|
705 | # |
---|
706 | #ボディエレメント |
---|
707 | set ocidBodyElement to refMe's NSXMLElement's elementWithName:("body") |
---|
708 | #ヘッダー |
---|
709 | set ocidHeaderElement to refMe's NSXMLElement's elementWithName:("header") |
---|
710 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("header") |
---|
711 | ocidHeaderElement's addAttribute:(ocidAddNode) |
---|
712 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_header") |
---|
713 | ocidHeaderElement's addAttribute:(ocidAddNode) |
---|
714 | ocidHeaderElement's addChild:(argHeaderContents) |
---|
715 | ocidBodyElement's addChild:(ocidHeaderElement) |
---|
716 | #アーティクル |
---|
717 | set ocidArticleElement to refMe's NSXMLElement's elementWithName:("article") |
---|
718 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("article") |
---|
719 | ocidArticleElement's addAttribute:(ocidAddNode) |
---|
720 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_article") |
---|
721 | ocidArticleElement's addAttribute:(ocidAddNode) |
---|
722 | ocidArticleElement's addChild:(argArticleContents) |
---|
723 | ocidBodyElement's addChild:(ocidArticleElement) |
---|
724 | #フッター |
---|
725 | set ocidFooterElement to refMe's NSXMLElement's elementWithName:("footer") |
---|
726 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("id") stringValue:("footer") |
---|
727 | ocidFooterElement's addAttribute:(ocidAddNode) |
---|
728 | set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("body_footer") |
---|
729 | ocidFooterElement's addAttribute:(ocidAddNode) |
---|
730 | ocidFooterElement's addChild:(argFooterContents) |
---|
731 | ocidBodyElement's addChild:(ocidFooterElement) |
---|
732 | #ボディをROOTエレメントにセット |
---|
733 | ocidRootElement's addChild:(ocidBodyElement) |
---|
734 | #ROOTをXMLにセット |
---|
735 | ocidXMLDoc's setRootElement:(ocidRootElement) |
---|
736 | #値を戻す |
---|
737 | return ocidXMLDoc |
---|
738 | end doMakeRootElement |
---|
739 | |
---|