New Script () でフォーマットとコメントを保持する方法は?こんにちは、みんな、
また私です。 別の日、別の質問:)
そこで、いくつかのスクリプトを含む新しいデータ テーブルを作成する長いスクリプトを作成しました。 これを行うには、New Script () 関数を使用します。
dt<< New script ("myscript",
// comments
//beautiful indentation
(
(
( ( instructions) )
)
)
)
);
私の問題は、テーブル dt 内のスクリプトをチェックすると、レイアウト、インデントの個人的なスタイル、空行などだけでなく、すべてのコメントが失われることです。
これらのスクリプトは、必ずしも JSL に精通していないユーザーを対象としているため、コメントと元のレイアウトを維持する必要があります。
スクリプトを文字列に入れて Append() または Append Text() を使用するなどのことをしようとしましたが、失敗しました。
mystring = " \[ // all my
// script
]\" ;
myscript = dt<<NEW script=""></NEW>残念ながら、これはうまくいきませんでした。 何か案は ? Expr/ Eval などを使ったいくつかのトリック?
Re: New Script () でフォーマットとコメントを保持する方法は?まあ、まあ、まあ、勝者がいるようです!
一見不可能に思える問題に何日もかけてギアをすりつぶし、誰かがその解決策を 1 行のスクリプトで明らかにするのが好きです。 :face_with_tears_of_joy:
どうもありがとう@ザングレッグ
Re: New Script () でフォーマットとコメントを保持する方法は?JSL Quote() が役立つ場合があります。
New Table( "formatted script",
New Script( "my script",
Eval( Parse(JSL Quote(
// example
x = 1;
Print( :column 1[1], y );
) )
)
),
New Column( "Column 1", Set Values( [5] ) )
)
Re: New Script () でフォーマットとコメントを保持する方法は?あなたが言った、 "私が見る限り、データ テーブル内のスクリプトを参照する方法はなく、それが問題です。 つまり、データ テーブルがないということです: myscript または datatable< " 上記のサンプル コードを実行した後、このメッセージをデータ テーブルに送信できます。
dt << Get Script( "My Script" );
これで、式または文字列関数を使用して、データ テーブルからスクリプトを編集できるようになりました。
Re: New Script () でフォーマットとコメントを保持する方法は?やあ@マークベイリー、
このコードをありがとう、それは確かに便利です。
これで 1 つの問題が解決します。スクリプト ウィンドウの内容をスクリプトに保存できます。
しかし、最初の部分はまだ「JMPスクリプトは別のスクリプトで編集できない」というのは本当のようです。 あなたが提供したスクリプトは、New Script () 関数を使用して毎回新しいスクリプトを書き込みます。
私が見る限り、データ テーブル内のスクリプトを参照する方法はなく、それが問題です。 つまり、データ テーブルがないということです: myscript または datatable<
できることは、スクリプトをコピーして、新しいスクリプトに貼り付けることだけです。 しかし、実際には、それを JSL 式に変換し、その過程でコメントとフォーマットを削除するため、問題は解決しません。
現時点で解決策がないことを認める時が来たと思います。 JMPのウィッシュリストにあるので、 @ジェフ・パーキンソン言及された、
興味のある方は必ず工藤までデータに添付されたJSLコード内のコメントと空白を保持!!
Re: New Script () でフォーマットとコメントを保持する方法は?テーブル スクリプトは、この方法で保存されたスクリプトを実行できます。
Include( "My Path/My Script.jsl" );
スクリプトはどこにでも配置でき (単一のリポジトリ フォルダなど)、フル パスを含めることができます。
Re: New Script () でフォーマットとコメントを保持する方法は?あなたが言った、 " JMP スクリプトは別のスクリプトで編集できないようです。 ウィンドウ内のスクリプトボックスにスクリプトを書き込もうとしていました。しかし、私の知る限り、スクリプト ボックスの内容をデータ テーブルに保存することはできません。 "
可能です。 それは明らかではないかもしれません。 ただし、基本的ではないスクリプト作成技術が必要です。 これがどのように行われるかを示す例を次に示します。 それ
Names Default to Here( 1 );
script window = New Window( "Script", << Modal,
sb = Script Box( "print(\!"Hello\!");" ),
H List Box(
Button Box( "OK", s = sb << Get Lines ),
Button Box( "Cancel" )
)
);
If( script window["Button"] == -1,
Throw( "User cancelled" );
);
Print( s );
n = N Items( s );
script = s[1];
For( line = 2, line <= n, line++,
script ||= "\!n" || s[line];
);
Print( script );
Eval( Parse( script ) );
Eval(
Substitute(
Expr( Current Data Table() << New Script( "My Script", sss ) ),
Expr( sss ),
Parse( script )
)
);
ただし、JSL インタープリターと同様に、Parse() 関数がそれを破棄するため、テーブル スクリプトは書式設定を失います。 したがって、この例は元の問題を解決しません。
Re: New Script () でフォーマットとコメントを保持する方法は?ありがとう、マークベイリー
これは便利なコードです。 .jsl ファイルを、使用するデータ テーブルと同じフォルダーに保存できると思います。 それは物事を行うための合理的な方法です。Re: New Script () でフォーマットとコメントを保持するには?この問題は、スクリプトに関する JMP トレーニング コースで発生しました。 コードをできるだけ明確にするために特定のスタイルとフォーマットを課したので、常にそれを維持したいと考えました。 私たちの解決策は、コースごとに作成された JMP ジャーナルを利用することでした。 コースで提供するスクリプトごとにボタンを追加しました。 ボタン スクリプトは、書式設定されたスクリプトを文字列としてスクリプト ファイルに保存し、それを開いて実行します。 以下は、ジャーナル ボタンの機能を説明するための非常に簡単な例です。
script = "dt = Open( \!"$SAMPLE_DATA/Big Class.jmp\!" );
dist = dt << Distribution( Y( :weight, :height ) );";
Save Text File( "My Script.jsl", script );
Open( "My Script.jsl" );
このソリューションは、トレーニングの目的に適しています。 私はそれがあなたを助けるとは思わない。
Re: New Script () でフォーマットとコメントを保持する方法は?アップデート :
JMP スクリプトは別のスクリプトで編集できないようです。 ウィンドウ内のスクリプトボックスにスクリプトを書き込もうとしていました。しかし、私の知る限り、スクリプト ボックスの内容をデータ テーブルに保存することはできません。
結局、これは実現不可能のようです。
ただし、中途半端なバックアップ オプションがいくつかあります。
- \[...]\ を使用すると、スクリプトをテキスト文字列としてデータ テーブルに保存できます。 その後、ユーザーはコメントを確認するためにアクセスできます。 また、その文字列をコピーして新しいスクリプトに貼り付け、元のレイアウトとコメントを取得することもできました。 ユーザーからの入力が必要なため、それほど大きくはありません。
- もう 1 つのフォールバック オプションは、コメントをログに出力するスクリプトでコメント機能を作成することです。 また、デフォルトでは、データ テーブルから実行されたスクリプトには組み込みのログがないため、あまり優れたオプションではありません。
- または、ソース コードを word または pdf ドキュメントのリソースとして利用できるようにすることもできます。
他のアイデア、洞察はありますか??
Re: New Script () でフォーマットとコメントを保持する方法は?ジェフ、ありがとう
これが答えになるのではないかと恐れていました。 ただし、これを回避するための DIY ソリューションがあると思います...
たとえば、すべてのスクリプトを Expr () ステートメントに入れようとしたところ、正常にエクスポートされました。 もちろん、最終的なスクリプトでは、すべてがまだ Expr の括弧の間にあります。
しかし、おそらくテキスト編集スクリプトはこれを読み、Expr と角かっこを削除して元のテキストにすることができますか?
私の質問は、これは可能ですか? スクリプトはこの方法で別のスクリプトを編集できますか?
または、データ テーブルのスクリプトを個別の .jsl ファイルとして保存し、テーブルに自動的にインポートさせることもできますか?
さあ、これを行う方法があるはずです:)
Re: New Script () でフォーマットとコメントを保持する方法は?残念ながら、JMP は、データ テーブルに添付されたスクリプトのコメントとフォーマットを保持するようには設計されていません。 これは、JMP ウィッシュ リストで要求されています。 JSL コードでコメントと空白を保持する. あなたのサポートを示すために、必ずそれを賞賛してください. 開発者がその欲求を認識していることを確認します。