Move parser to Kotlin

This commit is contained in:
Bradlee Speice
2014-09-10 22:41:34 -04:00
parent 3d8ff65af4
commit f05e50292e
3 changed files with 37 additions and 84 deletions

View File

@ -0,0 +1,36 @@
package org.bspeice.minimalbible.service.format.osisparser
import org.xml.sax.helpers.DefaultHandler
import org.crosswire.jsword.passage.Verse
import java.util.ArrayDeque
import org.xml.sax.Attributes
import org.crosswire.jsword.book.OSISUtil
/**
* Created by bspeice on 9/10/14.
*/
class OsisParser(v: Verse) : DefaultHandler() {
val verseContent = VerseContent(v)
val doWrite = ArrayDeque<Boolean>()
// Android Studio complains about compilation, but the method
// has @NotNull annotations, so we program for those.
override fun startElement(uri: String, localName: String, qName: String, attributes: Attributes) {
if (localName.equals(OSISUtil.OSIS_ELEMENT_VERSE))
doWrite.push(true)
else
doWrite.push(false)
}
// Android Studio complains about compilation, but the method
// has @NotNull annotations, so we program for those.
override fun endElement(uri: String?, localName: String, qName: String) {
doWrite.pop()
}
override fun characters(ch: CharArray?, start: Int, length: Int) {
if (doWrite.peek() as Boolean)
verseContent.appendContent(String(ch as CharArray))
}
}