mirror of https://github.com/minexew/Shrine.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
348 lines
6.9 KiB
348 lines
6.9 KiB
#help_index "God" |
|
U0 BibleInit() |
|
{ |
|
DefineLstLoad("ST_BIBLE_BOOKS", |
|
"Genesis\0" |
|
"Exodus\0" |
|
"Leviticus\0" |
|
"Numbers\0" |
|
"Deuteronomy\0" |
|
"Joshua\0" |
|
"Judges\0" |
|
"Ruth\0" |
|
"1 Samuel\0" |
|
"2 Samuel\0" |
|
"1 Kings\0" |
|
"2 Kings\0" |
|
"1 Chronicles\0" |
|
"2 Chronicles\0" |
|
"Ezra\0" |
|
"Nehemiah\0" |
|
"Esther\0" |
|
"Job\0" |
|
"Psalms\0" |
|
"Proverbs\0" |
|
"Ecclesiastes\0" |
|
"Song of Songs\0" |
|
"Isaiah\0" |
|
"Jeremiah\0" |
|
"Lamentations\0" |
|
"Ezekiel\0" |
|
"Daniel\0" |
|
"Hosea\0" |
|
"Joel\0" |
|
"Amos\0" |
|
"Obadiah\0" |
|
"Jonah\0" |
|
"Micah\0" |
|
"Nahum\0" |
|
"Habakkuk\0" |
|
"Zephaniah\0" |
|
"Haggai\0" |
|
"Zechariah\0" |
|
"Malachi\0" |
|
"Matthew\0" |
|
"Mark\0" |
|
"Luke\0" |
|
"John\0" |
|
"Acts\0" |
|
"Romans\0" |
|
"1 Corinthians\0" |
|
"2 Corinthians\0" |
|
"Galatians\0" |
|
"Ephesians\0" |
|
"Philippians\0" |
|
"Colossians\0" |
|
"1 Thessalonians\0" |
|
"2 Thessalonians\0" |
|
"1 Timothy\0" |
|
"2 Timothy\0" |
|
"Titus\0" |
|
"Philemon\0" |
|
"Hebrews\0" |
|
"James\0" |
|
"1 Peter\0" |
|
"2 Peter\0" |
|
"1 John\0" |
|
"2 John\0" |
|
"3 John\0" |
|
"Jude\0" |
|
"Revelation\0"); |
|
DefineLstLoad("ST_BIBLE_BOOK_LINES", |
|
"297\0" |
|
"5068\0" |
|
"9123\0" |
|
"12005\0" |
|
"15977\0" |
|
"19168\0" |
|
"21329\0" |
|
"23598\0" |
|
"23902\0" |
|
"26892\0" |
|
"29345\0" |
|
"32241\0" |
|
"34961\0" |
|
"37633\0" |
|
"40756\0" |
|
"41671\0" |
|
"42963\0" |
|
"43605\0" |
|
"46190\0" |
|
"53793\0" |
|
"56267\0" |
|
"56966\0" |
|
"57332\0" |
|
"61806\0" |
|
"66736\0" |
|
"67217\0" |
|
"71804\0" |
|
"73189\0" |
|
"73876\0" |
|
"74130\0" |
|
"74615\0" |
|
"74697\0" |
|
"74860\0" |
|
"75241\0" |
|
"75416\0" |
|
"75604\0" |
|
"75806\0" |
|
"75932\0" |
|
"76684\0" |
|
"76908\0" |
|
"79970\0" |
|
"81941\0" |
|
"85266\0" |
|
"87803\0" |
|
"90914\0" |
|
"92110\0" |
|
"93323\0" |
|
"94088\0" |
|
"94514\0" |
|
"94869\0" |
|
"95153\0" |
|
"95402\0" |
|
"95647\0" |
|
"95772\0" |
|
"96090\0" |
|
"96320\0" |
|
"96440\0" |
|
"96500\0" |
|
"97370\0" |
|
"97687\0" |
|
"97976\0" |
|
"98163\0" |
|
"98506\0" |
|
"98552\0" |
|
"98597\0" |
|
"98684\0" |
|
"100111\0"); |
|
DefinePrint("ST_BIBLE_LINES","%d", |
|
Str2I64(DefineSub(DefineCnt("ST_BIBLE_BOOK_LINES")-1, |
|
"ST_BIBLE_BOOK_LINES"))-1); |
|
} BibleInit; |
|
|
|
public U8 *BibleLine2Verse(I64 line,I64 separate_ch=CH_SPACE) |
|
{//Line number to verse str, Malloc()ed. |
|
//Separate with <SPACE> or ','. If you pass '%', it uses "%20". |
|
CDoc *doc; |
|
CDocEntry *doc_e; |
|
I64 i=0,cnt=DefineCnt("ST_BIBLE_BOOKS"),start=0,last_start=0; |
|
U8 *ptr=DefineSub(0,"ST_BIBLE_BOOK_LINES"),*ptr2; |
|
while (i<=cnt) { |
|
last_start=start; |
|
start=Str2I64(ptr); |
|
if (line<start) |
|
break; |
|
i++; |
|
ptr+=StrLen(ptr)+1; |
|
} |
|
if (0<=--i<cnt) { |
|
doc=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR); |
|
DocGoToLine(doc,line); //one based |
|
doc_e=doc->cur_entry; |
|
while (doc_e!=doc && (doc_e->type_u8!=DOCT_TEXT || !*doc_e->tag)) |
|
doc_e=doc_e->next; |
|
if (doc_e->type_u8==DOCT_TEXT && '0'<=*doc_e->tag<='9') { |
|
ptr=ptr2=doc_e->tag; |
|
while ('0'<=*ptr2<='9' || *ptr2==':') |
|
ptr2++; |
|
*ptr2=0; |
|
if (separate_ch=='%') |
|
ptr=MStrPrint("%Z%%20%s",i,"ST_BIBLE_BOOKS",ptr); |
|
else |
|
ptr=MStrPrint("%Z%c%s",i,"ST_BIBLE_BOOKS",separate_ch,ptr); |
|
} else { |
|
while (TRUE) { |
|
doc_e=doc_e->last; |
|
if (doc_e==doc) { |
|
ptr=NULL; |
|
break; |
|
} |
|
if (doc_e->y+1<last_start) { |
|
ptr=MStrPrint("%Z",i,"ST_BIBLE_BOOKS"); |
|
break; |
|
} |
|
if (doc_e->type_u8==DOCT_TEXT && StrLen(doc_e->tag)>=3) { |
|
ptr=doc_e->tag+StrLen(doc_e->tag)-1; |
|
while (ptr>doc_e->tag && (!('0'<=*(ptr-1)<='9') || *ptr!=':' || |
|
!('0'<=*(ptr+1)<='9'))) |
|
ptr--; |
|
ptr--; |
|
while (ptr>=doc_e->tag && '0'<=*ptr<='9') |
|
ptr--; |
|
ptr2=++ptr; |
|
if ('0'<=*ptr2++<='9') { |
|
while ('0'<=*ptr2<='9') |
|
ptr2++; |
|
if (*ptr2++==':' && '0'<=*ptr2++<='9') { |
|
while ('0'<=*ptr2<='9') |
|
ptr2++; |
|
*ptr2=0; |
|
if (separate_ch=='%') |
|
ptr=MStrPrint("%Z%%20%s",i,"ST_BIBLE_BOOKS",ptr); |
|
else |
|
ptr=MStrPrint("%Z%c%s",i,"ST_BIBLE_BOOKS",separate_ch,ptr); |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
DocDel(doc); |
|
return ptr; |
|
} else |
|
return NULL; |
|
} |
|
|
|
public U0 BookLines(CDoc *doc_out=NULL,I64 start,I64 lines, |
|
U8 *book_filename=BIBLE_FILENAME) |
|
{//Put N line starting at line M into doc. |
|
CDoc *doc_in; |
|
CDocEntry *doc_e; |
|
if (!doc_out) doc_out=DocPut; |
|
if (doc_out && FileFind(book_filename)) { |
|
doc_in=DocRead(book_filename,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR); |
|
DocGoToLine(doc_in,start); //one based |
|
doc_e=doc_in->cur_entry; |
|
while (lines>0 && doc_e!=doc_in) { |
|
if (doc_e->type_u8==DOCT_TEXT) |
|
DocPrint(doc_out,"%s",doc_e->tag); |
|
else if (doc_e->type_u8==DOCT_NEW_LINE) { |
|
DocPutKey(doc_out,'\n'); |
|
lines--; |
|
} |
|
doc_e=doc_e->next; |
|
} |
|
DocDel(doc_in); |
|
} |
|
} |
|
|
|
public U0 BibleVerse(CDoc *doc_out=NULL,U8 *verse,I64 lines) |
|
{//Put N lines starting at verse str into doc. |
|
I64 i; |
|
CDoc *doc_in; |
|
CDocEntry *doc_e; |
|
U8 *st,*st2; |
|
if (!doc_out) doc_out=DocPut; |
|
if (doc_out && FileFind(BIBLE_FILENAME)) { |
|
st=StrNew(verse); |
|
st2=StrNew(verse); |
|
if (StrOcc(st,',')) |
|
StrLastRem(st,",",st2); |
|
else |
|
*st2=0; |
|
i=DefineMatch(st,"ST_BIBLE_BOOKS",LMF_IGNORE_CASE); |
|
if (i>=0) { |
|
i=Str2I64(DefineSub(i,"ST_BIBLE_BOOK_LINES")); |
|
doc_in=DocRead(BIBLE_FILENAME,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR); |
|
DocGoToLine(doc_in,i); //one based |
|
if (*st2) { |
|
StrCpy(doc_in->find_replace->find_text,st2); |
|
EdFindNext(doc_in); |
|
} |
|
doc_e=doc_in->cur_entry; |
|
while (lines>0 && doc_e!=doc_in) { |
|
if (doc_e->type_u8==DOCT_TEXT) |
|
DocPrint(doc_out,"%s",doc_e->tag); |
|
else if (doc_e->type_u8==DOCT_NEW_LINE) { |
|
DocPutKey(doc_out,'\n'); |
|
lines--; |
|
} |
|
doc_e=doc_e->next; |
|
} |
|
DocDel(doc_in); |
|
} |
|
Free(st); |
|
Free(st2); |
|
} |
|
} |
|
|
|
public CDoc *BibleDoc() |
|
{//Return Bible as DolDoc with trees. |
|
CDoc *res=DocRead(BIBLE_FILENAME); |
|
CDocEntry *doc_e=res->head.next,*doc_e1; |
|
Bool open_chapter=FALSE; |
|
U8 *ptr=Define("ST_BIBLE_BOOK_LINES"); |
|
I64 book,book_cnt=DefineCnt("ST_BIBLE_BOOK_LINES")-1, |
|
chapter, |
|
line=Str2I64(ptr,,&ptr); |
|
ptr++; |
|
for (book=0;book<book_cnt;book++) { |
|
while (doc_e->y+1<line) { |
|
doc_e1=doc_e->next; |
|
DocEntryDel(res,doc_e); |
|
doc_e=doc_e1; |
|
} |
|
res->cur_entry=doc_e; |
|
res->cur_col=0; |
|
DocPrint(res,"$$TR,\"%Z\"$$\n$$ID,2$$",book,"ST_BIBLE_BOOKS"); |
|
line=Str2I64(ptr,,&ptr); |
|
ptr++; |
|
chapter=1; |
|
while (doc_e->y+1<line) { |
|
doc_e1=doc_e->next; |
|
if (doc_e->type_u8==DOCT_TEXT && StrMatch(":1 ",doc_e->tag)) { |
|
res->cur_entry=doc_e; |
|
res->cur_col=0; |
|
if (open_chapter) { |
|
DocPrint(res,"$$ID,-2$$"); |
|
open_chapter=FALSE; |
|
} |
|
DocPrint(res,"$$TR,\"%d\"$$\n$$ID,2$$",chapter++); |
|
open_chapter=TRUE; |
|
} else if (chapter==1) { |
|
doc_e1=doc_e->next; |
|
DocEntryDel(res,doc_e); |
|
doc_e=doc_e1; |
|
} |
|
doc_e=doc_e1; |
|
} |
|
res->cur_entry=doc_e; |
|
res->cur_col=0; |
|
if (open_chapter) { |
|
DocPrint(res,"$$ID,-2$$"); |
|
open_chapter=FALSE; |
|
} |
|
DocPrint(res,"$$ID,-2$$"); |
|
} |
|
while (doc_e!=res) { |
|
doc_e1=doc_e->next; |
|
DocEntryDel(res,doc_e); |
|
doc_e=doc_e1; |
|
} |
|
return res; |
|
} |
|
|
|
public U0 BibleView() |
|
{//View Bible as DolDoc with trees. |
|
U8 buf[STR_LEN]; |
|
CDoc *doc=BibleDoc; |
|
StrPrint(buf,"AL:%d,1",doc); |
|
Ed(buf); |
|
DocDel(doc); |
|
} |
|
U0 CtrlAltB(I64) |
|
{ |
|
PopUp("BibleView;"); |
|
} |
|
CtrlAltCBSet('B',&CtrlAltB,"Cmd /Bible");
|
|
|