์ฐ๋ฆฌ๊ฐ 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',
@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;
๋์ค์ ๋ ผ์ํ ์ ์๋ ํ๋์ ์๊ฐ ๋ ๊ฒ์ ๋๋ค.
์ ๋ค๋ฆฐ๋ค. ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐพ์์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค. ์ถ๊ฐํ๊ณ ์ถ์ ํ ์คํธ๊ฐ ์๋ค๋ฉด ํฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.