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:
David Tulig 2014-12-27 14:41:34 -06:00
parent a21cd992c4
commit 1dbbd42862
3 changed files with 23 additions and 3 deletions

View file

@ -125,7 +125,11 @@
(let [rdr (clojure.lang.LineNumberingPushbackReader.
(java.io.FileReader.
(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
(throw (Exception.
(str

View 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")))))

View 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"]])