summaryrefslogtreecommitdiffstats
path: root/iso_639.sed
diff options
context:
space:
mode:
Diffstat (limited to 'iso_639.sed')
-rw-r--r--iso_639.sed31
1 files changed, 31 insertions, 0 deletions
diff --git a/iso_639.sed b/iso_639.sed
new file mode 100644
index 0000000..e7e4d05
--- /dev/null
+++ b/iso_639.sed
@@ -0,0 +1,31 @@
+1,/<iso_639_entries/b
+
+# on each new iso-code process the current one
+\!\(<iso_639_entry\|</iso_639_entries>\)!{
+ x
+ s/^$//
+ # we are on the first iso-code--nothing to process here
+ t
+ # process and write to output
+ s/\s\+/ /g
+ s/<iso_639_entry//
+ s!/\s*>!!
+ # use '%' as a separator of parsed and unparsed input
+ s/\(.*\)iso_639_2T_code="\([^"]\+\)"\(.*\)/\2 % \1 \3/
+ s/\([^%]\+\)%\(.*\)iso_639_2B_code="\([^"]\+\)"\(.*\)/\1\t\3 % \2 \4/
+ # clear subst. memory for the next t
+ t clear
+ :clear
+ s/\([^%]\+\)%\(.*\)iso_639_1_code="\([^"]\+\)"\(.*\)/\1\t\3 % \2 \4/
+ t name
+ # no 639-1 code--write xx
+ s/%/\tXX %/
+ :name
+ s/\([^%]\+\)%\(.*\)name="\([^"]\+\)"\(.*\)/\1\t\3/
+ s/ \t/\t/g
+ p
+ b
+ :noout
+}
+
+H