ٹیکسٹ کیس کنورژن کیا ہے؟
ٹیکسٹ کیس کنورژن ایک ان پٹ سٹرنگ لیتا ہے اور انہی الفاظ کو مختلف letter-case کنونشن میں رینڈر کر کے دیتا ہے۔ سب سے عام اہداف camelCase اور PascalCase ہیں (زیادہ تر curly-brace زبانوں میں identifiers کے لیے)، snake_case اور CONSTANT_CASE (Python، Ruby، Rust، C macros)، kebab-case (URLs، CSS کلاس نام، HTML attributes، npm پیکیج نام)، dot.case (configuration keys، JavaScript object paths)، path/case (filesystem-style identifiers)، Title Case اور Sentence case (سرخیاں اور نثر)، اور مکمل lower case اور UPPER CASE۔ یہ کنورٹر آپ کے ان پٹ میں قدرتی لفظی حدود کا پتہ لگاتا ہے — whitespace، hyphens، underscores، dots، slashes اور وہ lowercase→uppercase ٹرانزیشنز جو helloWorld-طرز identifiers کو نشان زد کرتی ہیں — اور انہیں اس separator اور capitalisation پیٹرن کے ساتھ دوبارہ جوڑتا ہے جو ہر target case کو درکار ہوتا ہے۔
کیس کنورژن کیسے کام کرتی ہے؟
آپ کا ان پٹ ایک چھوٹے vanilla JavaScript ٹوکنائزر اور گیارہ کیس فارمیٹرز کے ذریعے مکمل طور پر آپ کے براؤزر میں پراسیس ہوتا ہے۔ اعلیٰ سطحی مراحل یہ ہیں:
- آپ کا ان پٹ textarea سے لفظی طور پر پڑھا جاتا ہے — جو بائٹ آپ نے پیسٹ کیا وہ مقامی میموری میں رہتا ہے۔
- ایک ٹوکنائزر ان پٹ کو whitespace، underscore، hyphen، dot اور slash پر تقسیم کرتا ہے، پھر ہر ٹکڑے کو lowercase→uppercase حدود پر مزید تقسیم کرتا ہے (تاکہ
helloWorld["hello", "World"]بن جائے) اور letter↔digit حدود پر (تاکہv2API["v", "2", "API"]بن جائے)۔ - خالی ٹوکنز فلٹر کیے جاتے ہیں اور بقیہ ٹوکنز کو
String.prototype.toLocaleLowerCaseسے lowercase کیا جاتا ہے تاکہ ترکی، جرمن اور دیگر locales میں Unicode حروف صحیح طور پر محفوظ رہیں۔ - پھر گیارہ فارمیٹرز ٹوکنز کو ہر target case میں جوڑتے ہیں — camelCase، PascalCase، snake_case، CONSTANT_CASE، kebab-case، dot.case، path/case، Title Case (ایک small-words لسٹ کے ساتھ تاکہ
and،the،ofوغیرہ پہلے یا آخری لفظ کے سوا lowercase رہیں)، Sentence case، مکمل lower case، اور مکمل UPPER CASE۔ - ہر کیس کے لیے نتیجہ گرڈ میں ایک قطار میں آؤٹ پٹ لکھا جاتا ہے؛ ہر قطار کا اپنا کاپی بٹن ہوتا ہے جو asynchronous Clipboard API استعمال کرتا ہے اور پرانے براؤزرز کے لیے synchronous
document.execCommand('copy')fallback کے ساتھ آتا ہے۔
کیس کنورٹر کیوں استعمال کریں؟
- Identifiers کی ری فیکٹرنگ: JavaScript متغیر
user_idکوuserId، Python فنکشنhelloWorldکوhello_world، یا Rust constantmaxBufferکوMAX_BUFFERمیں ایک ایک حرف ہاتھ سے بدلے بغیر نام تبدیل کریں۔ - Configuration keys تبدیل کریں: ایک Python سروس کے لیے camelCase keys سے بھرا JSON config snake_case YAML میں پلٹیں، یا Helm chart کے لیے kebab-case میں — ایک ہی پیسٹ میں۔
- سرخیاں لکھیں: ایک ڈرافٹ سرخی پیسٹ کریں اور Title Case فارم (Chicago Manual of Style کی small-words استثنا کے ساتھ) Sentence case فارم (AP Stylebook) کے ساتھ پڑھیں — جو بھی آپ کا اشاعت ادارہ استعمال کرے چن لیں۔
- URL slugs بنائیں: بلاگ پوسٹ کا عنوان پیسٹ کریں اور kebab-case فارم سیدھا اپنے CMS کے slug فیلڈ میں کاپی کریں — ٹوکنائزر punctuation اور multi-word phrases کو بغیر اضافی separators کے سنبھالتا ہے۔
کیس کنورژن کے عام استعمال کیا ہیں؟
letter-case کنونشنز کے درمیان سوئچنگ سوفٹ ویئر انجینئرنگ، content authoring اور data engineering میں ہر جگہ نظر آتی ہے:
- Code refactoring: اسٹائل گائیڈ تبدیل ہونے پر کوڈ بیس میں identifiers کا نام بدلیں (مثلاً backend rewrite کے دوران JavaScript camelCase → Python snake_case) بغیر typos کے۔
- API payload reshaping: Ruby on Rails یا Django backend کو فیڈ کرنے سے پہلے camelCase JSON keys کو snake_case میں تبدیل کریں، یا CSS-in-JS کلاس نام کے لیے kebab-case میں۔
- سرخی اور slug authoring: ایک ہی سورس سرخی سے ایک قدم میں Title Case پیج ٹائٹلز، Sentence case meta descriptions، اور kebab-case URL slugs پیدا کریں۔
کیس کنورژن کی مثال کیسی نظر آتی ہے؟
ان پٹ میں Hello World API پیسٹ کریں۔ نتیجہ گرڈ بیک وقت گیارہ قطاریں رینڈر کرتا ہے: helloWorldApi (camelCase)، HelloWorldApi (PascalCase)، hello_world_api (snake_case)، HELLO_WORLD_API (CONSTANT_CASE)، hello-world-api (kebab-case)، hello.world.api (dot.case)، hello/world/api (path/case)، Hello World Api (Title Case)، Hello world api (Sentence case)، hello world api (lower case)، اور HELLO WORLD API (UPPER CASE)۔ وہی ان پٹ helloWorldAPI کے طور پر پیسٹ ہو تو وہ بھی انہی تین الفاظ میں tokenise ہوتا ہے — lowercase→uppercase boundary detector اس شکل کو بھی سنبھالتا ہے۔
کیا یہ میرے براؤزر میں چلتا ہے؟
جی ہاں۔ ٹوکنائزر اور گیارہ کیس فارمیٹرز تقریباً 120 سطر vanilla JavaScript ہیں جو براؤزر ٹیب کے اندر چلتے ہیں۔ کچھ بھی اپلوڈ نہیں ہوتا، کوئی service worker آپ کے ان پٹ کو پراکسی نہیں کرتا، اور صفحہ convert مرحلے کے لیے صفر نیٹ ورک ریکوئسٹس کرتا ہے۔ صرف باہر جانے والی ٹریفک معیاری صفحہ لوڈ assets (CSS، فونٹس، analytics) ہے — آپ کا متن Ultim8Soft تک کبھی نہیں پہنچتا۔
متغیر کے ناموں کے لیے کون سی کیس فارمیٹ استعمال کروں؟
یہ زبان اور ٹیم کے اسٹائل گائیڈ پر منحصر ہے۔ JavaScript اور TypeScript کوڈ بیسز بھاری اکثریت میں camelCase متغیرات اور فنکشنز کے لیے، PascalCase کلاسز اور React components کے لیے، اور CONSTANT_CASE environment-variable نام اور module-level constants کے لیے استعمال کرتے ہیں — Google JavaScript style guide اور Airbnb style guide دونوں ان انتخابوں کو طے کرتے ہیں۔ Python (PEP 8)، Ruby اور Rust متغیرات اور فنکشنز کے لیے snake_case، کلاسز کے لیے PascalCase، اور module-level constants کے لیے CONSTANT_CASE کو ترجیح دیتے ہیں۔ C اور C++ کوڈ بیسز (Linux kernel، LLVM) فنکشنز کے لیے snake_case اور preprocessor macros کے لیے CONSTANT_CASE پر جھکتے ہیں۔ شک ہو تو اپنی ٹیم کا linter یا formatter چلائیں — وہ بتائے گا کہ کون سا کنونشن نافذ ہے۔
ان پٹ کیسے tokenise ہوتا ہے؟
ٹوکنائزر سب سے پہلے ان پٹ کو whitespace، underscore (_)، hyphen (-)، dot (.) یا slash (/) کے کسی بھی run پر تقسیم کرتا ہے۔ ہر نتیجہ خیز ٹکڑے کو پھر lowercase→uppercase حدود پر تقسیم کیا جاتا ہے (تاکہ helloWorld ["hello", "World"] بن جائے) اور letter↔digit حدود پر (تاکہ v2API ["v", "2", "API"] بن جائے)۔ خالی ٹوکنز فلٹر ہو جاتے ہیں، اور بقیہ ٹوکنز String.prototype.toLocaleLowerCase سے lowercase ہوتے ہیں۔ پھر فارمیٹرز ہر target case کو درکار separator کے ساتھ ٹوکنز کو دوبارہ capitalise اور دوبارہ join کرتے ہیں۔ حکمت عملی چھ عام identifier شکلوں کو out of the box سنبھالتی ہے — camelCase، PascalCase، snake_case، kebab-case، CONSTANT_CASE، اور سادہ space-separated prose۔
Unicode / non-ASCII حروف کا کیا ہوتا ہے؟
Unicode حروف round trip سے بچ کر نکلتے ہیں۔ ٹوکنائزر String.prototype.toLocaleLowerCase اور toLocaleUpperCase استعمال کرتا ہے، جو locale-specific کیسنگ قواعد کا احترام کرتے ہیں — ترکی نقطہ والے بمقابلہ بے نقطہ i، جرمن ß اپر کیسنگ SS میں، فرانسیسی اور ہسپانوی میں accented Latin حروف، وغیرہ۔ غیر حرفی حروف جو separator سیٹ (whitespace، _، -، .، /) میں نہیں ہیں — مثلاً ہندسے، accented حروف، یا CJK حروف — اس ٹوکن کے اندر رہتے ہیں جس میں وہ ظاہر ہوتے ہیں اور کیس فارمیٹرز انہیں من و عن دوبارہ اخراج کرتے ہیں۔ اس کا مطلب ہے کہ ایک ان پٹ جیسے nœud_principal ["nœud", "principal"] میں tokenise ہوتا ہے اور صفائی سے nœudPrincipal (camelCase) یا NœudPrincipal (PascalCase) میں تبدیل ہوتا ہے۔
یہ کیس کنورٹر ایک واحد static صفحہ ہے جو ٹوکنائزر اور گیارہ فارمیٹرز کو مکمل طور پر آپ کے براؤزر میں چلاتا ہے — کوئی vendor لائبریری نہیں، فی کنورژن کوئی نیٹ ورک کال نہیں، کوئی اکاؤنٹ نہیں۔ اوپر کوئی بھی متن پیسٹ کریں، گیارہ کیس آؤٹ پٹس کو ساتھ ساتھ سکین کریں، اور وہ کاپی کریں جو آپ کو چاہیے۔