0

背景: 私は PHPStylist を使用して PHP コードをインデントしていますが、これは一般的にうまく機能しています。しかし、多くの引数を持つ関数呼び出しが見つかると、これらすべての引数が 1 行にまとめられます。したがって、たとえば、bind_param()呼び出しは簡単に 300 文字の幅になる可能性があります。

これは、1 行の最大長を 180 文字と規定しているコーディング スタイル ガイドではうまく機能しません。

私たちのインデント スクリプトには、PHPStylist によって残された末尾の空白を削除するための sed コマンドが既に含まれているため、sed で長すぎる行を改行することもできますが、カンマでのみ可能でしょうか?

入力例:

function xyz()
{
    somecall($somevariable1, $somevariable1, $somevariable1, $somevariable1, $somevariable1, $somevariable1, $somevariable1, $somevariable1, $somevariable1);
}

出力例:

function xyz()
{
    somecall($somevariable1, $somevariable1, $somevariable1, $somevariable1,
$somevariable1, $somevariable1, $somevariable1, $somevariable1, $somevariable1);
}

(スクリプトが次の行をきれいにインデントできる場合のボーナスポイントですが、sedでそれを行うのは非常に難しいと思います。awk、perl、python、またはその他の一般的なツールでの解決策も非常に高く評価されます。)

4

2 に答える 2

2

最初の提案として、このようなものはありますか?

sed 's/.\{70\}[^,]*,/&\
/g' file

- -編集 - -

インデントについては、次を試すことができます。

sed -e 's/\(.\{70\}[^,]*,\)[[:blank:]]*/\1\
/g; tend' -e n  -e :end -e 's/\(^[[:blank:]]*\)\(.*\n\)/\1\2\1/ ' file
于 2013-03-21T11:21:13.033 に答える