1 package org.daisy.pipeline.nlp.calabash.impl;
2
3 import java.util.function.Predicate;
4
5 import net.sf.saxon.s9api.QName;
6 import net.sf.saxon.s9api.XdmNode;
7
8
9
10
11
12 public class FormatSpecifications {
13
14 public QName sentenceTag;
15 public QName wordTag;
16 public QName langAttr;
17 public Predicate<XdmNode> inlineElements;
18 public Predicate<XdmNode> ensureWordBefore;
19 public Predicate<XdmNode> ensureWordAfter;
20 public Predicate<XdmNode> ensureSentenceBefore;
21 public Predicate<XdmNode> ensureSentenceAfter;
22
23 FormatSpecifications(QName sentenceElement, QName wordElement,
24 String langNamespace, String langAttr, Predicate<XdmNode> inlineElements,
25 Predicate<XdmNode> ensureWordBefore, Predicate<XdmNode> ensureWordAfter,
26 Predicate<XdmNode> ensureSentenceBefore, Predicate<XdmNode> ensureSentenceAfter) {
27 sentenceTag = sentenceElement;
28 wordTag = wordElement;
29 this.langAttr = new QName(langNamespace, langAttr);
30 this.inlineElements = inlineElements.or(ensureWordBefore)
31 .or(ensureWordAfter)
32 .or(ensureSentenceBefore)
33 .or(ensureSentenceAfter)
34 .or(x -> wordTag.equals(x.getNodeName()));
35 this.ensureWordBefore = ensureWordBefore;
36 this.ensureWordAfter = ensureWordAfter;
37 this.ensureSentenceBefore = ensureSentenceBefore;
38 this.ensureSentenceAfter = ensureSentenceAfter;
39 }
40 }