summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-09-25 14:58:51 +0000
committerRich Hickey <richhickey@gmail.com>2006-09-25 14:58:51 +0000
commitfc795d4a8da2e9fc990037678b22a51475685600 (patch)
tree3168e4a2ef947394665c7a50c73825f5b27d950f /src
parent3a21d8fa903baed26643ac212626dbc17d26f859 (diff)
enhanced format
Diffstat (limited to 'src')
-rw-r--r--src/jvm/clojure/lang/RT.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index a528da17..ff1da8f0 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -13,14 +13,12 @@
package clojure.lang;
import java.util.Iterator;
-import java.io.Reader;
-import java.io.PushbackReader;
-import java.io.Writer;
-import java.io.IOException;
+import java.io.*;
public class RT{
static public Symbol T = Symbol.intern("t");
+ static public Var OUT = Namespace.intern("clojure","^out");
static public final Object[] EMPTY_ARRAY = new Object[]{};
static public final Character[] chars;
@@ -543,7 +541,21 @@ static public void formatStandard(Writer w,Object obj) throws IOException {
w.write(obj.toString());
}
-static public void format(Writer w, String s, ISeq args) throws Exception {
+static public Object format(Object o, String s, Object... args) throws Exception {
+ Writer w;
+ if(o == null)
+ w = new StringWriter();
+ else if(equal(o,T))
+ w = (Writer)OUT.getValue();
+ else
+ w = (Writer)o;
+ doFormat(w,s,ArraySeq.create(args));
+ if(o == null)
+ return w.toString();
+ return null;
+}
+
+static public void doFormat(Writer w, String s, ISeq args) throws Exception {
for (int i = 0; i < s.length();)
{
char c = s.charAt(i++);