Replacement done with
find . -name \*.xhp -print0 |xargs -0 -P 0 perl -CS -pi -e \
's#(<link[^>]*?) +name *="[^"]*" *( [^>]+|) *>#$1$2>#g'
(note some inconsistencies with space between name and = and also having
empty value, and some more complicated expression to also clear up
double space before/after the attribute)
translation files will be prepped with:
find */helpcontent2 -name \*.po -print0 |xargs -0 -P 0 perl -CS -pi -e \
$'s#(<link[^>]*?) +name=(?:\\\\"[^"]*\\\\"|\'[^\']*\') *( [^>]+|) *(/?>)#$1$2$3#g unless /^#/'
(note that not all languages use the " as quote character for the
attributes, but that also single quotes appera in the po file. Hence
the use of the shell $'string' syntax to be able to quote ' as \'
It also requires to quote the backslash, so that it needs to be escaped
once for the shell, then another time for perl. Also don't work on
obsolete strings (those are prefixed with #~ in the po files)
Also note that <link..></link> gets turned into <link ../> during
translation extraction (along with removal of the space between the
attribute name and the value), so the pattern needs to be slightly
different here)
Change-Id: I95e53a08e6b0095cd894109ea0de154cc4859d8f
Reviewed-on: https://gerrit.libreoffice.org/c/help/+/143713
Tested-by: Jenkins
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
regression from...
commit 6614bedceadcc07ec082c5e926107f27903bda5c
Date: Mon Jan 25 20:07:10 2016 +0100
fix validation errors by round-trip through helpauthoring extension
with git show 6614bedceadcc07ec082c5e926107f27903bda5c | ~/recoverindent.py
import fileinput
import re
import sys
added = []
removed = []
filename = ""
def processlastfile(filename, added, removed):
if len(added) != len(removed):
print "BROKEN"
sys.exit(-2)
if len(removed):
f = open(filename, "rw")
linestring = open(filename, "r").read()
start = 0
for x in range(0, len(added)):
if added[x] == removed[x]:
continue
if added[x].strip() != removed[x].strip():
print "BROKEN"
sys.exit(-2)
if filename == "source/text/sbasic/shared/03080301.xhp" and x == 6:
print "skipping special hunk", removed[x], "in source/text/sbasic/shared/03080301.xhp"
else:
start = linestring.find(added[x], start)
if start == -1:
print "BROKEN"
sys.exit(-2)
linestring = linestring[0:start] + removed[x] + linestring[start + len(added[x]):]
start = start + len(removed[x])
open(filename, "w").write(linestring)
for line in fileinput.input():
if line.startswith("--- a/"):
if filename is not "":
processlastfile(filename, added, removed)
added = []
removed = []
filename = line[6:-1]
elif "role=\"bascode\"" in line:
m = re.search('>(.+?)<', line)
code = m.group(1)
if line.startswith("-"):
removed.append(code)
else:
added.append(code)
processlastfile(filename, added, removed)
which puts the code back the way it was, except for one string
which had changed and was fixed manually afterwards
Change-Id: Ic67abf36bb5d27be58a51ebbf5022830f56dcb37