diff options
| -rw-r--r-- | lib/style-reader.js | 24 | ||||
| -rw-r--r-- | test/style-reader.tests.js | 21 |
2 files changed, 44 insertions, 1 deletions
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 + ); } }); |
