diff options
author | scgilardi <scgilardi@gmail.com> | 2008-10-13 21:05:10 +0000 |
---|---|---|
committer | scgilardi <scgilardi@gmail.com> | 2008-10-13 21:05:10 +0000 |
commit | c7791c8b95a6471d2abb1ca0831e25a1923ca83e (patch) | |
tree | 514f2df157d0eb76e9a262a192ab056be1c41f45 /src/clojure/contrib/miglayout/internal/internal.clj | |
parent | e0d51e894300f727081f75eda20f3ad4eb2335d7 (diff) |
miglayout: clean up implementation, :layout, :column, and :row are now pseudo-components taking inline constraints like components do
Diffstat (limited to 'src/clojure/contrib/miglayout/internal/internal.clj')
-rw-r--r-- | src/clojure/contrib/miglayout/internal/internal.clj | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/clojure/contrib/miglayout/internal/internal.clj b/src/clojure/contrib/miglayout/internal/internal.clj new file mode 100644 index 00000000..045714b6 --- /dev/null +++ b/src/clojure/contrib/miglayout/internal/internal.clj @@ -0,0 +1,50 @@ +;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and +;; distribution terms for this software are covered by the Common Public +;; License 1.0 (http://opensource.org/licenses/cpl.php) which can be found +;; in the file CPL.TXT at the root of this distribution. By using this +;; software in any fashion, you are agreeing to be bound by the terms of +;; this license. You must not remove this notice, or any other, from this +;; software. +;; +;; internal.clj +;; +;; Internal functions for 'clojure.contrib.miglayout + +(ns clojure.contrib.miglayout.internal + (:import (java.awt Container Component))) + +(defn format-constraints + "Formats constraints expressed as a series of strings, keywords, vectors + and/or maps into strings for miglayout." + [& constraints] + (loop [[c & cs] constraints + cv []] + (if c + (recur cs (concat cv [", "] + (cond (or (string? c) (keyword? c)) + [c] + (vector? c) + (interpose " " c) + (map? c) + (apply concat (interpose [", "] (map #(interpose " " %) c))) + :else + (throw + (IllegalArgumentException. + (format "unrecognized constraint: %s (%s)" c (class c))))))) + (apply str (map #((if (keyword? %) name str) %) (rest cv)))))) + +(defn component? + [x] + (instance? Component x)) + +(defn keyword-item? + [x] + (#{:layout :column :row} x)) + +(defn item? + [x] + (or (component? x) (keyword-item? x))) + +(defn constraint? + [x] + (not (item? x))) |