0

Sencha Touch プロジェクトに取り組んでいます。次のような行を含む js ファイルがあります。

Ext.define('AssetMenuModel', {
    extend: 'Ext.data.Model',
    config:{    
        fields: ['code','name']
    }
});

*.js拡張子を持つファイルに対して JS フォルダー全体を反復処理する必要があります。これは次の方法で実行できます。

find ./js/common -type f -name "*.js"

の行を見つけて、extend: 'Ext.data.Model'その部分を抽出します: Ext.data.Model

抽出した部分を で連結しand include -namespace {Extracted_Part}ます。

そして最終的に出力をファイルまたはコンソールに出力します。

出力は次のようになります

and include -namespace Ext.data.Model and include -namespace Ext.Panel.

前もって感謝します。

4

2 に答える 2

0

extend行がExt.defineブロック内にあることを確認する必要はないと思います。そうしないと、ソリューションははるかに複雑になります。これはすべてのファイルを 1 行ずつ読み取りjs、正規表現を使用してその行を見つけ、グループ化して文字列を抽出します。\x27スクリプトも一重引用符で囲まれているため、16 進数を使用して一重引用符 ( ) を記述します。

perl -ne '
    if ( m/\A\s*(?i)extend\s*:\s*\x27([^\x27]*)\x27/ ) { 
        printf qq|and include -namespace %s |, $1;
    } 
    END { print "\n" }
' $(find ./js/common -type f -name "*.js")

瞬時に作成された2 つのダミーjavascriptファイルを使用した私のテストでは、次の結果が得られます。

and include -namespace Ext.data.Model and include -namespace Ext.Panel
于 2013-07-26T09:35:45.560 に答える