यह टूल क्या करता है
Ruby फ़ॉर्मैटर Ruby कोड को एक जैसे इंडेंटेशन और स्पेसिंग के साथ फिर से लिखता है। कोई स्क्रिप्ट, Rails मॉडल या Rakefile पेस्ट करें और वह दो-स्पेस इंडेंटेशन, हर लाइन पर एक स्टेटमेंट, ऑपरेटर के आसपास और ब्रेसेस के अंदर स्पेस, और लाइन की चौड़ाई में फ़िट होने के लिए तोड़ी गई लंबी method chains के साथ वापस आता है।
यह WebAssembly में कंपाइल किए गए असली Ruby इंटरप्रेटर पर चलने वाला Syntax Tree इस्तेमाल करता है। चूँकि parser ख़ुद Ruby का है, endless methods, pattern matching और keyword arguments जैसा आधुनिक सिंटैक्स ठीक वैसे ही समझा जाता है जैसे Ruby उसे समझती है।
इसे कैसे इस्तेमाल करें
- Ruby कोड पेस्ट करें, या
.rbफ़ाइल खोलें। - पहले नतीजे का इंतज़ार करें। इंटरप्रेटर बैकग्राउंड में एक बार डाउनलोड होता है।
- लाइन की चौड़ाई चुनें। इससे लंबी लाइनें method calls, arguments या hash entries पर तोड़ी जाती हैं।
- फ़ॉर्मैट किया हुआ कोड कॉपी या डाउनलोड करें।
अगर कोड पार्स नहीं होता, तो टूल Ruby का सिंटैक्स एरर दिखाता है, जैसे syntax error, unexpected 'end', ताकि आप छूटा हुआ हिस्सा ढूँढ सकें।
उदाहरण
उदाहरण एक छोटा shopping cart मॉड्यूल है जो लेआउट की परवाह किए बिना लिखा गया है: बिना इंडेंट की class body, semicolons के साथ एक लाइन में लिखा initialize, बिना स्पेस के hashes और > के आसपास बिना स्पेस का ternary। फ़ॉर्मैट करने के बाद मॉड्यूल और क्लास इंडेंट हो जाते हैं, initialize का हर स्टेटमेंट अपनी लाइन पर आ जाता है, hash literals { name: name, price: price, qty: qty } बन जाते हैं और ternary cart.total > 10 ? "big order" : "small order" के रूप में पढ़ा जाता है।
यह क्या नहीं बदलता
फ़ॉर्मैटर सिर्फ़ लेआउट बदलता है। यह वेरिएबल का नाम नहीं बदलता, hash rockets को नए सिंटैक्स में नहीं बदलता, और सिंगल व डबल कोट्स के बीच स्विच नहीं करता। कमेंट्स बने रहते हैं। अगर आपको ये स्टाइल सुधार चाहिए, तो फ़ॉर्मैट करने के बाद अपने प्रोजेक्ट में RuboCop का autocorrect चलाएँ।
सुझाव
- अपने प्रोजेक्ट की
.rubocop.yml(Layout/LineLength) वाली ही लाइन की चौड़ाई इस्तेमाल करें ताकि फ़ॉर्मैट किया कोड आपका linter पास करे। - छूटा हुआ
endपकड़ने का फ़ॉर्मैटिंग एक तेज़ तरीका है: Ruby बताती है कि वह कहाँ अटकी, आमतौर पर उस ब्लॉक के ठीक बाद जो बंद नहीं हुआ था।
अक्सर पूछे जाने वाले सवाल
› यह कौन-सा फ़ॉर्मैटर इस्तेमाल करता है?
Syntax Tree, जो आधिकारिक Prettier Ruby प्लगइन के पीछे का Ruby फ़ॉर्मैटर है। यह CRuby पर चलता है, जो WebAssembly में कंपाइल किया गया स्टैंडर्ड Ruby इंटरप्रेटर है, इसलिए यह आपके कोड को ठीक वैसे ही पार्स करता है जैसे Ruby करती है।
› पहली बार चलने में देर क्यों लगती है?
पहली बार कुछ फ़ॉर्मैट करने पर पेज Ruby इंटरप्रेटर और फ़ॉर्मैटर डाउनलोड करता है, लगभग 13 MB, और उन्हें बैकग्राउंड worker में शुरू करता है ताकि पेज responsive रहे। उसके बाद फ़ॉर्मैटिंग में एक सेकंड से भी कम समय लगता है।
› क्या यह RuboCop की स्टाइल फ़ॉलो करता है?
ज़्यादातर हाँ। Syntax Tree दो-स्पेस इंडेंटेशन, hash ब्रेसेस के अंदर और ऑपरेटर के आसपास स्पेस, और मेथड के बीच एक खाली लाइन देता है, जो RuboCop के डिफ़ॉल्ट लेआउट नियमों से मेल खाता है। यह कोट स्टाइल नहीं बदलता और `rubocop -a` की तरह कोड को फिर से नहीं लिखता।
› क्या मेरा कोड अपलोड होता है?
नहीं। सब कुछ आपके ब्राउज़र में चलता है और किसी सर्वर पर कुछ नहीं भेजा जाता।