(options)
| 810 | } |
| 811 | |
| 812 | function BodyReader(options) { |
| 813 | var complexFieldStack = []; |
| 814 | var currentInstrText = []; |
| 815 | var relationships = options.relationships; |
| 816 | var contentTypes = options.contentTypes; |
| 817 | var docxFile = options.docxFile; |
| 818 | var files = options.files; |
| 819 | var numbering = options.numbering; |
| 820 | var styles = options.styles; |
| 821 | |
| 822 | function readXmlElements(elements) { |
| 823 | var results = elements.map(readXmlElement); |
| 824 | return combineResults(results); |
| 825 | } |
| 826 | |
| 827 | function readXmlElement(element) { |
| 828 | if (element.type === "element") { |
| 829 | try { |
| 830 | if (element.name=="w:r" && element.first("w:rPr").first("w:vanish")){ |
| 831 | var message = warning("An hidden element was ignored: " + element.name); |
| 832 | return emptyResultWithMessages([message]);} |
| 833 | } |
| 834 | catch(err){ |
| 835 | //continue; |
| 836 | } |
| 837 | |
| 838 | var handler = xmlElementReaders[element.name]; |
| 839 | if (handler) { |
| 840 | return handler(element); |
| 841 | } else if (!Object.prototype.hasOwnProperty.call(ignoreElements, element.name)) { |
| 842 | var message = warning("An unrecognised element was ignored: " + element.name); |
| 843 | return emptyResultWithMessages([message]); |
| 844 | } |
| 845 | } |
| 846 | return emptyResult(); |
| 847 | } |
| 848 | |
| 849 | function readParagraphIndent(element) { |
| 850 | return { |
| 851 | start: element.attributes["w:start"] || element.attributes["w:left"], |
| 852 | end: element.attributes["w:end"] || element.attributes["w:right"], |
| 853 | firstLine: element.attributes["w:firstLine"], |
| 854 | hanging: element.attributes["w:hanging"] |
| 855 | }; |
| 856 | } |
| 857 | |
| 858 | function readRunProperties(element) { |
| 859 | return readRunStyle(element).map(function(style) { |
| 860 | return { |
| 861 | type: "runProperties", |
| 862 | styleId: style.styleId, |
| 863 | styleName: style.name, |
| 864 | verticalAlignment: element.firstOrEmpty("w:vertAlign").attributes["w:val"], |
| 865 | font: element.firstOrEmpty("w:rFonts").attributes["w:ascii"], |
| 866 | isBold: readBooleanElement(element.first("w:b")), |
| 867 | isUnderline: readBooleanElement(element.first("w:u")), |
| 868 | isItalic: readBooleanElement(element.first("w:i")), |
| 869 | isStrikethrough: readBooleanElement(element.first("w:strike")), |
nothing calls this directly
no test coverage detected