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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>gbf.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </center>
<hr><h1>gbf.cpp</h1><div class="fragment"><pre>00001 <font class="keyword">enum</font> TToken {
00002 tokNull, tokEOF, tokHeader, tokContent, tokTail, tokStyle,
00003 tokWord, tokSpace, tokSync, tokControl, tokChar, tokFont};
00004
00005 <font class="keyword">enum</font> TCharacterAttribute { caBold, caSmallCaps, caItalic, caOTQuote, caRed,
00006 caSuperscript, caUnderline, caSubscript};
00007
00008 <font class="comment">// TCharAttribs = set of TCharacterAttribute;</font>
00009
00010
00011 <font class="keyword">struct </font>TBookNameRec {
00012 string Name, Abbr;
00013 <font class="keywordtype">char</font> Num;
00014 }
00015
00016 <font class="keyword">const</font> <font class="keyword">struct </font>TBookNameRec TBookAbbr[116] = {
00017 {<font class="stringliteral">"1 Chronicles"</font>, <font class="stringliteral">"1CH"</font>, 13}, <font class="comment">//0</font>
00018 {<font class="stringliteral">"1 Corinthians"</font>, <font class="stringliteral">"1CO"</font>, 70}, <font class="comment">//1</font>
00019 {<font class="stringliteral">"1 Esdras"</font>, <font class="stringliteral">"1E"</font>, 52}, <font class="comment">//2</font>
00020 {<font class="stringliteral">"1 John"</font>, <font class="stringliteral">"1J"</font>, 86}, <font class="comment">//3</font>
00021 {<font class="stringliteral">"1 Kings"</font>, <font class="stringliteral">"1K"</font>, 11}, <font class="comment">//4</font>
00022 {<font class="stringliteral">"1 Maccabees"</font>, <font class="stringliteral">"1M"</font>, 50}, <font class="comment">//5</font>
00023 {<font class="stringliteral">"1 Peter"</font>, <font class="stringliteral">"1P"</font>, 84}, <font class="comment">//6</font>
00024 {<font class="stringliteral">"1 Samuel"</font>, <font class="stringliteral">"1S"</font>, 9}, <font class="comment">//7</font>
00025 {<font class="stringliteral">"1 Thessalonians"</font>, <font class="stringliteral">"1TH"</font>, 76}, <font class="comment">//8</font>
00026 {<font class="stringliteral">"1 Timothy"</font>, <font class="stringliteral">"1TI"</font>, 78}, <font class="comment">//9</font>
00027 {<font class="stringliteral">"2 Chronicles"</font>, <font class="stringliteral">"2CH"</font>, 14}, <font class="comment">//10</font>
00028 {<font class="stringliteral">"2 Corinthians"</font>, <font class="stringliteral">"2CO"</font>, 71}, <font class="comment">//11</font>
00029 {<font class="stringliteral">"2 Esdras"</font>, <font class="stringliteral">"2E"</font>, 56}, <font class="comment">//12</font>
00030 {<font class="stringliteral">"2 John"</font>, <font class="stringliteral">"2J"</font>, 87}, <font class="comment">//13</font>
00031 {<font class="stringliteral">"2 Kings"</font>, <font class="stringliteral">"2K"</font>, 12}, <font class="comment">//14</font>
00032 {<font class="stringliteral">"2 Maccabees"</font>, <font class="stringliteral">"2M"</font>, 51}, <font class="comment">//15</font>
00033 {<font class="stringliteral">"2 Peter"</font>, <font class="stringliteral">"2P"</font>, 85}, <font class="comment">//16</font>
00034 {<font class="stringliteral">"2 Samuel"</font>, <font class="stringliteral">"2S"</font>, 10}, <font class="comment">//17</font>
00035 {<font class="stringliteral">"2 Thessalonians"</font>, <font class="stringliteral">"2TH"</font>, 77}, <font class="comment">//18</font>
00036 {<font class="stringliteral">"2 Timothy"</font>, <font class="stringliteral">"2TI"</font>, 79}, <font class="comment">//19</font>
00037 {<font class="stringliteral">"3 John"</font>, <font class="stringliteral">"3J"</font>, 88}, <font class="comment">//20</font>
00038 {<font class="stringliteral">"3 Maccabees"</font>, <font class="stringliteral">"3M"</font>, 55}, <font class="comment">//21</font>
00039 {<font class="stringliteral">"4 Maccabees"</font>, <font class="stringliteral">"4M"</font>, 57}, <font class="comment">//22</font>
00040 {<font class="stringliteral">"1 Chronicles"</font>, <font class="stringliteral">"1 CH"</font>, 13}, <font class="comment">//0</font>
00041 {<font class="stringliteral">"1 Corinthians"</font>, <font class="stringliteral">"1 CO"</font>, 70}, <font class="comment">//1</font>
00042 {<font class="stringliteral">"1 Esdras"</font>, <font class="stringliteral">"1 E"</font>, 52}, <font class="comment">//2</font>
00043 {<font class="stringliteral">"1 John"</font>, <font class="stringliteral">"1 J"</font>, 86}, <font class="comment">//3</font>
00044 {<font class="stringliteral">"1 Kings"</font>, <font class="stringliteral">"1 K"</font>, 11}, <font class="comment">//4</font>
00045 {<font class="stringliteral">"1 Maccabees"</font>, <font class="stringliteral">"1 M"</font>, 50}, <font class="comment">//5</font>
00046 {<font class="stringliteral">"1 Peter"</font>, <font class="stringliteral">"1 P"</font>, 84}, <font class="comment">//6</font>
00047 {<font class="stringliteral">"1 Samuel"</font>, <font class="stringliteral">"1 S"</font>, 9}, <font class="comment">//7</font>
00048 {<font class="stringliteral">"1 Thessalonians"</font>, <font class="stringliteral">"1 TH"</font>, 76}, <font class="comment">//8</font>
00049 {<font class="stringliteral">"1 Timothy"</font>, <font class="stringliteral">"1 TI"</font>, 78}, <font class="comment">//9</font>
00050 {<font class="stringliteral">"2 Chronicles"</font>, <font class="stringliteral">"2 CH"</font>, 14}, <font class="comment">//10</font>
00051 {<font class="stringliteral">"2 Corinthians"</font>, <font class="stringliteral">"2 CO"</font>, 71}, <font class="comment">//11</font>
00052 {<font class="stringliteral">"2 Esdras"</font>, <font class="stringliteral">"2 E"</font>, 56}, <font class="comment">//12</font>
00053 {<font class="stringliteral">"2 John"</font>, <font class="stringliteral">"2 J"</font>, 87}, <font class="comment">//13</font>
00054 {<font class="stringliteral">"2 Kings"</font>, <font class="stringliteral">"2 K"</font>, 12}, <font class="comment">//14</font>
00055 {<font class="stringliteral">"2 Maccabees"</font>, <font class="stringliteral">"2 M"</font>, 51}, <font class="comment">//15</font>
00056 {<font class="stringliteral">"2 Peter"</font>, <font class="stringliteral">"2 P"</font>, 85}, <font class="comment">//16</font>
00057 {<font class="stringliteral">"2 Samuel"</font>, <font class="stringliteral">"2 S"</font>, 10}, <font class="comment">//17</font>
00058 {<font class="stringliteral">"2 Thessalonians"</font>, <font class="stringliteral">"2 TH"</font>, 77}, <font class="comment">//18</font>
00059 {<font class="stringliteral">"2 Timothy"</font>, <font class="stringliteral">"2 TI"</font>, 79}, <font class="comment">//19</font>
00060 {<font class="stringliteral">"3 John"</font>, <font class="stringliteral">"3 J"</font>, 88}, <font class="comment">//20</font>
00061 {<font class="stringliteral">"3 Maccabees"</font>, <font class="stringliteral">"3 M"</font>, 55}, <font class="comment">//21</font>
00062 {<font class="stringliteral">"4 Maccabees"</font>, <font class="stringliteral">"4 M"</font>, 57}, <font class="comment">//22</font>
00063 {<font class="stringliteral">"Acts"</font>, <font class="stringliteral">"AC"</font>, 68}, <font class="comment">//23</font>
00064 {<font class="stringliteral">"Amos"</font>, <font class="stringliteral">"AM"</font>, 30}, <font class="comment">//24</font>
00065 {<font class="stringliteral">"Prayer of Asariah and the Song of the Three Jews"</font>, <font class="stringliteral">"AZ"</font>, 47},
00066 {<font class="stringliteral">"Baruch"</font>, <font class="stringliteral">"BA"</font>, 45}, <font class="comment">//26</font>
00067 {<font class="stringliteral">"Bel and the Dragon"</font>,<font class="stringliteral">"BE"</font>, 49}, <font class="comment">//27</font>
00068 {<font class="stringliteral">"Colossians"</font>, <font class="stringliteral">"CO"</font>, 75}, <font class="comment">//28</font>
00069 {<font class="stringliteral">"Daniel"</font>, <font class="stringliteral">"DA"</font>, 27}, <font class="comment">//29</font>
00070 {<font class="stringliteral">"Deuteronomy"</font>, <font class="stringliteral">"DE"</font>, 5}, <font class="comment">//30</font>
00071 {<font class="stringliteral">"Deuteronomy"</font>, <font class="stringliteral">"DT"</font>, 5}, <font class="comment">//31</font>
00072 {<font class="stringliteral">"Ecclesiasties"</font>, <font class="stringliteral">"EC"</font>, 21}, <font class="comment">//32</font>
00073 {<font class="stringliteral">"Esther"</font>, <font class="stringliteral">"ES"</font>, 17}, <font class="comment">//33</font>
00074 {<font class="stringliteral">"Exodus"</font>, <font class="stringliteral">"EX"</font>, 2}, <font class="comment">//34</font>
00075 {<font class="stringliteral">"Ezekiel"</font>, <font class="stringliteral">"EZE"</font>, 26}, <font class="comment">//35</font>
00076 {<font class="stringliteral">"Ezra"</font>, <font class="stringliteral">"EZR"</font>, 15}, <font class="comment">//36</font>
00077 {<font class="stringliteral">"Galatians"</font>, <font class="stringliteral">"GA"</font>, 72}, <font class="comment">//37</font>
00078 {<font class="stringliteral">"Genesis"</font>, <font class="stringliteral">"GE"</font>, 1}, <font class="comment">//38</font>
00079 {<font class="stringliteral">"Genesis"</font>, <font class="stringliteral">"GN"</font>, 1}, <font class="comment">//39</font>
00080 {<font class="stringliteral">"Ephesians"</font>, <font class="stringliteral">"EP"</font>, 73}, <font class="comment">//40</font>
00081 {<font class="stringliteral">"Esther (Greek}"</font>, <font class="stringliteral">"GR"</font>, 42), <font class="comment">//41</font>
00082 {<font class="stringliteral">"Habakkuk"</font>, <font class="stringliteral">"HAB"</font>, 35}, <font class="comment">//42</font>
00083 {<font class="stringliteral">"Haggai"</font>, <font class="stringliteral">"HAG"</font>, 37}, <font class="comment">//43</font>
00084 {<font class="stringliteral">"Hebrews"</font>, <font class="stringliteral">"HE"</font>, 82}, <font class="comment">//44</font>
00085 {<font class="stringliteral">"Hosea"</font>, <font class="stringliteral">"HO"</font>, 28}, <font class="comment">//45</font>
00086 {<font class="stringliteral">"Isaiah"</font>, <font class="stringliteral">"IS"</font>, 23}, <font class="comment">//46</font>
00087 {<font class="stringliteral">"James"</font>, <font class="stringliteral">"JA"</font>, 83}, <font class="comment">//47</font>
00088 {<font class="stringliteral">"Jeremiah"</font>, <font class="stringliteral">"JE"</font>, 24}, <font class="comment">//48</font>
00089 {<font class="stringliteral">"Job"</font>, <font class="stringliteral">"JOB"</font>, 18}, <font class="comment">//49</font>
00090 {<font class="stringliteral">"Joel"</font>, <font class="stringliteral">"JOE"</font>, 29}, <font class="comment">//50</font>
00091 {<font class="stringliteral">"John"</font>, <font class="stringliteral">"JOH"</font>, 67}, <font class="comment">//51</font>
00092 {<font class="stringliteral">"Jonah"</font>, <font class="stringliteral">"JON"</font>, 32}, <font class="comment">//52</font>
00093 {<font class="stringliteral">"Joshua"</font>, <font class="stringliteral">"JOS"</font>, 6}, <font class="comment">//53</font>
00094 {<font class="stringliteral">"Jude"</font>, <font class="stringliteral">"JUDE"</font>, 89}, <font class="comment">//54</font>
00095 {<font class="stringliteral">"Judges"</font>, <font class="stringliteral">"JUDG"</font>, 7}, <font class="comment">//55</font>
00096 {<font class="stringliteral">"Judith"</font>, <font class="stringliteral">"JUDI"</font>, 41}, <font class="comment">//56</font>
00097 {<font class="stringliteral">"Lamentations"</font>, <font class="stringliteral">"LA"</font>, 25}, <font class="comment">//57</font>
00098 {<font class="stringliteral">"Letter of Jeremiah"</font>,Abbr:<font class="stringliteral">"LET"</font>, 46}, <font class="comment">//58</font>
00099 {<font class="stringliteral">"Leviticus"</font>, <font class="stringliteral">"LEV"</font>, 3}, <font class="comment">//59</font>
00100 {<font class="stringliteral">"Luke"</font>, <font class="stringliteral">"LK"</font>, 66}, <font class="comment">//60</font>
00101 {<font class="stringliteral">"Leviticus"</font>, <font class="stringliteral">"LV"</font>, 3}, <font class="comment">//61</font>
00102 {<font class="stringliteral">"Luke"</font>, <font class="stringliteral">"LU"</font>, 66}, <font class="comment">//62</font>
00103 {<font class="stringliteral">"Malachi"</font>, <font class="stringliteral">"MAL"</font>, 39}, <font class="comment">//63</font>
00104 {<font class="stringliteral">"Prayer of Manasseh"</font>,Abbr:<font class="stringliteral">"MAN"</font>, 53}, <font class="comment">//64</font>
00105 {<font class="stringliteral">"Mark"</font>, <font class="stringliteral">"MAR"</font>, 65}, <font class="comment">//65</font>
00106 {<font class="stringliteral">"Matthew"</font>, <font class="stringliteral">"MAT"</font>, 64}, <font class="comment">//66</font>
00107 {<font class="stringliteral">"Micah"</font>, <font class="stringliteral">"MI"</font>, 33}, <font class="comment">//67</font>
00108 {<font class="stringliteral">"Nahum"</font>, <font class="stringliteral">"NA"</font>, 34}, <font class="comment">//68</font>
00109 {<font class="stringliteral">"Nehemiah"</font>, <font class="stringliteral">"NE"</font>, 16}, <font class="comment">//69</font>
00110 {<font class="stringliteral">"Numbers"</font>, <font class="stringliteral">"NU"</font>, 4}, <font class="comment">//70</font>
00111 {<font class="stringliteral">"Obadiah"</font>, <font class="stringliteral">"OB"</font>, 31}, <font class="comment">//71</font>
00112 {<font class="stringliteral">"Psalm 151"</font>, <font class="stringliteral">"P1"</font>, 54}, <font class="comment">//72</font>
00113 {<font class="stringliteral">"Philemon"</font>, <font class="stringliteral">"PHILE"</font>, 81}, <font class="comment">//73</font>
00114 {<font class="stringliteral">"Philippians"</font>, <font class="stringliteral">"PHILI"</font>, 74}, <font class="comment">//74</font>
00115 {<font class="stringliteral">"Philemon"</font>, <font class="stringliteral">"PHM"</font>, 81}, <font class="comment">//75</font>
00116 {<font class="stringliteral">"Philippians"</font>, <font class="stringliteral">"PHP"</font>, 74}, <font class="comment">//76</font>
00117 {<font class="stringliteral">"Proverbs"</font>, <font class="stringliteral">"PR"</font>, 20}, <font class="comment">//77</font>
00118 {<font class="stringliteral">"Psalms"</font>, <font class="stringliteral">"PS"</font>, 19}, <font class="comment">//78</font>
00119 {<font class="stringliteral">"Revelation"</font>, <font class="stringliteral">"RE"</font>, 90}, <font class="comment">//79</font>
00120 {<font class="stringliteral">"Romans"</font>, <font class="stringliteral">"RM"</font>, 69}, <font class="comment">//80</font>
00121 {<font class="stringliteral">"Romans"</font>, <font class="stringliteral">"RO"</font>, 69}, <font class="comment">//81</font>
00122 {<font class="stringliteral">"Ruth"</font>, <font class="stringliteral">"RU"</font>, 8}, <font class="comment">//82</font>
00123 {<font class="stringliteral">"Sirach"</font>, <font class="stringliteral">"SI"</font>, 44}, <font class="comment">//83</font>
00124 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SOL"</font>, 22}, <font class="comment">//84</font>
00125 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SON"</font>, 22}, <font class="comment">//85</font>
00126 {<font class="stringliteral">"Song of Solomon"</font>, <font class="stringliteral">"SS"</font>, 22}, <font class="comment">//86</font>
00127 {<font class="stringliteral">"Susanna"</font>, <font class="stringliteral">"SU"</font>, 48}, <font class="comment">//87</font>
00128 {<font class="stringliteral">"Titus"</font>, <font class="stringliteral">"TI"</font>, 80}, <font class="comment">//88</font>
00129 {<font class="stringliteral">"Tobit"</font>, <font class="stringliteral">"TO"</font>, 40}, <font class="comment">//89</font>
00130 {<font class="stringliteral">"Wisdom"</font>, <font class="stringliteral">"WI"</font>, 43}, <font class="comment">//90</font>
00131 {<font class="stringliteral">"Zechariah"</font>, <font class="stringliteral">"ZEC"</font>, 38}, <font class="comment">//91</font>
00132 {<font class="stringliteral">"Zephaniah"</font>, <font class="stringliteral">"ZEP"</font>, 36} <font class="comment">//92</font>
00133 },
00134
00135 string BookFileName[91] = {
00136 <font class="stringliteral">""</font>,<font class="stringliteral">"Genesis"</font>,<font class="stringliteral">"Exodus"</font>,<font class="stringliteral">"Lev"</font>,<font class="stringliteral">"Num"</font>,<font class="stringliteral">"Deut"</font>,<font class="stringliteral">"Joshua"</font>,<font class="stringliteral">"Judges"</font>, <font class="comment">// 0 - 7</font>
00137 <font class="stringliteral">"Ruth"</font>,<font class="stringliteral">"1Sam"</font>,<font class="stringliteral">"2Sam"</font>,<font class="stringliteral">"1Kings"</font>,<font class="stringliteral">"2Kings"</font>,<font class="stringliteral">"1Chron"</font>,<font class="stringliteral">"2Chron"</font>, <font class="comment">// 8 - 14</font>
00138 <font class="stringliteral">"Ezra"</font>,<font class="stringliteral">"Nehemiah"</font>,<font class="stringliteral">"Esther"</font>,<font class="stringliteral">"Job"</font>,<font class="stringliteral">"Psalms"</font>,<font class="stringliteral">"Proverbs"</font>, <font class="comment">// 15-20</font>
00139 <font class="stringliteral">"Eccl"</font>,<font class="stringliteral">"Song"</font>,<font class="stringliteral">"Isaiah"</font>,<font class="stringliteral">"Jeremiah"</font>,<font class="stringliteral">"Lament"</font>,<font class="stringliteral">"Ezekiel"</font>, <font class="comment">// 21-26</font>
00140 <font class="stringliteral">"Daniel"</font>,<font class="stringliteral">"Hosea"</font>,<font class="stringliteral">"Joel"</font>,<font class="stringliteral">"Amos"</font>,<font class="stringliteral">"Obadiah"</font>,<font class="stringliteral">"Jonah"</font>,<font class="stringliteral">"Micah"</font>, <font class="comment">// 27-33</font>
00141 <font class="stringliteral">"Nahum"</font>,<font class="stringliteral">"Habakkuk"</font>,<font class="stringliteral">"Zeph"</font>,<font class="stringliteral">"Haggai"</font>,<font class="stringliteral">"Zech"</font>,<font class="stringliteral">"Malachi"</font>, <font class="comment">// 34-39</font>
00142 <font class="stringliteral">"Tobit"</font>,<font class="stringliteral">"Judith"</font>,<font class="stringliteral">"Esther"</font>,<font class="stringliteral">"Wisdom"</font>,<font class="stringliteral">"Sirach"</font>,<font class="stringliteral">"Baruch"</font>, <font class="comment">// 40-45</font>
00143 <font class="stringliteral">"Let"</font>,<font class="stringliteral">"Azar"</font>,<font class="stringliteral">"Susanna"</font>,<font class="stringliteral">"Bel"</font>,<font class="stringliteral">"1Mac"</font>,<font class="stringliteral">"2Mac"</font>,<font class="stringliteral">"1Esdras"</font>, <font class="comment">// 46-52</font>
00144 <font class="stringliteral">"Man"</font>,<font class="stringliteral">"P1"</font>,<font class="stringliteral">"3Mac"</font>,<font class="stringliteral">"2Esdras"</font>,<font class="stringliteral">"4Mac"</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>,<font class="stringliteral">""</font>, <font class="comment">// 53-63</font>
00145 <font class="stringliteral">"Matthew"</font>,<font class="stringliteral">"Mark"</font>,<font class="stringliteral">"Luke"</font>,<font class="stringliteral">"John"</font>,<font class="stringliteral">"Acts"</font>,<font class="stringliteral">"Romans"</font>,<font class="stringliteral">"1Cor"</font>, <font class="comment">// 64-70</font>
00146 <font class="stringliteral">"2Cor"</font>,<font class="stringliteral">"Gal"</font>,<font class="stringliteral">"Eph"</font>,<font class="stringliteral">"Philip"</font>,<font class="stringliteral">"Col"</font>,<font class="stringliteral">"1Thes"</font>,<font class="stringliteral">"2Thes"</font>,<font class="stringliteral">"1Tim"</font>, <font class="comment">// 71-78</font>
00147 <font class="stringliteral">"2Tim"</font>,<font class="stringliteral">"Titus"</font>,<font class="stringliteral">"Philemon"</font>,<font class="stringliteral">"Hebrews"</font>,<font class="stringliteral">"James"</font>,<font class="stringliteral">"1Peter"</font>, <font class="comment">// 79-84</font>
00148 <font class="stringliteral">"2Peter"</font>,<font class="stringliteral">"1John"</font>,<font class="stringliteral">"2John"</font>,<font class="stringliteral">"3John"</font>,<font class="stringliteral">"Jude"</font>,<font class="stringliteral">"Rev"</font>}; <font class="comment">// 85-90</font>
00149
00150 <font class="keyword">class </font>TReadGBF {
00151 <font class="keyword">private</font>:
00152 FILE *fp;
00153 string FName, TokenLine;
00154 <font class="keywordtype">int</font> TokenPos;
00155 <font class="keywordtype">bool</font> fFileIsOpen, fParagraphEnd, fInTitle, fInPsalmBookTitle, fInHebrewTitle, fInSectionTitle;
00156
00157 <font class="keyword">public</font>:
00158 string sBook, sChapter, sVerse, sMode;
00159 string sContext; <font class="comment">// Last text type (header, body, or tail)</font>
00160 string sTitle; <font class="comment">// Title of this book of the Bible</font>
00161 string sPsalmBookTitle; <font class="comment">// Title of this Psalm book</font>
00162 string sHebrewTitle; <font class="comment">// Psalm Hebrew title</font>
00163 string sSectionTitle; <font class="comment">// Section headings</font>
00164 string sDate;
00165 string sFontName;
00166 <font class="keywordtype">int</font> iTotalWords;
00167 <font class="keywordtype">char</font> chJustification, chDirection;
00168 <font class="keywordtype">bool</font> fIndent, fPoetry;
00169 <font class="keywordtype">int</font> CharAttribs;
00170 <font class="keywordtype">char</font> bBk, bChap, bVs, bWd;
00171
00172 <font class="keywordtype">bool</font> Init(<font class="keyword">const</font> string sFileName);
00173 <font class="keywordtype">void</font> Done();
00174 string GetToken(TToken &TokenKind);
00175 end;
00176
00177 <font class="keyword">class </font>TWriteGBF {
00178 <font class="keyword">private</font>:
00179 F: TextFile;
00180 FName, LineOut: string;
00181 fFileIsOpen: <font class="keywordtype">boolean</font>;
00182 bBk, bChap, bVs, bWd: byte;
00183
00184 <font class="keyword">public</font>
00185
00186 function Init(<font class="keyword">const</font> sFileName: string): boolean;
00187 function Done: <font class="keywordtype">boolean</font>;
00188 procedure Out(<font class="keyword">const</font> s: string);
00189 end;
00190
00191 function isletter(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00192 function isinword(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00193 function IsDigit(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00194 function IsUpper(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00195 function ConformCase(<font class="keyword">const</font> sPat, sSrc: string): string;
00196 function BookNameToNumber(<font class="keyword">const</font> sBookName: string): byte;
00197
00198 implementation
00199
00200 function isletter(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00201 begin
00202 <font class="keywordflow">case</font> ch of
00203 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: isletter := <font class="keyword">true</font>;
00204 <font class="charliteral">'a'</font>..<font class="charliteral">'z'</font>: isletter := <font class="keyword">true</font>;
00205 <font class="keywordflow">else</font>
00206 isletter := <font class="keyword">false</font>;
00207 end;
00208 end;
00209
00210 function isinword(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): boolean;
00211 begin
00212 <font class="keywordflow">case</font> ch of
00213 <font class="charliteral">'-'</font>: isinword := <font class="keyword">true</font>;
00214 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: isinword := <font class="keyword">true</font>;
00215 <font class="charliteral">'a'</font>..<font class="charliteral">'z'</font>: isinword := <font class="keyword">true</font>;
00216 <font class="keywordflow">else</font>
00217 isinword := <font class="keyword">false</font>;
00218 end;
00219 end;
00220
00221 function IsUpper(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00222 begin
00223 <font class="keywordflow">case</font> ch of
00224 <font class="charliteral">'A'</font>..<font class="charliteral">'Z'</font>: IsUpper := <font class="keyword">true</font>;
00225 <font class="keywordflow">else</font>
00226 IsUpper := <font class="keyword">false</font>;
00227 end;
00228 end;
00229
00230 function IsDigit(<font class="keyword">const</font> ch: <font class="keywordtype">char</font>): Boolean;
00231 begin
00232 <font class="keywordflow">case</font> ch of
00233 <font class="charliteral">'0'</font>..<font class="charliteral">'9'</font>: IsDigit := <font class="keyword">true</font>;
00234 <font class="keywordflow">else</font>
00235 IsDigit := <font class="keyword">false</font>;
00236 end;
00237 end;
00238
00239
00240 function MatchAbbrev(<font class="keyword">const</font> sName, sAbbrev: string): boolean;
00241 var i: integer;
00242 begin
00243 <font class="keywordflow">if</font> Length(sName) < Length(sAbbrev) then
00244 Result := <font class="keyword">false</font>
00245 <font class="keywordflow">else</font>
00246 Result := <font class="keyword">true</font>;
00247 i := 1;
00248 <font class="keywordflow">while</font> (i <= Length(sAbbrev)) and Result <font class="keywordflow">do</font>
00249 begin
00250 <font class="keywordflow">if</font> UpCase(sName[i]) <> sAbbrev[i] then
00251 Result := <font class="keyword">false</font>;
00252 inc(i);
00253 end;
00254 end;
00255
00256 function BookNameToNumber(<font class="keyword">const</font> sBookName: string): byte;
00257 var i: integer;
00258 begin
00259 Result := 0;
00260 <font class="keywordflow">try</font>
00261 <font class="keywordflow">if</font> IsDigit(sBookName[Length(sBookName)]) and IsDigit(sBookName[1]) then
00262 Result := StrToInt(sBookName);
00263 except
00264 Result := 0;
00265 end;
00266 i := 0;
00267 <font class="keywordflow">while</font> (Result = 0) and (i <= 115) <font class="keywordflow">do</font> <font class="comment">// Yuk! Linear search.</font>
00268 begin
00269 <font class="keywordflow">if</font> MatchAbbrev(sBookName,BookAbbr[i].Abbr) then
00270 begin
00271 Result := BookAbbr[i].Num;
00272 end;
00273 inc(i);
00274 end;
00275 end;
00276
00277 function BookNumberToName(<font class="keyword">const</font> bBookNum: byte): string;
00278 begin
00279 <font class="keywordflow">if</font> bBookNum <= 115 then
00280 Result := BookAbbr[bBookNum].Name
00281 <font class="keywordflow">else</font>
00282 Result := '';
00283 end;
00284
00285 function ConformCase(<font class="keyword">const</font> sPat, sSrc: string): string;
00286 var i: integer;
00287 begin
00288 Result := sSrc;
00289 <font class="keywordflow">if</font> (Length(sPat) > 0) and (Length(sSrc) > 0) then
00290 begin
00291 Result := LowerCase(sSrc);
00292 <font class="keywordflow">if</font> IsUpper(sPat[1]) then
00293 Result[1] := UpCase(Result[1]);
00294 <font class="keywordflow">if</font> (Length(sPat) > 1) and (Length(sSrc) > 1) then
00295 begin
00296 <font class="keywordflow">if</font> IsUpper(sPat[2]) then
00297 begin
00298 <font class="keywordflow">for</font> i := 2 to Length(Result) <font class="keywordflow">do</font>
00299 Result[i] := UpCase(Result[i]);
00300 end;
00301 end;
00302 end;
00303 end;
00304
00305 function TReadGBF.Init(<font class="keyword">const</font> sFileName: string): boolean;
00306 var s: string;
00307 tok: TToken;
00308 begin
00309 <font class="keywordflow">try</font>
00310 fParagraphEnd := <font class="keyword">false</font>;
00311 bBk := 0;
00312 bChap := 0;
00313 bVs := 0;
00314 bWd := 0;
00315 iTotalWords := 0;
00316 FName := sFileName;
00317 Assign(F, FName);
00318 reset(F);
00319 readln(F, TokenLine);
00320 TokenPos := 1;
00321 fFileIsOpen := <font class="keyword">true</font>;
00322 repeat
00323 s := GetToken(tok)
00324 until (tok = tokEOF) or ((tok = tokHeader) and (s[3] = <font class="charliteral">'0'</font>));
00325 Init := <font class="keyword">true</font>;
00326 except
00327 Init := <font class="keyword">false</font>;
00328 fFileIsOpen := <font class="keyword">false</font>;
00329 end
00330 end;
00331
00332 procedure TReadGBF.Done;
00333 begin
00334 <font class="keywordflow">if</font> fFileIsOpen then
00335 begin
00336 closefile(F);
00337 fFileIsOpen := <font class="keyword">false</font>;
00338 end;
00339 end;
00340
00341 function TReadGBF.GetToken(var TokenKind: TToken): string;
00342 var m: integer;
00343 begin
00344 Result := '';
00345 TokenKind := tokNull;
00346 <font class="keywordflow">if</font> TokenPos = 0 then
00347 begin
00348 <font class="keywordflow">if</font> (not fFileIsOpen) or EOF(F) then
00349 TokenKind := tokEOF
00350 <font class="keywordflow">else</font>
00351 begin
00352 ReadLn(F,TokenLine);
00353 TokenPos := 1;
00354 end;
00355 end;
00356 <font class="keywordflow">if</font> TokenKind <> tokEOF then
00357 begin
00358 m := Length(TokenLine);
00359 <font class="keywordflow">if</font> TokenPos > m then
00360 begin
00361 TokenKind := tokSpace;
00362 <font class="keywordflow">if</font> fParagraphEnd then
00363 fParagraphEnd := <font class="keyword">false</font>
00364 <font class="keywordflow">else</font>
00365 Result := <font class="charliteral">' '</font>;
00366 TokenPos := 0;
00367 end
00368 <font class="keywordflow">else</font>
00369 begin
00370 <font class="keywordflow">if</font> (TokenLine[TokenPos] = <font class="charliteral">'<'</font>) then
00371 begin
00372 fParagraphEnd := <font class="keyword">false</font>;
00373 repeat
00374 Result := Result + TokenLine[TokenPos];
00375 inc(TokenPos);
00376 until (TokenLine[TokenPos] = <font class="charliteral">'>'</font>) or (TokenPos > m);
00377 Result := Result + <font class="charliteral">'>'</font>;
00378 inc(TokenPos);
00379 <font class="keywordflow">case</font> result[2] of
00380 <font class="charliteral">'B'</font>: begin <font class="comment">// File body text type</font>
00381 TokenKind := tokContent;
00382 sContext := Result;
00383 end;
00384 <font class="charliteral">'C'</font>: begin <font class="comment">// Special characters</font>
00385 TokenKind := tokControl;
00386 <font class="keywordflow">if</font> (Result[3] = <font class="charliteral">'M'</font>) or (Result[3] = <font class="charliteral">'L'</font>) then
00387 fParagraphEnd := <font class="keyword">true</font>;
00388 end;
00389 <font class="charliteral">'D'</font>: begin <font class="comment">// Direction</font>
00390 TokenKind := tokControl;
00391 chDirection := Result[3];
00392 end;
00393 <font class="charliteral">'H'</font>: begin
00394 TokenKind := tokHeader;
00395 sContext := Result;
00396 end;
00397 <font class="charliteral">'F'</font>: begin <font class="comment">// Font attributes</font>
00398 TokenKind := tokFont;
00399 <font class="keywordflow">case</font> Result[3] of
00400 <font class="charliteral">'B'</font>: CharAttribs := CharAttribs + [caBold];
00401 <font class="charliteral">'C'</font>: CharAttribs := CharAttribs + [caSmallCaps];
00402 <font class="charliteral">'I'</font>: CharAttribs := CharAttribs + [caItalic];
00403 <font class="charliteral">'N'</font>: sFontName := copy(Result,4,Length(Result)-4);
00404 <font class="charliteral">'O'</font>: CharAttribs := CharAttribs + [caOTQuote];
00405 <font class="charliteral">'R'</font>: CharAttribs := CharAttribs + [caRed];
00406 <font class="charliteral">'S'</font>: CharAttribs := CharAttribs + [caSuperscript];
00407 <font class="charliteral">'U'</font>: CharAttribs := CharAttribs + [caUnderline];
00408 <font class="charliteral">'V'</font>: CharAttribs := CharAttribs + [caSubscript];
00409 <font class="charliteral">'b'</font>: CharAttribs := CharAttribs - [caBold];
00410 <font class="charliteral">'c'</font>: CharAttribs := CharAttribs - [caSmallCaps];
00411 <font class="charliteral">'i'</font>: CharAttribs := CharAttribs - [caItalic];
00412 <font class="charliteral">'n'</font>: sFontName := '';
00413 <font class="charliteral">'o'</font>: CharAttribs := CharAttribs - [caOTQuote];
00414 <font class="charliteral">'r'</font>: CharAttribs := CharAttribs - [caRed];
00415 <font class="charliteral">'s'</font>: CharAttribs := CharAttribs - [caSuperscript];
00416 <font class="charliteral">'u'</font>: CharAttribs := CharAttribs - [caUnderline];
00417 <font class="charliteral">'v'</font>: CharAttribs := CharAttribs - [caSubscript];
00418
00419 end;
00420 end;
00421 <font class="charliteral">'J'</font>: begin <font class="comment">// Justification</font>
00422 TokenKind := tokStyle;
00423 chJustification := Result[3];
00424 end;
00425 <font class="charliteral">'P'</font>: begin <font class="comment">// Poetry/prose, indent</font>
00426 TokenKind := tokControl;
00427 <font class="keywordflow">case</font> Result[3] of
00428 <font class="charliteral">'I'</font>: fIndent := <font class="keyword">true</font>;
00429 <font class="charliteral">'P'</font>: fPoetry := <font class="keyword">true</font>;
00430 <font class="charliteral">'i'</font>: fIndent := <font class="keyword">false</font>;
00431 <font class="charliteral">'p'</font>: fPoetry := <font class="keyword">false</font>;
00432 end;
00433 end;
00434 <font class="charliteral">'R'</font>: begin <font class="comment">// References and footnotes</font>
00435 TokenKind := tokControl;
00436 end;
00437 <font class="charliteral">'S'</font>: begin <font class="comment">// sync mark</font>
00438 TokenKind := TokSync;
00439 <font class="keywordflow">case</font> Result[3] of
00440 <font class="charliteral">'B'</font>: begin <font class="comment">// Book</font>
00441 sBook := system.copy(Result, 4, length(Result)-4);
00442 sPsalmBookTitle := '';
00443 <font class="keywordflow">if</font> sBook = '' then
00444 begin
00445 inc(bBk);
00446 sBook := BookNumberToName(bBk);
00447 end
00448 <font class="keywordflow">else</font>
00449 bBk := BookNameToNumber(sBook);
00450 sTitle := sBook;
00451 end;
00452 <font class="charliteral">'C'</font>: begin <font class="comment">//chapter</font>
00453 sChapter := system.copy(Result, 4, length(Result)-4);
00454 <font class="keywordflow">if</font> sChapter = '' then
00455 begin
00456 inc(bChap);
00457 sChapter := IntToStr(bChap);
00458 end
00459 <font class="keywordflow">else</font>
00460 begin
00461 <font class="keywordflow">try</font>
00462 bChap := StrToInt(sChapter);
00463 except
00464 showmessage('Non-numeric chapter: '+sBook+<font class="charliteral">' '</font>+sChapter);
00465 end;
00466 end;
00467 sHebrewTitle := '';
00468 end;
00469 <font class="charliteral">'V'</font>: begin <font class="comment">// Verse</font>
00470 bWd := 0;
00471 sVerse := system.copy(Result, 4, length(Result)-4);
00472 <font class="keywordflow">if</font> sVerse = '' then
00473 begin
00474 inc(bVs);
00475 sVerse := IntToStr(bVs);
00476 end
00477 <font class="keywordflow">else</font>
00478 begin
00479 <font class="keywordflow">try</font>
00480 bVs := StrToInt(sVerse);
00481 except
00482 showmessage('Non-numeric verse: '+sBook+<font class="charliteral">' '</font>+sChapter+<font class="charliteral">':'</font>+sVerse);
00483 end;
00484 end;
00485 end;
00486 <font class="charliteral">'D'</font>: begin <font class="comment">// Date</font>
00487 sDate := system.copy(Result, 3, length(Result)-4);
00488 end;
00489 end;
00490 end;
00491 <font class="charliteral">'T'</font>: begin <font class="comment">// Titles</font>
00492 TokenKind := TokContent;
00493 <font class="keywordflow">case</font> Result[3] of
00494 <font class="charliteral">'B'</font>:
00495 begin
00496 sPsalmBookTitle := '';
00497 fInPsalmBookTitle := <font class="keyword">true</font>;
00498 end;
00499 <font class="charliteral">'b'</font>: fInPsalmBookTitle := <font class="keyword">true</font>;
00500 <font class="charliteral">'H'</font>:
00501 begin
00502 sHebrewTitle := '';
00503 fInHebrewTitle := <font class="keyword">true</font>;
00504 end;
00505 <font class="charliteral">'h'</font>: fInHebrewTitle := <font class="keyword">false</font>;
00506 <font class="charliteral">'S'</font>:
00507 begin
00508 sSectionTitle := '';
00509 fInSectionTitle := <font class="keyword">true</font>;
00510 end;
00511 <font class="charliteral">'s'</font>: fInSectionTitle := <font class="keyword">false</font>;
00512 <font class="charliteral">'T'</font>:
00513 begin
00514 sTitle := '';
00515 fInTitle := <font class="keyword">true</font>;
00516 end;
00517 <font class="charliteral">'t'</font>: fInTitle := <font class="keyword">false</font>;
00518 end;
00519 end;
00520 <font class="charliteral">'Z'</font>: begin <font class="comment">// File tail</font>
00521 TokenKind := tokTail;
00522 sContext := Result;
00523 <font class="keywordflow">if</font> Result[3] = <font class="charliteral">'Z'</font> then
00524 done;
00525 end;
00526 <font class="keywordflow">else</font>
00527 TokenKind := TokControl;
00528
00529 end;
00530 end
00531 <font class="keywordflow">else</font> <font class="keywordflow">if</font> isletter(TokenLine[TokenPos]) then
00532 begin {Word}
00533 fParagraphEnd := <font class="keyword">false</font>;
00534 TokenKind := tokWord;
00535 repeat
00536 Result := Result + TokenLine[TokenPos];
00537 inc(TokenPos);
00538 until (TokenPos > m) or (not isinword(TokenLine[TokenPos]));
00539 inc(bWd);
00540 inc(iTotalWords);
00541 end
00542 <font class="keywordflow">else</font> <font class="keywordflow">if</font> ((TokenLine[TokenPos] = <font class="charliteral">' '</font>) or (TokenLine[TokenPos] = #9)) then
00543 begin
00544 fParagraphEnd := <font class="keyword">false</font>;
00545 TokenKind := tokSpace;
00546 Result := Result + TokenLine[TokenPos];
00547 inc(TokenPos);
00548 end
00549 <font class="keywordflow">else</font>
00550 begin
00551 fParagraphEnd := <font class="keyword">false</font>;
00552 TokenKind := tokChar;
00553 Result := Result + TokenLine[TokenPos];
00554 inc(TokenPos);
00555 end
00556 end;
00557 end;
00558 <font class="keywordflow">if</font> ((TokenKind = tokWord) or (TokenKind = tokSpace) or
00559 (TokenKind = tokChar)) then
00560 begin
00561 <font class="keywordflow">if</font> fInTitle then
00562 sTitle := sTitle + Result
00563 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInPsalmBookTitle then
00564 sPsalmBookTitle := sPsalmBookTitle + Result
00565 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInHebrewTitle then
00566 sHebrewTitle := sHebrewTitle + Result
00567 <font class="keywordflow">else</font> <font class="keywordflow">if</font> fInSectionTitle then
00568 sSectionTitle := sSectionTitle + Result;
00569 end;
00570 end;
00571
00572 function TWriteGBF.Init(<font class="keyword">const</font> sFileName: string): boolean;
00573 begin
00574 <font class="keywordflow">try</font>
00575 bBk := 0;
00576 bChap := 0;
00577 bVs := 0;
00578 bWd := 0;
00579 LineOut := '';
00580 FName := sFileName;
00581 Assign(F, FName);
00582 filemode := 1;
00583 rewrite(F);
00584 fFileIsOpen := <font class="keyword">true</font>;
00585 Init := <font class="keyword">true</font>;
00586 except
00587 Init := <font class="keyword">false</font>;
00588 fFileIsOpen := <font class="keyword">false</font>;
00589 end
00590 end;
00591
00592 function TWriteGBF.Done: <font class="keywordtype">boolean</font>;
00593 begin
00594 <font class="keywordflow">try</font>
00595 <font class="keywordflow">if</font> fFileIsOpen then
00596 begin
00597 <font class="keywordflow">if</font> LineOut <> '' then
00598 begin
00599 WriteLn(F, LineOut);
00600 LineOut := '';
00601 end;
00602 CloseFile(F);
00603 end;
00604 Done := <font class="keyword">true</font>;
00605 except
00606 Done := <font class="keyword">false</font>;
00607 end;
00608 end;
00609
00610 procedure TWriteGBF.Out(<font class="keyword">const</font> s: string);
00611 var sPrint, sSave, sBook, sChapter, sVerse: string;
00612 i: integer;
00613 b: byte;
00614 begin
00615 <font class="keywordflow">if</font> (Length(s) > 0) and IsLetter(s[1]) then
00616 begin
00617 inc(bWd);
00618 LineOut := LineOut + s;
00619 end
00620 <font class="keywordflow">else</font> <font class="keywordflow">if</font> Length(s) > 3 then
00621 begin
00622 <font class="keywordflow">if</font> (s[1] = <font class="charliteral">'<'</font>) and (s[2] = <font class="charliteral">'S'</font>) then
00623 begin
00624 <font class="keywordflow">case</font> s[3] of
00625 <font class="charliteral">'B'</font>: begin <font class="comment">// Book</font>
00626 sBook := system.copy(s, 4, length(s)-4);
00627 <font class="keywordflow">if</font> sBook = '' then
00628 begin
00629 inc(bBk);
00630 LineOut := LineOut + s;
00631 end
00632 <font class="keywordflow">else</font>
00633 begin
00634 b := bBk;
00635 bBk := BookNameToNumber(sBook);
00636 <font class="keywordflow">if</font> b <> bBk then
00637 LineOut := LineOut + s;
00638 end;
00639 end;
00640 <font class="charliteral">'C'</font>: begin <font class="comment">//chapter</font>
00641 sChapter := system.copy(s, 4, length(s)-4);
00642 <font class="keywordflow">if</font> sChapter = '' then
00643 begin
00644 inc(bChap);
00645 LineOut := LineOut + s;
00646 end
00647 <font class="keywordflow">else</font>
00648 begin
00649 <font class="keywordflow">try</font>
00650 <font class="comment">// b := bChap;</font>
00651 bChap := StrToInt(sChapter);
00652 <font class="comment">// if b <> bChap then</font>
00653 LineOut := LineOut + s;
00654 except
00655 showmessage('Non-numeric chapter: '+sBook+<font class="charliteral">' '</font>+sChapter);
00656 end;
00657 end;
00658 end;
00659 <font class="charliteral">'V'</font>: begin <font class="comment">// Verse</font>
00660 bWd := 0;
00661 sVerse := system.copy(s, 4, length(s)-4);
00662 <font class="keywordflow">if</font> sVerse = '' then
00663 begin
00664 inc(bVs);
00665 LineOut := LineOut + s;
00666 end
00667 <font class="keywordflow">else</font>
00668 begin
00669 <font class="keywordflow">try</font>
00670 <font class="comment">// b := bVs;</font>
00671 bVs := StrToInt(sVerse);
00672 <font class="comment">// if b <> bVs then</font>
00673 LineOut := LineOut + s;
00674 except
00675 showmessage('Non-numeric verse: '+sBook+<font class="charliteral">' '</font>+sChapter+<font class="charliteral">':'</font>+sVerse);
00676 end;
00677 end;
00678 end;
00679 <font class="keywordflow">else</font>
00680 LineOut := LineOut + s;
00681 end
00682 end
00683 <font class="keywordflow">else</font>
00684 LineOut := LineOut + s; <font class="comment">// Not a sync mark</font>
00685 end
00686 <font class="keywordflow">else</font> <font class="comment">// other token, space, or punctuation</font>
00687 LineOut := LineOut + s; <font class="comment">// Length <= 3</font>
00688 <font class="keywordflow">if</font> ((s = '<CM>') or (s = '<CL>')) then
00689 begin
00690 <font class="keywordflow">if</font> (Length(LineOut) > 78) then
00691 begin
00692 i := 78;
00693 <font class="keywordflow">while</font> (i > 0) and (LineOut[i] <> <font class="charliteral">' '</font>) <font class="keywordflow">do</font>
00694 dec(i);
00695 <font class="keywordflow">if</font> i < 1 then
00696 begin
00697 WriteLn(F,LineOut);
00698 LineOut := '';
00699 end
00700 <font class="keywordflow">else</font>
00701 begin
00702 sPrint := system.copy(LineOut,1,i-1);
00703 sSave := system.copy(LineOut,i+1,Length(LineOut)-i);
00704 WriteLn(F,sPrint);
00705 WriteLn(F, sSave);
00706 LineOut := '';
00707 end
00708 end
00709 <font class="keywordflow">else</font>
00710 begin
00711 WriteLn(F, LineOut);
00712 LineOut := '';
00713 end
00714 end
00715 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (Length(LineOut) > 78) then
00716 begin
00717 i := 78;
00718 <font class="keywordflow">while</font> (i > 0) and (LineOut[i] <> <font class="charliteral">' '</font>) <font class="keywordflow">do</font>
00719 dec(i);
00720 <font class="keywordflow">if</font> i < 1 then
00721 begin
00722 WriteLn(F,LineOut);
00723 LineOut := '';
00724 end
00725 <font class="keywordflow">else</font>
00726 begin
00727 sPrint := system.copy(LineOut,1,i-1);
00728 sSave := system.copy(LineOut,i+1,Length(LineOut)-i);
00729 WriteLn(F,sPrint);
00730 LineOut := sSave;
00731 end
00732 end
00733 end;
00734
00735 end.
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.15 </small></address>
</body>
</html>
|