2012-03-18 25 views
24

Ruby 1.9.3 mặc định sử dụng Psych cho YAML. Trong khi the ruby-doc documentation for ithoàn toàn thiếu, tôi đã có thể tìm thấy một phần tài liệu bên ngoài gợi ý rằng tùy chọn indentation được hỗ trợ. Điều này được sinh ra trong thử nghiệm:Tài liệu về tùy chọn Psych to_yaml?

irb(main):001:0> RUBY_VERSION 
#=> "1.9.3" 
irb(main):002:0> require 'yaml' 
#=> true 
irb(main):003:0> [[[1]]].to_yaml 
#=> "---\n- - - 1\n" 
irb(main):009:0> [[[1]]].to_yaml indentation:9 
#=> "---\n-  -  - 1\n" 

Có lẽ có nhiều tùy chọn hơn được hỗ trợ. Cụ thể, tôi muốn biết cách thay đổi chiều rộng đường kẻ hoặc tắt hoàn toàn.

Các tùy chọn có sẵn là gì?

+0

Sau khi xem xét nguồn gốc của 2.2.0, một bản cập nhật ngắn: Có vẻ như có rất ít lựa chọn ngay bây giờ, vì thế ít tài liệu vẫn . –

Trả lời

36

sâu trong ruột của ruby-1.9.3-p125/ext/psych/emitter.c tôi thấy ba tùy chọn:

  • indentation - Mức phải nhỏ hơn 10 và lớn hơn 1.
  • line_width - Thiết lập độ rộng dòng ưa thích.
  • canonical - Đặt kiểu đầu ra thành chuẩn, hoặc không (đúng/sai).

Và chúng hoạt động!

+1

Vì vậy, có vẻ như bạn không thể tắt tính năng ngắt dòng? Tôi đã thử 'line_width: 0' và với' nil' mà không có bất kỳ hiệu ứng nào. 'true' trả về lỗi. – sawa

+0

@sawa Bạn muốn 'line_width: 999' hoặc một số khác đủ lớn. – Phrogz

+0

Dường như các tùy chọn Syck cũng không hoạt động. Vì vậy, những người cho Psych chỉ là avalible cho 1.9.3 – sashaegorov

19

Khi bạn muốn vô hiệu hóa bọc đường, sử dụng tùy chọn này:

line_width: -1 
Các vấn đề liên quan