Newer
Older
(:
: Copyright (c) 2018 Uwe Sikora
: Copyright (c) 2018–2019 Michelle Weidling
: Copyright (c) 2020 Stefan Hynek
:
: This file is part of intermediate-format.
:
: intermediate-format is free software: you can redistribute it and/or modify
: it under the terms of the GNU General Public License as published by
: the Free Software Foundation, either version 3 of the License, or
: (at your option) any later version.
:
: intermediate-format is distributed in the hope that it will be useful,
: but WITHOUT ANY WARRANTY; without even the implied warranty of
: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
: GNU General Public License for more details.
:
: You should have received a copy of the GNU General Public License
: along with intermediate-format. If not, see <https://www.gnu.org/licenses/>.
:)
: WHITESPACE Module ("whitespace", "http://bdn.edition.de/intermediate_format/whitespace_handling")
: *******************************************************************************************
: This module contains the functions to handle different whitespace operations on text
:
: @version 1.0 (2018-01-02)
: @status working
: @author Uwe Sikora
:)
module namespace whitespace="http://bdn-edition.de/intermediate_format/whitespace_handling";
declare default element namespace "http://www.tei-c.org/ns/1.0";
(:############################# Modules Functions #############################:)
: whitespace:text()
: This function handles whitespace in defined text() nodes
:
: @param $text the text-node to be converted
: @param $escape-char a optional escape-character replacing all whitespace characters
: @return text()* representing the escaped text()
:
: @version 2.0 (2018-01-30)
: @status working
: @author Uwe Sikora
:)
declare function whitespace:text
( $text as text()*, $escape-char as xs:string? ) as text()* {
let $whitespace-node := $text[matches(., "[\n\r\t]") and normalize-space(.) = ""]
if (not($whitespace-node)) then (
) else ( whitespace:escape-text($text, " ") )
: This function replaces whitespaces in a text()
: with a defined preservation character
:
: @param $text the text-node to be converted
: @param $escape the escape-character replacing all whitespace characters
: @return text()* representing the escaped text()
: @author Uwe Sikora
:)
declare function whitespace:escape-text
($text as text()*, $escape as xs:string) as text()* {
text {replace($text, '[\s]+', $escape)}
};