Spracherkennung für: .awk vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
#!/usr/bin/gawk -f
# -*- Mode: awk; tab-width:
4; indent-tabs-mode: nil; c-basic-offset:
4 -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v.
2.
0. If a copy of the MPL was not distributed with this
# file, You can obtain one at
http://mozilla.org/MPL/2.
0/.
# Usage: gawk -f sort-formats-by-formatindex.awk [-v group=
1] ll_CC.xml
#
# Sort the LC_FORMAT child elements FormatElement and their children by
# formatindex="..." value for easier comparison between locales.
# If -v group=
1 is given, the output is sorted by usage groups first, then by
# formatindex. This could be the final sorting to commit.
# Output goes to stdout.
BEGIN {
file = ""
usage["FIXED_NUMBER"] =
1
usage["SCIENTIFIC_NUMBER"] =
2
usage["PERCENT_NUMBER"] =
3
usage["CURRENCY"] =
4
usage["DATE"] =
5
usage["TIME"] =
6
usage["DATE_TIME"] =
7
group = (group ?
1 :
0) # -v group=... given or not
}
file != FILENAME {
file = FILENAME
informats =
0
currusage =
0
currformat =
0
inFormatElement =
0
delete formats
currleader =
0
delete leaders
}
/<LC_FORMAT[ >]/ {
if (!/\/>/)
informats =
1
print
next
}
informats && /<\/LC_FORMAT>/ {
PROCINFO["sorted_in"] = "@ind_num_asc"
for (u in formats)
{
if (isarray(formats[u]))
{
for (f in formats[u])
{
if (isarray(formats[u][f]))
{
for (i in formats[u][f])
print formats[u][f][i]
}
else
{
# Something unhandled, adapt code.
print "XXX formats[u][f] error: " formats[u][f]
}
}
}
else
{
# Something unhandled, adapt code.
print "XXX formats[u] error: " formats[u]
}
}
informats =
0
}
{
if (!informats)
{
print
next
}
}
/<FormatElement / {
if (group)
{
split( $
0, a, / usage="/)
split( a[
2], b, /"/)
currusage = usage[b[
1]]
}
else
{
currusage =
0
}
split( $
0, a, / formatindex="/)
split( a[
2], b, /"/)
currformat = b[
1]
child =
0 #
1-based
for (l in leaders)
formats[currusage][currformat][++child] = leaders[l]
delete leaders
currleader =
0
formats[currusage][currformat][++child] = $
0
inFormatElement =
1
next
}
/<DateAcceptancePattern[ >]/ {
print
next
}
# Prefix a leading comment (or even an element) to the next FormatElement.
!inFormatElement {
leaders[++currleader] = $
0
next
}
# Associate any element or comment with the current FormatElement.
{
formats[currusage][currformat][++child] = $
0
}
/<\/FormatElement>/ {
inFormatElement =
0
}
END {
}
# vim:set shiftwidth=
4 softtabstop=
4 expandtab: