[evolution/wip/mcrha/webkit-jsc-api] Cover more basic editor tests
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/mcrha/webkit-jsc-api] Cover more basic editor tests
- Date: Mon, 2 Dec 2019 10:22:36 +0000 (UTC)
commit 4ea5588d068028ddcf208e5115c4c3a74442a523
Author: Milan Crha <mcrha redhat com>
Date: Mon Dec 2 11:23:28 2019 +0100
Cover more basic editor tests
data/webkit/e-convert.js | 12 +----
data/webkit/e-editor.js | 16 ++++--
src/e-util/test-html-editor-units-utils.c | 22 ++++++++
src/e-util/test-html-editor-units-utils.h | 1 +
src/e-util/test-html-editor-units.c | 42 ++++++++--------
src/e-util/test-html-editor.c | 22 ++++++++
src/e-util/test-web-view-jsc.c | 84 +++++++++++++++----------------
7 files changed, 121 insertions(+), 78 deletions(-)
---
diff --git a/data/webkit/e-convert.js b/data/webkit/e-convert.js
index 50a67d592a..bf458f01c6 100644
--- a/data/webkit/e-convert.js
+++ b/data/webkit/e-convert.js
@@ -177,7 +177,7 @@ EvoConvert.replaceList = function(element, tagName)
level++;
}
- switch (level % 2) {
+ switch (level % 3) {
default:
case 0:
prefixSuffix = " * ";
@@ -631,16 +631,8 @@ EvoConvert.processNode = function(node, normalDivWidth)
} else {
str = node.innerText;
- if (style && style.display == "block") {
+ if (str != "\n" && style && style.display == "block") {
str += "\n";
-
- if (node.tagName == "H1" ||
- node.tagName == "H2" ||
- node.tagName == "H3" ||
- node.tagName == "H4" ||
- node.tagName == "H5" ||
- node.tagName == "H6")
- str += "\n";
}
}
}
diff --git a/data/webkit/e-editor.js b/data/webkit/e-editor.js
index 0c946227d1..34cc1cf5d0 100644
--- a/data/webkit/e-editor.js
+++ b/data/webkit/e-editor.js
@@ -959,7 +959,7 @@ EvoEditor.SetBlockFormat = function(format)
}
for (jj = 0; jj < affected.length; jj++) {
- EvoEditor.insertListChildBefore(affected[jj],
this.toSet.tagName, insBefore ? insBefore.parentElement : elemParent, insBefore);
+ EvoEditor.insertListChildBefore(affected[jj],
this.toSet.tagName, insBefore ? insBefore.parentElement : elemParent, insBefore, this.selectionUpdater);
}
if (!element.childElementCount) {
@@ -1130,7 +1130,7 @@ EvoEditor.splitList = function(element, nParents, onlyAffected)
return parent.nextElementSibling;
}
-EvoEditor.insertListChildBefore = function(child, tagName, parent, insBefore)
+EvoEditor.insertListChildBefore = function(child, tagName, parent, insBefore, selectionUpdater)
{
if (child.tagName == "LI") {
var node = document.createElement(tagName);
@@ -1139,7 +1139,14 @@ EvoEditor.insertListChildBefore = function(child, tagName, parent, insBefore)
node.appendChild(child.firstChild);
parent.insertBefore(node, insBefore);
+
+ if (selectionUpdater)
+ selectionUpdater.beforeRemove(child);
+
child.parentElement.removeChild(child);
+
+ if (selectionUpdater)
+ selectionUpdater.afterRemove(node);
} else {
parent.insertBefore(child, insBefore);
}
@@ -1325,7 +1332,7 @@ EvoEditor.Indent = function(increment)
}
for (jj = 0; jj < affected.length; jj++) {
- EvoEditor.insertListChildBefore(affected[jj],
"DIV", insBefore ? insBefore.parentElement : elemParent, insBefore);
+ EvoEditor.insertListChildBefore(affected[jj],
"DIV", insBefore ? insBefore.parentElement : elemParent, insBefore, this.selectionUpdater);
}
}
@@ -1981,8 +1988,7 @@ EvoEditor.GetContent = function(flags, cid_uid_prefix)
}
}
- if (EvoEditor.mode == EvoEditor.MODE_HTML &&
- (flags & EvoEditor.E_CONTENT_EDITOR_GET_TO_SEND_HTML) != 0)
+ if ((flags & EvoEditor.E_CONTENT_EDITOR_GET_TO_SEND_HTML) != 0)
content_data["to-send-html"] = EvoEditor.convertHtmlToSend();
if ((flags & EvoEditor. E_CONTENT_EDITOR_GET_TO_SEND_PLAIN) != 0) {
diff --git a/src/e-util/test-html-editor-units-utils.c b/src/e-util/test-html-editor-units-utils.c
index 03eae0de20..0e48b45e24 100644
--- a/src/e-util/test-html-editor-units-utils.c
+++ b/src/e-util/test-html-editor-units-utils.c
@@ -265,6 +265,26 @@ test_utils_html_editor_created_cb (GObject *source_object,
gtk_widget_show (GTK_WIDGET (fixture->editor));
gtk_container_add (GTK_CONTAINER (fixture->window), GTK_WIDGET (fixture->editor));
+ fixture->focus_tracker = e_focus_tracker_new (GTK_WINDOW (fixture->window));
+
+ e_focus_tracker_set_cut_clipboard_action (fixture->focus_tracker,
+ e_html_editor_get_action (fixture->editor, "cut"));
+
+ e_focus_tracker_set_copy_clipboard_action (fixture->focus_tracker,
+ e_html_editor_get_action (fixture->editor, "copy"));
+
+ e_focus_tracker_set_paste_clipboard_action (fixture->focus_tracker,
+ e_html_editor_get_action (fixture->editor, "paste"));
+
+ e_focus_tracker_set_select_all_action (fixture->focus_tracker,
+ e_html_editor_get_action (fixture->editor, "select-all"));
+
+ e_focus_tracker_set_undo_action (fixture->focus_tracker,
+ e_html_editor_get_action (fixture->editor, "undo"));
+
+ e_focus_tracker_set_redo_action (fixture->focus_tracker,
+ e_html_editor_get_action (fixture->editor, "redo"));
+
/* Make sure this is off */
test_utils_fixture_change_setting_boolean (fixture,
"org.gnome.evolution.mail", "prompt-on-composer-mode-switch", FALSE);
@@ -355,6 +375,8 @@ void
test_utils_fixture_tear_down (TestFixture *fixture,
gconstpointer user_data)
{
+ g_clear_object (&fixture->focus_tracker);
+
gtk_widget_destroy (GTK_WIDGET (fixture->window));
fixture->editor = NULL;
diff --git a/src/e-util/test-html-editor-units-utils.h b/src/e-util/test-html-editor-units-utils.h
index ee79ac4e02..c314561cad 100644
--- a/src/e-util/test-html-editor-units-utils.h
+++ b/src/e-util/test-html-editor-units-utils.h
@@ -31,6 +31,7 @@ typedef struct _TestSettings {
typedef struct _TestFixture {
GtkWidget *window;
EHTMLEditor *editor;
+ EFocusTracker *focus_tracker;
GSList *settings; /* TestSettings * */
guint key_state;
diff --git a/src/e-util/test-html-editor-units.c b/src/e-util/test-html-editor-units.c
index 734be71187..6839aa8d70 100644
--- a/src/e-util/test-html-editor-units.c
+++ b/src/e-util/test-html-editor-units.c
@@ -590,7 +590,7 @@ test_list_alpha_html (TestFixture *fixture)
"<div>text</div>"
HTML_SUFFIX,
" A. item 1\n"
- " A. item 2\n"
+ " A. item 2\n"
" B. item 3\n"
"text\n"))
g_test_fail ();
@@ -611,7 +611,7 @@ test_list_alpha_plain (TestFixture *fixture)
"type:text\n",
NULL,
" A. item 1\n"
- " A. item 2\n"
+ " A. item 2\n"
" B. item 3\n"
"text\n"))
g_test_fail ();
@@ -815,7 +815,7 @@ test_list_multi_change_plain (TestFixture *fixture)
" 2. item 2\n"
" 3. item 3\n"
" 4. item 4\n"
- " 5. "))
+ " 5. \n"))
g_test_fail ();
}
@@ -1064,7 +1064,7 @@ test_paragraph_normal_selection (TestFixture *fixture)
"<pre>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</pre>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
"odio. Praesent libero.\n"
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.")) {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n")) {
g_test_fail ();
return;
}
@@ -1075,7 +1075,7 @@ test_paragraph_normal_selection (TestFixture *fixture)
"<pre>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</pre>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
"odio. Praesent libero.\n"
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.")) {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n")) {
g_test_fail ();
return;
}
@@ -1086,7 +1086,7 @@ test_paragraph_normal_selection (TestFixture *fixture)
"<pre>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</pre>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
"odio. Praesent libero.\n"
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.")) {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n")) {
g_test_fail ();
return;
}
@@ -1105,7 +1105,7 @@ test_paragraph_normal_typed (TestFixture *fixture)
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
"odio. Praesent libero.\n"
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
- "odio. Praesent libero.")) {
+ "odio. Praesent libero.\n")) {
g_test_fail ();
return;
}
@@ -1117,7 +1117,7 @@ test_paragraph_normal_typed (TestFixture *fixture)
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
"odio. Praesent libero.\n"
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
- "odio. Praesent libero.")) {
+ "odio. Praesent libero.\n")) {
g_test_fail ();
return;
}
@@ -1129,7 +1129,7 @@ test_paragraph_normal_typed (TestFixture *fixture)
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
"odio. Praesent libero.\n"
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
- "odio. Praesent libero.")) {
+ "odio. Praesent libero.\n")) {
g_test_fail ();
return;
}
@@ -1149,7 +1149,7 @@ test_paragraph_preformatted_selection (TestFixture *fixture)
"<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</div>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n"
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
- "odio. Praesent libero.")) {
+ "odio. Praesent libero.\n")) {
g_test_fail ();
return;
}
@@ -1160,7 +1160,7 @@ test_paragraph_preformatted_selection (TestFixture *fixture)
"<div style=\"width: 71ch;\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer
nec odio. Praesent libero.</div>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n"
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
- "odio. Praesent libero.")) {
+ "odio. Praesent libero.\n")) {
g_test_fail ();
return;
}
@@ -1171,7 +1171,7 @@ test_paragraph_preformatted_selection (TestFixture *fixture)
"<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</div>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n"
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec\n"
- "odio. Praesent libero.")) {
+ "odio. Praesent libero.\n")) {
g_test_fail ();
return;
}
@@ -1188,7 +1188,7 @@ test_paragraph_preformatted_typed (TestFixture *fixture)
HTML_PREFIX "<pre>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio.
Praesent libero."
" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</pre>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. "
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.")) {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n")) {
g_test_fail ();
return;
}
@@ -1198,7 +1198,7 @@ test_paragraph_preformatted_typed (TestFixture *fixture)
HTML_PREFIX "<pre>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio.
Praesent libero."
" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</pre>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. "
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.")) {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n")) {
g_test_fail ();
return;
}
@@ -1208,7 +1208,7 @@ test_paragraph_preformatted_typed (TestFixture *fixture)
HTML_PREFIX "<pre>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio.
Praesent libero."
" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.</pre>" HTML_SUFFIX,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. "
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.")) {
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent
libero.\n")) {
g_test_fail ();
return;
}
@@ -1239,7 +1239,7 @@ test_paragraph_address_selection (TestFixture *fixture)
"address line 2\n"
"address line 3\n"
"\n"
- "normal text"))
+ "normal text\n"))
g_test_fail ();
}
@@ -1268,7 +1268,7 @@ test_paragraph_address_typed (TestFixture *fixture)
"address line 2\n"
"address line 3\n"
"\n"
- "normal text"))
+ "normal text\n"))
g_test_fail ();
}
@@ -1298,7 +1298,7 @@ test_paragraph_header_n_selection (TestFixture *fixture,
expected_plain = g_strdup_printf (
"normal text\n"
"header %d\n"
- "normal text",
+ "normal text\n",
header_n);
success = test_utils_run_simple_test (fixture, actions, expected_html, expected_plain);
@@ -1321,7 +1321,7 @@ test_paragraph_header_n_selection (TestFixture *fixture,
"normal text\n"
"\n"
"header %d\n"
- "normal text",
+ "normal text\n",
header_n);
success = test_utils_run_simple_test (fixture,
@@ -1361,7 +1361,7 @@ test_paragraph_header_n_typed (TestFixture *fixture,
expected_plain = g_strdup_printf (
"normal text\n"
"header %d\n"
- "normal text",
+ "normal text\n",
header_n);
success = test_utils_run_simple_test (fixture, actions, expected_html, expected_plain);
@@ -1384,7 +1384,7 @@ test_paragraph_header_n_typed (TestFixture *fixture,
"normal text\n"
"header %d\n"
"\n"
- "normal text",
+ "normal text\n",
header_n);
success = test_utils_run_simple_test (fixture,
diff --git a/src/e-util/test-html-editor.c b/src/e-util/test-html-editor.c
index 8c5218ada0..91012a815a 100644
--- a/src/e-util/test-html-editor.c
+++ b/src/e-util/test-html-editor.c
@@ -527,6 +527,7 @@ create_new_editor_cb (GObject *source_object,
GtkWidget *widget;
EHTMLEditor *editor;
EContentEditor *cnt_editor;
+ EFocusTracker *focus_tracker;
GError *error = NULL;
widget = e_html_editor_new_finish (result, &error);
@@ -566,6 +567,27 @@ create_new_editor_cb (GObject *source_object,
gtk_widget_set_size_request (widget, 600, 400);
gtk_widget_show (widget);
+ focus_tracker = e_focus_tracker_new (GTK_WINDOW (widget));
+ g_object_set_data_full (G_OBJECT (widget), "e-focus-tracker", focus_tracker, g_object_unref);
+
+ e_focus_tracker_set_cut_clipboard_action (focus_tracker,
+ e_html_editor_get_action (editor, "cut"));
+
+ e_focus_tracker_set_copy_clipboard_action (focus_tracker,
+ e_html_editor_get_action (editor, "copy"));
+
+ e_focus_tracker_set_paste_clipboard_action (focus_tracker,
+ e_html_editor_get_action (editor, "paste"));
+
+ e_focus_tracker_set_select_all_action (focus_tracker,
+ e_html_editor_get_action (editor, "select-all"));
+
+ e_focus_tracker_set_undo_action (focus_tracker,
+ e_html_editor_get_action (editor, "undo"));
+
+ e_focus_tracker_set_redo_action (focus_tracker,
+ e_html_editor_get_action (editor, "redo"));
+
g_signal_connect_swapped (
widget, "destroy",
G_CALLBACK (editor_destroyed_cb), NULL);
diff --git a/src/e-util/test-web-view-jsc.c b/src/e-util/test-web-view-jsc.c
index 144e5b8534..888ac846da 100644
--- a/src/e-util/test-web-view-jsc.c
+++ b/src/e-util/test-web-view-jsc.c
@@ -1973,19 +1973,19 @@ test_convert_to_plain (TestFixture *fixture)
/* 9 */ { HTML ("<h1>Header1</h1>"
"<div style='width:10ch; " WRAP_STYLE ("normal") "'>123456 789 123 4567890 123456 789
122</div>"
"<div style='width:10ch; " WRAP_STYLE ("normal") "'>987654321 987 654 321
12345678901234567890</div>"),
- "Header1\n\n"
+ "Header1\n"
"123456 789\n123\n4567890\n123456 789\n122\n"
"987654321\n987 654\n321\n1234567890\n1234567890\n",
-1 },
/* 10 */{ HTML ("<h1>Header1</h1>"
"<div style='width:10ch; " WRAP_STYLE ("pre-wrap") "'>123456 789 123 4567890 123456
789 122</div>"
"<div style='width:10ch; " WRAP_STYLE ("pre-wrap") "'>987654321 987 654 321
12345678901234567890</div>"),
- "Header1\n\n"
+ "Header1\n"
"123456 789\n123 \n4567890 \n123456 789\n122\n"
"987654321 \n987 654 \n321 \n1234567890\n1234567890\n",
-1 },
/* 11 */{ HTML ("<h1>H1</h1><h2>H2</h2><h3>H3</h3><h4>H4</h4><h5>H5</h5><h6>H6</h6>"),
- "H1\n\nH2\n\nH3\n\nH4\n\nH5\n\nH6\n\n",
+ "H1\nH2\nH3\nH4\nH5\nH6\n",
-1 },
/* 12 */{ HTML ("<address>Line 1<br>Line 2<br>Line 3 ...</address>"),
"Line 1\nLine 2\nLine 3 ...\n",
@@ -2439,15 +2439,15 @@ test_convert_to_plain (TestFixture *fixture)
"</ul>"),
" * AA 1 2 3 4 5 6\n"
" 7 8 9 11 22 33\n"
- " # BA 1 2 3 4 5\n"
+ " - BA 1 2 3 4 5\n"
" 6 7 8 9\n"
- " # BB 1 2 3 4 5\n"
+ " - BB 1 2 3 4 5\n"
" 6 7 8 9\n"
- " * CA 1 2 3\n"
+ " + CA 1 2 3\n"
" 4 5 6\n"
- " * CB 1 2 3\n"
+ " + CB 1 2 3\n"
" 4 5 6\n"
- " # BC 1 2 3 4 5\n"
+ " - BC 1 2 3 4 5\n"
" 6\n"
" * AB 1 2 3 4 5 6\n"
" 7\n",
@@ -2455,54 +2455,54 @@ test_convert_to_plain (TestFixture *fixture)
/* 47 */{ HTML ("<ol>"
"<li>1</li>"
"<ul>"
- "<li>1.#</li>"
+ "<li>1.-</li>"
"<ol type='i'>"
- "<li>1.#.i</li>"
+ "<li>1.-.i</li>"
"<ol type='a'>"
- "<li>1.#.i.a</li>"
- "<li>1.#.i.b</li>"
+ "<li>1.-.i.a</li>"
+ "<li>1.-.i.b</li>"
"</ol>"
- "<li>1.#.ii</li>"
+ "<li>1.-.ii</li>"
"<ol type='A'>"
- "<li>1.#.ii.A</li>"
+ "<li>1.-.ii.A</li>"
"<ul>"
- "<li>1.#.ii.A.*</li>"
+ "<li>1.-.ii.A.-</li>"
"<ul>"
- "<li>1.#.ii.A.*.#</li>"
- "<ol type='I'>"
- "<li>1.#.ii.A.*.#.I</li>"
- "<li>1.#.ii.A.*.#.II</li>"
- "<li>1.#.ii.A.*.#.III</li>"
- "</ol>"
- "<li>1.#.ii.A.*.#</li>"
+ "<li>1.-.ii.A.-.+</li>"
+ "<ol type='I'>"
+ "<li>1.-.ii.A.-.+.I</li>"
+ "<li>1.-.ii.A.-.+.II</li>"
+ "<li>1.-.ii.A.-.+.III</li>"
+ "</ol>"
+ "<li>1.-.ii.A.-.+</li>"
"</ul>"
- "<li>1.#.ii.A.*</li>"
+ "<li>1.-.ii.A.-</li>"
"</ul>"
- "<li>1.#.ii.B</li>"
+ "<li>1.-.ii.B</li>"
"</ol>"
- "<li>1.#.iii</li>"
+ "<li>1.-.iii</li>"
"</ol>"
- "<li>1.#</li>"
+ "<li>1.-</li>"
"</ul>"
"<li>2</li>"
"</ol>"),
" 1. 1\n"
- " # 1.#\n"
- " i. 1.#.i\n"
- " a. 1.#.i.a\n"
- " b. 1.#.i.b\n"
- " ii. 1.#.ii\n"
- " A. 1.#.ii.A\n"
- " * 1.#.ii.A.*\n"
- " # 1.#.ii.A.*.#\n"
- " I. 1.#.ii.A.*.#.I\n"
- " II. 1.#.ii.A.*.#.II\n"
- " III. 1.#.ii.A.*.#.III\n"
- " # 1.#.ii.A.*.#\n"
- " * 1.#.ii.A.*\n"
- " B. 1.#.ii.B\n"
- " iii. 1.#.iii\n"
- " # 1.#\n"
+ " - 1.-\n"
+ " i. 1.-.i\n"
+ " a. 1.-.i.a\n"
+ " b. 1.-.i.b\n"
+ " ii. 1.-.ii\n"
+ " A. 1.-.ii.A\n"
+ " - 1.-.ii.A.-\n"
+ " + 1.-.ii.A.-.+\n"
+ " I. 1.-.ii.A.-.+.I\n"
+ " II. 1.-.ii.A.-.+.II\n"
+ " III. 1.-.ii.A.-.+.III\n"
+ " + 1.-.ii.A.-.+\n"
+ " - 1.-.ii.A.-\n"
+ " B. 1.-.ii.B\n"
+ " iii. 1.-.iii\n"
+ " - 1.-\n"
" 2. 2\n",
-1 }
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]