2013-07-25 11 views
9

साइबी रूबी के बाद से डिफ़ॉल्ट यम इंजन है 1.9.3मनोबल यमल दुभाषिया क्यों 80 अक्षरों के बीच लाइन ब्रेक जोड़ता है?

क्यों, ओह अपने आउटपुट में लाइन ब्रेक क्यों जोड़ता है? नीचे उदाहरण देखें।

ruby -v # => ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-linux] 
require 'yaml' 

"this absolutely normal sentence is more than eighty characters long because it IS".to_yaml 
# => "--- this absolutely normal sentence is more than eighty characters long because it\n IS\n...\n" 

YAML::ENGINE.yamler = 'syck' 

"this absolutely normal sentence is more than eighty characters long because it IS".to_yaml 
# => "--- this absolutely normal sentence is more than eighty characters long because it IS\n" 
+1

यह कुछ हद तक है "[साइको to_yaml विकल्पों के लिए प्रलेखन?] (Http://stackoverflow.com/questions/9759302/documentation-for-psych-to-yaml-options/9759344)" –

उत्तर

9

आपको मन के #to_yaml विकल्पों को कॉन्फ़िगर करना होगा। आप सबसे अधिक संभावना यह यहां प्राप्त करें:

ruby-1.9.3-p125/ext/psych/emitter.c 

और फिर आप कुछ इस तरह कर सकते हैं:

yaml.to_yaml(options = {:line_width => -1}) 
+0

धन्यवाद :) यह चाल है। अब मैं अपनी खुशहाली को जारी रख सकता हूं। – mla

-1

यह क्यों बात है कि क्या YAML लाइन लपेटता है या नहीं, जब यह डेटा को धारावाहिक करता है?

सवाल यह है कि, इसे लपेटने के बाद, क्या वाईएएमएल फ़ाइल को पुनः लोड करते समय बाद में सही रेखा का पुनर्निर्माण कर सकता है? और, जवाब है हां, यह कर सकते हैं है,:

require 'yaml' 
puts '"' + YAML.load("this absolutely normal sentence is more than eighty characters long because it IS".to_yaml) + '"' 

कौन सा आउटपुट:

"this absolutely normal sentence is more than eighty characters long because it IS" 

डाटा कि धारावाहिक की गई है, वह स्वरूप है जो YAML समझता है। यह एक महत्वपूर्ण अवधारणा है, क्योंकि डेटा उस बिंदु पर वाईएएमएल है। हम एक संपादक में इसके साथ गड़बड़ कर सकते हैं, और जोड़/घटा सकते हैं/संपादित कर सकते हैं, लेकिन डेटा अभी भी वाईएएमएल है, क्योंकि इसे हमारे अनुप्रयोगों का उपयोग करने के लिए डेटा को पुनः लोड और दोबारा लोड करना है। इसलिए, डेटा YAML-land के माध्यम से एक राउंड-ट्रिप बनाता है, यदि डेटा उसी रूप में लौटाता है, तो सबकुछ ठीक है।

अगर हमें धारावाहिक किया गया था और फिर पार्सिंग चरण के दौरान दूषित हो गया तो हमें कोई समस्या होगी, लेकिन ऐसा नहीं होता है।

जब आप डेटा को क्रमबद्ध करते हैं तो आप वाईएएमएल के कुछ ड्राइवर चालक के व्यवहार को संशोधित कर सकते हैं। अधिक जानकारी के लिए "Documentation for Psych to_yaml options?" के उत्तरों देखें।

+4

उद्देश्य वाईएएमएल का उपयोग करना यह है कि मानव इसे संपादित कर सकता है। अन्यथा, इसका उपयोग करने में बहुत कुछ नहीं है; कुछ बाइनरी प्रारूप बेहतर होगा। और चूंकि मानव फ़ाइल को संपादित कर सकता है, इसलिए यह वाईएएमएल प्रारूप में उपस्थिति की देखभाल करने के लिए (कुछ) समझ में आता है। – sawa

+0

कोई गारंटी नहीं है कि डेटा एक सटीक रूप में संग्रहीत किया जाएगा। मुझे कोई धारावाहिक नहीं है जो ऐसा करता है। वाईएएमएल इसे एक उचित संपादन योग्य/पठनीय रूप में संग्रहीत करता है, जो मार्शलिंग या जेएसओएन से अधिक पठनीय है। –

3
yaml.to_yaml(options = {:line_width => -1}) 

समस्या का समाधान के लिए ठीक है।

लेकिन RuboCop कहना चर को

अनुपयोगी काम - विकल्प।

तो

yaml.to_yaml(line_width: -1) 

बेहतर है।

संबंधित मुद्दे