Introspection: add col/row manipulations
[gnumeric.git] / test / normalize-gnumeric
blob1130a189cc1f1f0f5b2b7af969452abd3c520682
1 #!/usr/bin/perl -w
2 # -----------------------------------------------------------------------------
4 # This script tries to normalize gnumeric files, i.e., remove insignificant
5 # differences due to versions, environment, or hash ordering.
7 # It is a perl script mucking with an xml file. Think it over. It is not
8 # hard to cheat this, but for purposes of testing code, it is fine.
10 my @items;
11 my $item = '';
13 while (<STDIN>) {
14 # "x" out version numbers.
15 if (m|^\s*<gnm:Version\s+Epoch="\d+"\s+Major="\d+"\s+Minor="\d+"\s+Full="[.0-9]+"/>\s*$|) {
16 s/="[.0-9]+"/="x"/g;
18 if (m|^\s*<office:document-meta |) {
19 s/( office:version=")[.0-9]+(")/$1XXX$2/;
22 s{(\bxmlns:gnm="http://www.gnumeric.org/v)\d+(\.dtd)"}{$1XX$2};
24 if (m|^\s*<gnm:PrintInformation>\s*$| .. m|^\s*</gnm:PrintInformation>\s*$|) {
25 # "x" out margins.
26 if (m|^\s*<gnm:Margins>\s*$| .. m|^\s*</gnm:Margins>\s*$|) {
27 s/="[-.0-9a-zA-Z]+"/="x"/g;
30 # "x" out information from cups.
31 s{(<gnm:(paper|orientation)>).*(</gnm:\2>)}{$1xxx$3};
34 if (m|^\s*<office:meta>\s*$| .. m|^\s*</office:meta>\s*$|) {
35 s|(<meta:creation-date>).*(</meta:creation-date>)|$1XXX$2|;
38 if (m|^\s*<gnm:name>WorkbookView::do_auto_completion</gnm:name>\s*$| ..
39 m|^\s*</gnm:Attribute>\s*$|) {
40 s|(<gnm:value>).*(</gnm:value>)|$1xxx$2|;
43 # Sort names.
44 if (0 && m|^\s*<gnm:Sheets>\s*$| .. m|^\s*</gnm:Sheets>\s*$|) {
45 if (m|^\s*<gnm:Names>\s*$| .. m|^\s*</gnm:Names>\s*$|) {
46 if (m|^\s*<gnm:Names>\s*$|) {
47 # Zip.
48 } elsif (m|^\s*</gnm:Names>\s*$|) {
49 print sort @items;
50 @items = ();
51 } else {
52 $item .= $_;
54 if (m|^\s*</gnm:Name>\s*$|) {
55 push @items, $item;
56 $item = '';
58 next;
63 print;