public Event produce() { // Parse an implicit document. if (!scanner.checkToken(Token.ID.Directive, Token.ID.DocumentStart, Token.ID.StreamEnd)) { directives = new VersionTagsTuple(null, DEFAULT_TAGS); Token token = scanner.peekToken(); Mark startMark = token.getStartMark(); Mark endMark = startMark; Event event = new DocumentStartEvent(startMark, endMark, false, null, null); // Prepare the next state. states.push(new ParseDocumentEnd()); state = new ParseBlockNode(); return event; } else { Production p = new ParseDocumentStart(); return p.produce(); } }
public void serialize(Node node) throws IOException { if (closed == null) { throw new SerializerException("serializer is not opened"); } else if (closed) { throw new SerializerException("serializer is closed"); } this.emitter.emit(new DocumentStartEvent(null, null, this.explicitStart, this.useVersion, useTags)); anchorNode(node); if (explicitRoot != null) { node.setTag(explicitRoot); } serializeNode(node, null); this.emitter.emit(new DocumentEndEvent(null, null, this.explicitEnd)); this.serializedNodes.clear(); this.anchors.clear(); }
private boolean needEvents(int count) { int level = 0; Iterator<Event> iter = events.iterator(); iter.next(); while (iter.hasNext()) { Event event = iter.next(); if (event instanceof DocumentStartEvent || event instanceof CollectionStartEvent) { level++; } else if (event instanceof DocumentEndEvent || event instanceof CollectionEndEvent) { level--; } else if (event instanceof StreamEndEvent) { level = -1; } if (level < 0) { return false; } } return events.size() < count + 1; }
private boolean needMoreEvents() { if (this.events.isEmpty()) { return true; } Event event = this.events.peek(); if (event instanceof DocumentStartEvent) { return this.needEvents(1); } else if (event instanceof SequenceStartEvent) { return this.needEvents(2); } else if (event instanceof MappingStartEvent) { return this.needEvents(3); } else { return false; } }
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 serialize(Node node) throws IOException { if (closed == null) { throw new SerializerException("serializer is not opened"); } else if (closed) { throw new SerializerException("serializer is closed"); } this.emitter.emit(new DocumentStartEvent(null, null, this.explicitStart, this.useVersion, useTags)); anchorNode(node); if (explicitRoot != null) { node.setTag(explicitRoot); } serializeNode(node, null); this.emitter.emit(new DocumentEndEvent(null, null, this.explicitEnd)); this.serializedNodes.clear(); this.anchors.clear(); this.lastAnchorId = 0; }
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)); }
@Override public Event produce() { // Parse an implicit document. if (!scanner.checkToken(Token.ID.Directive, Token.ID.DocumentStart, Token.ID.StreamEnd)) { directives = new VersionTagsTuple(null, DEFAULT_TAGS); Token token = scanner.peekToken(); Mark startMark = token.getStartMark(); Mark endMark = startMark; Event event = new DocumentStartEvent(startMark, endMark, false, null, null); // Prepare the next state. states.push(new ParseDocumentEnd()); state = new ParseBlockNode(); return event; } else { Production p = new ParseDocumentStart(); return p.produce(); } }
public void serialize(final Node node) throws IOException { if (closed == null) { throw new SerializerException("serializer is not opened"); } else if (closed) { throw new SerializerException("serializer is closed"); } this.emitter.emit(new DocumentStartEvent(null, null, this.explicitStart, this.useVersion, useTags)); anchorNode(node); if (explicitRoot != null) { node.setTag(explicitRoot); } serializeNode(node, null); this.emitter.emit(new DocumentEndEvent(null, null, this.explicitEnd)); this.serializedNodes.clear(); this.anchors.clear(); this.lastAnchorId = 0; }
private boolean needMoreEvents() { if (events.isEmpty()) { return true; } Event event = events.peek(); if (event instanceof DocumentStartEvent) { return needEvents(1); } else if (event instanceof SequenceStartEvent) { return needEvents(2); } else if (event instanceof MappingStartEvent) { return needEvents(3); } else { return false; } }
private boolean needEvents(int count) { int level = 0; Iterator<Event> iter = this.events.iterator(); iter.next(); while (iter.hasNext()) { Event event = iter.next(); if ((event instanceof DocumentStartEvent) || (event instanceof CollectionStartEvent)) { level++; } else if ((event instanceof DocumentEndEvent) || (event instanceof CollectionEndEvent)) { level--; } else if (event instanceof StreamEndEvent) { level = - 1; } if (level < 0) { return false; } } return this.events.size() < (count + 1); }
public void serialize(Node node) throws IOException { if (this.closed == null) { throw new SerializerException("serializer is not opened"); } if (this.closed) { throw new SerializerException("serializer is closed"); } // if (this.explicitRoot != null) // { // if (this.explicitRoot.getValue().startsWith(Tag.PREFIX)) // { // try // { // Class<?> type = Class.forName(this.explicitRoot.getClassName(), false, Thread.currentThread().getContextClassLoader()); // node.setType(type); // } // catch (Exception ignored) // { // } // } // } this.emitter.emit(new DocumentStartEvent(null, null, this.explicitStart, this.useVersion, this.useTags)); this.anchorNode(node); if (this.explicitRoot != null) { node.setTag(this.explicitRoot); } this.emitter.writeComment(this.comments.getHeader(), 0, 1); this.serializeNode(node, null, new LinkedList<>(), false); this.emitter.writeComment(this.comments.getFooter(), 2, 0); this.emitter.emit(new DocumentEndEvent(null, null, this.explicitEnd)); this.serializedNodes.clear(); this.anchors.clear(); }
public void testWriteSupplementaryUnicode() throws IOException { DumperOptions options = new DumperOptions(); String burger = new String(Character.toChars(0x1f354)); String halfBurger = "\uD83C"; StringWriter output = new StringWriter(); Emitter emitter = new Emitter(output, options); emitter.emit(new StreamStartEvent(null, null)); emitter.emit(new DocumentStartEvent(null, null, false, null, null)); emitter.emit(new ScalarEvent(null, null, new ImplicitTuple(true, false), burger + halfBurger, null, null, '"')); String expected = "! \"\\U0001f354\\ud83c\""; assertEquals(expected, output.toString()); }
private void parseDocument() { if (scanner.checkToken(Token.ID.Directive)) { scanner.getToken(Token.ID.Directive); } scanner.getToken(Token.ID.DocumentStart); events.add(new DocumentStartEvent(null, null, true, Version.V1_1, null)); parseNode(); events.add(new DocumentEndEvent(null, null, true)); }
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)); 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)); }