mirror of
https://github.com/MinimalBible/MinimalBible
synced 2024-12-25 16:18:17 -05:00
Basic quote handling
Handling quotation marks and spacing are going to be interesting
This commit is contained in:
parent
3bb9d61ff9
commit
7bcb676532
@ -16,16 +16,22 @@ import dagger.ObjectGraph;
|
||||
* Set up the application!
|
||||
*/
|
||||
public class MinimalBible extends Application implements Injector {
|
||||
private String TAG = "MinimalBible";
|
||||
private static Context mContext;
|
||||
private ObjectGraph mObjectGraph;
|
||||
|
||||
public static MinimalBible get(Context ctx) {
|
||||
return (MinimalBible) ctx.getApplicationContext();
|
||||
}
|
||||
|
||||
public static Context getAppContext() {
|
||||
Logger.w("Statically accessing context, please refactor that.");
|
||||
return mContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
mContext = this;
|
||||
Logger.init().setLogLevel(LogLevel.NONE);
|
||||
buildObjGraph();
|
||||
setJswordHome();
|
||||
@ -52,10 +58,10 @@ public class MinimalBible extends Application implements Injector {
|
||||
// We need to set the download directory for jSword to stick with
|
||||
// Android.
|
||||
String home = this.getFilesDir().toString();
|
||||
Logger.d(TAG, "Setting jsword.home to: " + home);
|
||||
Logger.d("Setting jsword.home to: " + home);
|
||||
System.setProperty("jsword.home", home);
|
||||
System.setProperty("sword.home", home);
|
||||
SwordBookPath.setDownloadDir(new File(home));
|
||||
Logger.d(TAG, "Sword download path: " + SwordBookPath.getSwordDownloadDir());
|
||||
Logger.d("Sword download path: " + SwordBookPath.getSwordDownloadDir());
|
||||
}
|
||||
}
|
@ -1,18 +1,17 @@
|
||||
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
|
||||
import org.crosswire.jsword.book.BookData
|
||||
import org.crosswire.jsword.book.Book
|
||||
import kotlin.properties.Delegates
|
||||
import org.bspeice.minimalbible.service.format.osisparser.handler.TagHandler
|
||||
import org.bspeice.minimalbible.service.format.osisparser.handler.VerseHandler
|
||||
import org.bspeice.minimalbible.service.format.osisparser.handler.UnknownHandler
|
||||
import android.text.SpannableStringBuilder
|
||||
import org.bspeice.minimalbible.service.format.osisparser.handler.DivineHandler
|
||||
import org.bspeice.minimalbible.MinimalBible
|
||||
import org.bspeice.minimalbible.R
|
||||
import org.bspeice.minimalbible.service.format.osisparser.handler.*
|
||||
import org.crosswire.jsword.book.Book
|
||||
import org.crosswire.jsword.book.BookData
|
||||
import org.crosswire.jsword.book.OSISUtil
|
||||
import org.crosswire.jsword.passage.Verse
|
||||
import org.xml.sax.Attributes
|
||||
import org.xml.sax.helpers.DefaultHandler
|
||||
import java.util.ArrayDeque
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
/**
|
||||
* Parse out the OSIS XML into whatever we want!
|
||||
@ -56,12 +55,17 @@ class OsisParser() : DefaultHandler() {
|
||||
when (localName) {
|
||||
OSISUtil.OSIS_ELEMENT_VERSE -> handlerStack push VerseHandler()
|
||||
"divineName" -> handlerStack push DivineHandler()
|
||||
"q" -> handlerStack push QHandler(MinimalBible.getAppContext()
|
||||
.getResources().getColor(R.color.divineSpeech))
|
||||
else -> handlerStack push UnknownHandler(localName)
|
||||
}
|
||||
|
||||
handlerStack.peek().start(attributes, verseContent, builder)
|
||||
}
|
||||
|
||||
override fun endElement(uri: String, localName: String, qName: String) {
|
||||
handlerStack.pop()
|
||||
val tagHandler = handlerStack.pop()
|
||||
tagHandler.end(verseContent, builder)
|
||||
}
|
||||
|
||||
override fun characters(ch: CharArray, start: Int, length: Int) {
|
||||
|
@ -1,13 +1,18 @@
|
||||
package org.bspeice.minimalbible.service.format.osisparser.handler
|
||||
|
||||
import android.text.SpannableStringBuilder
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import android.text.style.RelativeSizeSpan
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import org.xml.sax.Attributes
|
||||
|
||||
/**
|
||||
* Created by bspeice on 12/1/14.
|
||||
*/
|
||||
class DivineHandler() : TagHandler {
|
||||
override fun end(info: VerseContent, builder: SpannableStringBuilder) {
|
||||
}
|
||||
|
||||
override fun start(attrs: Attributes, info: VerseContent,
|
||||
builder: SpannableStringBuilder) {
|
||||
}
|
||||
|
||||
override fun render(builder: SpannableStringBuilder, info: VerseContent, chars: String) {
|
||||
this buildDivineName chars forEach { it apply builder }
|
||||
}
|
||||
|
@ -0,0 +1,20 @@
|
||||
package org.bspeice.minimalbible.service.format.osisparser.handler
|
||||
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import org.xml.sax.Attributes
|
||||
|
||||
class QHandler(val color: Int) : TagHandler {
|
||||
|
||||
override fun start(attrs: Attributes, info: VerseContent, builder: SpannableStringBuilder) {
|
||||
}
|
||||
|
||||
override fun render(builder: SpannableStringBuilder, info: VerseContent, chars: String) {
|
||||
AppendArgs(chars, ForegroundColorSpan(color)) apply builder
|
||||
}
|
||||
|
||||
override fun end(info: VerseContent, builder: SpannableStringBuilder) {
|
||||
AppendArgs(" ", null) apply builder
|
||||
}
|
||||
}
|
@ -1,15 +1,14 @@
|
||||
package org.bspeice.minimalbible.service.format.osisparser.handler
|
||||
|
||||
import android.text.SpannableStringBuilder
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import android.text.style.CharacterStyle
|
||||
|
||||
/**
|
||||
* Created by bspeice on 12/1/14.
|
||||
*/
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import org.xml.sax.Attributes
|
||||
|
||||
trait TagHandler {
|
||||
fun start(attrs: Attributes, info: VerseContent, builder: SpannableStringBuilder)
|
||||
fun render(builder: SpannableStringBuilder, info: VerseContent, chars: String)
|
||||
fun end(info: VerseContent, builder: SpannableStringBuilder)
|
||||
}
|
||||
|
||||
data class AppendArgs(val text: String, val span: Any?) {
|
||||
@ -17,9 +16,9 @@ data class AppendArgs(val text: String, val span: Any?) {
|
||||
val offset = builder.length()
|
||||
builder.append(text)
|
||||
when (span) {
|
||||
is List<*> -> span.forEach { builder.setSpan(it, offset, offset + text.length, 0) }
|
||||
is CharacterStyle -> builder.setSpan(span, offset, offset + text.length, 0)
|
||||
is List<*> -> span.forEach { builder.setSpan(it, offset, offset + text.length(), 0) }
|
||||
is CharacterStyle -> builder.setSpan(span, offset, offset + text.length(), 0)
|
||||
}
|
||||
builder.setSpan(span, offset, offset + text.length, 0)
|
||||
builder.setSpan(span, offset, offset + text.length(), 0)
|
||||
}
|
||||
}
|
@ -3,11 +3,16 @@ package org.bspeice.minimalbible.service.format.osisparser.handler
|
||||
import android.text.SpannableStringBuilder
|
||||
import com.orhanobut.logger.Logger
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import org.xml.sax.Attributes
|
||||
|
||||
/**
|
||||
* Created by bspeice on 12/1/14.
|
||||
*/
|
||||
class UnknownHandler(val tagName: String) : TagHandler {
|
||||
override fun end(info: VerseContent, builder: SpannableStringBuilder) {
|
||||
}
|
||||
|
||||
override fun start(attrs: Attributes, info: VerseContent,
|
||||
builder: SpannableStringBuilder) {
|
||||
}
|
||||
|
||||
override fun render(builder: SpannableStringBuilder, info: VerseContent, chars: String) {
|
||||
Logger.w("Unknown tag '$tagName' received text: '$chars'")
|
||||
}
|
||||
|
@ -1,28 +1,28 @@
|
||||
package org.bspeice.minimalbible.service.format.osisparser.handler
|
||||
|
||||
import android.text.SpannableStringBuilder
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import android.text.style.StyleSpan
|
||||
import android.graphics.Typeface
|
||||
import android.text.style.SuperscriptSpan
|
||||
import android.text.SpannableStringBuilder
|
||||
import android.text.style.RelativeSizeSpan
|
||||
import android.text.style.StyleSpan
|
||||
import android.text.style.SuperscriptSpan
|
||||
import org.bspeice.minimalbible.service.format.osisparser.VerseContent
|
||||
import org.xml.sax.Attributes
|
||||
|
||||
/**
|
||||
* Created by bspeice on 12/1/14.
|
||||
*/
|
||||
class VerseHandler() : TagHandler {
|
||||
var isVerseStart = true
|
||||
|
||||
override fun render(builder: SpannableStringBuilder, info: VerseContent, chars: String) {
|
||||
buildVerseHeader(info.chapter, info.verseNum, isVerseStart) apply builder
|
||||
builder append chars
|
||||
isVerseStart = false
|
||||
override fun end(info: VerseContent, builder: SpannableStringBuilder) {
|
||||
}
|
||||
|
||||
fun buildVerseHeader(chapter: Int, verseNum: Int, verseStart: Boolean): AppendArgs =
|
||||
when {
|
||||
!verseStart -> AppendArgs("", null)
|
||||
verseNum == 1 -> AppendArgs("$chapter ", StyleSpan(Typeface.BOLD))
|
||||
else -> AppendArgs("${verseNum}", listOf(SuperscriptSpan(), RelativeSizeSpan(.75f)))
|
||||
}
|
||||
override fun start(attrs: Attributes, info: VerseContent,
|
||||
builder: SpannableStringBuilder) {
|
||||
when {
|
||||
info.verseNum == 1 -> AppendArgs("${info.chapter} ", StyleSpan(Typeface.BOLD))
|
||||
else -> AppendArgs("${info.verseNum}",
|
||||
listOf(SuperscriptSpan(), RelativeSizeSpan(.75f)))
|
||||
} apply builder
|
||||
}
|
||||
|
||||
override fun render(builder: SpannableStringBuilder, info: VerseContent, chars: String) {
|
||||
builder append chars
|
||||
}
|
||||
}
|
@ -13,4 +13,6 @@
|
||||
|
||||
<color name="settingsTextColor">@color/textColor</color>
|
||||
<color name="settingsTextColorSecondary">@color/textColorSecondary</color>
|
||||
|
||||
<color name="divineSpeech">@color/colorPrimary</color>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user