Я пытаюсь создать макрос, заменяющий символы новой строки.
Моя первая попытка была:
define(`m4_pascal_str',`
patsubst(`$1',`^\(.*\)$',`\1++')
')
m4_pascal_str(`
11
22 33 44
')
define(zz,`
11
22 33 44
')
m4_pascal_str(`zz')
Это дает правильный ответ, когда не используется промежуточный макрос, а в противном случае соответствует только последнему символу новой строки. Смотрите результаты ниже:
++
++
11++
++
22 33 44++
++
11
22 33 44
++
Тогда я нашел похожий вопрос:
в patsubst m4, как заменить символы новой строки пробелами?
Итак, я только что сделал:
define(`m4_pascal_str',`
patsubst(`$1',`
',`++')
')
m4_pascal_str(`
11
22 33 44
')
define(zz,`
11
22 33 44
')
m4_pascal_str(`zz')
Даёт:
++++11++++22 33 44++
11
22 33 44
Последняя альтернатива страдает той же проблемой.
Есть предложения?