2013-12-10 3 views
0

Как сделать Ruby pp Функция вывода Строка в действительной (разборной) Строке Ruby с использованием одиночной кавычки, если это возможно?Ruby PrettyPrint в одиночной цитате

rows = [{name:'test',id:'182572'},{name:"Kal'el",id:'125125'}] 
require 'pp' 
pp rows 

Выход был:

[{:name=>"test", :id=>"182572"}, {:name=>"Kal'el", :id=>"125125"}] 

требуемый выход был:

[{:name=>'test', :id=>'182572'}, {:name=>"Kal'el", :id=>'125125'}] 

(можно ли использовать кавычки одиночные кавычки внутри одной цитатой строки?)

фигу, я нашел ответ, так как мое редактирование ответа на пишу было отклонено, я поставлю его здесь:

class String 
    alias :old_inspect :inspect 
    def inspect 
    return old_inspect if self.include? "'" 
    "'#{self}'" 
    end 
end 

ответ

2

Вы не можете. Строки после разбора не являются двойными или одинарными, они просто строки. Если вы хотите, чтобы строки отображались с одинарными кавычками, вам придется написать собственную функцию печати.

1

Redefine String#inspect.

class String 
    def inspect; "'#{self}'" end 
end 
+0

не забудьте изменить его обратно после этого, или все строки будут заводиться в двойные кавычки в пределах программы ~ –

+0

но он показывает неправильно, когда есть апостроф внутри строки .. – Kokizzu

+0

@Kokizzu Что вы имеете в виду неправильное? Вам нужно сделать это ясно. – sawa

Смежные вопросы