~ubuntu-branches/ubuntu/maverick/proguard/maverick

« back to all changes in this revision

Viewing changes to src/proguard/util/ListUtil.java

  • Committer: Bazaar Package Importer
  • Author(s): Sam Clegg, Onkar Shinde, Sam Clegg
  • Date: 2009-10-09 16:17:49 UTC
  • mfrom: (1.2.3 upstream) (3.1.6 karmic)
  • Revision ID: james.westby@ubuntu.com-20091009161749-qjk059y5r792co7c
Tags: 4.4-1
[ Onkar Shinde ]
* Merge from Ubuntu. (Closes: #534029, #548810)

[ Sam Clegg ]
* Thanks Onkar for the above fixes!
* New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 * ProGuard -- shrinking, optimization, obfuscation, and preverification
3
3
 *             of Java bytecode.
4
4
 *
5
 
 * Copyright (c) 2002-2008 Eric Lafortune (eric@graphics.cornell.edu)
 
5
 * Copyright (c) 2002-2009 Eric Lafortune (eric@graphics.cornell.edu)
6
6
 *
7
7
 * This program is free software; you can redistribute it and/or modify it
8
8
 * under the terms of the GNU General Public License as published by the Free
50
50
                buffer.append(',');
51
51
            }
52
52
 
53
 
            buffer.append(list.get(index));
 
53
            buffer.append(quotedString((String)list.get(index)));
54
54
        }
55
55
 
56
56
        return buffer.toString();
69
69
 
70
70
        List list = new ArrayList();
71
71
        int index = 0;
72
 
        while (index < string.length())
 
72
        while ((index = skipWhitespace(string, index)) < string.length())
73
73
        {
74
 
            int nextIndex = string.indexOf(',', index);
75
 
            if (nextIndex < 0)
76
 
            {
77
 
                nextIndex = string.length();
78
 
            }
79
 
 
80
 
            list.add(string.substring(index, nextIndex).trim());
 
74
            int nextIndex;
 
75
 
 
76
            // Do we have an opening quote?
 
77
            if (string.charAt(index) == '\'')
 
78
            {
 
79
                // Parse a quoted string.
 
80
                nextIndex = string.indexOf('\'', index + 1);
 
81
                if (nextIndex < 0)
 
82
                {
 
83
                    nextIndex = string.length();
 
84
                }
 
85
 
 
86
                list.add(string.substring(index + 1, nextIndex));
 
87
            }
 
88
            else
 
89
            {
 
90
                // Parse a non-quoted string.
 
91
                nextIndex = string.indexOf(',', index);
 
92
                if (nextIndex < 0)
 
93
                {
 
94
                    nextIndex = string.length();
 
95
                }
 
96
 
 
97
                String substring = string.substring(index, nextIndex).trim();
 
98
                if (substring.length() > 0)
 
99
                {
 
100
                    list.add(substring);
 
101
                }
 
102
            }
81
103
 
82
104
            index = nextIndex + 1;
83
105
        }
84
106
 
85
107
        return list;
86
108
    }
 
109
 
 
110
 
 
111
    /**
 
112
     * Skips any whitespace characters.
 
113
     */
 
114
    private static int skipWhitespace(String string, int index)
 
115
    {
 
116
        while (index < string.length() &&
 
117
               Character.isWhitespace(string.charAt(index)))
 
118
        {
 
119
            index++;
 
120
        }
 
121
        return index;
 
122
    }
 
123
 
 
124
 
 
125
    /**
 
126
     * Returns a quoted version of the given string, if necessary.
 
127
     */
 
128
    private static String quotedString(String string)
 
129
    {
 
130
        return string.length()     == 0 ||
 
131
               string.indexOf(' ') >= 0 ||
 
132
               string.indexOf('@') >= 0 ||
 
133
               string.indexOf('{') >= 0 ||
 
134
               string.indexOf('}') >= 0 ||
 
135
               string.indexOf('(') >= 0 ||
 
136
               string.indexOf(')') >= 0 ||
 
137
               string.indexOf(':') >= 0 ||
 
138
               string.indexOf(';') >= 0 ||
 
139
               string.indexOf(',') >= 0  ? ("'" + string + "'") :
 
140
                                           (      string      );
 
141
    }
 
142
 
 
143
 
 
144
    public static void main(String[] args)
 
145
    {
 
146
        if (args.length == 1)
 
147
        {
 
148
            System.out.println("Input string: ["+args[0]+"]");
 
149
 
 
150
            List list = commaSeparatedList(args[0]);
 
151
 
 
152
            System.out.println("Resulting list:");
 
153
            for (int index = 0; index < list.size(); index++)
 
154
            {
 
155
                System.out.println("["+list.get(index)+"]");
 
156
            }
 
157
        }
 
158
        else
 
159
        {
 
160
            List list = Arrays.asList(args);
 
161
 
 
162
            System.out.println("Input list:");
 
163
            for (int index = 0; index < list.size(); index++)
 
164
            {
 
165
                System.out.println("["+list.get(index)+"]");
 
166
            }
 
167
 
 
168
            String string = commaSeparatedString(list);
 
169
 
 
170
            System.out.println("Resulting string: ["+string+"]");
 
171
        }
 
172
    }
87
173
}