summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2021-08-01 10:54:37 +0100
committerMichael Williamson <mike@zwobble.org>2021-08-01 10:54:37 +0100
commiteab2eee51d21344d168adaeb72a5e0f2d418b3cd (patch)
tree0231ce51ab7b737127685a732bcc7bafe1e73bb0
parent6f0a685d9d03343184088565feb12a1e947684af (diff)
Convert tab elements to tab characters
-rw-r--r--NEWS4
-rw-r--r--lib/raw-text.js4
-rw-r--r--test/raw-text.tests.js10
3 files changed, 17 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index e935864..e0f134b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+# 1.4.18
+
+* When extracting raw text, convert tab elements to tab characters.
+
# 1.4.17
* Handle w:num with invalid w:abstractNumId.
diff --git a/lib/raw-text.js b/lib/raw-text.js
index da9a640..138b73c 100644
--- a/lib/raw-text.js
+++ b/lib/raw-text.js
@@ -1,6 +1,10 @@
+var documents = require("./documents");
+
function convertElementToRawText(element) {
if (element.type === "text") {
return element.value;
+ } else if (element.type === documents.types.tab) {
+ return "\t";
} else {
var tail = element.type === "paragraph" ? "\n\n" : "";
return (element.children || []).map(convertElementToRawText).join("") + tail;
diff --git a/test/raw-text.tests.js b/test/raw-text.tests.js
index f7b13b2..fdd0bc2 100644
--- a/test/raw-text.tests.js
+++ b/test/raw-text.tests.js
@@ -5,7 +5,7 @@ var test = require("./test")(module);
var convertElementToRawText = require("../lib/raw-text").convertElementToRawText;
-test('text node is converted to text content', function() {
+test('text element is converted to text content', function() {
var element = new documents.Text("Hello.");
var result = convertElementToRawText(element);
@@ -13,6 +13,14 @@ test('text node is converted to text content', function() {
assert.strictEqual(result, "Hello.");
});
+test('tab element is converted to tab character', function() {
+ var element = documents.tab();
+
+ var result = convertElementToRawText(element);
+
+ assert.strictEqual(result, "\t");
+});
+
test('paragraphs are terminated with newlines', function() {
var element = new documents.Paragraph(
[