Addresses an issue where marginalia fails to parse a project.clj where
the first form in the file isn't "defproject". Instead of reading just the first line, parse-project-form will loop through the full file, stopping when defproject is found and then parse it as it always has.
This commit is contained in:
parent
a21cd992c4
commit
1dbbd42862
3 changed files with 23 additions and 3 deletions
|
@ -123,9 +123,13 @@
|
||||||
([path]
|
([path]
|
||||||
(try
|
(try
|
||||||
(let [rdr (clojure.lang.LineNumberingPushbackReader.
|
(let [rdr (clojure.lang.LineNumberingPushbackReader.
|
||||||
(java.io.FileReader.
|
(java.io.FileReader.
|
||||||
(java.io.File. path)))]
|
(java.io.File. path)))]
|
||||||
(parse-project-form (read rdr)))
|
(loop [line (read rdr)]
|
||||||
|
(let [found-project? (= 'defproject (first line))]
|
||||||
|
(if found-project?
|
||||||
|
(parse-project-form line)
|
||||||
|
(recur (read rdr))))))
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
(throw (Exception.
|
(throw (Exception.
|
||||||
(str
|
(str
|
||||||
|
|
6
test/marginalia/test/core.clj
Normal file
6
test/marginalia/test/core.clj
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
(ns marginalia.test.core
|
||||||
|
(:require marginalia.core)
|
||||||
|
(:use clojure.test))
|
||||||
|
|
||||||
|
(deftest parse-project-file-simple
|
||||||
|
(is (= "project-name" (:name (marginalia.core/parse-project-file "test/marginalia/test/multi-def-project.clj.txt")))))
|
10
test/marginalia/test/multi-def-project.clj.txt
Normal file
10
test/marginalia/test/multi-def-project.clj.txt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
(defn some-other-form
|
||||||
|
[]
|
||||||
|
(= 1 1))
|
||||||
|
|
||||||
|
(defproject project-name "0.1.0-SNAPSHOT"
|
||||||
|
:description "FIXME: write description"
|
||||||
|
:url "http://example.com/FIXME"
|
||||||
|
:license {:name "Eclipse Public License"
|
||||||
|
:url "http://www.eclipse.org/legal/epl-v10.html"}
|
||||||
|
:dependencies [[org.clojure/clojure "1.6.0"]])
|
Loading…
Reference in a new issue