Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 2e4f314ac4c32009b052f0bc39963111bee6f51e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*******************************************************************************
 * Copyright (c) 2013, 2015 Tasktop Technologies and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     David Green - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.wikitext.parser.builder;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.mylyn.wikitext.parser.Attributes;
import org.eclipse.mylyn.wikitext.parser.DocumentBuilder;
import org.eclipse.mylyn.wikitext.parser.builder.event.AcronymEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginBlockEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginDocumentEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginHeadingEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.BeginSpanEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.CharactersEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.CharactersUnescapedEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.DocumentBuilderEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.DocumentBuilderEvents;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndBlockEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndDocumentEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndHeadingEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EndSpanEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.EntityReferenceEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.HorizontalRuleEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.ImageEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.ImageLinkEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.LineBreakEvent;
import org.eclipse.mylyn.wikitext.parser.builder.event.LinkEvent;

/**
 * A {@link DocumentBuilder} that produces {@link DocumentBuilderEvents} as its output.
 *
 * @author david.green
 * @since 3.0
 */
public class EventDocumentBuilder extends DocumentBuilder {
	private final List<DocumentBuilderEvent> events = new ArrayList<>();

	/**
	 * Provides the {@link DocumentBuilderEvents} that were created as a result of using this builder.
	 *
	 * @return the events
	 */
	public DocumentBuilderEvents getDocumentBuilderEvents() {
		return new DocumentBuilderEvents(events);
	}

	@Override
	public void beginDocument() {
		events.add(new BeginDocumentEvent());
	}

	@Override
	public void endDocument() {
		events.add(new EndDocumentEvent());
	}

	@Override
	public void beginBlock(BlockType type, Attributes attributes) {
		events.add(new BeginBlockEvent(type, attributes));
	}

	@Override
	public void endBlock() {
		events.add(new EndBlockEvent());
	}

	@Override
	public void beginSpan(SpanType type, Attributes attributes) {
		events.add(new BeginSpanEvent(type, attributes));
	}

	@Override
	public void endSpan() {
		events.add(new EndSpanEvent());
	}

	@Override
	public void beginHeading(int level, Attributes attributes) {
		events.add(new BeginHeadingEvent(level, attributes));
	}

	@Override
	public void endHeading() {
		events.add(new EndHeadingEvent());
	}

	@Override
	public void characters(String text) {
		events.add(new CharactersEvent(text));
	}

	@Override
	public void entityReference(String entity) {
		events.add(new EntityReferenceEvent(entity));
	}

	@Override
	public void image(Attributes attributes, String url) {
		events.add(new ImageEvent(attributes, url));
	}

	@Override
	public void link(Attributes attributes, String hrefOrHashName, String text) {
		events.add(new LinkEvent(attributes, hrefOrHashName, text));
	}

	@Override
	public void imageLink(Attributes linkAttributes, Attributes imageAttributes, String href, String imageUrl) {
		events.add(new ImageLinkEvent(linkAttributes, imageAttributes, href, imageUrl));
	}

	@Override
	public void acronym(String text, String definition) {
		events.add(new AcronymEvent(text, definition));
	}

	@Override
	public void lineBreak() {
		events.add(new LineBreakEvent());
	}

	@Override
	public void horizontalRule() {
		events.add(new HorizontalRuleEvent());
	}

	@Override
	public void charactersUnescaped(String literal) {
		events.add(new CharactersUnescapedEvent(literal));
	}

}

Back to the top