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

Method invoke

src/jvm/clojure/lang/EdnReader.java:489–534  ·  view source on GitHub ↗
(Object reader, Object colon, Object opts)

Source from the content-addressed store, hash-verified

487
488public static class NamespaceMapReader extends AFn{
489 public Object invoke(Object reader, Object colon, Object opts) {
490 PushbackReader r = (PushbackReader) reader;
491
492 // Read ns symbol
493 Object sym = read(r, true, null, false, opts);
494 if (!(sym instanceof Symbol) || ((Symbol)sym).getNamespace() != null)
495 throw new RuntimeException("Namespaced map must specify a valid namespace: " + sym);
496 String ns = ((Symbol)sym).getName();
497
498 // Read map
499 int nextChar = read1(r);
500 while(isWhitespace(nextChar))
501 nextChar = read1(r);
502 if('{' != nextChar)
503 throw new RuntimeException("Namespaced map must specify a map");
504 List kvs = readDelimitedList('}', r, true, opts);
505 if((kvs.size() & 1) == 1)
506 throw Util.runtimeException("Namespaced map literal must contain an even number of forms");
507
508 // Construct output map
509 Object[] a = new Object[kvs.size()];
510 Iterator iter = kvs.iterator();
511 for(int i = 0; iter.hasNext(); i += 2) {
512 Object key = iter.next();
513 Object val = iter.next();
514
515 if(key instanceof Keyword) {
516 Keyword kw = (Keyword) key;
517 if (kw.getNamespace() == null) {
518 key = Keyword.intern(ns, kw.getName());
519 } else if (kw.getNamespace().equals("_")) {
520 key = Keyword.intern(null, kw.getName());
521 }
522 } else if(key instanceof Symbol) {
523 Symbol s = (Symbol) key;
524 if (s.getNamespace() == null) {
525 key = Symbol.intern(ns, s.getName());
526 } else if (s.getNamespace().equals("_")) {
527 key = Symbol.intern(null, s.getName());
528 }
529 }
530 a[i] = key;
531 a[i+1] = val;
532 }
533 return RT.map(a);
534 }
535}
536
537public static class DispatchReader extends AFn{

Callers

nothing calls this directly

Calls 15

runtimeExceptionMethod · 0.95
getNamespaceMethod · 0.95
internMethod · 0.95
getNameMethod · 0.95
getNamespaceMethod · 0.95
internMethod · 0.95
getNameMethod · 0.95
mapMethod · 0.95
getNamespaceMethod · 0.65
getNameMethod · 0.65
iteratorMethod · 0.65
nextMethod · 0.65

Tested by

no test coverage detected