MCPcopy Index your code
hub / github.com/clojure/clojure / print

Method print

src/jvm/clojure/lang/RT.java:1899–2053  ·  view source on GitHub ↗
(Object x, Writer w)

Source from the content-addressed store, hash-verified

1897}
1898
1899static public void print(Object x, Writer w) throws IOException{
1900 //call multimethod
1901 if(PRINT_INITIALIZED.isBound() && RT.booleanCast(PRINT_INITIALIZED.deref()))
1902 PR_ON.invoke(x, w);
1903//*
1904 else {
1905 boolean readably = booleanCast(PRINT_READABLY.deref());
1906 if(x instanceof Obj) {
1907 Obj o = (Obj) x;
1908 if(RT.count(o.meta()) > 0 &&
1909 ((readably && booleanCast(PRINT_META.deref()))
1910 || booleanCast(PRINT_DUP.deref()))) {
1911 IPersistentMap meta = o.meta();
1912 w.write("#^");
1913 if(meta.count() == 1 && meta.containsKey(TAG_KEY))
1914 print(meta.valAt(TAG_KEY), w);
1915 else
1916 print(meta, w);
1917 w.write(' ');
1918 }
1919 }
1920 if(x == null)
1921 w.write("nil");
1922 else if(x instanceof ISeq || x instanceof IPersistentList) {
1923 w.write('(');
1924 printInnerSeq(seq(x), w);
1925 w.write(')');
1926 }
1927 else if(x instanceof String) {
1928 String s = (String) x;
1929 if(!readably)
1930 w.write(s);
1931 else {
1932 w.write('"');
1933 //w.write(x.toString());
1934 for(int i = 0; i < s.length(); i++) {
1935 char c = s.charAt(i);
1936 switch(c) {
1937 case '\n':
1938 w.write("\\n");
1939 break;
1940 case '\t':
1941 w.write("\\t");
1942 break;
1943 case '\r':
1944 w.write("\\r");
1945 break;
1946 case '"':
1947 w.write("\\\"");
1948 break;
1949 case '\\':
1950 w.write("\\\\");
1951 break;
1952 case '\f':
1953 w.write("\\f");
1954 break;
1955 case '\b':
1956 w.write("\\b");

Callers 2

printStringMethod · 0.95
printInnerSeqMethod · 0.95

Calls 15

booleanCastMethod · 0.95
countMethod · 0.95
metaMethod · 0.95
printInnerSeqMethod · 0.95
seqMethod · 0.95
nextMethod · 0.95
firstMethod · 0.95
keyMethod · 0.95
valMethod · 0.95
writeMethod · 0.80
derefMethod · 0.65
invokeMethod · 0.65

Tested by

no test coverage detected