protected List<Event> canonicalParse(InputStream input2) throws IOException { StreamReader reader = new StreamReader(new UnicodeReader(input2)); StringBuilder buffer = new StringBuilder(); while (reader.peek() != '\0') { buffer.append(reader.peek()); reader.forward(); } CanonicalParser parser = new CanonicalParser(buffer.toString()); List<Event> result = new ArrayList<Event>(); while (parser.peekEvent() != null) { result.add(parser.getEvent()); } input2.close(); return result; }
/** * Parse a YAML stream and produce parsing events. * * @see <a href="http://yaml.org/spec/1.1/#id859333">Processing Overview</a> * @param yaml * YAML document(s) * @return parsed events */ public Iterable<Event> parse(Reader yaml) { final Parser parser = new ParserImpl(new StreamReader(yaml)); Iterator<Event> result = new Iterator<Event>() { public boolean hasNext() { return parser.peekEvent() != null; } public Event next() { return parser.getEvent(); } public void remove() { throw new UnsupportedOperationException(); } }; return new EventIterable(result); }
public Node representData(Object data) { Tag tag = Tag.STR; Character style = null; String value = data.toString(); if (StreamReader.NON_PRINTABLE.matcher(value).find()) { tag = Tag.BINARY; char[] binary; try { binary = Base64Coder.encode(value.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { throw new YAMLException(e); } value = String.valueOf(binary); style = '|'; } // if no other scalar style is explicitly set, use literal style for // multiline scalars if (defaultScalarStyle == null && MULTILINE_PATTERN.matcher(value).find()) { style = '|'; } return representScalar(tag, value, style); }
/** * Parse all YAML documents in a String and produce corresponding Java * objects. The documents are parsed only when the iterator is invoked. * * @param yaml * YAML data to load from (BOM must not be present) * @return an iterator over the parsed Java objects in this String in proper * sequence */ public Iterable<Object> loadAll(Reader yaml) { Composer composer = new Composer(new ParserImpl(new StreamReader(yaml)), resolver); constructor.setComposer(composer); Iterator<Object> result = new Iterator<Object>() { public boolean hasNext() { return constructor.checkData(); } public Object next() { return constructor.getData(); } public void remove() { throw new UnsupportedOperationException(); } }; return new YamlIterable(result); }
/** * Parse all YAML documents in a stream and produce corresponding * representation trees. * * @see <a href="http://yaml.org/spec/1.1/#id859333">Processing Overview</a> * @param yaml * stream of YAML documents * @return parsed root Nodes for all the specified YAML documents */ public Iterable<Node> composeAll(Reader yaml) { final Composer composer = new Composer(new ParserImpl(new StreamReader(yaml)), resolver); constructor.setComposer(composer); Iterator<Node> result = new Iterator<Node>() { public boolean hasNext() { return composer.checkNode(); } public Node next() { return composer.getNode(); } public void remove() { throw new UnsupportedOperationException(); } }; return new NodeIterable(result); }
/** * Parse the only YAML document in a stream as configuration object. * * @param template * template of config object. * @param io * data to load from (BOM must not be present) * @param <T> * type of config object. * * @return parsed object */ @SuppressWarnings("unchecked") @Nullable public <T extends Config> T fromYaml(ConfigTemplate<T> template, Reader io) { ClassLoader old = Thread.currentThread().getContextClassLoader(); if (old == null) { Thread.currentThread().setContextClassLoader(template.getConfigType().getClassLoader()); } try { Composer composer = new Composer(new ParserImpl(new StreamReader(io)), new ConfigTemplateResolver(template)); this.constructor.setComposer(composer); return (T) this.constructor.getSingleData(template.getConfigType()); } finally { if (old == null) { Thread.currentThread().setContextClassLoader(null); } } }
@Nullable private Object loadFromReader(StreamReader sreader, Class<?> type) { ClassLoader old = Thread.currentThread().getContextClassLoader(); if (old == null) { Thread.currentThread().setContextClassLoader(type.getClassLoader()); } try { Composer composer = new Composer(new ParserImpl(sreader), this.resolver); this.constructor.setComposer(composer); return this.constructor.getSingleData(type); } finally { if (old == null) { Thread.currentThread().setContextClassLoader(null); } } }
public void testGetEvent() { String data = "string: abcd"; StreamReader reader = new StreamReader(data); Parser parser = new ParserImpl(reader); Mark dummyMark = new Mark("dummy", 0, 0, 0, "", 0); LinkedList<Event> etalonEvents = new LinkedList<Event>(); etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); etalonEvents.add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, Boolean.FALSE)); etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "string", dummyMark, dummyMark, (char) 0)); etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "abcd", dummyMark, dummyMark, (char) 0)); etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark)); etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); check(etalonEvents, parser); }
public void testGetEvent2() { String data = "american:\n - Boston Red Sox"; StreamReader reader = new StreamReader(data); Parser parser = new ParserImpl(reader); Mark dummyMark = new Mark("dummy", 0, 0, 0, "", 0); LinkedList<Event> etalonEvents = new LinkedList<Event>(); etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); etalonEvents .add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, Boolean.TRUE)); etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "american", dummyMark, dummyMark, (char) 0)); etalonEvents.add(new SequenceStartEvent(null, null, true, dummyMark, dummyMark, Boolean.FALSE)); etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "Boston Red Sox", dummyMark, dummyMark, (char) 0)); etalonEvents.add(new SequenceEndEvent(dummyMark, dummyMark)); etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark)); etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); check(etalonEvents, parser); }
public void testGetToken() { String data = "string: abcd"; StreamReader reader = new StreamReader(data); Scanner scanner = new ScannerImpl(reader); Mark dummy = new Mark("dummy", 0, 0, 0, "", 0); LinkedList<Token> etalonTokens = new LinkedList<Token>(); etalonTokens.add(new StreamStartToken(dummy, dummy)); etalonTokens.add(new BlockMappingStartToken(dummy, dummy)); etalonTokens.add(new KeyToken(dummy, dummy)); etalonTokens.add(new ScalarToken("string", true, dummy, dummy, (char) 0)); etalonTokens.add(new ValueToken(dummy, dummy)); etalonTokens.add(new ScalarToken("abcd", true, dummy, dummy, (char) 0)); etalonTokens.add(new BlockEndToken(dummy, dummy)); etalonTokens.add(new StreamEndToken(dummy, dummy)); while (!etalonTokens.isEmpty() && scanner.checkToken(etalonTokens.get(0).getTokenId())) { assertEquals(etalonTokens.removeFirst(), scanner.getToken()); } assertFalse("Must contain no more tokens: " + scanner.getToken(), scanner.checkToken(new Token.ID[0])); }
@Override public Iterable<Object> loadAll(Reader yaml) { StreamReader reader = new StreamReader(yaml); StringBuilder buffer = new StringBuilder(); while (reader.peek() != '\0') { buffer.append(reader.peek()); reader.forward(); } CanonicalParser parser = new CanonicalParser(buffer.toString()); Composer composer = new Composer(parser, resolver); this.constructor.setComposer(composer); Iterator<Object> result = new Iterator<Object>() { public boolean hasNext() { return constructor.checkData(); } public Object next() { return constructor.getData(); } public void remove() { throw new UnsupportedOperationException(); } }; return new YamlIterable(result); }
public void testGetEvent() { String data = "string: abcd"; StreamReader reader = new StreamReader(data); Parser parser = new ParserImpl(reader); Mark dummyMark = new Mark("dummy", 0, 0, 0, "", 0); LinkedList<Event> etalonEvents = new LinkedList<Event>(); etalonEvents.add(new StreamStartEvent(dummyMark, dummyMark)); etalonEvents.add(new DocumentStartEvent(dummyMark, dummyMark, false, null, null)); etalonEvents.add(new MappingStartEvent(null, null, true, dummyMark, dummyMark, Boolean.FALSE)); etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "string", dummyMark, dummyMark, (char) 0)); etalonEvents.add(new ScalarEvent(null, null, new ImplicitTuple(true, false), "abcd", dummyMark, dummyMark, (char) 0)); etalonEvents.add(new MappingEndEvent(dummyMark, dummyMark)); etalonEvents.add(new DocumentEndEvent(dummyMark, dummyMark, false)); etalonEvents.add(new StreamEndEvent(dummyMark, dummyMark)); while (parser.checkEvent(null)) { Event event = parser.getEvent(); if (etalonEvents.isEmpty()) { fail("unexpected event: " + event); } assertEquals(etalonEvents.removeFirst(), event); } assertFalse("Must contain no more events: " + parser.getEvent(), parser.checkEvent(null)); }
protected List<Event> parse(InputStream input) throws IOException { StreamReader reader = new StreamReader(new UnicodeReader(input)); Parser parser = new ParserImpl(reader); List<Event> result = new ArrayList<Event>(); while (parser.peekEvent() != null) { result.add(parser.getEvent()); } input.close(); return result; }
private List<Node> compose_all(InputStream file) { Composer composer = new Composer(new ParserImpl(new StreamReader(new UnicodeReader(file))), new Resolver()); List<Node> documents = new ArrayList<Node>(); while (composer.checkNode()) { documents.add(composer.getNode()); } return documents; }
public Iterable<Node> composeAll(StreamReader yaml) { final Composer composer = new Composer(new ParserImpl(yaml), resolver); constructor.setComposer(composer); final Iterator<Node> result = new Iterator<Node>() { public boolean hasNext() { return composer.checkNode(); } public Node next() { return composer.getNode(); } public void remove() { throw new UnsupportedOperationException(); } }; return new Iterable<Node>() { public Iterator<Node> iterator() { return result; } }; }
@Override public Node representData(final Object data) { Tag tag = Tag.STR; Character style = null; String value = data.toString(); if (StreamReader.NON_PRINTABLE.matcher(value).find()) { tag = Tag.BINARY; char[] binary; try { binary = Base64Coder.encode(value.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { throw new YAMLException(e); } value = String.valueOf(binary); style = '|'; } // if no other scalar style is explicitly set, use literal style for // multiline scalars if (defaultScalarStyle == null && MULTILINE_PATTERN.matcher(value).find()) { style = '|'; } return representScalar(tag, value, style); }
/** * Parse all YAML documents in a String and produce corresponding Java objects. The documents are parsed only when the iterator is * invoked. * * @param yaml * YAML data to load from (BOM must not be present) * @return an iterator over the parsed Java objects in this String in proper sequence */ public Iterable<Object> loadAll(final Reader yaml) { Composer composer = new Composer(new ParserImpl(new StreamReader(yaml)), resolver); constructor.setComposer(composer); Iterator<Object> result = new Iterator<Object>() { @Override public boolean hasNext() { return constructor.checkData(); } @Override public Object next() { return constructor.getData(); } @Override public void remove() { throw new UnsupportedOperationException(); } }; return new YamlIterable(result); }