aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/miglayout/internal/internal.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/miglayout/internal/internal.clj')
-rw-r--r--src/clojure/contrib/miglayout/internal/internal.clj50
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)))