सैस (स्टाइल शीट लैंग्वेज)

सैस एक प्रीप्रोसेसर स्क्रिप्टिंग लैंग्वेज है और सिंटैक्स की दृष्टि से अद्भुत स्टाइल शीट का संक्षिप्त रूप है, जिसे कैस्केडिंग स्टाइल शीट्स (सीएसएस) में सैस स्क्रिप्टिंग लैंग्वेज के रूप में व्याख्या की गई है और इस प्रकार इसे संकलित किया है।

सैस में दो सिंटेक्स प्रोग्रामिंग लैंग्वेज के रूप में सम्मलित हैं और इस प्रकार मूल सिंटैक्स जिसे इंडेंटेड सिंटैक्स कहा जाता है और हमल  के समान सिंटैक्स का उपयोग करता है। यह नियमों को भिन्न करने के लिए ब्लॉक (प्रोग्रामिंग) और  नई पंक्ति  करैक्टर  को भिन्न करने के लिए इंडेंट शैली का उपयोग करता है। और इस प्रकार नया सिंटैक्स, एससीएसएस (Sassy CSS), CSS की तरह ब्लॉक फ़ॉर्मेटिंग का उपयोग करता है। यह एक ब्लॉक के भीतर नियमों को भिन्न करने के लिए कोड ब्लॉक और सेमीकॉलन को दर्शाने के लिए ब्रेसिज़ का उपयोग करता है। इंडेंटेड सिंटैक्स और एससीएसएस फाइलों को पारंपरिक रूप से क्रमशः फ़ाइल नाम एक्सटेंशन .सैस और .एससीएसएस के रूप में दिया जाता है।

CSS#CSS 3 में चयनकर्ताओं और छद्म-चयनकर्ताओं की एक श्रृंखला शामिल है जो समूह नियम उन पर लागू होते हैं। सैस (दोनों सिंटैक्स के बड़े संदर्भ में) अधिक पारंपरिक प्रोग्रामिंग लैंग्वेज ओं, विशेष रूप से ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग  | ऑब्जेक्ट-ओरिएंटेड लैंग्वेज ओं में उपलब्ध कई तंत्र प्रदान करके सीएसएस का विस्तार करता है, लेकिन वे स्वयं CSS3 के लिए उपलब्ध नहीं हैं। जब SassScript की व्याख्या की जाती है, तो यह सैस फ़ाइल द्वारा परिभाषित विभिन्न चयनकर्ताओं के लिए CSS नियमों के ब्लॉक बनाता है। सैस दुभाषिया SassScript का CSS में अनुवाद करता है। वैकल्पिक रूप से, सैस .सैस या .scss फ़ाइल की निगरानी कर सकता है और जब भी .सैस या .scss फ़ाइल सहेजी जाती है तो इसे आउटपुट .css फ़ाइल में अनुवादित कर सकता है। इंडेंटेड सिंटैक्स एक धातुलैंग्वेज  है। एससीएसएस एक धातुलैंग्वेज #नेस्टेड और सीएसएस का एक सुपरसेट है, क्योंकि वैध सीएसएस प्रोग्रामिंग लैंग्वेज ओं के समान शब्दार्थ के साथ वैध एससीएसएस है।

SassScript निम्नलिखित तंत्र प्रदान करता है: चर (प्रोग्रामिंग), नेस्टिंग (कंप्यूटिंग)#प्रोग्रामिंग में,  मिश्रण , और चयनकर्ता इनहेरिटेंस (कंप्यूटर विज्ञान)।

इतिहास
सैस को शुरुआत में हैम्पटन कैटलिन द्वारा डिजाइन किया गया था और नेटली वेइज़ेनबाम द्वारा विकसित किया गया था। इसके प्रारंभिक संस्करणों के बाद, वेइज़ेनबाम और क्रिस एपस्टीन ने सैस को SassScript के साथ विस्तारित करना जारी रखा है, जो सैस फ़ाइलों में उपयोग की जाने वाली एक स्क्रिप्टिंग लैंग्वेज है।

प्रमुख कार्यान्वयन
SassScript को कई लैंग्वेज ओं में लागू किया गया था, उल्लेखनीय कार्यान्वयन हैं:


 * आधिकारिक ओपन-सोर्स डार्ट (प्रोग्रामिंग लैंग्वेज ) कार्यान्वयन। * एनपीएम (सॉफ्टवेयर) पर आधिकारिक सैस नोड.जेएस मॉड्यूल, जो शुद्ध जावास्क्रिप्ट के लिए संकलित डार्ट सैस है।
 * आधिकारिक सैस-एम्बेडेड नोड मॉड्यूल जो मूल डार्ट निष्पादन योग्य के चारों ओर एक जावास्क्रिप्ट आवरण है।
 * मूल खुला स्रोत सॉफ्टवेयर|ओपन-सोर्स रूबी (प्रोग्रामिंग लैंग्वेज ) कार्यान्वयन 2006 में बनाया गया, अनुरक्षकों की कमी के कारण पदावनत हो गया और मार्च 2019 में जीवन के अंत तक पहुंच गया।
 * libSass, आधिकारिक ओपन-सोर्स C++ कार्यान्वयन, अक्टूबर 2020 में बंद कर दिया गया।
 * एनपीएम (सॉफ्टवेयर) पर अप्रचलित नोड-एसएएस नोड मॉड्यूल, अप्रचलित लिबसस पर आधारित।
 * JSass, एक अनौपचारिक जावा (प्रोग्रामिंग लैंग्वेज ) कार्यान्वयन, बहिष्कृत libसैस पर आधारित।
 * pहमल p, PHP में एक अनौपचारिक Sass/SCSS कार्यान्वयन। * वादिन में सैस का जावा कार्यान्वयन है। *फायरबग (वेब ​​डेवलपमेंट)फ़ायरबग (वेब ​​विकास) के लिए फ़ायरफ़ॉक्स एक्सयूएल (लीगेसी) ऐड-ऑन (मोज़िला)। तब से फ़ायरफ़ॉक्स में एकीकृत डेवलपर टूल के पक्ष में इसे हटा दिया गया है। फ़ायरफ़ॉक्स 57 द्वारा एक्सयूएल एक्सटेंशन के लिए समर्थन बंद करने के बाद से इसने काम करना बंद कर दिया।

चर
सैस वेरिएबल्स को परिभाषित करने की अनुमति देता है। वेरिएबल डॉलर चिह्न से शुरू होते हैं. वेरिएबल असाइनमेंट (कंप्यूटर प्रोग्रामिंग) एक कोलन (विराम चिह्न) के साथ किया जाता है.

SassScript चार डेटा प्रकारों का समर्थन करता है:


 * संख्याएँ (इकाइयों सहित)
 * स्ट्रिंग (कंप्यूटर विज्ञान) (उद्धरण के साथ या बिना)
 * रंग (नाम, या नाम)
 * बूलियन डेटा प्रकार

वेरिएबल पैरामीटर (कंप्यूटर प्रोग्रामिंग) हो सकते हैं या कई उपलब्ध सबरूटीन में से किसी एक के परिणाम हो सकते हैं। अनुवाद के दौरान, चर के मान आउटपुट सीएसएस दस्तावेज़ में डाले जाते हैं।

घोंसला बनाना
सीएसएस तार्किक नेस्टिंग का समर्थन करता है, लेकिन कोड ब्लॉक स्वयं नेस्ट नहीं होते हैं। सैस नेस्टेड कोड को एक दूसरे के भीतर डालने की अनुमति देता है।

नाम स्थान नेस्टिंग और पैरेंट संदर्भों सहित अधिक जटिल प्रकार के नेस्टिंग पर सैस दस्तावेज़ में चर्चा की गई है।

लूप्स
सैस वेरिएबल्स का उपयोग करके पुनरावृत्ति करने की अनुमति देता है, और , जिसका उपयोग समान वर्गों या आईडी वाले तत्वों पर विभिन्न शैलियों को लागू करने के लिए किया जा सकता है।

तर्क
मिक्सिन्स पैरामीटर (कंप्यूटर प्रोग्रामिंग) का भी समर्थन करते हैं।

चयनकर्ता विरासत
जबकि CSS3 दस्तावेज़ ऑब्जेक्ट मॉडल (DOM) पदानुक्रम का समर्थन करता है, यह चयनकर्ता विरासत की अनुमति नहीं देता है। सैस में, कोड ब्लॉक के अंदर एक लाइन डालकर इनहेरिटेंस हासिल किया जाता है जो @extend कीवर्ड का उपयोग करता है और दूसरे चयनकर्ता को संदर्भित करता है। विस्तारित चयनकर्ता की विशेषताएँ कॉलिंग चयनकर्ता पर लागू होती हैं।

सैस एकाधिक वंशानुक्रम का समर्थन करता है।

libSass
2012 HTML5 डेवलपर कॉन्फ्रेंस में, सैस के निर्माता, हैम्पटन कैटलिन ने libसैस के संस्करण 1.0 की घोषणा की, जो कैटलिन, आरोन लेउंग और Moovweb की इंजीनियरिंग टीम द्वारा विकसित सैस का एक खुला स्रोत C++ कार्यान्वयन है। वर्तमान सैस अनुरक्षक क्रिस एपस्टीन ने भी योगदान देने का इरादा व्यक्त किया है। कैटलिन के अनुसार, libसैस को किसी भी चीज़ में ड्रॉप[पेड] किया जा सकता है और इसमें सैस होगा...आप इसे आज ही फ़ायरफ़ॉक्स में छोड़ सकते हैं और फ़ायरफ़ॉक्स बना सकते हैं और यह वहां संकलित हो जाएगा। यह सुनिश्चित करने के लिए कि यह संभव होगा, हमने अपना खुद का पार्सर शुरू से लिखा। libसैस के डिज़ाइन लक्ष्य हैं:
 * प्रदर्शन - डेवलपर्स ने सैस के रूबी कार्यान्वयन की तुलना में गति में 10 गुना वृद्धि की सूचना दी है।
 * आसान एकीकरण – libSass, सैस को अधिक सॉफ़्टवेयर में एकीकृत करना आसान बनाता है। libसैस से पहले, सैस को किसी लैंग्वेज या सॉफ़्टवेयर उत्पाद में मजबूती से एकीकृत करने के लिए संपूर्ण रूबी दुभाषिया को बंडल करना आवश्यक था। इसके विपरीत, libसैस शून्य बाहरी निर्भरता और C-जैसे इंटरफ़ेस के साथ एक स्थिर रूप से लिंक करने योग्य लाइब्रेरी है, जिससे सैस को सीधे अन्य प्रोग्रामिंग लैंग्वेज ओं और टूल में लपेटना आसान हो जाता है। उदाहरण के लिए, ओपन सोर्स libसैस बाइंडिंग अब Node.js, Go (प्रोग्रामिंग लैंग्वेज ), और रूबी प्रोग्रामिंग लैंग्वेज  के लिए मौजूद है। * अनुकूलता - libसैस का लक्ष्य सैस के आधिकारिक रूबी कार्यान्वयन के साथ पूर्ण अनुकूलता है। यह लक्ष्य libसैस 3.3 पर प्राप्त किया गया है।

यह भी देखें

 * कम (स्टाइलशीट लैंग्वेज )
 * स्टाइलस (स्टाइलशीट लैंग्वेज )