Я пытаюсь внести некоторые изменения в этот скрипт. Этот метод дается:
(defn- emit-class!
[[class fields]]
(let [vals {:view? (:view? class)
:type (if (:view? class) "View" "Object")
:package (:package class)
:name (str (:dollar-name class) Icepick/SUFFIX)
:target (:dotted-name class)
:parent (if-let [parent (:qualified-parent-name class)]
(str parent Icepick/SUFFIX)
(if (:view? class) "View" "Object"))
:fields fields}
file-name (str (:package class) "." (:dollar-name class) Icepick/SUFFIX)
file-object (file-object file-name (:element class))]
(doto (.openWriter file-object)
(.write (mustache/render-string template vals))
(.flush)
(.close))))
Насколько я понимаю, этот код fields
представляет собой список, содержащий карты. Если я распечатаю содержимое с помощью
(doseq [fff fields
[k v] fff]
(info (str k " " fff)))
Затем я получаю этот контент
{
:name "counterAlt",
:enclosing-class
{
:package "com.some.package",
:dotted-name "DemoPresenter",
:dollar-name "DemoPresenter",
:annote (#object[com.sun.tools.javac.code.Attribute$Compound 0x6054b6e "@com.Bla"]),
:elem #object[com.sun.tools.javac.code.Symbol$ClassSymbol 0x21312e84 "com.evernote.android.common.demo.DemoPresenter"],
:view? false,
:qualified-parent-name nil
},
:bundler false,
:method "Int"
}
Что я пытаюсь сделать, так это добавить еще одно значение, называемое fieldsCapitalize
, к переменной vals
, где карты в списке точно такие же, но только name
пишется с большой буквы. В этом примере counterAlt
должно стать CounterAlt
.
У меня есть функция капитализации, но я не могу создать другой список с обновленными картами. Каков наилучший способ добиться этого в этой функции?