2012-03-18 15 views
24

Ruby 1.9.3 domyślnie używa Psych dla YAML. Podczas gdy the ruby-doc documentation for it jest całkowicie pozbawiony, udało mi się znaleźć jedną zewnętrzną część dokumentacji, która zasugerowała, że ​​obsługiwana jest opcja indentation. Zostało to potwierdzone podczas testowania:Dokumentacja dla opcji 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" 

Prawdopodobnie obsługiwanych jest więcej opcji. W szczególności chcę wiedzieć, jak zmienić szerokość zawijania linii lub całkowicie go wyłączyć.

Jakie są dostępne opcje?

+0

Po patrząc na źródło 2.2.0, w niewielkiej aktualizacji: Wydaje się, istnieje bardzo niewiele opcji teraz, stąd mało dokumentacji nadal . –

Odpowiedz

36

Głęboko w trzewiach ruby-1.9.3-p125/ext/psych/emitter.c Znalazłem trzy opcje:

  • indentation - Poziom musi być mniejsza niż 10 i większa niż 1.
  • line_width - Ustaw preferowaną szerokość linii.
  • canonical - Ustaw styl wyjściowy na kanoniczny lub nie (prawda/fałsz).

I działają!

+1

Wygląda na to, że nie można wyłączyć zawijania linii? Próbowałem 'line_width: 0' oraz' 'nil', które nie mają żadnego efektu. "true" zwraca błąd. – sawa

+0

@sawa Chcesz 'line_width: 999' lub inną wystarczająco dużą liczbę. – Phrogz

+0

Wygląda na to, że opcje Syck również nie działają. Więc te dla Psych są dostępne tylko dla 1.9.3 – sashaegorov

19

Kiedy chcesz wyłączyć zawijanie linii, użyj tej opcji:

line_width: -1 
Powiązane problemy