YAML যাচাইকারী ও ফরম্যাটার
ফরম্যাটjs-yaml দিয়ে YAML যাচাই, প্রমিত বা সংকুচিত করুন। ইনডেন্টেশন ও উদ্ধৃতি ঠিক করে এবং বহু-ডকুমেন্ট (---) প্রবাহ বিভক্ত করে। শুধু YAML প্রক্রিয়াকরণ — ফরম্যাট রূপান্তর নয়।
দূরবর্তী URL আনা হয় না; আপনার JSON সরাসরি পেস্ট করুন।
এই পৃষ্ঠায়
YAML ফরম্যাটার কী?#
একটি YAML ফরম্যাটার এমন একটি কনফিগ ফাইল নেয় যা পথচ্যুত হয়েছে — স্পেসের সাথে মিশ্রিত ট্যাব, অসঙ্গত ইনডেন্ট ধাপ, কিছু জায়গায় ব্যবহৃত উদ্ধৃতি এবং অন্য জায়গায় নয়, একটি অ্যাঙ্কর যা কেউ সংজ্ঞায়িত করেছে এবং কখনো পুনরায় ব্যবহার করেনি — এবং তাকে একটি পরিষ্কার, অনুমেয় আকৃতিতে নরমালাইজ করে। এটি সেই জিনিসটাও ধরে যার জন্য YAML কুখ্যাত: একটি নথি যা ভালো দেখায় এবং নীরবে অন্য কিছু বোঝায়, কারণ YAML হোয়াইটস্পেস-তাৎপর্যপূর্ণ এবং একটি খালি শব্দ কী বোঝায় তার উপর অন্তর্নিহিত নিয়মে পূর্ণ।
এই পৃষ্ঠাটি আপনার YAML পার্স করে এবং নিয়ন্ত্রিত উপায়ে js-yaml-এর মাধ্যমে পুনরায় নির্গত করে। ফরম্যাট আপনার বেছে নেওয়া ধাপ দিয়ে পুনরায় ইনডেন্ট করে (2 বা 4 স্পেস), লাইন ভাঁজ বন্ধ করে দেয় যাতে প্রতিটি মান তার নিজস্ব লাইনে বসে, এবং যেকোনো অ্যাঙ্কর এবং অ্যালিয়াসকে প্লেইন পুনরাবৃত্ত কন্টেন্টে প্রসারিত করে যাতে আউটপুটটি সম্পূর্ণভাবে স্বয়ংসম্পূর্ণ হয়। সংকুচিত একই ডেটাকে flow প্রতীকে পুনরায় ডাম্প করে — {a: 1, b: [2, 3]} — যা YAML-এ একটি কম্প্যাক্ট ফর্মের সবচেয়ে কাছের, যেহেতু YAML JSON বা CSS-এর মতো তার হোয়াইটস্পেস মুছতে পারে না। আপনি যে মোডই বেছে নিন, নথিটি প্রথমে পার্স করা হয়, তাই এমন একটি ট্যাব যেখানে একটি স্পেস হওয়া উচিত ছিল বা একটি কোলন যার শেষের স্পেসটি অনুপস্থিত তা নীরবে ভুল ডেটা কাঠামো তৈরি করার বদলে তার সারি এবং কলাম সহ রিপোর্ট করা হয়।
ব্যবহারবিধি#
- বাঁদিকের ইনপুট পেইনে আপনার YAML পেস্ট করুন। প্লেসহোল্ডারটি একটি ন্যূনতম নথি দেখায়, বা নমুনা ক্লিক করুন।
- টুলবারে একটি মোড বোতাম বেছে নিন:
- ফরম্যাট — পুনরায় ইনডেন্ট, লাইন ভাঁজ নিষ্ক্রিয় করুন, অ্যাঙ্কর/অ্যালিয়াস প্রসারিত করুন, এবং প্রতিটি সংগ্রহ ব্লক স্টাইলে নির্গত করুন।
- সংকুচিত — প্রতিটি সংগ্রহ যত কম সম্ভব লাইনে flow স্টাইলে নির্গত করুন। flow সংগ্রহগুলো স্পষ্ট হওয়ায় ইনডেন্টেশন অপ্রাসঙ্গিক হয়ে যায়।
- ফরম্যাট মোডে, একটি ইন্ডেন্ট বেছে নিন: 2 বা 4 স্পেস।
- ঐচ্ছিকভাবে একটি উদ্ধৃতি শৈলী বেছে নিন: স্বয়ংক্রিয় (শুধুমাত্র তখনই উদ্ধৃত করুন যখন একটি স্কেলার আসলে প্রয়োজন — ডিফল্ট), একক, বা দ্বি। এটি স্কেলারগুলোতে উদ্ধৃতি অক্ষর নরমালাইজ করে যেগুলো অবশ্যই উদ্ধৃত করতে হবে; এটি কখনো প্লেইন মানগুলোতে উদ্ধৃতি চাপায় না যেগুলোর প্রয়োজন নেই।
- আউটপুট পেইনে ফলাফল পড়ুন। হেডার আউটপুট আকার দেখায়; এটি নিতে কপি ব্যবহার করুন। মুছুন উভয় পেইন রিসেট করে।
পার্সিং ব্যর্থ হলে, স্ট্যাটাস বার সমস্যার সারি এবং কলাম রিপোর্ট করে — js-yaml থেকে YAML ত্রুটিগুলো একটি অবস্থান বহন করে, এবং এই পৃষ্ঠাটি তা সরাসরি প্রকাশ করে।
মূল বৈশিষ্ট্য#
- একই পার্স থেকে ফরম্যাট এবং সংকুচিত। উভয় মোড নথিটিকে পূর্বে যাচাই করে, তাই একটি কাঠামোগত ত্রুটি একটি অবস্থান সহ একবার রিপোর্ট করা হয়, আপনি কোন বোতাম চেপেছেন তা নির্বিশেষে।
- অ্যাঙ্কর প্রসারিত।
&anchor/*aliasরেফারেন্সগুলো সমাধান করা হয় এবং ইনলাইনে লেখা হয় (noRefs), তাই আউটপুট কখনো তিন স্ক্রিন আগে সংজ্ঞায়িত একটি নামের উপর নির্ভর করে না। ফলাফলটি একটি স্বয়ংসম্পূর্ণ নথি যা আপনি যে কারও হাতে তুলে দিতে পারেন। - কোনো লাইন ভাঁজ নেই। লম্বা মানগুলো একটি কলাম সীমায় মোড়ানো হয় না (
lineWidth: -1), তাই প্রতিটি মান ঠিক এক লাইন দখল করে — diff করা সহজ এবং পড়তে সহজ। - ঐচ্ছিক উদ্ধৃতি নরমালাইজেশন। নথি জুড়ে উদ্ধৃতি অক্ষর ধারাবাহিক করতে একক বা দ্বি উদ্ধৃতি বেছে নিন, বা স্বয়ংক্রিয়ে রেখে দিন যাতে শুধুমাত্র সেই মানগুলো যেগুলোর সত্যিই উদ্ধৃতি প্রয়োজন তা পায়।
- মাল্টি-ডকুমেন্ট সচেতন।
---দ্বারা বিভাজিত ইনপুট একাধিক নথি হিসেবে পার্স করা হয় এবং---বিভাজক অক্ষত রেখে পুনরায় নির্গত করা হয় — Kubernetes ম্যানিফেস্ট এবং অনুরূপ মাল্টি-ডক ফাইলের জন্য কার্যকর। - YAML বোমার বিরুদ্ধে রক্ষা। একটি নেস্টিং-গভীরতা ক্যাপ রোগবিজ্ঞানীভাবে গভীর নথিগুলোকে বিপজ্জনক কিছুতে প্রসারিত হতে আটকায়।
- কঠোরভাবে ক্লায়েন্ট-সাইড, 1 MB-এর উপরের ইনপুটের জন্য একটি Web Worker সহ যাতে পৃষ্ঠাটি প্রতিক্রিয়াশীল থাকে।
ব্যবহারিক উদাহরণ#
একটি পরিষেবা কনফিগ যাতে একটি পুনরায় ব্যবহৃত অ্যাঙ্কর এবং সামান্য অমসৃণ শৈলী আছে:
ইনপুট:
service:
name: &name "api-gateway"
host: example.com
replicas: 3
id: *name
logging:
level: info
outputs: [{name: stdout}, {name: file}]
2 স্পেস এবং স্বয়ংক্রিয় উদ্ধৃতি সহ ফরম্যাট ক্লিক করুন:
service:
name: api-gateway
host: example.com
replicas: 3
id: api-gateway
logging:
level: info
outputs:
- name: stdout
- name: file
দুটি জিনিস ঘটেছে যা আপনি দেখতে পারেন। অ্যাঙ্কর &name এবং অ্যালিয়াস *name উভয়ই আক্ষরিক মান api-gateway-তে সমাধান করা হয়েছে, তাই id এখন একটি প্লেইন মান হিসেবে পড়া যায় এবং নথিটি আর অ্যাঙ্করের উপর নির্ভর করে না। এবং flow-স্টাইলের তালিকা [{name: stdout}, {name: file}] একটি ব্লক তালিকা হিসেবে পুনরায় লেখা হয়েছে, প্রতি লাইনে একটি এন্ট্রি — স্ক্যান করতে এবং অন্য একটি সংস্করণের বিরুদ্ধে diff করতে অনেক সহজ। একই ইনপুটে সংকুচিত ক্লিক করুন এবং একই ডেটা flow ফর্মে ফিরে আসে:
service: {name: api-gateway, host: example.com, replicas: 3, id: api-gateway}
logging: {level: info, outputs: [{name: stdout}, {name: file}]}
প্রতিটি সংগ্রহ এখন ইনলাইন। ইনডেন্টেশন এবং নিউলাইন চলে যাওয়ায় বাইট গণনা কমে, কিন্তু অর্থটি অভিন্স — যা ঠিক একটি হোয়াইটস্পেস-তাৎপর্যপূর্ণ ফরম্যাটের জন্য সংকুচিত মানে তাই।
প্রশ্নোত্তর#
আমার মন্তব্যগুলো কোথায় গেল?#
js-yaml-এর মাধ্যমে YAML রাউন্ড-ট্রিপিং মন্তব্যগুলো পার্স করে এবং বাতিল করে — লাইব্রেরিতে কোনো মন্তব্য-সংরক্ষণকারী পুনরায়-ডাম্পার নেই। পার্সিংয়ের সময় মন্তব্যগুলো সহ্য করা হয় (সেগুলো কখনো ত্রুটি ঘটায় না) কিন্তু সেগুলো আউটপুটে উপস্থিত হয় না। মন্তব্যগুলো যদি গুরুত্বপূর্ণ প্রসঙ্গ বহন করে, তবে আপনার মূল ফাইলটিকে সত্যের উৎস হিসেবে রাখুন এবং এই টুলের আউটপুটকে ক্যানোনিক্যাল মেশিন ফর্ম হিসেবে বিবেচনা করুন।
YAML-এর জন্য ফরম্যাট এবং সংকুচিত-এর মধ্যে পার্থক্য কী?#
ফরম্যাট নথিটিকে পরিষ্কার block স্টাইলে পুনরায় লেখে: নেস্টেড ম্যাপিং এবং সিকোয়েন্সগুলো আপনার বেছে নেওয়া ধাপ দিয়ে ইনডেন্ট করা, প্রতি লাইনে একটি মান, কোনো ভাঁজ নেই। সংকুচিত একই ডেটাকে flow স্টাইলে পুনরায় লেখে: একটি একক লাইনে {key: value} এবং [a, b] সংগ্রহ। উভয়ই প্রথমে অভিন্দভাবে পার্স করে; তারা শুধুমাত্র ভিন্নভাবে আউটপুট দেয় যেভাবে ডেটা ফিরে সিরিয়ালাইজ করা হয়।
এটি YAML/JSON কনভার্টার থেকে কীভাবে আলাদা?#
এই টুলটি হলো YAML ইন, YAML আউট — এটি একটি YAML নথিকে নরমালাইজ বা কম্প্যাক্ট করে এবং YAML ফিরিয়ে দেয়। এই সাইটের YAML/JSON কনভার্টার দুটি ফরম্যাটের মধ্যে অনুবাদ করে। এই পৃষ্ঠাটি ব্যবহার করুন যখন আপনি একই ফরম্যাট চান, শুধু আরও ভালো আকৃতিতে; কনভার্টার ব্যবহার করুন যখন আপনি আসলে JSON চান।
আমার YAML কি কোথাও আপলোড হয়?#
না। js-yaml পৃষ্ঠায় বান্ডল করা এবং আপনার ব্রাউজারে চলে। 1 MB-এর উপরের ইনপুটের জন্য পার্স একটি Web Worker-এর ভেতরে ঘটে, কিন্তু এখনও স্থানীয়ভাবে — কিছুই আপনার ডিভাইস ছাড়ে না।