✅cleir実装初手
つくり始める
ahkで監視する
guiまわりで楽なんで
クリップボード変化したらバックでpythonを呼ぶ
このpythonがクリップボードの中身を書き換える
「指定条件を満たしていたら、指定内容に書き換える」 ← これをn個つくる(パターンと呼ぼう)
「書き換えた後にも監視が働いてまたpythonが呼ばれる」問題
ahk側では回避できないので、python側で回避する
パターンとして持てばいい →AlreadyGenratedChecker
Pattern
has Condition
has NewStringGenerator
has AlreadyGenratedChecker
code:logic_of_a_pattern.py
if is_condition_satisfied():
do generate()
exit()
exit()
次のパターンを呼び出す()
試しに作るもの: boxdrive
C:\Users\XXXX\Box\projectXYZ\01.管理\WBS.xlsx
C:\Users\XXXX\Box このprefixがついてしまって邪魔
なので、自分用のパスにしてしまいたい
入れたけど
びみょう
本体コードに use_testmode() とテスト機構を入れている
次
amazon url simplifyも入れてみる
---
code:py
if __name__=='__main__':
original_cbstr = Util.clipboard2str()
s = original_cbstr
classnames = Util.get_toplevel_function_names_of_me()
for remover in removers:
classnames.remove(remover)
for classname in classnames:
inst = Util.new_with_classname_in_global(classname, s)
if not inst.is_satisfied():
continue
if inst.is_already_generated():
continue
inst.edit()
break
テストどうやればいいんだこれ?
get_toplevel_function_names_of_me() が「今開いてるファイルのグローバルに定義されてるクラス名をリストアップ」だから、test_cle.py で呼び出すと cle.py 側のクラス名がリストアップされなくなる説
いや問題なかった
レキシカルなのか
定義されてる位置で決まる
get_toplevel_function_names_of_me() が cle.py に定義されているなら、どこから呼び出されそうが cle.py 内が対象になる
次
ahk側と連動させて、常駐させてみる
---
連携してみた
code:ahk
Loop
{
current_clipboard = %clipboard%
if prev_clipboard <> %current_clipboard%
{
prev_clipboard = %current_clipboard%
Run, pythonw %BASEDIR%\cle.py
}
Sleep, 1000
}
特にパフォーマンスは問題なさそう
というかprocess explorerでpythonwが見えない(たぶん一瞬で終わってる)
Editor系のテストが甘かった
https://gyazo.com/f96668a41936e04732fd2de11ef13193
1だとEditorのうちgenerate部分しかテストできない
が、Editorには「satisfied(満たしてる?)」と「already generated(それもう変換したやつやろ)」の判定もしてる
test_chain()でできるけど
こっちでガンガンやっちゃった方がいい?
1で色んなパターンテストして、2ではワンパステストケース一つだけ?
ok
さて、とりあえず2パターンつくったわけだが
これで良い?今後ガンガン使う&つくるけど、拡張性担保できてる?後で破綻しない?
つくるのに時間がちょっとかかる
が、フレームワーク化してるしテストもするのならしゃーない、そんなもん
Editorの中にテスト機構が入っている問題
まあいんじゃね?sta.icon
デバッグオプション入れるようなものだろう
テスト機構入れちゃいけないケースってなんだっけ?
ググるキーワードわからん
いったん無視する。そのままでいい
import古いのが入ったままだが
まあ消しておくか
macos対応は?
いったんしない
ahkに替わるフロントつくらないとmac版はできない
問題なさそうだな
さらにパターン追加してみようか
候補
Amazon urlを短くする
全角スペースと全角数字の削除
全角スペースインデントの撲滅
空行n行を1行にする
行頭スペースの削除
あああ
いいい
↑ これを
あああ
いいい
たとえばこうしたい
無駄にスペース区切りになっているブツ(kindleやpdfからコピーしたとき)の解消
ttpのhttp補完
Scrapboxの引用表記からブラケットを消す
Twitterからコピペしたツイート(n行)を1行にする
パスワードやアクセスキーなどsensitive valueをn秒経過後に自動削除
次
上をゴリゴリ入れていく
---
ttp to http
たったこれだけの処理でも15分近くかかるね
まあ半分くらいは「なんでNoneになるんだ?」「意味わからん」「何がどうなってる……」……「あ、returnしてねぇ」だったけど!!!sta.icon*3