Проект, над которым я сейчас работаю, видел разных программистов из разных областей. После успешного написания чистого рецепта Capistrano для минимизации css и js файлов, я спрашиваю себя, как распознать различные шаблоны url, распространяемые по нашей базе кода css, переписать их все сразу, прежде чем они будут запущены.
Шаблоны, которые я ищу, являются
url('../../images/
url(../images/
url("../../../images/
url(images/
Итак, вот пример ввода:
.test{background:url('/images/test.jpg') no-repeat top left}.pouet{background:url("../../images/bg.png")}
Обратите внимание, что в некоторых случаях у нас есть кавычки, в других нет ...
И что я пытаюсь получить
.test{background:url('http://www.cdnImages.com/images/test.jpg') no-repeat top left}.pouet{background:url("http://www.cdnImages.com/images/bg.png")}
Все это должно быть заменено моим cdn url. Самое удивительное, как это сделать так, чтобы не допустить ошибок.
Я придумал регулярное выражение, которое соответствует моим потребностям: Rubular Permalink
Я смотрел на команду sed, используя ее следующим образом
sed '/url([^\/](.*?)images/http:\/\/www.cdnImages.com' myFile.css
но это не похоже на работу.
Мои текущие исследования привели меня к этому
find #{current_release}/public/static/css/ -name '*.css' | xargs sed -i 's@url\([^\/](.*?)images|static\/@#{images_cdn}@g'
и, хотя регулярное выражение идеально соответствует потребностям (проверьте здесь, чтобы увидеть перехваченный вывод , кажется, что-то где-то не так.
Есть идеи? Большое спасибо.