見出し画像

【projectItemRenamer.jsx】環境読込 38【開発記】


→エラーの大半は記述誤りsyntax or typo
→コード補完機能有ればなー🤪
→循環参照を作ったオブジェクトで toSource() は落ちる( ES6 なら循環の原因になってるプロパティを private 化すれば良い)


動作確認

画像1

さて、ボタンに仕込んで確認開始よー🤤

画像2

🙄🙄🙄
デスヨネー

画像3

三項演算子の false 部が無かった🤪💥🤛

画像4

画像5

"tree:" が出てない🙄

画像6

画像7

validArg が関数呼出になってない🤪💥🤛

画像8

なんか同じとこで何回直してるの?って言われそう🤤

画像9

…初期化で null 入れてるんだから参照できるわけもなく…🙄

画像10

ちゃんと初期化経由すれば大丈夫🤤

画像12

画像12

null が返ってきてるから null チェック入れるぽ🤤

画像13

なんで null になっちゃうのかって言うとどこかで処理が打ち切られているからなんだけど…😞
ひとまず for までは特におかしな挙動はナシ…🤔

画像14

❓🙄❓🙄❓🙄❓

最初に "{"波括弧 を判定終わって continue から何故か次の case へ流れたお?🙄
もしや switch 中の continue は次の case へ飛ぶ…?

画像15

一先ずラベル付き continue で対応🤤

画像16

まだ null が返ってきてる🙄

画像17

ラベルに頼るのは余り美しくないし元々 break でも大丈夫な状態になってたから一旦 break の処理に変更🤤

画像18

画像19

よく見たら区切り文字じゃなくて TTYPE 入れてる…🤪

画像20

英字2文字とか間違えやすくてほんとはいくないのよね🤤
変数名はできるだけ短く!という時代はとうの昔に終焉を迎えていた🤪
(実際には文字数が少ない方が早いけど誤差の範囲)

画像21

😬😬😬

まだ null が返ってきてる🤬

画像22

ちょっと本データだと反復処理回数が多くて確認しにくいので少なくして調査😞

画像23

parent になってる…後で parentNode に修正しなくちゃ🙄

画像24

うーん、特におかしなところも無いまま終わりの文字に…😞

画像25

あれ?最後の筈が "["角括弧 が残ってる🙄

画像26

デリミタ文字スタックを pop してない🤪💥🤛
はー、ということはここで入れ子で配列と連想配列が来ると残ったままで違うデリミタ対応で null になるって事だったのね🤤

画像27

これで正しく終了する筈🤤

画像28

❓🤪❓🤪❓🤪❓
オチターーーーー!!!ww

画像29

return {"tree":res}; にしていたわけじゃないからこれだとよろしくない🤪
というか他の phase みたく複数の返り値で構成されてる可能性でガワを作ってたから構成の仕方的にダメじゃないけどここではダメww

画像30

画像31

一先ず値を見る限りではちゃんと構築できたっぽい🤔
ただ、恐らく parentNode とか childNodes.parentNode とかがループしているから toSource() だと無限ループで落ちるっぽい😞
なるほどー toSource() の廃止はそういう辺りの脆弱性が絡んでるのかな、多分🤤

画像32

ということで {"tree":res} ではないので判定を変更っと🤤

画像33

だいぶ手こずったけどなんとか動いた🤪


次回は

葉の parse かな🤤
手順的には幾つかの phase を統合できるけど今回は parse の理論ロジックを学ぶのが目的なので統合はしない🤪


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