Осведомленная о синтаксисе замена подстроки

У меня есть строка, содержащая допустимую форму Clojure. Я хочу заменить часть его, точно так же, как с assoc-in, но обрабатывая целую строку как маркеры.

=> (assoc-in [:a [:b :c]] [1 0] :new)
[:a [:new :c]]
=> (assoc-in [:a 
                [:b,, :c]] [1 0] :new)
[:a [:new :c]]
=> (string-assoc-in "[:a 
                       [:b,, :c]]" [1 0] ":new")
"[:a 
   [:new,, :c]]"

Я хочу записать string-assoc-in. Обратите внимание, что его первыми и последними аргументами являются строки, и это сохраняет разрыв строки и запятые. Действительно ли это выполнимо в Clojure? Самая близкая вещь, которую я нашел, read который звонит clojure.lang.LispReader, но я не знаю как работы.

Я хочу использовать его, чтобы считать исходный файл Clojure и отобразить его с некоторыми модификациями, сохраняя структуру файла.

6
задан Adam Schmideg 12 August 2010 в 22:18
поделиться