CustomMarkPartHead.jape 2.05 KB
Newer Older
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
Imports: { import gateStandAlone.* ;}
Phase: MarkPart1Head
Input: Part Token SpaceToken num HeaderLabel OpenQuote
Options: control = appelt
Rule: DoMarkPart1Head
{SpaceToken.kind=="control"}((({Token.string=="PREMIERE"}):id{SpaceToken.kind=="space"}{Token.string=="PARTIE"}):num{SpaceToken.kind=="control"}((({SpaceToken.kind=="space"})?({Token.subkind=="dashpunct"}|{Token.string=="-"}))?({Token,!Token.string=="("}|{SpaceToken.kind=="space"})+({Token.string=="."})?):title):header{SpaceToken.kind=="control"}
-->
{
	AnnotationSet headerAnnotation = (AnnotationSet) bindings.get("header");
	Node headerStart = headerAnnotation.firstNode();
	Node headerEnd = headerAnnotation.lastNode();

	//create property id
	String id = "";
	AnnotationSet idAnnotation = (AnnotationSet) bindings.get("id");
	if (idAnnotation != null) 
	{
		Node idStart = idAnnotation.firstNode();
		Node idEnd = idAnnotation.lastNode();
		id = doc.getContent().toString().substring(idStart.getOffset().intValue(), idEnd.getOffset().intValue());
		id = GateHeaderConverter.convertExpression(id);
	}

	//create property title
	String title = "";
	AnnotationSet titleAnnotation = (AnnotationSet) bindings.get("title");
	if (titleAnnotation != null) 
	{
		Node titleStart = titleAnnotation.firstNode();
		Node titleEnd = titleAnnotation.lastNode();
		title = doc.getContent().toString().substring(titleStart.getOffset().intValue(), titleEnd.getOffset().intValue());
	}

	//create property num
	String num = "";
	AnnotationSet numAnnotation = (AnnotationSet) bindings.get("num");
	if (numAnnotation != null) 
	{
		Node numStart = numAnnotation.firstNode();
		Node numEnd = numAnnotation.lastNode();
		num = doc.getContent().toString().substring(numStart.getOffset().intValue(), numEnd.getOffset().intValue());
	}

	//create property ruleName
	String ruleName = "Part1Head";

	//create the new token
	FeatureMap features = Factory.newFeatureMap();
	features.put("id", id);
	features.put("title", title);
	features.put("num", num);
	features.put("ruleName", ruleName);
	outputAS.add(headerStart, headerEnd, "Part_Head", features);
}