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://gist.github.com/nemtsov/2864266/revisions

์ด๊ฒƒ์€ #80๊ณผ ๋น„์Šทํ•˜๋ฏ€๋กœ ๊ทธ ์ด์œ ๊ฐ€ ๊ฐ™์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค - ๋” ์‰ฌ์šด diffing ๋ฐ reordering.

๊ทธ๋Ÿฌ๋‚˜ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” #80๊ณผ ๋‹ฌ๋ฆฌ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

์กฐ๊ธˆ ๋” ์žฅํ™ฉํ•˜์ง€๋งŒ ๋”์ฐํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ #80์„ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ณ€๊ฒฝ์œผ๋กœ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
@evocateur๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

@evocateur : ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์˜๊ฒฌ์„ ์กด์ค‘ํ•  ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ํ•ญ์ƒ ์‰ผํ‘œ ์ฒซ ๋ฒˆ์งธ ์Šคํƒ€์ผ์„ ์‹ซ์–ดํ–ˆ์ง€๋งŒ ๋ช‡ ๋…„ ๋™์•ˆ ์ด๋™, ์ œ๊ฑฐ(๋Œ“๊ธ€ ๋‹ฌ๊ธฐ, ์‚ญ์ œ ๋“ฑ)์˜ ์šฉ์ดํ•จ ๊ณผ ์ฐจ์ด๋ฅผ ์ธ์‹ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ด๊ฒƒ์„ ์˜ต์…˜์œผ๋กœ ๋‚จ๊ฒจ๋‘๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ, ๊ทธ๊ฒƒ์€ ๊ทธ์˜ ์†์— ์žˆ์ง€ ์•Š์œผ๋ฉฐ ๊ทธ๋Š” ์ด๋ฏธ ์„ค์ •๋œ ํ‘œ์ค€์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ์ถ”์•…ํ•˜์ง€๋งŒ ํ˜„์‹ค์ž…๋‹ˆ๋‹ค!

@bitwiseman : ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€(2 ๋˜๋Š” 4)์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ด๊ฒƒ์€ ๋˜ํ•œ ์ผ๋ถ€ SQL ํŽธ์ง‘๊ธฐ(์‰ผํ‘œ๊ฐ€ ๋จผ์ € ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ)๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹๊ณผ๋„ ์ผ์น˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ๋‚˜์œ ๋ ˆ์ด์•„์›ƒ์„ ํ™๋ณดํ•˜๋Š” ๊ฒƒ์„ ์˜นํ˜ธํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ๊ด€์šฉ์ ์ธ ๊ฒƒ๊ณผ ๋…๋‹จ์ ์ธ ๊ฒƒ ์‚ฌ์ด์—๋Š” ํ•ญ์ƒ ๋ฏธ์„ธํ•œ ์„ ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์—ฌ๊ธฐ์„œ Crockford๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”). ์ด์œ ๊ฐ€ ๋ฌด์—‡์ด๋“  ๋งŽ์€ ํฌ๋งทํ„ฐ๊ฐ€ ์‰ผํ‘œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ์‰ผํ‘œ๊ฐ€ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ๋ฉด์—์„œ ์ƒํ™ฉ์— ๋Œ€ํ•ด ๋” ์ž˜ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ROI ์ฃผ์žฅ์— ์™„๋ฒฝํ•˜๊ฒŒ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์„ ๊ณต๊ฐœํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฌธ์ œ๋ฅผ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์ •์กฑ์ˆ˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์š”๊ตฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์ด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญํ•˜๋ ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถ”์‹ : ๋‚˜๋Š” ๋‚ด๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋น ๋ฅด๊ฒŒ ์Šคํ•€์˜คํ”„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ๋ช‡ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ์ง€๋งŒ ๊ทธ๋‹ค์ง€ ์„ฑ๊ณต์ ์ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์•„๋งˆ ๋‹ค๋ฅธ ์‹œ๊ฐ„์— ํ•œ๋ฒˆ ํ•ด๋ณผ๊ป˜์š”.

@mrchief ์–ด์ œ ๋ฌด๋š๋šํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ง์Šค๋Ÿฌ์šด ๋””๋ฒ„๊น… ์„ธ์…˜์—์„œ ํœด์‹์„ ์ทจํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ข‹์€ ์ ์„ ์ง€์ ํ•˜๊ณ , ๋‚˜๋„ ๋‹น์‹ ์˜ ์„ ํƒ์„ ์กด์ค‘ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜ ์ž์‹ ์€ ํŒจ์น˜(์‰ผํ‘œ ์šฐ์„ , ์„ธ๋ฏธ์ฝœ๋ก  ์—†์Œ, ๊ธฐํƒ€ ๊ดด์งœ)๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ ํ”„๋กœ์ ํŠธ์˜ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฉฐ ์ด๋Ÿฌํ•œ ์˜ต์…˜์ด ์ตœ์†Œํ•œ ๊ทธ๋“ค์„ ๊ณ ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ํ”„๋กœ์ ํŠธ์˜ ์ผ๊ด€์„ฑ.

+1. ๋‚˜๋Š” diffing๊ณผ merge์˜ ์žฅ์ ์„ ์œ„ํ•ด ์‰ผํ‘œ ์ฒซ ๋ฒˆ์งธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋ฏธ์ฝœ๋ก ์˜ ์œ„์น˜์— ๊ด€ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด var ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ค„ ๋ฐ”๊ฟˆ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.

var a
  , b
  , c
;

๋™์ผํ•œ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ IMHO, ์„ ์–ธ ์˜†์— ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š๋”๋ผ๋„ ๊ฐ ๋ณ€์ˆ˜๋ฅผ ๋ณ„๋„์˜ ์ค„์— ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ beautifier๋Š” ๋ชจ๋“  ๊ฒƒ์„ var a, b, c; ํ•œ ์ค„๋กœ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ์‰ผํ‘œ ์ฃผ๋จน ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ์ „์ฒด ๋ชฉ์ ์„ ๊นจ๋œจ๋ฆฝ๋‹ˆ๋‹ค.

์‰ผํ‘œ ์šฐ์„  ์ง€์›์˜ ๊ฒฝ์šฐ +1์ž…๋‹ˆ๋‹ค.

2์นธ ๋“ค์—ฌ์“ฐ๊ธฐ์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฐ€์žฅ ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

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

ํƒญ๋‹น 4์นธ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ์‹ค์ œ ํƒญ?

2013๋…„ 11์›” 8์ผ ๊ธˆ์š”์ผ ์˜ค์ „ 9์‹œ 36๋ถ„, Luke Martin [email protected]
์ผ๋‹ค:

์‰ผํ‘œ ์šฐ์„  ์ง€์›์˜ ๊ฒฝ์šฐ +1์ž…๋‹ˆ๋‹ค.
2์นธ ๋“ค์—ฌ์“ฐ๊ธฐ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฐ€์žฅ ๊น”๋”ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
var foo = ์ฐธ
, ๋ฐ” = '์•ˆ๋…•ํ•˜์„ธ์š”'

, ๋ฌด์—‡;

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/einars/js-beautify/issues/245#issuecomment -28081629

์‰ผํ‘œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ์‹ค์ œ๋กœ ํƒญ ๊ธฐ๋ณธ ์„ค์ •์— ๋‹ฌ๋ ค ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” 2-์ŠคํŽ˜์ด์Šค ํƒญ์„ ์‚ฌ์šฉํ•˜๊ณ , ์‰ผํ‘œ-before๋Š” ๋ถˆํ•„์š”ํ•œ ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๋ฅผ ์ •๋ ฌํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค(~๋Š” ์ผ๋ ฌ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€๋œ ์ถ”๊ฐ€ ๊ณต๋ฐฑ์„ ๋‚˜ํƒ€๋ƒ„):

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

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

๋ฐ˜๋Œ€๋กœ 4-์ŠคํŽ˜์ด์Šค ํƒญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์‰ผํ‘œ ์•ž์— ์˜ค๊ธฐ๊ฐ€ ์ข‹์ง€ ์•Š์•„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง€์›์— ์‹ ๊ฒฝ์„ ์“ฐ์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ ์ฃผ์„ ์ฒ˜๋ฆฌ ๋ฐ ๋””๋ฒ„๊ทธ ๋ฐ blah blah blah๊ฐ€ ๋” ์‰ฌ์›Œ์ง€๊ธฐ ์ „์— ์‰ผํ‘œ์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ๋ฏธํ•™์œผ๋กœ ๊ท€๊ฒฐ๋ฉ๋‹ˆ๋‹ค. 2-์ŠคํŽ˜์ด์Šค ํƒญ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์•ž์— ์‰ผํ‘œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ €๋Š” 2์นธ ํƒญ์„ ์„ ํ˜ธํ•˜๊ธฐ ๋•Œ๋ฌธ์— beautify๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋‚˜๋Š” ๋‚ด๊ฐ€ ์†Œ์ˆ˜์— ์†ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ, ๋‚˜์˜ ์ž‘์€ ์„ ํ˜ธ์— ๋Œ€ํ•œ ์ง€์›์„ ์ ˆ๋Œ€ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ ๋Œ€ํ™”์— +1์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๋˜๋ฉด ์ง€์›์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ :)

json ๊ฐ์ฒด์— ๋Œ€ํ•ด ์ด๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

 var 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
}

๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ณ€์ˆ˜ ์„ ์–ธ ํ˜•์‹๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์—๋Š” ๋‘ ๋ฒˆ์งธ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ +1 ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค("item2"์˜ ์‰ผํ‘œ ์•ž์— ์—†๋Š” ์‰ผํ‘œ ์•ž์˜ ๋‘ ๊ณต๋ฐฑ์— ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค). "prop2"์— ๋Œ€ํ•œ ๊ฒƒ๋„ ์•„๋‹˜). Var ์„ ์–ธ์€ @lukemartin์ด ๋ช…์‹œํ•œ ๋Œ€๋กœ ๊ฐ ๋ณ€์ˆ˜ ์ด๋ฆ„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์„ ๋™์ผํ•œ ์—ด์— ์ •๋ ฌํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ถ”๊ฐ€ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์œ„ ์ฝ”๋“œ์— ํ‘œ์‹œ๋œ ์„œ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

1.- jshint (๋“ค์—ฌ์“ฐ๊ธฐ ์˜ค๋ฅ˜) ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค . ์˜ˆ๋ฅผ ๋“ค์–ด:

myArray = [
    item1
  , item2
];

"1์ด ์•„๋‹Œ 3์— ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋จ"์„ ๋˜์ง‘๋‹ˆ๋‹ค. ์ œ์•ˆ์„ ๋”ฐ๋ฅด๋ฉด ๋งค์šฐ ์ถ”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2.- ๊ฐ ์†์„ฑ ์ด๋ฆ„, ๋ฐฐ์—ด ํ•ญ๋ชฉ ๋“ฑ์˜ ์‹œ์ž‘์„ ์ •๋ ฌํ•˜๋Š” ์ด์ ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ:

myArray = [
  item1
  , item2
];

๋˜ํ•œ linting ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š์ง€๋งŒ ์œ„์˜ ์˜ˆ๋งŒํผ ์ข‹์•„ ๋ณด์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ณด๋‹ค ๋ช…ํ™•ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ๋ฉด ์ด ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์„ ์™„๋ฃŒํ•˜๊ณ  Pull Request๋ฅผ ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๊นŒ? ๊ท€ํ•˜๊ฐ€ ๋‚˜์—ดํ•œ ๋ชจ๋“  ๊ฒƒ์€ ๊ธฐ์ˆ ์ ์œผ๋กœ "์‰ผํ‘œ ์šฐ์„ "์ž…๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ๋” ๋งŽ์€ ์„ค์ •์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด, ๊ฐœ์ฒด ๋ฐ ์ธ์ˆ˜์— ๋Œ€ํ•ด 2๊ฐœ์˜ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํฌ๋งทํ„ฐ์— ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ๋จผ์ € ๊ตฌํ˜„ํ•œ ๋‹ค์Œ ๋” ๋งŽ์€ ์„ค์ •์œผ๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํŒจ์น˜์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ง์”€ํ•˜์‹ ๋Œ€๋กœ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. _๋ชจ๋“ _ ์„œ์‹ ์˜ต์…˜์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์ด ํ”„๋กœ์ ํŠธ์˜ _๋น„๋ชฉํ‘œ_์ž…๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

// 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
];

์ด๊ฒƒ๋“ค์€ ์ฝ”๋“œ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ์–ด๋–ค ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋“  ํ˜•์‹์„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฉฐ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  ๋ณ„๋„๋กœ ์ง€์ •ํ•˜๊ณ  ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” "Columnize comma-first identifiers"(๋˜๋Š” ๋ฌด์—‡์ด๋“  ๊ฐ„์—)์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด โ€‹โ€‹์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. .

์—ฌ๋Ÿฌ๋ถ„์˜ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

@tgirardi ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ํ”ผ๋“œ๋ฐฑ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค :-) !!!

๋‚ด ์ƒ๊ฐ์€ ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์œผ๋กœ ๊ฐ„์ฃผ๋  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ๋ฅผ ์กฐ์ •ํ•œ ๋‹ค์Œ ๋‹ค์Œ TODO ๋ชฉ๋ก์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

1.- ์ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ
2.- Python ๋ฒ„์ „์— ๊ธฐ๋Šฅ ์ ์šฉ (๋ˆ„๊ตฐ๊ฐ€ ์ž์›ํ•˜๋ฉด ๋” ์ข‹์Šต๋‹ˆ๋‹ค! ... ๋‚˜๋Š” python์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค).
3.- ์‰ผํ‘œ ์šฐ์„  ์Šคํƒ€์ผ์˜ ๋‹ค๋ฅธ ๊ฐ€๋Šฅํ•œ ๋ณ€ํ˜•์— ๋Œ€ํ•ด ๋…ผ์˜

4์นธ ๋“ค์—ฌ์“ฐ๊ธฐ

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

๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ์†์„ฑ ์ด๋ฆ„์€ ์ •๋ ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€๋…์„ฑ์— ์ „ํ˜€ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” column-first๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ์ฃผ์„ ์ฒ˜๋ฆฌ, ์ค„ ์ œ๊ฑฐ ๋ฐ ์‚ฝ์ž…์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. 2-์ŠคํŽ˜์ด์Šค ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

์„ธ๋ฏธ ์ปฌ๋Ÿผ์€ 'y' ๋‹ค์Œ์— ์ƒˆ ๋ณ€์ˆ˜๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ ํ•œ ์ค„์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ VIM์—์„œ๋Š” '$a' ๋Œ€์‹  'o' + ', z = c',' + 'z = c'

@lewisdiamond ์„ธ๋ฏธ์ฝœ๋ก  ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ž์ฒด ์ค„์— ํฌํ•จํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋ณ€์ˆ˜๋„ ์‰ฝ๊ฒŒ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ œ๊ฑฐ, ๊ต์ฒด, ์•ž/๋’ค์— ์ค„ ์‚ฝ์ž… ๋“ฑ).

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์‹ค๋„ ์–ธ๊ธ‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1.- ๋ชจ๋“  ์ข…๋ฅ˜์˜ ์„œ์‹์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
2.- ํ•œ ๋ฒˆ์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ณต์žก์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋จผ์ € ์ด ๊ธฐ๋Šฅ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๋ฆด๋ฆฌ์Šค ์ƒํƒœ์— ๋„๋‹ฌํ•˜๊ณ  ์ผ์ • ๊ธฐ๊ฐ„ ํ…Œ์ŠคํŠธํ•œ ํ›„์— ๊ฐœ์„ ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์‰ผํ‘œ ์šฐ์„  ์ง€์›์— ๋Œ€ํ•ด +1์ด๋ฉฐ, ์‰ผํ‘œ ์šฐ์„  ์Šคํƒ€์ผ์— ๋Œ€ํ•œ ์‹ค์šฉ์ ์ธ ์ด์œ ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํƒญ์ด ์ œ๋Œ€๋กœ ์ •๋ ฌ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ตœ์ข… ๋ชฉํ‘œ๊ฐ€ ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” lewisdiamond์˜ ์˜๊ฒฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. json๋„ ์ง€์›ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ €๋Š” ๊ตฌ๋‘์  ์šฐ์„  ๋Œ€์•ˆ์„ ๋งŽ์ด ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ „์—ญ js-beautify ์ฝ”๋“œ๋ฅผ ํ•ดํ‚นํ–ˆ์Šต๋‹ˆ๋‹ค(์‚ผํ•ญ ์—ฐ์‚ฐ์ž์˜ ๊ฒฝ์šฐ ํ•„์ˆ˜).

์ด๊ฒƒ์„ +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๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์–ด๋–ค ํ–‰๋™์„ ๊ธฐ๋Œ€ํ•˜๋Š”์ง€ ๋…ผ์˜ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ <Output>.previous_line๊ณผ flags.previous_text๊ฐ€ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ฒ˜์Œ์—๋Š” ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ–ˆ๋Š”์ง€ ์ดํ•ด๊ฐ€ ๊ฐ‘๋‹ˆ๋‹ค.

๊ทธ ์™ธ์— ๊ตฌํ˜„ ๊ฐ„์˜ ์ฃผ์š” ์ฐจ์ด์ ์€ ์ด์ „ ํ–‰์„ ์ˆ˜์ •ํ•˜๊ธฐ๋กœ ์„ ํƒํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ด ๋” ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— "๋Œ์•„๊ฐ€์„œ ํŽธ์ง‘"ํ•˜์ง€ ์•Š์œผ๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹น์‹ ์˜ ๋ฐฉ๋ฒ•์€ ๋‚˜๋ณด๋‹ค ๋” ๊ฐ„๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋Œ“๊ธ€๋กœ ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ๋Š” ๋˜ํ•œ ์ด์ „ ํ† ํฐ์„ ํŽธ์ง‘ํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์†”์งํžˆ ๋งํ•ด์„œ ๊ท€ํ•˜์˜ ์ƒ๊ฐ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ํ† ํฐ์ด ๋‹ค์Œ ํ† ํฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์•ž์˜ ๊ณต๋ฐฑ๋งŒ ๋‹ด๋‹นํ•œ๋‹ค๋ฉด ์ด ํ”„๋กœ๊ทธ๋žจ์€ ๋””๋ฒ„๊ทธํ•˜๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์šธ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘: ๋‚ด ์‹ค์ˆ˜ - <Output>.previous_line ๋ฐ flags.previous_text๊ฐ€ ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์•ž์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‰ผํ‘œ๋กœ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ„์น˜์— ๋Œ€ํ•œ ํ—ค์–ด๋ณผ์„ ๋ณด์•˜๊ณ , ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ถœ๋ ฅ์„ ๋‹ค์‹œ ํŠธ๋ฆฌ๋ฐํ•˜๋Š” ๊ณณ์ด ์ด๋ฏธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์กฐ๊ธˆ ๋‹จ์ˆœํ•œ ๊ฒƒ์„ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๊ณ , ๊ฐ„๋‹จํ•œ ๋™์ž‘์„ ํ™•์ธํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ›์€ ๋‹ค์Œ ๋‚˜์ค‘์— ํŠœ๋‹ ๋ฐ ๋ฆฌํŒฉํ† ๋ง์— ๋Œ€ํ•ด ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์–ธ๊ธ‰ํ•œ ์˜ˆ:

var a,
    b;

๋‚˜์ค‘์— ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํŠœ๋‹์˜ ์˜ˆ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž˜ ๋“ค๋ฆฐ๋‹ค. ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฐพ์•„์ฃผ์…”์„œ ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์€ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰