mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.8.1.1'
This commit is contained in:
@@ -39,43 +39,45 @@ public class Poem_nde implements Xox_xnde {
|
||||
bfr.Add(Div_poem_end);
|
||||
}
|
||||
private static byte[] Parse_lines(Bry_bfr_mkr bfr_mkr, byte[] src, int src_bgn, int src_end) {
|
||||
Bry_bfr bfr = bfr_mkr.Get_k004().Mkr_rls();
|
||||
int line_bgn = src_bgn; boolean line_is_1st = true;
|
||||
while (line_bgn < src_end) { // iterate over each \n
|
||||
boolean indent_enabled = false;
|
||||
if (line_is_1st) line_is_1st = false;
|
||||
else {
|
||||
int line_end_w_br = line_bgn + Xowa_br_mark.length;
|
||||
if ( line_end_w_br < src_end // check for out of bounds; PAGE:en.s:The Hebrew Nation did not write it; DATE:2015-01-31
|
||||
&& Bry_.Match(src, line_bgn, line_end_w_br, Xowa_br_mark)) // "<br/>\n" already inserted by XOWA; do not insert again; DATE:2014-10-20
|
||||
bfr.Add_byte_nl();
|
||||
else
|
||||
bfr.Add(Gfh_tag_.Br_inl).Add_byte_nl().Add(Xowa_br_mark); // add "<br/>\n" unless 1st line; EX: "<poem>\n\s" should not add leading "<br/>\n"
|
||||
}
|
||||
switch (src[line_bgn]) {
|
||||
case Byte_ascii.Space: // "\n\s" -> "\n "
|
||||
int space_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Space);
|
||||
int space_count = space_end - line_bgn;
|
||||
line_bgn = space_end;
|
||||
for (int i = 0; i < space_count; ++i)
|
||||
bfr.Add(Gfh_entity_.Nbsp_num_bry);
|
||||
break;
|
||||
case Byte_ascii.Colon: { // "\n:" -> <span class='mw-poem-indented' style='display: inline-block; margin-left: #em;'>
|
||||
int colon_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Colon);
|
||||
int colon_count = colon_end - line_bgn;
|
||||
line_bgn = colon_end;
|
||||
bfr.Add(Indent_bgn).Add_int_variable(colon_count).Add(Indent_end); // add <span class='mw-poem-indented' style='display: inline-block; margin-left: #em;'>
|
||||
indent_enabled = true;
|
||||
break;
|
||||
Bry_bfr bfr = bfr_mkr.Get_k004();
|
||||
try {
|
||||
int line_bgn = src_bgn; boolean line_is_1st = true;
|
||||
while (line_bgn < src_end) { // iterate over each \n
|
||||
boolean indent_enabled = false;
|
||||
if (line_is_1st) line_is_1st = false;
|
||||
else {
|
||||
int line_end_w_br = line_bgn + Xowa_br_mark.length;
|
||||
if ( line_end_w_br < src_end // check for out of bounds; PAGE:en.s:The Hebrew Nation did not write it; DATE:2015-01-31
|
||||
&& Bry_.Match(src, line_bgn, line_end_w_br, Xowa_br_mark)) // "<br/>\n" already inserted by XOWA; do not insert again; DATE:2014-10-20
|
||||
bfr.Add_byte_nl();
|
||||
else
|
||||
bfr.Add(Gfh_tag_.Br_inl).Add_byte_nl().Add(Xowa_br_mark); // add "<br/>\n" unless 1st line; EX: "<poem>\n\s" should not add leading "<br/>\n"
|
||||
}
|
||||
switch (src[line_bgn]) {
|
||||
case Byte_ascii.Space: // "\n\s" -> "\n "
|
||||
int space_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Space);
|
||||
int space_count = space_end - line_bgn;
|
||||
line_bgn = space_end;
|
||||
for (int i = 0; i < space_count; ++i)
|
||||
bfr.Add(Gfh_entity_.Nbsp_num_bry);
|
||||
break;
|
||||
case Byte_ascii.Colon: { // "\n:" -> <span class='mw-poem-indented' style='display: inline-block; margin-left: #em;'>
|
||||
int colon_end = Bry_find_.Find_fwd_while(src, line_bgn, src_end, Byte_ascii.Colon);
|
||||
int colon_count = colon_end - line_bgn;
|
||||
line_bgn = colon_end;
|
||||
bfr.Add(Indent_bgn).Add_int_variable(colon_count).Add(Indent_end); // add <span class='mw-poem-indented' style='display: inline-block; margin-left: #em;'>
|
||||
indent_enabled = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
int line_end = Bry_find_.Find_fwd(src, Byte_ascii.Nl, line_bgn, src_end); // find end "\n"
|
||||
if (line_end == Bry_find_.Not_found) line_end = src_end; // no "\n"; use eos;
|
||||
bfr.Add_mid(src, line_bgn, line_end); // add everything from line_bgn to line_end
|
||||
if (indent_enabled) bfr.Add(Gfh_tag_.Span_rhs); // if "\n:", add </span>
|
||||
line_bgn = line_end + 1; // +1 to skip over end "\n"
|
||||
}
|
||||
int line_end = Bry_find_.Find_fwd(src, Byte_ascii.Nl, line_bgn, src_end); // find end "\n"
|
||||
if (line_end == Bry_find_.Not_found) line_end = src_end; // no "\n"; use eos;
|
||||
bfr.Add_mid(src, line_bgn, line_end); // add everything from line_bgn to line_end
|
||||
if (indent_enabled) bfr.Add(Gfh_tag_.Span_rhs); // if "\n:", add </span>
|
||||
line_bgn = line_end + 1; // +1 to skip over end "\n"
|
||||
}
|
||||
return bfr.To_bry_and_clear();
|
||||
return bfr.To_bry_and_clear();
|
||||
} finally {bfr.Mkr_rls();}
|
||||
}
|
||||
private static byte[]
|
||||
Div_poem_bgn = Bry_.new_a7("<div class=\"poem\">\n<p>\n") // NOTE: always enclose in <p>; MW does this implicitly in its modified parse; DATE:2014-04-27
|
||||
|
||||
Reference in New Issue
Block a user