Js-beautify: 倉数宣蚀のコンマファヌストスタむルをサポヌト

䜜成日 2013幎04月23日  Â·  27コメント  Â·  ゜ヌス: beautify-web/js-beautify

コヌドを次のようにフォヌマットできるようにしたす。

var a = 1
  , b = "somethign else"
  , isAwesome = true;

そしお、どうやら、いくらか準備ができたパッチが利甚可胜です。 これがここに含たれるこずができれば玠晎らしいでしょう

enhancement

党おのコメント27件

JSずPythonの䞡方をサポヌトしおいるこずを考えるず、パッチかなり叀くなっおいたすはせいぜい䞍完党です。

リク゚ストは受け付けおいたすが、個人的には「カンマファヌスト」はアンチパタヌンだず考えおいたす。 本質的に、js-beautifierは、広く受け入れられおいる「慣甚的な」JSにほが準拠する合理的なオプションを䜿甚しお、JSがどのように芋えるべきかに぀いお意芋が分かれおいたす。 私の意芋では、コンマファヌストは矎しくなく、広く受け入れられおいたせん。 さらに、それは非垞にわずかな利益のために矎化コヌドすでに信じられないほど耇雑ですをひどく耇雑にしたす。

indent=4蚭定されおいる堎合、どのむンデントが適切ですか 䞀貫性の芳点から、私はこれを䞻匵したす

var a = 1
    , b = "foo"
    , c = false;

これは明らかに期埅される出力ではありたせん。 そしお、タブむンデントでどのように芋えるでしょうか

セミコロンはどこに䜏んでいたすか 最埌に どこにも 私は䞡方を芋おきたした、そしおもっず

この芁点は同じように時代遅れですが、必芁な倉曎をより簡単に理解できるようになりたす https 

これは80に䌌おいるので、理由は同じかもしれないず思いたした。぀たり、差分ず䞊べ替えが簡単です。

ただし、このシナリオでは、80ずは異なり、これらの芁件を満たす実行可胜な回避策がありたす。

var a = 1;
var b = "foo";
var c = false;

少し冗長ですが、恐ろしいこずではありたせん。

もちろん、誰かが80を実装する堎合、最も単玔な倉曎はおそらくこのシナリオもカバヌするでしょう。
@evocateurが蚀ったように、プルリク゚ストは倧歓迎です。

@evocateur あなたはあなたの意芋を@bitwisemanが蚀うように

@bitwiseman むンデントの任意のレベル2たたは4で、これがどのように芋えるべきかを掚枬したす

var a = 1
  , b = "foo"
  , c = false;

これは、䞀郚のSQL゚ディタヌコンマが最初の方が䞀般的の方法ずも䞀臎しおいるず思いたす。

そしお、私は悪いレむアりトを宣䌝するこずを䞻匵しおいたせんが、慣甚的なものず独断的なものの間には垞に埮劙な境界線があるず思いたすここでCrockfordを考えおください。 フォヌマッタヌの倚くは、理由が䜕であれ、コンマをサポヌトしおいないため、最初にコンマが普及しおいない可胜性がありたす。

あなたはコヌドに関しお状況に粟通しおいるので、私はあなたのROIの議論に完党に同意したす。 ずはいえ、これらのこずを公開し、定足数で話し合い、コミュニティからの芁望があれば、考え盎しおほしいず思いたした。

PS私は、䜕かをすばやくスピンオフできるかどうかを確認するために数時間を費やしたしたが、あたり成功したせんでした。 たぶん、もう䞀床詊しおみたす。

@mrchief昚日は無愛想だったこずをお詫びしたす。むラむラするデバッグセッションから䌑憩しおいたした。 あなたは良い点を述べおいたす、そしお私もあなたの遞択を尊重しおいるこずを明確にしたいず思いたす。 私自身、パッチコンマ優先、セミコロンなし、その他の奇抜さを提䟛しおいる堎合は、特定のプロゞェクトのスタむルを維持しようずしたす。このようなオプションは、少なくずも、それらを採甚するこずを遞択したプロゞェクトの䞀貫性。

+1。 差分ずマヌゞの際の利点ずしお、コンマファヌストパタヌンを䜿甚したす。

セミコロンの䜍眮に぀いお varキヌワヌドに沿っお、次のように改行したす。

var a
  , b
  , c
;

同じパタヌンを䜿甚するいく぀かのプロゞェクトを芋おきたした。

たた、私芋では、宣蚀の暪に倀が指定されおいなくおも、各倉数を別々の行に保持できるず䟿利だず思いたす。 䞊蚘の䟋では、矎容垫はすべおを1行var a, b, c;グルヌプ化したすが、これもコンマ拳スタむルを䜿甚するずいう目的党䜓を砎りたす。

カンマ優先のサポヌトの堎合は+1。

2スペヌスのむンデントでは、倉数を配眮する最もきれいな方法です。

var foo = true
  , bar = 'hello'
  , something;

タブごずに4぀のスペヌスはどうですか 実際のタブ

9:36で金、2013幎11月8日には、ルヌク・マヌティン[email protected]
曞きたした

カンマ優先のサポヌトの堎合は+1。
2スペヌスのむンデントでは、倉数を配眮する最もきれいな方法です
var foo = true
、bar = 'こんにちは'

、 なにか;

このメヌルに盎接返信するか、GitHubで衚瀺しおください。
https://github.com/einars/js-beautify/issues/245#issuecomment -28081629

カンマファヌストの問題の栞心は、実際にはタブの蚭定にあるず思いたす。

私は2スペヌスのタブを䜿甚しおいたすが、䞍芁な空癜を远加せずに倉数を配眮する唯䞀の方法はコンマビフォアです〜は、物事を䞊べるために远加された䜙分なスペヌスを衚したす。

// eww
var foo = true,
  ~~bar = 'hello',
  ~~something;

// yum
var foo = true
  , bar = 'hello'
  , something;

逆に、4スペヌスのタブを䜿甚する堎合、コンマビフォアは芋栄えが悪くなり、圓然、サポヌトに぀いおは気になりたせん。

// also eww
var foo = true
    , bar = 'hello'
    , something;

したがっお、コンマに぀いおの議論がありたす-コメントずデバッグが簡単になる前に、䜕ずか䜕ずか䜕ずか。 しかし、私にずっお、それは矎孊に垰着したす。 2スペヌスのタブを䜿甚しおいるので、カンマビフォアを䜿甚する必芁がありたす。 珟圚、2スペヌスのタブを優先しおいるため、beautifyを䜿甚できたせん。

今、私はおそらくマむノリティにいるこずを知っおいたす、そしお私は私の小さな奜みのためにサポヌトを絶察に芁求しおいたせん。 䌚話に+1を远加しおいたした。 時間があれば、自分でサポヌトを远加するこずも怜蚎するかもしれたせん。

也杯 

これをjsonオブゞェクトで芋たいです。

 var a ={
 a1
 、b2
 };

@lukemartinそれは興味深い芖点です +1

倉数宣蚀ず配列およびオブゞェクトのコンマファヌストサポヌト甚の別の+ 1- https//gist.github.com/isaacs/357981

私はこの機胜を「オンデマンド」でサポヌトするパッチに取り組んでいたすナヌザヌは、䜜成した蚭定で最初にコンマを䜿甚するオプションを有効たたは無効にできたす。

倉数宣蚀の次のフォヌマットを実珟したした2぀のスペヌスを䜿甚。

var firstVar = 1
  , secondVar = 2
  , thirdVar = 3
;

しかし、私にはいく぀か疑問がありたす。

配列、オブゞェクト、匕数の宣蚀をどのように扱うべきですか 最近、私は次の圢匏を䜿甚しおいたす。

myArray = [
  item1
, item2
, item3
];

myObject = {
  prop1: 1
, prop2: 2
, prop3: 3
}

ご芧のずおり、これは倉数宣蚀のフォヌマットずたったく同じではありたせん。この最埌のフォヌマットには、2番目の倉数の+1むンデントレベルが含たれおいたす「item2」のコンマの前に存圚しないコンマの前の2぀のスペヌスに泚意しおください 「prop2」甚のものでもありたせん。 Var宣蚀は、@ lukemartinで指定されおいるように、各倉数名の先頭を同じ列に揃えるために、この远加のむンデントを䜿甚したす。

䞊蚘のコヌドに瀺されおいるフォヌマットを䜿甚する理由は次のずおりです。

1.- jshintによっおスロヌされるリンティング゚ラヌむンデント゚ラヌをため。 䟋えば

myArray = [
    item1
  , item2
];

「1ではなく3にむンデントがあるず予想される]をスロヌしたす。 提案に埓うず、非垞に醜い結果が埗られたす。

2.-各プロパティ名、配列項目などの先頭を揃えるずいう利点を維持するため。次に䟋を瀺したす。

myArray = [
  item1
  , item2
];

たた、リンティング゚ラヌは発生したせんが、䞊蚘の䟋ほど芋栄えがよくありたせん。

これらのケヌスをどのように凊理するかに぀いおより明確な考えがあれば、この機胜の実装を完了しおプルリク゚ストを発行できたす。

䞊蚘のすべおをサポヌトするこずは可胜ですか あなたがリストしたものはすべお、技術的には「コンマファヌスト」です。

それは可胜だず思いたすが、ナヌザヌが垌望する結果を達成できるように、より倚くの蚭定を実装する必芁がありたす。 たずえば、配列、オブゞェクト、匕数に2぀のむンデントレベルを䜿甚するか、1぀だけを䜿甚するかをフォヌマッタヌに指瀺する必芁がありたす。

最初に基本的な機胜を実珟しおから、より倚くの蚭定で拡匵したほうがいいず思いたす。 2番目のパッチでそれらを実装するのに問題はないず思いたす。

あなたが蚀うように、基本的な機胜は問題ありたせん。 _all_フォヌマットオプションをサポヌトするこずは、このプロゞェクトの_非目暙_です。 笑顔

// 2-space indents
var itemA = 1
  , itemB: 2
  , itemC: 3;

myObj = {
  itemA: 1
  , itemB: 2
}

myArray = [
  item1
  , item2
];

// 4-space indents
var itemA = 1
    , itemB: 2
    , itemC: 3;

myObj = {
    itemA: 1
    , itemB: 2
}

myArray = [
    item1
    , item2
];

これらにより、コヌドがシンプルになり、䜿甚するむンデントに関係なくフォヌマットが䞀貫し、この問題を閉じお、個別に指定および実装できる「コンマ優先識別子の列化」たたはその他の新しい問題を開くこずができたす。 。

プルリク゚ストをお埅ちしおおりたす

@tgirardiお疲れ様でした。 これを詊すのが埅ちきれたせん。

すべおのフィヌドバックを歓迎したす-!!!

私の考えは、正しい解決策ず芋なされるたでコヌドを調敎しおから、次のTODOリストに進むこずです。

1.-この新機胜のテストを䜜成する
2.- Pythonバヌゞョンに機胜を適甚したす誰かがこれを志願するなら、さらに良いです...私はPythonの経隓があたりありたせん。
3.-コンマファヌストスタむルの他の可胜なバリ゚ヌションに぀いお話し合う

4スペヌスむンデント

var x = a
    , y = b
;
obj = {
    attr1: "value1"
    , attr2: "value2"
    , attr3: "value3"
};

倉数名ず属性名を䞊べる必芁はありたせん。 これは読みやすさにはたったく圱響したせん。 私の意芋では、列優先を䜿甚する䞻な理由は、コメント、行の削陀、挿入を簡単にするためです。 2スペヌスのむンデントを䜿甚するず、たたたた敎列したす。

'y'の埌に新しい倉数を远加しやすくするために、耇数の倉数を宣蚀した埌、半列を独自の行に配眮する必芁がありたす。 この堎合、VIMでは、 '$ aの代わりに' o '+'、z = c '、'+' z = c '

@lewisdiamondセミコロンのコメントに同意したす。 独自の行に含めるこずで、最埌の倉数も簡単に線集できるようになりたす削陀、眮換、行の前埌の挿入など。

ただし、次の点にも泚意しおください。

1.-あらゆる皮類のフォヌマットをサポヌトするこずはプロゞェクトの目暙ではありたせん。
2.-䞀床に耇雑すぎるこずを远加するこずは悪い考えです。 したがっお、最初にこの機胜をできるだけ単玔に保ち、リリヌス状態に達しおしばらくの間テストした埌で改善を開始する方がよい堎合がありたす。

+1はコンマファヌストのサポヌトであり、コンマファヌストスタむルには実甚的な理由があるため、タブを正しく敎列させるこずが最終目暙ではないずいうlewisdiamondの感情に同意したす。 jsonのサポヌトも欲しいです。 珟圚、私はグロヌバルなjs-beautifyコヌドをハックしお、句読点を優先する倚くの代替手段を実行しおいたす3倀挔算子の堎合は必須でした。

これを+1したすべおの人ぞブランチhttps://github.com/beautify-web/js-beautify/tree/feature/comma-firstをご芧ください。

これがあなたが望むものぞの十分な最初のステップであり、次のリリヌスに远加する必芁があるかどうかを教えおください。

@ olsonpm 、 @ lewisdiamond 、 @ lukemartin 、 @ mrchief-ブランチhttps://github.com/beautify-web/js-beautify/tree/feature/comma-firstをご芧ください。

今倜は30分かけお考えお察応したす。 フォロヌアップしおいただきありがずうございたす。

今朝それを手に入れたした。 あなたのテストのおかげで、それはすべお私には良さそうです。 私は倚くのオペレヌタヌファヌスト機胜を備えた個人ブランチを持っおいたす-私はあなたのブランチを通しお私のコンマファヌストテストを行いたした、そしおそれらはすべお問題なく合栌したした、それは玠晎らしいニュヌスです。

個人甚ブランチを䜜成したずき、コンマファヌスト挔算子はパッシブであるず刀断したした。これは次のこずを意味したす。

var a,
    b;

倉曎されたせん。 コミットメッセヌゞではそうではないず明確に述べたしたが、opt.comma_firstを䜿甚するこずを遞択した堎合に、他の人がどのような動䜜を期埅するかに぀いお話し合う䟡倀があるず感じおいたす。

もう1぀、<Output> .previous_lineずflags.previous_textは私が信じおいるものず同じもので、最初は混乱しおいたしたが、䜿甚方法には意味がありたした。

それ以倖の実装の䞻な違いは、前の行を倉曎するこずを遞択したこずです。 開発するのがもっず混乱するず思ったので、「戻っお線集する」のはやめようずしおいたした。 今、あなたのやり方は私のやり方よりも簡朔です-それは簡単に読たれ、あなたはすべおにコメントしたした。 既存のコヌドも以前のトヌクンを線集するので、コヌドは完党に䞀臎したす。正盎なずころ、あなたの考えが䜕であるかを知りたいので、私はそれを取り䞊げおいたす。 芁するに、私の意芋では、トヌクンが次のトヌクンに基づいおそれらの前の空癜のみを担圓しおいる堎合、このプログラムはデバッグがはるかに簡単になるでしょう。

これに察凊しおくれおありがずう

線集私の間違い-<出力> .previous_lineずflags.previous_textは完党に異なりたす。

フォワヌドのみが望たしいです。 カンマをどのように、どこで凊理するかを決定する方法ず堎所のヘアボヌルを芋たしたが、出力を適切な堎所に戻すために出力をトリミングする堎所がすでにありたす。 私は少し単玔なこずをするこずにしたした。単玔な動䜜を怜蚌するいく぀かのテストを取埗し、埌でチュヌニングずリファクタリングに぀いお確認したす。

あなたが蚀及する䟋

var a,
    b;

埌で説明できるチュヌニングの䟋になりたす。

いいですね。 フィヌドバックに感謝したす。

そしお、それを芋おくれおありがずう。 远加したいテストがある堎合、それは倧きな助けになりたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡