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

Method doFormat

src/jvm/clojure/lang/RT.java:2119–2170  ·  view source on GitHub ↗
(Writer w, String s, ISeq args)

Source from the content-addressed store, hash-verified

2117}
2118
2119static public ISeq doFormat(Writer w, String s, ISeq args) throws IOException{
2120 for(int i = 0; i < s.length();) {
2121 char c = s.charAt(i++);
2122 switch(Character.toLowerCase(c)) {
2123 case '~':
2124 char d = s.charAt(i++);
2125 switch(Character.toLowerCase(d)) {
2126 case '%':
2127 w.write('\n');
2128 break;
2129 case 't':
2130 w.write('\t');
2131 break;
2132 case 'a':
2133 if(args == null)
2134 throw new IllegalArgumentException("Missing argument");
2135 RT.formatAesthetic(w, RT.first(args));
2136 args = RT.next(args);
2137 break;
2138 case 's':
2139 if(args == null)
2140 throw new IllegalArgumentException("Missing argument");
2141 RT.formatStandard(w, RT.first(args));
2142 args = RT.next(args);
2143 break;
2144 case '{':
2145 int j = s.indexOf("~}", i); //note - does not nest
2146 if(j == -1)
2147 throw new IllegalArgumentException("Missing ~}");
2148 String subs = s.substring(i, j);
2149 for(ISeq sargs = RT.seq(RT.first(args)); sargs != null;)
2150 sargs = doFormat(w, subs, sargs);
2151 args = RT.next(args);
2152 i = j + 2; //skip ~}
2153 break;
2154 case '^':
2155 if(args == null)
2156 return null;
2157 break;
2158 case '~':
2159 w.write('~');
2160 break;
2161 default:
2162 throw new IllegalArgumentException("Unsupported ~ directive: " + d);
2163 }
2164 break;
2165 default:
2166 w.write(c);
2167 }
2168 }
2169 return args;
2170}
2171///////////////////////////////// values //////////////////////////
2172
2173static public Object[] setValues(Object... vals){

Callers 1

formatMethod · 0.95

Calls 8

formatAestheticMethod · 0.95
firstMethod · 0.95
nextMethod · 0.95
formatStandardMethod · 0.95
seqMethod · 0.95
writeMethod · 0.80
lengthMethod · 0.65
indexOfMethod · 0.45

Tested by

no test coverage detected