From 72ad04159683e8958ff957695fc9bb224fc376ca Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 28 Nov 2016 21:22:41 +0000 Subject: Parse break style mappings --- lib/style-reader.js | 24 +++++++++++++++++++++++- test/style-reader.tests.js | 21 +++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/lib/style-reader.js b/lib/style-reader.js index 20cdb56..3a71ef6 100644 --- a/lib/style-reader.js +++ b/lib/style-reader.js @@ -139,13 +139,35 @@ function documentMatcherRule() { var strikethrough = identifierToConstant("strike", documentMatchers.strikethrough); var commentReference = identifierToConstant("comment-reference", documentMatchers.commentReference); + var breakMatcher = sequence( + lop.rules.token("identifier", "br"), + sequence.cut(), + lop.rules.tokenOfType("open-square-bracket"), + lop.rules.token("identifier", "type"), + lop.rules.tokenOfType("equals"), + sequence.capture(stringRule), + lop.rules.tokenOfType("close-square-bracket") + ).map(function(breakType) { + switch (breakType) { + case "line": + return documentMatchers.lineBreak; + case "page": + return documentMatchers.pageBreak; + case "column": + return documentMatchers.columnBreak; + default: + // TODO: handle unknown document matchers + } + }); + return lop.rules.firstOf("element type", paragraphOrRun, bold, italic, underline, strikethrough, - commentReference + commentReference, + breakMatcher ); } diff --git a/test/style-reader.tests.js b/test/style-reader.tests.js index 6092bb9..96c0c39 100644 --- a/test/style-reader.tests.js +++ b/test/style-reader.tests.js @@ -164,6 +164,27 @@ test("styleReader.readDocumentMatcher", { "comment-reference", documentMatchers.commentReference ); + }, + + "reads line breaks": function() { + assertDocumentMatcher( + "br[type='line']", + documentMatchers.lineBreak + ); + }, + + "reads page breaks": function() { + assertDocumentMatcher( + "br[type='page']", + documentMatchers.pageBreak + ); + }, + + "reads column breaks": function() { + assertDocumentMatcher( + "br[type='column']", + documentMatchers.columnBreak + ); } }); -- cgit v1.2.3