# FUZZY_MAP नियम गाइड ## नियम प्रारूप __CODE_ब्लॉक_0__ | स्थिति | नाम | विवरण | |---|---|---| | 1 | प्रतिस्थापन | नियम के बाद आउटपुट टेक्स्ट | से मेल खाता है | 2 | पैटर्न | | के विरुद्ध मिलान करने के लिए रेगेक्स या फ़ज़ी स्ट्रिंग | 3 | दहलीज | रेगेक्स नियमों के लिए: अनदेखा किया गया। अस्पष्ट नियमों के लिए: न्यूनतम मैच स्कोर (0-100) | | 4 | विकल्प | वैकल्पिक शब्दकोश (नीचे "विकल्प संदर्भ" देखें)। डिफ़ॉल्ट के लिए `0` का प्रयोग करें या हटा दें | ### फ़ाइल-आधारित प्रतिस्थापन यदि `प्रतिस्थापन` `FILE4REPLACEMENT_ALLOWED_PREFIXES` में कॉन्फ़िगर किए गए उपसर्ग से शुरू होता है (डिफ़ॉल्ट: `-` या `.`), ऑरा इसे एक फ़ाइल नाम के रूप में मानता है और इसकी सामग्री को देखता है शाब्दिक स्ट्रिंग का उपयोग करने के बजाय प्लगइन की निर्देशिका। यह रहस्य रखता है (पासवर्ड, एपीआई कुंजियाँ) स्रोत कोड से बाहर। विवरण के लिए [File_Based_Replacement.md](../../Feature_Spotlight/Secure_Private_Maps/File_Based_Replacement-hilang.md) देखें। ### कच्चा प्रतिस्थापन डिफ़ॉल्ट रूप से (`गलत`), प्रतिस्थापन स्ट्रिंग्स को पायथन के `re.sub()` द्वारा संसाधित किया जाता है, जो कैप्चर किए गए समूहों को सम्मिलित करने के लिए `\1` या `\2` जैसे रेगेक्स बैकरेफरेंस का उपयोग करने का समर्थन करता है (उदाहरण के लिए: `(r'\1', r'(\d)\s+(?=\d)', 95)`)। यदि आपका प्रतिस्थापन एक मल्टीलाइन स्ट्रिंग है या इसमें अनछुए बैकस्लैश (जैसे कोड टेम्प्लेट या पथ) शामिल हैं और इसे बिल्कुल वैसे ही संरक्षित किया जाना चाहिए, तो विकल्प शब्दकोश में `'raw_replacement': True` को सक्षम करें: __CODE_ब्लॉक_1__ ### उपलब्ध उपयोगकर्ता-कॉन्फ़िगर करने योग्य विकल्प: * **`कमांड_फ़्लैग`** (पूर्णांक): पैटर्न संकलन के दौरान उपयोग किए जाने वाले रेगेक्स फ़्लैग। *उदाहरण:* `{'command_flags': re.IGNORECASE}` * **`कच्चा_प्रतिस्थापन`** (बूलियन): जब `सही` होता है, तो प्रतिस्थापन पाठ को शुद्ध स्ट्रिंग शाब्दिक के रूप में माना जाता है और पायथन के `re.sub` बैकस्लैश पार्सिंग द्वारा बायपास किया जाता है। अनएस्केप्ड बैकस्लैश (`\`) के साथ मल्टीलाइन प्रॉम्प्ट या स्ट्रिंग के लिए महत्वपूर्ण। *उदाहरण:* `{'कच्चा_प्रतिस्थापन': सत्य}` * **`कैश`** (बूलियन): AURA परिणाम कैश को टॉगल करता है। उन नियमों के लिए `गलत` पर सेट करें जो गतिशील आउटपुट उत्पन्न करते हैं (उदाहरण के लिए, वर्तमान समय, यादृच्छिक चुटकुले) ताकि यह सुनिश्चित किया जा सके कि उनका हर मैच पर नए सिरे से मूल्यांकन किया जाता है। *उदाहरण:* `{'कैश': गलत}` * **`स्किप_लिस्ट`** (स्ट्रिंग्स की सूची): इस नियम से मेल खाने पर पोस्ट-प्रोसेसिंग पाइपलाइन मॉड्यूल को छोड़ने के लिए निर्दिष्ट करता है। *उदाहरण:* `{'स्किप_लिस्ट': ['लैंग्वेजटूल']}` (व्याकरण जांच छोड़ देता है) * **`only_in_windows`** (रेगेक्स स्ट्रिंग्स की सूची): नियम को केवल ट्रिगर करने के लिए प्रतिबंधित करता है यदि सक्रिय विंडो शीर्षक निर्दिष्ट पैटर्न में से एक से मेल खाता है। *उदाहरण:* `{'only_in_windows': [r'^Mozilla Firefox$', r'Chrome']}` * **`exclude_windows`** (रेगेक्स स्ट्रिंग्स की सूची): यदि सक्रिय विंडो शीर्षक निर्दिष्ट पैटर्न में से किसी एक से मेल खाता है तो नियम को ट्रिगर होने से रोकता है। *उदाहरण:* `{'exclude_windows': [r'Terminal', r'Claude']}` * **`window_ignore_case`** (बूलियन): नियंत्रित करता है कि विंडो मिलान (`only_in_windows` / `exclude_windows`) का मूल्यांकन केस-असंवेदनशील (`True`) या केस-संवेदनशील (`गलत`) किया जाता है। यदि छोड़ दिया जाता है, तो `config/settings.py` में वैश्विक सेटिंग `LOWERCASE_WINDOW_TITLES` पर वापस आ जाता है। *उदाहरण:* `{'window_ignore_case': गलत}` * **`on_match_exec`** (पथ/स्ट्रिंग ऑब्जेक्ट की सूची): स्क्रिप्ट/प्लगइन के लिए पथ जिन्हें इस नियम से मेल खाने पर निष्पादित किया जाना चाहिए (कैच-ऑल और फ़ॉलबैक नियमों द्वारा भारी रूप से उपयोग किया जाता है)। *उदाहरण:* `{'on_match_exec': [SL5NET_AURA_PROJECT_ROOT / 'स्क्रिप्ट' / 'custom_action.py']}` ## पाइपलाइन तर्क - नियमों को **ऊपर से नीचे** तक संसाधित किया जाता है ## पाइपलाइन तर्क - नियमों को **ऊपर से नीचे** तक संसाधित किया जाता है - **सभी** मिलान नियम लागू होते हैं (संचयी) - एक **फुलमैच** (`^...$`) पाइपलाइन को तुरंत रोक देता है - पहले के नियमों को बाद के नियमों की तुलना में प्राथमिकता दी जाती है ## सामान्य पैटर्न ### एक शब्द का मिलान करें (शब्द सीमा) __CODE_ब्लॉक_2__ ### अनेक प्रकारों का मिलान करें __CODE_ब्लॉक_3__ ### फुलमैच - पाइपलाइन बंद कर देता है __CODE_ब्लॉक_4__ ⚠️ यह **हर चीज़** से मेल खाता है। पाइपलाइन यहीं रुकती है. पहले के नियमों को अब भी प्राथमिकता है. ### इनपुट की शुरुआत का मिलान करें __कोड_ब्लॉक_5__ ### सटीक वाक्यांश का मिलान करें __कोड_ब्लॉक_6__ ## फ़ाइल स्थान | फ़ाइल | चरण | विवरण | |---|---|---| | `FUZZY_MAP_pre.py` | प्री-लैंग्वेजटूल | वर्तनी जांच से पहले लागू | | `FUZZY_MAP.py` | पोस्ट-लैंग्वेजटूल | वर्तनी जाँच के बाद लागू किया गया | | `PUNCTUATION_MAP.py` | प्री-लैंग्वेजटूल | विराम चिह्न नियम | ## सुझावों - **सामान्य** नियमों से पहले **विशिष्ट** नियम रखें - `^...$` फुलमैच का उपयोग केवल तभी करें जब आप आगे की सभी प्रक्रिया को रोकना चाहते हों - `FUZZY_MAP_pre.py` वर्तनी जांच से पहले सुधार के लिए आदर्श है - ऑरा कंसोल में `आपका परीक्षण इनपुट` के साथ परीक्षण नियम - बैकअप स्वचालित रूप से `.peter_backup` के रूप में बनाए जाते हैं ## उदाहरण __CODE_ब्लॉक_7__ ## आपका पहला नियम - कदम दर कदम 1. `config/maps/plugins/sandbox/de-DE/FUZZY_MAP_pre.py` खोलें 2. अपना नियम `FUZZY_MAP_pre = [...]` के अंदर जोड़ें 3. सहेजें - ऑरा स्वचालित रूप से पुनः लोड होता है, पुनरारंभ की आवश्यकता नहीं है 4. अपने ट्रिगर वाक्यांश को निर्देशित करें और इसे फायर होते हुए देखें ## अनुशंसित फ़ाइल संरचना अपने नियम **पहले** लंबे टिप्पणी ब्लॉक में रखें: __CODE_ब्लॉक_8__ **क्यों?** ऑरा का ऑटो-फ़िक्स किसी फ़ाइल का केवल पहला ~1KB स्कैन करता है। यदि आपके नियम लंबे हेडर के बाद दिखाई देते हैं, तो ऑटो-फ़िक्स उन्हें ढूंढ या सुधार नहीं सकता है। पंक्ति 1 पर पथ टिप्पणी की भी अनुशंसा की जाती है - यह मनुष्यों को फ़ाइल को शीघ्रता से पहचानने में मदद करती है।