2014-10-22 2 views
0

Привета я пытаюсь преобразовать Рубиновые хэш из старого 1,8 стиля с использованием AngularJS с регулярным выражениемJavascript регулярного выражения, чтобы преобразовать рубиновый синтаксис хэша от 1,8 до 1,9

{ :name => "james" }

к новому 1.9 синтаксису

{ name: 'james' }

Я пытаюсь сделать это в угловых JS

с followi Сегмент нг

$scope.$watch("rubyText", function(newValue) { 
    var newVal= newValue.replace(
     new RegExp("([\w\d_]+)(\s*)=>/\1:", "g"), 
     newValue 
    ); 
    $scope.rubyTextConverted = newVal; 
} 

Я ограничил JS опыт регулярных выражений и хотел бы некоторые советы по регулярному выражению

Благодарности

+0

Что происходит на самом деле здесь? У вас есть некоторый вывод 'some_ruby_hash.inspect' в строке JavaScript, которую нужно преобразовать в структуру данных JavaScript? –

+0

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

+0

. Поэтому я хочу, чтобы иметь возможность копировать мой хэш (из моего кода или где угодно) и вставьте его на сайт, который преобразует синтаксис. – jamesjamesjames2015

ответ

0

Вы могут должны учитывать некоторые крайние случаи, как форматирования, пробелы и такие (если только он не прочистит рубин первым). Но чтобы вы начали здесь, это очень простая версия. Вам нужно будет добавить поддержку массивов и чисел и символов подчеркивания. { key: [] }

var regex = /:(\w*)\s?(=>)\s?("\w*")/gi; 
var string = '{ :name => "james", :lastname => "rogers" }'; 

string.replace(regex, "$1: $3"); 
//=> '{ name: "james", lastname: "rogers" }' 

Читайте на обратных ссылок в регулярных выражениях: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references

+0

Спасибо '{: a =>" b ",: b => [: test => true],: c => 12}' это то, что я пытаюсь получить – jamesjamesjames2015

+0

Это то, что у меня есть - но не работает 100% 'var regex =/([^ \:]) \: ([a-zA-Z_0-9] + [\? \!]?) (\ S *) = \> (\ S *) /; ' – jamesjamesjames2015

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