Я создаю приложение, в котором пользователи могут редактировать свой собственный CSS (в SCSS syntax). Это прекрасно работает, однако, в конечном итоге, я хочу, чтобы эти файлы CSS были «программируемыми», так что пользователи, которые не знают CSS, могут редактировать их в основном. Как?Ruby/Rails: определение переменных из обычного текста для обновления через форму
Если я могу отметить некоторые вещи как редактируемые, мне не нужно создавать невозможную схему базы данных. Например, у меня есть файл с именем СКС style.scss:
// @type color $header_bg_color: #555; // @type image $header_image: "http://someurl.com/image.jpg";
После этого я могу сделать это:
SomeParser.parse(contents of style.scss here)
Это возвращает хэш или что-то подобное переменных:
{:header_bg_color => {:type => "color", :value => "#555"}, :header_image => {:type => "image", :value => "http://someurl.com/image.jpg"} }
Я могу использовать вышеупомянутый хэш для создания формы, которую пользователь-новичок может использовать для изменения данных и отправки. Я считаю, что знаю, как сделать часть GET и POST.
Что было бы лучшим способом создать/настроить собственный анализатор, чтобы я мог читать комментарии и извлекать из этого переменные? А потом, снова обновите текстовый файл?
Другой возможный способ что-то вроде этого:
o = SomeParser.new(contents of style.scss here) o.header_bg_color #returns "#555" o.header_image = "http://anotherurl.com/image2.jpg" # "updates" or replaces the old header image variable with the new one o.render # returns the text with the new values
Спасибо заранее!
Вы уверены, что вы действительно хотите поместить метаданные (или любую другую машиночитаемую информацию) в комментарии? Запах немного. –
Я пытался подумать о других решениях, но не нашел. Видите ли, в зависимости от того, какие переменные CSS существуют, изменяемые переменные могут измениться. Я не хотел помещать переменные в базу данных и фиксировать переменные, потому что это означало бы тугое соединение между базой данных и стилем CSS. Это было бы не очень приятно, потому что это ограничило бы то, какой стиль CSS можно было бы сделать. –
Я снова прочитал ваш комментарий, и я думаю, что неправильно понял раньше. Ваш вопрос был не в том, что переменные находятся в тексте, но что метаданные были в комментариях? Я просто получил идею от некоторых автогенерирующих систем документирования, где они помещают описание перед методом, поэтому генератор знает, чтобы его поднять. –