見出し画像

【projectItemRenamer.jsx】定義新式化【開発記】

今回の概略

どういう修正するのか書いて半分、始めようとして GitLens の表示が鬱陶しくて設定してたらもう半分で改修自体は手付かずで終わるの巻🙄
GitLens のソース編集中のエディタでの表示は設定の序盤に固まっている

#jsx #開発記
#ExtendScript
#VSCode #GitLens

作業準備 
忘却分実装 
定義新式化 ←今ココ
Event,EventTarget 
ライブラリ調整 
一次調整 
UI 定義 obj 調整 
UI 生成再構築 
二次調整 
UI 追加 
結果一覧 CSV 
ラベル対応 
第2層改装 
ローカライズ対応 
OTSParser 改 
総合試験 
最終調整 
公開準備 

----備忘録
新式 `return newobj[CONTENAME]'` 方式
_define_XXXX → _zlib._define_obj
dispatch 出来る baseObject
Event のコンストラクタでの detail 埋め込み
ライブラリのインスタンスは this の値を読める形にすべき?
 ESTK CS6ではarray継承できないので処理めんどそうだったので独自の値を用意してない
ライブラリの instance 化可能な物と static 挙動を再整備
ルート直下のみ 'item("ルート":0)' にしたい
まだ関数内で newobj になってる?
def のライブラリ参照を参照してる関数有り?
typeofみたいのでarrayやregexp返るの作ったから可能なら使う方法に書き換え
所属レイヤー取得は getThisLayer へ
obj.tmp.prop は想定通りの動作をしているが余り美しい定義構成になっていない(むしろ混線(スパゲティ)型で危険
UI オブジェクトの登録方法が忘れるとどうにもならないのでもう少し高級化したい
UI 生成方法の改善
 環境読込でパネルを表示してから状態復帰する件
 テキスト一発ぽんなので addItem 方式で1つずつ生成したい
UI を一気に文字列で登録するやり方は汎用性が低いのでappendChildの再帰呼出で何とかしたい
UI とかの app 固有は collect みたいな BridgeTalk の振り分け
BridgeTalk.appName をどこか共通で使える場所に確保( global 参照と関連)
global に定義した UI の参照いくない🙄
nameReplacer が candidate を呼ぶ為の options 設定を UI 設定側と一元化
PrefsRestorater と NRHistories の連携が取りにくい
restoreList のクラス化
STAT,INFO のテキストコールバック生成の統合
イベント駆動型でスコープ外変数の参照を減らす
ラベルカラー対応
第2層 3D レイヤー
ソロスイッチ
機能ボタン配置 ( ver 20230317_00 で断念した margine 問題)
第2層ラジオボタン化
listToCsv
ローカライズテキスト対応?
ローカライズの書式を一般的な物に修正したい
OTSParser 改
OTSPElement の property の幾つかが [PNAME.????] になってるので直値にする
 全部やる必要は無いけど nodeValue とかは直の名前なので統一するという意図ローカライズテキスト対応?

次にやりたいのは _define 周りと新式 `return newobj[CONTENAME]'` 方式への書き換えかな🤔
可能ならついでに EventTarget とか対応したいけどそれは分けて考えるべきかな😑


前回の粗筋

コンポマーカ対応はした🤤
でもそれが正しく動作するかは検証できない😞


新式化とは?

// 一般的なクラス定義
var MyClass = function(){};
MyClass.prototype.myFunc = function(){};
// ...

// 現在の jsx
_define_func = function()
{
	var newobj = function(){};
	newobj.prototype.myFunc = function(){};
	// ...
	return newobj;
};
var MyClass = _define_func();

// 新式
_define_func = function()
{
	var newobj = {};
	var CLASSNAME = "MyClass";
	var classobj = newobj[CLASSNAME] = function(){};
	var FUNCNAME = "myFunc";
	classobj.prototype[FUNCNAME] = function(){};
	// ...
	return newobj[CLASSNAME];
};
var MyClass = _define_func();

凄い簡単に言うと「コピペしやすい構造にした方式」🤪
現状の jsx の方式でも newobj を返す形なのでそこそこコピペしやすくなるんだけど新しい方式は内部の関数とかまでをも名前を別途代入して `newobj[CONTENAME][FUNCNAME]` という形にしてしまってコピペしやすくしてしまうやりクチ🤪
但し、これはドキュメントとかでは固有の定義ではなくなるせいで _define_func 外ではドキュメント参照ができなくなるお😞
それとデバグ時のインスペクタ表示が常に匿名で FxFirefox でようやく括弧書きになるので若干追いにくくなる…かな?🙄

現在では `newobj[CONTENAME]` でカテゴリ作って CLASSNAME で主要クラス、 DICNAME で辞書とかとなってるけどこれらは本来一つのクラスで静的参照可能な辞書、とかの状態になってる必要が有るのが美しいクラスの構造だと思うのよね😑
でもそれらの調整は二次調整に行うという予定にしたので今回は単純に CONTENAME の方式のまま、コンテナが無いやつは CLASSNAME で、同系で纏まってないやつは纏めるとかの処置になるかな🤤

なんか長々と前振りしたけどさっさと始めるぽ😑
なんせかなり量が有る筈だからねぃ🙄


git 系の鬱陶しい設定

で、作業始めようと思ってスクロールしたら目立つ行の隙間😑
一人で開発してるから誰がいつとかの情報は正直全く要らない🙄
前回までは御丁寧にこれにアカウントアイコンまで付いてきてた😞邪魔なのよ

前回書かなかったけどドキュメントの終わりに似た様な感じででかい行間作りやがって排除したんだけどまだ有るし行の終わりに追加されてる情報も邪魔ではないけどイラナイからこの機会に徹底的に排除するお😑

前回、切ったと思った設定が復活している😞

切ったら183行の下に有った隙間が無くなった🤤ヨシ

行の終わりに表示が追加されるのはこれかな?🤔
184行をアクティブにしてると出てるから切れば判る🤤

ヨシ!👈🤪

マウスカーソル持っていくと表示されるこのデカい超邪魔な表示は名前からしてこの Hovers かな🤔

ヨシ🤤

残りはソース管理の操作中の物っぽいからこれで大丈夫かな🤔


次回は

思わぬ邪魔が入って手を付けられなかったけど今度こそ修正始めるぽ🤤🚩

この記事が気に入ったらサポートをしてみませんか?