0

次のようなコードがある場合:

(apply + 0
   [1 2 3 4])

それをリーダーに通すと、

(apply + 0 [1 2 3 4])書式設定 (キャリッジ リターンとスペース) が失われます

コードが読み取られたときにコードのフォーマットを保存する方法はありますか?


例えば:

(fact [{:type :section
        :title "Normal Operation"
        :tag "normal-operation"}]

  "The most straightforward code is one where no issues raised. This
   can be seen in Example {{ribol-normal-eq}} below:"

  [{:type :image :href "ribol-normal.png"}]

  [[{:tag "ribol-normal-eq"}]]
  (manage                          ;; L2
   [1 2 (manage 3)])               ;; L1 and L0
  => [1 2 3]

次のように変換されます。

1 - 通常の操作

最も単純なコードは、問題が発生しないコードです。これは、以下の例 1.1 で確認できます。

[[ribol-normal.png]]

1.1

(manage                          ;; L2
   [1 2 (manage 3)])             ;; L1 and L0

=> [1 2 3]
4

2 に答える 2

1

とともに使用clojure.pprint/writecode-dispatchます。

(clojure.pprint/write
  '(apply + 0 [1 2 3 4])
  :dispatch clojure.pprint/code-dispatch)

適用フォームが短すぎ、最後の引数のみの改行が非常に恣意的であるため、希望するインデントが得られません。ただし、Clojure コードを出力したい場合は、これが正しい方法です。let- やその他のさまざまなフォームを正しく出力します。

これは長い形式の例です

(clojure.pprint/write
  '(defn plugin
     "A leiningen plugin project template."
     [name]
     (let [render (renderer "plugin")
           unprefixed (if (.startsWith name "lein-")
                        (subs name 5)
                        name)
           data {:name name,
                 :unprefixed-name unprefixed,
                 :sanitized (sanitize unprefixed),
                 :year (year)}]
       (main/info
         (str "Generating a fresh Leiningen plugin called " name "."))
       (->files
         data
         ["project.clj" (render "project.clj" data)]
         ["README.md" (render "README.md" data)]
         [".gitignore" (render "gitignore" data)]
         ["src/leiningen/{{sanitized}}.clj" (render "name.clj" data)]
         ["LICENSE" (render "LICENSE" data)])))
  :dispatch
  clojure.pprint/code-dispatch)

=>

(defn plugin
  "A leiningen plugin project template."
  [name]
  (let [render (renderer "plugin")
        unprefixed (if (.startsWith name "lein-") (subs name 5) name)
        data {:name name,
              :unprefixed-name unprefixed,
              :sanitized (sanitize unprefixed),
              :year (year)}]
    (main/info
      (str "Generating a fresh Leiningen plugin called " name "."))
    (->files
      data
      ["project.clj" (render "project.clj" data)]
      ["README.md" (render "README.md" data)]
      [".gitignore" (render "gitignore" data)]
      ["src/leiningen/{{sanitized}}.clj" (render "name.clj" data)]
      ["LICENSE" (render "LICENSE" data)])))
于 2013-08-12T11:16:57.297 に答える