xref: /aoo42x/main/oox/source/token/properties.pl (revision 7e90fac2)
1*7e90fac2SAndrew Rist#**************************************************************
2*7e90fac2SAndrew Rist#
3*7e90fac2SAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
4*7e90fac2SAndrew Rist#  or more contributor license agreements.  See the NOTICE file
5*7e90fac2SAndrew Rist#  distributed with this work for additional information
6*7e90fac2SAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
7*7e90fac2SAndrew Rist#  to you under the Apache License, Version 2.0 (the
8*7e90fac2SAndrew Rist#  "License"); you may not use this file except in compliance
9*7e90fac2SAndrew Rist#  with the License.  You may obtain a copy of the License at
10*7e90fac2SAndrew Rist#
11*7e90fac2SAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
12*7e90fac2SAndrew Rist#
13*7e90fac2SAndrew Rist#  Unless required by applicable law or agreed to in writing,
14*7e90fac2SAndrew Rist#  software distributed under the License is distributed on an
15*7e90fac2SAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*7e90fac2SAndrew Rist#  KIND, either express or implied.  See the License for the
17*7e90fac2SAndrew Rist#  specific language governing permissions and limitations
18*7e90fac2SAndrew Rist#  under the License.
19*7e90fac2SAndrew Rist#
20*7e90fac2SAndrew Rist#**************************************************************
21*7e90fac2SAndrew Rist
22*7e90fac2SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir$ARGV0 = shift @ARGV;
25cdf0e10cSrcweir$ARGV1 = shift @ARGV;
26cdf0e10cSrcweir$ARGV2 = shift @ARGV;
27cdf0e10cSrcweir
28cdf0e10cSrcweir# parse input file
29cdf0e10cSrcweir
30cdf0e10cSrcweiropen( INFILE, $ARGV0 ) or die "Error: cannot open input file: $!";
31cdf0e10cSrcweirmy %props;
32cdf0e10cSrcweirwhile( <INFILE> )
33cdf0e10cSrcweir{
34cdf0e10cSrcweir    # trim newline
35cdf0e10cSrcweir    chomp( $_ );
36cdf0e10cSrcweir    # trim leading/trailing whitespace
37cdf0e10cSrcweir    $_ =~ s/^\s*//g;
38cdf0e10cSrcweir    $_ =~ s/\s*$//g;
39cdf0e10cSrcweir    # check for valid characters
40cdf0e10cSrcweir    $_ =~ /^[A-Z][a-zA-Z0-9]*$/ or die "Error: invalid character in property '$_'";
41cdf0e10cSrcweir    $id = "PROP_$_";
42cdf0e10cSrcweir    $props{$_} = $id;
43cdf0e10cSrcweir}
44cdf0e10cSrcweirclose( INFILE );
45cdf0e10cSrcweir
46cdf0e10cSrcweir# generate output files
47cdf0e10cSrcweir
48cdf0e10cSrcweiropen( IDFILE, ">$ARGV1" ) or die "Error: cannot open output file: $!";
49cdf0e10cSrcweiropen( NAMEFILE, ">$ARGV2" ) or die "Error: cannot open output file: $!";
50cdf0e10cSrcweir
51cdf0e10cSrcweir$i = 0;
52cdf0e10cSrcweirforeach( sort( keys( %props ) ) )
53cdf0e10cSrcweir{
54cdf0e10cSrcweir    print( IDFILE "const sal_Int32 $props{$_} = $i;\n" );
55cdf0e10cSrcweir    print( NAMEFILE "/* $i */ \"$_\",\n" );
56cdf0e10cSrcweir    ++$i;
57cdf0e10cSrcweir}
58cdf0e10cSrcweir
59cdf0e10cSrcweirprint( IDFILE "const sal_Int32 PROP_COUNT = $i;\n" );
60cdf0e10cSrcweirprint( IDFILE "const sal_Int32 PROP_INVALID = -1;\n" );
61cdf0e10cSrcweir
62cdf0e10cSrcweirclose( IDFILE );
63cdf0e10cSrcweirclose( NAMEFILE );
64