فهرست

جست‌وجوی ابزارهاگزارش تغییرات

برای جابه‌جایی برای باز کردنمسئله را توضیح دهید، نه نام ابزار را

تبدیل متن بین حروف بزرگ، حالت عنوان، camelCase و snake_case

متن را خط‌به‌خط بین حروف بزرگ، حروف کوچک، حالت عنوان، حالت جمله، camelCase، snake_case و kebab-case تبدیل می‌کند. حالت عنوان به‌جای گذاشتن حرف بزرگ روی هر واژه از قواعد شیکاگو یا AP پیروی می‌کند، بنابراین «the lord of the rings» به «The Lord of the Rings» تبدیل می‌شود، نه «The Lord Of The Rings».

هر خط جداگانه تبدیل می‌شود، بنابراین فهرستی از عنوان‌ها یا نام ستون‌ها در یک نوبت انجام می‌شود. حداکثر ۲۰۰۰ نویسه، چون کل وضعیت ابزار در پیوند صفحه منتقل می‌شود.

حالت عنوان و حالت جمله روی واژه‌ها کار می‌کنند. camelCase، snake_case و kebab-case روی شناسه‌ها کار می‌کنند و هر چیزی را که حرف یا رقم نیست کنار می‌گذارند.

HTML، NASA و PDF را در حالت عنوان و حالت جمله دست‌نخورده نگه می‌دارد. در خطی که سراسر با حروف بزرگ نوشته شده نادیده گرفته می‌شود، چون در آن‌جا هیچ چیز یک واژه را به‌عنوان سرواژه متمایز نمی‌کند.

متن تبدیل‌شده
عنوان فیلم: The Lord of the Rings راهنمای HTML Parsing برای بقیهٔ ما طراحی State-of-the-Art
با دکمهٔ کنارش کپی کنید. شکست خط‌ها دقیقاً همان‌طور که وارد شده‌اند نگه داشته می‌شوند.
خطوط
۳
واژه‌ها
۱۸
نویسه‌های ورودی
۹۰
نویسه‌های خروجی
۹۰

خط‌به‌خط

۱عنوان فیلم: the lord of the ringsعنوان فیلم: The Lord of the Rings
۲راهنمای HTML parsing برای بقیهٔ ماراهنمای HTML Parsing برای بقیهٔ ما
۳طراحی state-of-the-artطراحی State-of-the-Art

چگونگی کار

این ابزار چه می‌کند

یک متن را با حالت حروف متفاوتی بازنویسی می‌کند. هفت حالت: حروف بزرگ، حروف کوچک، حالت عنوان، حالت جمله، camelCase، snake_case و kebab-case. هر خط عنوان، جمله یا شناسهٔ مستقل خودش تلقی می‌شود، بنابراین فهرستی از سرستون‌ها در یک نوبت تبدیل می‌شود و هر عنوان قواعد خودش را نگه می‌دارد.

بخشی که ارزش توضیح دارد حالت عنوان است، چون تقریباً هر مبدل دیگری آن را اشتباه انجام می‌دهد. گذاشتن حرف بزرگ روی هر واژه «The Lord Of The Rings» می‌دهد و هیچ سبک‌نامهٔ منتشرشده‌ای با آن موافق نیست. سبک تیتر حروف تعریف، حروف ربط هم‌پایه و حروف اضافه را کوچک می‌کند، مگر وقتی یکی از آن‌ها عنوان را آغاز یا تمام کند. همین یک قاعده، تفاوت میان عنوانی است که حروف‌چینی‌شده به نظر می‌رسد و عنوانی که خودکار به نظر می‌رسد.

روش

حالت عنوان یک فهرست به‌علاوهٔ چهار قاعدهٔ موقعیتی است. فهرست واژه‌هایی را دارد که کوچک می‌مانند؛ هر چه در آن نباشد بزرگ می‌شود، از جمله فعل‌های «is»، «be» و «are» که مردم بیش از همه انتظار کوچک شدنشان را دارند. این‌ها واژه‌هایی هستند که شیکاگو کوچک می‌کند:

articles       a  an  the

conjunctions   and  but  for  nor  or

named by rule  as  to

prepositions   about  above  across  after  against  along  amid  among
               around  at  atop  before  behind  below  beneath  beside
               besides  between  beyond  by  concerning  despite  down
               during  except  from  in  inside  into  like  near  of  off
               on  onto  opposite  out  outside  over  past  per  regarding
               round  since  than  through  throughout  till  toward
               towards  under  underneath  unlike  until  unto  up  upon
               versus  via  with  within  without

AP همان واژه‌ها را به کار می‌برد، اما فقط سه‌حرفی‌ها و کوتاه‌ترها را، چون AP هر واژهٔ چهار حرفی یا بلندتر را بزرگ می‌کند. کل تفاوت این دو تنظیم همین است: شیکاگو می‌نویسد «A Walk through the Woods»، AP می‌نویسد «A Walk Through the Woods».

چهار قاعدهٔ موقعیتی این‌هاست: واژهٔ اول خط بزرگ می‌شود، واژهٔ آخر بزرگ می‌شود، اولین واژه پس از دونقطه بزرگ می‌شود، و واژه‌ای که بلافاصله پس از خط تیره می‌آید از دو قاعدهٔ اول معاف است. همین آخری است که ترکیب‌های خط‌تیره‌دار را درست رفتار می‌دهد: «run-in with the law» به «Run-in with the Law» تبدیل می‌شود نه «Run-In with the Law»، در حالی که «state-of-the-art» به «State-of-the-Art» تبدیل می‌شود، چون «art» اسم است و اصلاً در فهرست نیست.

حالت جمله یک دام دارد که دانستنش ارزشمند است. مرزهای جمله از پیاده‌سازی خود مرورگر از قواعد قطعه‌بندی یونیکد می‌آیند که علامت‌های نقل‌قول، پرانتزها، اعداد اعشاری و اختصارات را درست مدیریت می‌کند. اما قاعدهٔ SB۸ آن استاندارد وقتی حرف بعدی کوچک باشد شکست جمله را سرکوب می‌کند، با این استدلال معقول که در نثر عادی، نقطه‌ای که پس از آن حرف کوچک می‌آید یک اختصار است. ورودی یک مبدل حالت حروف دقیقاً متنی است که نمی‌توان فرض کرد حروفش درست است: قطعه‌بندی مستقیم «hello world. this is a test.» یک جمله برمی‌گرداند، بنابراین فقط اولین حرف بزرگ ظاهر می‌شود. از این رو قطعه‌بند روی نسخه‌ای از خط با همهٔ حروف بزرگ‌شده اجرا می‌شود، که آفست‌ها را سر جایشان می‌گذارد و چیزی برای سرکوب به استاندارد نمی‌دهد. علاوه بر آن، جمله‌ای که به یک حرف تنها یا به یکی از بیست اختصار فهرست‌شده ختم شود به جملهٔ بعدی می‌چسبد، بنابراین «e.g. this» به «E.g. This» تبدیل نمی‌شود. فایل آزمون این تعداد را تأیید می‌کند تا نتواند جابه‌جا شود.

camelCase، snake_case و kebab-case روی شناسه‌ها کار می‌کنند، نه واژه‌ها. آپاستروف‌های هر واژه حذف می‌شود، سپس واژه هر جا که بزرگی حروف تغییر کند شکسته می‌شود: یک حرف کوچک یا رقم که پس از آن حرف بزرگ می‌آید، و رشته‌ای از حروف بزرگ که پس از آن حرف کوچک می‌آید. سومی همان است که شکننده‌های ساده‌انگار از دست می‌دهند، و به همین دلیل «parseHTMLDoc» به‌صورت parse، HTML، Doc درمی‌آید، نه پنج جزء و نه یک جزء. هر چه حرف یا رقم نیست از پیش رفته است، بنابراین «Order # (net)» می‌شود order_net.

هیچ چیز در این‌جا به زبان محلی حساس نیست. حروف بزرگ و کوچک از نگاشت‌های پیش‌فرض یونیکد استفاده می‌کنند و قطعه‌بندها با یک زبان محلی ثابت ساخته می‌شوند، چون متن یکسان باید روی هر دستگاهی یکسان تبدیل شود و پیوند اشتراک‌گذاری‌شده نباید برای کسی که بازش می‌کند متفاوت تبدیل شود.

پیش از ادامهٔ مطلب

در حالت عنوان شیکاگو، run-in with the law به Run-in with the Law تبدیل می‌شود. state-of-the-art design چه می‌شود؟

  • نه. واژه‌ای که بلافاصله پس از خط تیره می‌آید از قواعد بزرگ کردن اول‌وآخر معاف است.

  • بله — و A بزرگ استثنایی بر قاعدهٔ بالا نیست.

  • واژهٔ اول خط همیشه بزرگ می‌شود، با خط تیره یا بی‌ آن.

State-of-the-Art Design. این دو مثال به نظر متناقض می‌آیند و نیستند. واژه‌ای که بلافاصله پس از خط تیره می‌آید از قواعد واژهٔ اول و آخر معاف است، و به همین دلیل in در Run-in کوچک می‌ماند — اما art یک اسم ساده است که هرگز در فهرست واژه‌های کوچک نبوده، بنابراین هیچ چیز قرار نبود آن را پایین نگه دارد. یک قاعده تعیین می‌کند که واژه به‌اجبار بزرگ شود یا نه؛ فهرستی جداگانه تعیین می‌کند که کوچک نگه داشته شود یا نه.

چهار قاعدهٔ موقعیتی، بر فراز فهرست
  1. first word of a line -> capital

    هر چه باشد. The Lord of the Rings با T بزرگ شروع می‌شود، هرچند the در فهرست واژه‌های کوچک است.

  2. last word of a line -> capital

    همان استدلال در انتهای دیگر، تا عنوان هرگز با یک حرف اضافهٔ کوچک تمام نشود.

  3. first word after a colon -> capital

    زیرعنوان از آن‌جا شروع می‌شود. این همان The در The Return of the King است.

  4. word directly after a hyphen -> exempt from both

    بنابراین Run-in حرف i کوچک خود را نگه می‌دارد. بدون این، هر ترکیب خط‌تیره‌دار در ابتدا یا انتهای خط دو بار بزرگ می‌شد.

یک نمونهٔ کارشده

کادر ابزار با نمونه‌ای فارسی باز می‌شود که همین قواعد را روی واژه‌های لاتینِ درونش نشان می‌دهد. نمونهٔ کارشدهٔ زیر سه خط انگلیسی است که برای آزمودن هر چهار قاعده انتخاب شده‌اند:

the lord of the rings: the return of the king
HTML parsing for the rest of us
state-of-the-art design

به هفت شکل تبدیل‌شده، با قواعد شیکاگو و گزینهٔ سرواژه‌ها روشن:

Title Case      The Lord of the Rings: The Return of the King
                HTML Parsing for the Rest of Us
                State-of-the-Art Design

Sentence case   The lord of the rings: the return of the king
                HTML parsing for the rest of us
                State-of-the-art design

UPPER CASE      THE LORD OF THE RINGS: THE RETURN OF THE KING
                HTML PARSING FOR THE REST OF US
                STATE-OF-THE-ART DESIGN

lower case      the lord of the rings: the return of the king
                html parsing for the rest of us
                state-of-the-art design

camelCase       theLordOfTheRingsTheReturnOfTheKing
                htmlParsingForTheRestOfUs
                stateOfTheArtDesign

snake_case      the_lord_of_the_rings_the_return_of_the_king
                html_parsing_for_the_rest_of_us
                state_of_the_art_design

kebab-case      the-lord-of-the-rings-the-return-of-the-king
                html-parsing-for-the-rest-of-us
                state-of-the-art-design

در بلوک حالت عنوان چهار اتفاق افتاد. «of» و «the» کوچک شدند چون در فهرست‌اند. «The» پس از دونقطه بزرگ شد چون زیرعنوان از آن‌جا شروع می‌شود. «HTML» باقی ماند چون آن خط سراسر حروف بزرگ نیست، پس گزینهٔ سرواژه‌ها اعمال شد. و «State-of-the-Art» یک A بزرگ گرفت چون «art» در فهرست نیست، در حالی که «of» و «the» کنارش هستند.

ارقام گزارش‌شده در کنار نتیجه ۳ خط، ۲۲ واژه، ۱۰۱ نویسهٔ ورودی و ۱۰۱ نویسهٔ خروجی است. در camelCase خروجی به ۸۱ نویسه کاهش می‌یابد، چون فاصله‌ها و علائم نگارشی از بین رفته‌اند.

این‌ها همان اعدادی هستند که در فایل آزمون این ابزار تأیید می‌شوند، بنابراین اگر قواعد بدون تغییر این صفحه تغییر کنند، ساخت شکست می‌خورد.

کاری که انجام نمی‌دهد

دستور زبان را نمی‌فهمد. حالت عنوان جست‌وجویی در فهرست واژه‌های نقشی است، بنابراین حرف اضافه‌ای که کار قید را می‌کند — «Look up the Answer» — در جایی که شیکاگو بزرگش می‌کرد کوچک می‌شود، و با واژه‌ای مانند «so» یا «like» هر جا ظاهر شود یکسان رفتار می‌شود. اسم‌های خاص را در حالت جمله بازنمی‌گرداند، چون متن دیگر اطلاعات لازم را ندارد؛ ضمیر I تنها واژه‌ای است که برگردانده می‌شود. نویسه‌گردانی نمی‌کند، بنابراین «café» در snake_case همان «café» می‌ماند و به «cafe» تبدیل نمی‌شود. نمی‌داند نام چه شکلی است، بنابراین «o’brien» به‌صورت «O’brien» بزرگ می‌شود نه «O’Brien». و حروف بزرگ برگشت‌پذیر نیست: ß به SS تبدیل می‌شود و برنمی‌گردد.

و هیچ چیز را نمی‌شمارد. اگر می‌خواهید به‌جای تغییر حالت حروف بدانید متن چقدر بلند است، شمارش نویسه‌ها نیمهٔ دیگر همین کار است.

مراحل انجام کار

  1. پایان خطوط ویندوز و مک کلاسیک را به یک خط‌نوی واحد تبدیل کنید، سپس متن را به خطوط تقسیم کنید. هر خط جداگانه تبدیل می‌شود، بنابراین فهرستی از عنوان‌ها یا نام ستون‌ها در یک نوبت انجام می‌شود.
  2. تشخیص دهید که آیا خط «فریادی» است یا نه، یعنی حروف بزرگ دارد و هیچ حرف کوچکی ندارد. در چنین خطی گزینهٔ دست‌نخورده گذاشتن واژه‌های تمام‌بزرگ نادیده گرفته می‌شود، چون در آن‌جا هیچ چیز یک واژه را به‌عنوان سرواژه متمایز نمی‌کند.
  3. برای حروف بزرگ و کوچک، نگاشت‌های پیش‌فرض یونیکد را روی کل خط اعمال کنید و همین‌جا متوقف شوید. این نگاشت‌ها مستقل از زبان محلی‌اند، بنابراین ß آلمانی به SS تبدیل می‌شود و پاسخ روی هر دستگاهی یکسان است.
  4. برای حالت عنوان، واژه‌ها را پیدا کنید — رشته‌هایی از حرف و رقم که ممکن است در میانشان آپاستروف باشد. خط تیره بخشی از واژه نیست، بنابراین هر جزء یک ترکیب خط‌تیره‌دار جداگانه داوری می‌شود.
  5. واژهٔ اول، واژهٔ آخر و اولین واژه پس از دونقطه را بزرگ کنید. هر واژهٔ دیگری را که در فهرست سبک انتخاب‌شده است کوچک کنید. باقی را بزرگ کنید. واژه‌ای که بلافاصله پس از خط تیره می‌آید از قاعدهٔ اول‌وآخر معاف است.
  6. برای حالت جمله، همهٔ واژه‌ها را کوچک کنید، ضمیر I را برگردانید، سپس حرف اول هر جمله را بزرگ کنید. مرزهای جمله از قطعه‌بند یونیکد مرورگر می‌آیند که روی نسخه‌ای از خط با حروف یکسان‌شده اجرا می‌شود.
  7. هرگاه جمله‌ای به یک حرف تنها یا به یکی از بیست اختصار فهرست‌شده ختم شود، آن را به جملهٔ بعدی بچسبانید، تا نقطهٔ بعد از «e.g.» یا «Mr.» حرف بزرگ سرگردانی تولید نکند.
  8. برای camelCase، snake_case و kebab-case همان واژه‌ها را بردارید، آپاستروف‌هایشان را حذف کنید و هر کدام را در نقطهٔ تغییر بزرگی حروف بشکنید — یک حرف کوچک یا رقم که پس از آن حرف بزرگ می‌آید، و رشته‌ای از حروف بزرگ که پس از آن حرف کوچک می‌آید.
  9. اجزا را به هم بچسبانید. برای snake و kebab سراسر حروف کوچک؛ برای camel، جزء اول کوچک و هر جزء بعدی با حرف بزرگ.

فرض‌ها

  • هر خط جداگانه تبدیل می‌شود. واژهٔ اول و آخر یک عنوان، واژهٔ اول و آخر همان خط است، هیچ جمله‌ای از شکست خط عبور نمی‌کند و بیست سرستون در بیست خط، بیست شناسه می‌شوند نه یک شناسهٔ بلند.
  • حالت عنوان یک فهرست واژه است، نه یک دستور زبان. شیکاگو حروف اضافه را با جست‌وجو در فهرست کوچک می‌کند، بنابراین حرف اضافه‌ای که نقش قید دارد در جایی که شیکاگو بزرگش می‌کند کوچک می‌شود — «Look up the Answer» به‌جای «Look Up the Answer». درست کردن این مورد به یک برچسب‌زن اجزای کلام نیاز دارد که چیزی بسیار بزرگ‌تر و بسیار کمتر پیش‌بینی‌پذیر از یک فهرست است.
  • واژهٔ اول و آخر یک خط، همراه با اولین واژه پس از دونقطه، همیشه بزرگ می‌شوند. واژه‌ای که بلافاصله پس از خط تیره می‌آید از این قاعده معاف است، و همین است که «Run-in with the Law» را به‌جای «Run-In with the Law» تولید می‌کند.
  • در خطی که سراسر حروف بزرگ است، دست‌نخورده گذاشتن واژه‌های تمام‌بزرگ نادیده گرفته می‌شود. سرواژه یعنی واژه‌ای با حروف بزرگ میان واژه‌هایی که بزرگ نیستند، و یک خط فریادی چنین تضادی ندارد؛ بنابراین رعایت این گزینه در آن‌جا، یک اشتباه caps-lock را به خودش تبدیل می‌کرد.
  • حالت جمله نمی‌تواند اسم خاص را بازگرداند. هیچ چیز در «we met in paris» نمی‌گوید Paris یک شهر است، بنابراین کوچک برمی‌گردد. ضمیر I تنها استثناست، چون به شکلی که یک نام نیست، بی‌ابهام است.
  • حالت عنوان و حالت جمله باقی هر واژه را کوچک می‌کنند، بنابراین واژه‌ای که عمداً حروف مخلوط دارد صاف می‌شود — «parseHTMLDoc» به «Parsehtmldoc» تبدیل می‌شود. camelCase، snake_case و kebab-case تبدیل‌هایی هستند که یک شناسهٔ موجود را می‌فهمند.
  • سرواژه‌ها در camelCase، snake_case و kebab-case، صرف‌نظر از گزینه، کوچک می‌شوند. «Customer ID» به customer_id تبدیل می‌شود، چون نام snake_case با حروف بزرگ نه snake_case است و نه خواناتر.
  • حروف بزرگ و کوچک از نگاشت‌های پیش‌فرض یونیکد بدون زبان محلی استفاده می‌کنند. ß آلمانی به SS تبدیل می‌شود که درست است، و به ß برنمی‌گردد، یعنی این تغییر برگشت‌پذیر نیست. i بی‌نقطهٔ ترکی با قواعد پیش‌فرض تبدیل می‌شود، نه با قواعد ترکی.
  • واژه‌ای که با رقم شروع می‌شود همان‌طور که هست می‌ماند، چون رقم آغازین حرف پس از خود را بزرگ نمی‌کند و شمارهٔ ترتیبی انگلیسی با حروف کوچکش می‌ماند.
  • نویسه‌ها به‌صورت خوشه‌های نویسه‌ای (grapheme) شمرده می‌شوند. یک حرف آکسان‌دار که با دو نقطهٔ کد نوشته شده، یا ایموجی‌ای با اصلاح‌گر رنگ پوست که با چهار نقطهٔ کد نوشته شده، یکی شمرده می‌شود.

پرسش‌های رایج

آیا متنی که تبدیل می‌کنم جایی آپلود می‌شود؟

خیر. تبدیل در همین تب مرورگر و روی دستگاه شما اجرا می‌شود و سروری برای فرستادن آن وجود ندارد. صفحه متن را در قطعهٔ (fragment) پیوند نگه می‌دارد تا بتوان نتیجه را به اشتراک گذاشت، و قطعه تنها بخشی از URL است که مرورگر هرگز ارسال نمی‌کند.

چرا «of» در میانهٔ عنوانم کوچک است؟

چون سبک تیتر همین را می‌گوید. هم شیکاگو و هم AP حروف تعریف، حروف ربط هم‌پایه و حروف اضافهٔ کوتاه را همه‌جا کوچک می‌کنند، به‌جز واژهٔ اول و آخر عنوان. «The Lord Of The Rings» نسخه‌ای است که تقریباً هر مبدل حالت حروفی تولید می‌کند و در هر سبک‌نامهٔ منتشرشده‌ای اشتباه است. فهرست کامل واژه‌هایی که این ابزار کوچک می‌کند در ادامه آمده است.

چرا سرواژه‌ام با حروف کوچک برگشت؟

به احتمال زیاد چون خطی که در آن بود سراسر حروف بزرگ بود. در چنین خطی چیزی نیست که USA را از MEETING متمایز کند، بنابراین گزینهٔ دست‌نخورده گذاشتن حروف بزرگ برای آن خط نادیده گرفته می‌شود — وگرنه پیامی که با caps lock تایپ شده به خودش تبدیل می‌شد و ابزار خراب به نظر می‌رسید. سرواژه را با دست درست کنید، یا ابتدا باقی خط را کوچک کنید و دوباره تبدیل کنید.

تفاوت حالت عنوان شیکاگو و AP چیست؟

طول حرف اضافه. شیکاگو هر حرف اضافه‌ای را با هر طولی کوچک می‌کند، بنابراین می‌نویسد «A Walk through the Woods». AP هر واژهٔ چهار حرفی یا بلندتر را بزرگ می‌کند، بنابراین می‌نویسد «A Walk Through the Woods». در واژه‌های نقشی کوتاه این دو هم‌نظرند، و به همین دلیل بیشتر عنوان‌ها در هر دو حالت یکسان درمی‌آیند.

چرا هر خط جداگانه تبدیل می‌شود؟

چون همین است که یک فهرست را کارآمد می‌کند. بیست سرستون در بیست خط بیست شناسه می‌شوند و هر عنوان در فهرست قاعدهٔ اول‌وآخر خودش را می‌گیرد، به‌جای این‌که کل بلوک یک عنوان بسیار بلند تلقی شود. همچنین یعنی خط خالی خالی می‌ماند و جای خود را در جدول زیر حفظ می‌کند.

چرا حالت جمله نمی‌تواند اسم‌های خاصم را برگرداند؟

چون آن اطلاعات از بین رفته است. «we met in paris» چیزی ندارد که بگوید Paris شهر است نه یک واژه، و ابزاری که حدس بزند آن‌قدر اشتباه می‌کند که از ابزاری که حدس نمی‌زند بدتر است. ضمیر I همراه با I'm، I've، I'll و I'd بازگردانده می‌شود، چون آن یکی بی‌ابهام است.

چرا STRASSE دوباره به Straße تبدیل نشد؟

چون بزرگ کردن ß، SS تولید می‌کند و هیچ چیز ثبت نمی‌کند که از کجا آمده. نگاشت پیش‌فرض یونیکد این‌جا یک‌طرفه است، بنابراین «straße» با حروف بزرگ STRASSE می‌شود و STRASSE با حروف کوچک «strasse». وقتی این اتفاق می‌افتد، شمار نویسه‌های ورودی و خروجی یکی با هم فرق می‌کند، و همین نشانهٔ رخ دادن یک تغییر برگشت‌ناپذیر است.

چرا کادر به ۲۰۰۰ نویسه محدود است؟

چون کل وضعیت ابزار در پیوند صفحه منتقل می‌شود و پیوند باید پس از جای‌گذاری در یک پیام سالم بماند. دو هزار نویسه تقریباً یک روی کاغذ A۴ است. برای یک سند کامل، آن را بخش‌بخش تبدیل کنید، یا از ابزاری استفاده کنید که به‌جای کادر متن، فایل می‌خواند.

منابع