▶ 実 行
▶ 実行
クリア
CSV to LuaMacros変換機
by 賢者ユメミノウツツ
// https://n3s.nadesi.com/plain/735.nako3 より一部を抜粋・改変して使っています。 // 雪乃☆雫さん、ありがとうございます。 #------------------------------- !「https://n3s.nadesi.com/plain/nadesiko3-FileReader.js」を取込む。 WINDOWへドロップ禁止。 # テキスト 「デバイスIDはLuamacros上で"lmc_print_devices()"を実行することで知ることができます。」のラベル作成して改行作成。 「CSVファイルを選択してください。または、テキストエリアにドロップしてください。」のラベル作成。改行作成。改行作成。 ファイル選択作成してテキストファイル選択に代入。 テキストファイル選択の「accept」に「.csv,.txt」をDOM属性設定。 テキストファイル選択の「change」に、「選択テキスト取得」をDOMイベント追加。 改行作成。 「Shift_JISの場合はチェック」のチェックボックス作成して、文字コードチェックに代入。 文字コードチェックの「change」に、「選択テキスト取得」をDOMイベント追加。 改行作成。改行作成。 空のテキストエリア作成して取得テキストに代入。改行作成。改行作成。 取得テキストの「幅」に「90%」をDOMスタイル設定。 取得テキストの「高さ」に「150px」をDOMスタイル設定。 取得テキストへファイルドロップした時には、 テキストファイル選択["files"]=対象。 選択テキスト取得。 ここまで。 ●選択テキスト取得 選択ファイルリスト=テキストファイル選択["files"] ファイル=選択ファイルリスト[0] // ファイル["name"]を表示 //ファイル名(パス無し) // ファイル["size"]を表示 //ファイルサイズ(バイト) // ファイル["type"]を表示 //ファイルタイプ(text/plainとか) 文字コード=空。//空はUTF-8 もし、(文字コードチェックの「checked」をDOM属性取得)=はいならば、文字コードは「Shift_JIS」 文字コードでファイルのテキストファイル開いた時には、 取得テキストに対象をテキスト設定。 ここまで。 ここまで。 #------------------------------- 「↓」のラベル作成して矢印ラベル1に代入。改行作成。改行作成。 「LuaMacrosソースに変換」のボタン作成して変換ボタンに代入。 変換ボタンに{ "余白": "7px", "文字サイズ": "25px" }をDOMスタイル一括設定。 変換ボタンをクリックした時には、 ソース変換 ここまで。 「 デバイスIDを入力(オプション)」のラベル作成してHIDラベルに代入。 空のテキストエリア作成してHIDテキストに代入。改行作成。改行作成。 HIDテキストの「幅」に「10em」をDOMスタイル設定。 HIDテキストの「高さ」に「2.5ex」をDOMスタイル設定。 HIDテキストの「resize」に「none」をDOMスタイル設定。 HIDテキストに「UNKNOWN_ID」をテキスト設定 // 俺のキーボードは ~~359BC1BB~~2375B635 「↓」のラベル作成して矢印ラベル1に代入。改行作成。改行作成。 空のテキストエリア作成して結果テキストに代入。改行作成。改行作成。 結果テキストの「幅」に「90%」をDOMスタイル設定。 結果テキストの「高さ」に「450px」をDOMスタイル設定。 「luaファイルをダウンロード」のボタン作成してダウンロードボタンに代入。 ダウンロードボタンをクリックした時には、 (結果テキストのテキスト取得)をダウンロード。 ここまで。 「←工事中です……」のラベル作成して工事中ラベルに代入。改行作成。改行作成。#クリックするとクリップボードにコピーされます。 #コピーされるはずだったのですがされねえ!? 「」のラベル作成してコピーラベルに代入。改行作成。 「詳細はQiitaを読んでください:」のラベル作成。 空のラベル作成して「<a href="https://qiita.com/JKyumekamui/items/3659bf15869875040173" target="_blank" rel="noopener noreferrer">https://qiita.com/JKyumekamui/items/3659bf15869875040173</a>」をHTML設定 #------------------------------- ●ソース変換とは //結果テキストの定義より後に関数記述 CSV配列=((取得テキストのテキスト取得)をmain__CSVLM変換)をCSV取得 CSV配列の0を配列削除 // 1行目は説明なので削除 CSV配列=CSV配列を空行削除 CSV配列=CSV配列の空セル埋める S=「https://n3s.nadesi.com/image.php?f=212.txt」にAJAX送信 HID=HIDテキストのテキスト取得 // こっそり自分用機能 もし、HID=「MINE」ならば、 HID=「2375B635」 ここまで。 S=Sの「--lmc_device_set_name("CSVLMConverter","ID")」を「lmc_device_set_name("CSVLMConverter","{HID}") 」に置換 S=Sに「」を一行追加。 CSV配列を反復 ライン=対象 もし、対象キー=0ならば S=Sに「 if (button == {ライン[0]}) then --{ライン[1]}」を一行追加 違えば、 S=Sに「 elseif (button == {ライン[0]}) then --{ライン[1]}」を一行追加 ここまで。 S=Sに「 if (scanflag == 0) then lmc_send_keys("{ライン[2]}") elseif (scanflag == 1) then lmc_send_keys("{ライン[3]}") elseif (scanflag == 2) then lmc_send_keys("{ライン[4]}") elseif (scanflag == 3) then lmc_send_keys("{ライン[5]}") elseif (scanflag == 4) then lmc_send_keys("{ライン[6]}") elseif (scanflag == 5) then lmc_send_keys("{ライン[7]}") elseif (scanflag == 6) then lmc_send_keys("{ライン[8]}") elseif (scanflag == 7) then lmc_send_keys("{ライン[9]}") end restore() return」を一行追加 // 一行追加って非破壊的だったそういえば ここまで。 S=Sに「 else --未定義のキーはそのまま送信 lmc_send_input(button, 0, 0) lmc_send_input(button, 0, 2) end end )」を追加 結果テキストにSをテキスト設定 ここまで。 ●(Sを)ダウンロードとは // 「工事中です。しばらくはテキストエリアをコピペしてお使いください・・・」と言う // S=結果テキストのテキスト取得 // BLOB=Sを{type: 'text/plain'}でBLOB作成 // URL=「hoge」//ここしんどい // 「a」をDOM要素作成し、a変数へ代入 // a変数の「download」に「csvlmconverter.txt」をDOM属性設定 // a変数の「href」に「URL」をDOM属性設定 Sをクリップボード設定 「コピー!」をコピーラベルにテキスト設定 3秒待つ 「」をコピーラベルにテキスト設定 ここまで。 ●(Sを)CSVLM変換とは 置換前配列=[『\』,『{』,『}』,『^』,『%』,『+』,『#』,『&』,『<』,『>』,『~』,『(』,『)』,『¥』,『{』,『}』,『^』,『%』,『+』,『#』,『&』,『<』,『>』,『~』,『(』,『)』] 置換後配列=[『\\』,『{{}』,『{}}』,『{^}』,『{%}』,『{+}』,『{#}』,『{&}』,『{<}』,『{>}』,『{~}』,『{(}』,『{)}』,『\』,『{』,『}』,『^』,『%』,『+』,『#』,『&』,『<』,『>』,『~』,『(』,『)』] 置換前配列を反復 S=Sの対象を置換後配列@対象キーに置換 ここまで。 S=Sのmain__日本語コマンド処理 Sで戻る ここまで。 ●(Aを)空行削除とは 削除列配列=[] Aを反復 もし、(対象[0]==空)||(対象[2]==空)ならば、 削除列配列の0に対象キーを配列挿入 ここまで。 ここまで。 削除列配列を反復 Aの対象を配列削除 ここまで。 Aで戻る ここまで。 ●(Aの)空セル埋めるとは Aを反復 Nを3から9まで繰り返す もし、対象[N]が空ならば、 対象[N]=対象[2] ここまで。 ここまで。 ここまで。 Aで戻る ここまで。 ●(Sの)日本語コマンド処理とは S=Sの『←』を『{LEFT}』に置換 S=Sの『↑』を『{UP}』に置換 S=Sの『→』を『{RIGHT}』に置換 S=Sの『↓』を『{DOWN}』に置換 S=Sの『改行』を『{ENTER}』に置換 S=Sの『タブ』を『{TAB}』に置換 Sで戻る ここまで。 //pタグを作る。結局使わなかったけど。 // ●(Sで)pタグ追加とは // 「p」をDOM要素作成し、p変数へ代入 // p変数へSをテキスト設定 // DOM親要素へp変数をDOM子要素追加 // p変数を戻すこと。 // ここまで。
1902