たとえば、テーブルがあります:
id | field1 | field2 | field3
そして、フォームのマークアップを取得する必要があります。
<tr> <td class="fls"><GEN:FIELDLABEL NAME="Field1Label" /></td> <td class="dfv" style="white-space:nowrap;"><GEN:FIELDVALUE NAME="Field1" /></td> </tr> <tr> <td class="fls"><GEN:FIELDLABEL NAME="Field2Label" /></td> <td class="dfv" style="white-space:nowrap;"><GEN:FIELDVALUE NAME="Field2" /></td> </tr> <tr> <td class="fls"><GEN:FIELDLABEL NAME="Field3Label" /></td> <td class="dfv" style="white-space:nowrap;"><GEN:FIELDVALUE NAME="Field3" /></td> </tr>
フィールドが3つあると良いのですが、フィールドが30あり、コードが12個以上ある場合はどうでしょうか。
最初の考えは、SQLですべてを行うことでした。 フィールドのリストと、テンプレートに従ってコードブロックを生成するリクエストを含むラベルを作成します。 しかし、すぐにテンプレートをsqlサーバー管理スタジオにコピーし、生成されたコードを戻すのはあまり便利ではないと思われたため、Sublime Text 2のプラグインを作成することにしました。
最後のタスク:
値のリストを2次元配列の形式で作成します。私の場合、各行に入力します。
[fieldName, signFieldName, fieldFullName, fieldMeasurment]
編集したファイルに、プレースホルダー{0}、{1}、{2}、および{3}を含むテンプレートを作成します。例:
ValidateSignedField({0},{1});
次に、複数選択を使用して複数のテンプレートを選択し、Ctrl + Shift + zを押して完成したコードを取得します。
これは私の最初の崇高なテキスト2プラグインであり、1年以上前に非常に表面的にpythonを選択したことを考えると、実装は非常に簡単であることがわかりました。
新しいプラグインを作成し(ツール->新しいプラグイン)、たとえば適切なフォルダーにCodegen.pyとして保存します。
プラグインコード:
# coding=utf-8 import sublime import sublime_plugin # {0},{1},{2} {3} field_rows = [ ['dbField1','dbField1Sign','Field 1 full name','m/s'], ['dbField2','dbField2Sign','Field 2 full name','kg/m*m'], ['dbField3','dbField3Sign','Field 3 full name','V'], ['dbField4','dbField4Sign','Field 4 full name','km/h'] ] class CodegenCommand(sublime_plugin.TextCommand): def run(self, edit): # view view = self.view # for curr_sel in view.sel(): n = 0 region = curr_sel if not region.empty(): # , selection = view.substr(region) result = '' # for field_row in field_rows: result += selection.replace('{0}',field_row[0]).replace('{1}',field_row[1]).replace('{2}',field_row[2]).replace('{3}',field_row[3]).replace('{n0}',str(n)).replace('{n1}',str(n+1)) result += '\r\n' n += 1 # self.view.replace(edit, region, result)
field_rows-テンプレート内の置換用の値の同じ配列。
すでに記事を書く過程で、ゼロまたは1からインデックスを生成する機能を追加することになりました。このため、それぞれプレースホルダー{n0}および{n1}を追加しました。
これで、プラグイン呼び出しにホットキーを追加できます。 Key Bindings-Userに次のように記述します。
[
{ "keys": ["ctrl+shift+z"], "command": "codegen" }
]
このプラグインが誰かの時間の節約に役立つことを願っています。