Revision: 7413
Author: [email protected]
Date: Fri Jan 15 11:17:28 2010
Log: Allow CssResource to handle identifiers containing underscores or that
have a leading hyphen.
Patch by: bobv
Review by: cromwellian
http://code.google.com/p/google-web-toolkit/source/detail?r=7413
Modified:
/trunk/common.ant.xml
/trunk/dev/build.xml
/trunk/eclipse/servlet/.classpath
/trunk/eclipse/user/.classpath
/trunk/user/build.xml
/trunk/user/src/com/google/gwt/resources/css/GenerateCssAst.java
/trunk/user/src/com/google/gwt/resources/css/RtlVisitor.java
/trunk/user/src/com/google/gwt/resources/css/ast/CssProperty.java
/trunk/user/test/com/google/gwt/resources/client/CSSResourceTest.java
/trunk/user/test/com/google/gwt/resources/client/test.css
/trunk/user/test/com/google/gwt/resources/css/ExtractClassNamesVisitorTest.java
/trunk/user/test/com/google/gwt/resources/css/extractClassNames_expected.css
/trunk/user/test/com/google/gwt/resources/css/extractClassNames_test.css
=======================================
--- /trunk/common.ant.xml Tue Jan 5 10:03:42 2010
+++ /trunk/common.ant.xml Fri Jan 15 11:17:28 2010
@@ -209,7 +209,7 @@
<pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
<pathelement
location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
<pathelement location="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" />
- <pathelement location="${gwt.tools.lib}/w3c/flute/flute-1.3.jar"
/>
+ <pathelement
location="${gwt.tools.lib}/w3c/flute/flute-1.3-gg1.jar" />
<extraclasspaths />
</classpath>
=======================================
--- /trunk/dev/build.xml Wed Nov 4 09:47:36 2009
+++ /trunk/dev/build.xml Fri Jan 15 11:17:28 2010
@@ -36,7 +36,7 @@
<pathelement
location="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar" />
<pathelement
location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
<pathelement location="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" />
- <pathelement location="${gwt.tools.lib}/w3c/flute/flute-1.3.jar" />
+ <pathelement
location="${gwt.tools.lib}/w3c/flute/flute-1.3-gg1.jar" />
<pathelement
location="${gwt.build.lib}/gwt-dev-${build.host.platform}.jar" />
<pathelement location="${alldeps.jar}" />
</classpath>
=======================================
--- /trunk/eclipse/servlet/.classpath Tue Oct 13 16:57:19 2009
+++ /trunk/eclipse/servlet/.classpath Fri Jan 15 11:17:28 2010
@@ -6,7 +6,7 @@
<classpathentry kind="var"
path="GWT_TOOLS/lib/tomcat/servlet-api-2.4.jar"/>
<classpathentry combineaccessrules="false" kind="src" path="/gwt-user"/>
<classpathentry combineaccessrules="false" kind="src" path="/gwt-dev"/>
- <classpathentry kind="var"
path="GWT_TOOLS/lib/w3c/flute/flute-1.3.jar"/>
+ <classpathentry kind="var"
path="GWT_TOOLS/lib/w3c/flute/flute-1.3-gg1.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/w3c/sac/sac-1.3.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
=======================================
--- /trunk/eclipse/user/.classpath Tue Oct 13 16:57:19 2009
+++ /trunk/eclipse/user/.classpath Fri Jan 15 11:17:28 2010
@@ -23,7 +23,7 @@
<classpathentry kind="var"
path="GWT_TOOLS/lib/xerces/xerces-2_9_1/xercesImpl-NoMetaInf.jar"/>
<classpathentry kind="var"
path="GWT_TOOLS/lib/xerces/xerces-2_9_1/xml-apis.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/w3c/sac/sac-1.3.jar"/>
- <classpathentry kind="var"
path="GWT_TOOLS/lib/w3c/flute/flute-1.3.jar"/>
+ <classpathentry kind="var"
path="GWT_TOOLS/lib/w3c/flute/flute-1.3-gg1.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/cglib/cglib-2.2.jar"/>
<classpathentry kind="var" path="GWT_TOOLS/lib/easymock/easymock.jar"/>
<classpathentry kind="var"
path="GWT_TOOLS/lib/easymock/easymockclassextension.jar"/>
=======================================
--- /trunk/user/build.xml Fri Jan 15 10:33:21 2010
+++ /trunk/user/build.xml Fri Jan 15 11:17:28 2010
@@ -80,7 +80,7 @@
<pathelement
location="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar" />
<pathelement
location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
<pathelement location="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" />
- <pathelement location="${gwt.tools.lib}/w3c/flute/flute-1.3.jar" />
+ <pathelement
location="${gwt.tools.lib}/w3c/flute/flute-1.3-gg1.jar" />
<pathelement location="${gwt.dev.jar}" />
</classpath>
</gwt.javac>
@@ -132,7 +132,7 @@
<fileset dir="${javac.out}" />
<zipfileset src="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar"
excludes="**/*.java"/>
<zipfileset src="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" />
- <zipfileset src="${gwt.tools.lib}/w3c/flute/flute-1.3.jar" />
+ <zipfileset src="${gwt.tools.lib}/w3c/flute/flute-1.3-gg1.jar" />
</gwt.jar>
</target>
=======================================
--- /trunk/user/src/com/google/gwt/resources/css/GenerateCssAst.java Thu
Nov 5 19:38:04 2009
+++ /trunk/user/src/com/google/gwt/resources/css/GenerateCssAst.java Fri
Jan 15 11:17:28 2010
@@ -796,6 +796,13 @@
assert selector.length() > 0;
StringBuilder toReturn = new StringBuilder();
+
+ if (selector.charAt(0) == '-') {
+ // Allow leading hyphen
+ selector = selector.substring(1);
+ toReturn.append('-');
+ }
+
if (!isIdentStart(selector.charAt(0))) {
toReturn.append('\\');
}
@@ -867,11 +874,12 @@
}
private static boolean isIdentPart(char c) {
- return Character.isLetterOrDigit(c) || (c == '\\') || (c == '-');
+ return Character.isLetterOrDigit(c) || (c == '\\') || (c == '-')
+ || (c == '_');
}
private static boolean isIdentStart(char c) {
- return Character.isLetter(c) || (c == '\\');
+ return Character.isLetter(c) || (c == '\\') || (c == '_');
}
/**
=======================================
--- /trunk/user/src/com/google/gwt/resources/css/RtlVisitor.java Wed Oct 28
09:10:53 2009
+++ /trunk/user/src/com/google/gwt/resources/css/RtlVisitor.java Fri Jan 15
11:17:28 2010
@@ -235,8 +235,11 @@
String[] parts = name.toLowerCase().split("-");
StringBuffer methodName = new StringBuffer("propertyHandler");
for (String part : parts) {
- methodName.append(Character.toUpperCase(part.charAt(0)));
- methodName.append(part, 1, part.length());
+ if (part.length() > 0) {
+ // A leading hyphen, or something like foo--bar, which is weird
+ methodName.append(Character.toUpperCase(part.charAt(0)));
+ methodName.append(part, 1, part.length());
+ }
}
try {
=======================================
--- /trunk/user/src/com/google/gwt/resources/css/ast/CssProperty.java Tue
Dec 15 16:53:51 2009
+++ /trunk/user/src/com/google/gwt/resources/css/ast/CssProperty.java Fri
Jan 15 11:17:28 2010
@@ -406,6 +406,7 @@
private ListValue value;
public CssProperty(String name, Value value, boolean important) {
+ assert name.length() > 0 : "name";
this.name = name;
setValue(value);
this.important = important;
=======================================
--- /trunk/user/test/com/google/gwt/resources/client/CSSResourceTest.java
Tue Dec 15 16:53:51 2009
+++ /trunk/user/test/com/google/gwt/resources/client/CSSResourceTest.java
Fri Jan 15 11:17:28 2010
@@ -284,7 +284,10 @@
assertTrue(text.contains("runtime:PASSED;"));
// Check interestingly-named idents
- assertTrue(text.contains("\\-some-wacky-extension"));
+ assertTrue(text.contains("-some-wacky-extension"));
+ assertTrue(text.contains("another-extension:-bar"));
+ assertTrue(text.contains("-unescaped-hyphen:-is-better"));
+ assertTrue(text.contains("with_underscore:_is_better"));
assertTrue(text.contains("ns\\:tag"));
assertTrue(text.contains("ns\\:tag:pseudo"));
=======================================
--- /trunk/user/test/com/google/gwt/resources/client/test.css Tue Dec 15
16:53:51 2009
+++ /trunk/user/test/com/google/gwt/resources/client/test.css Fri Jan 15
11:17:28 2010
@@ -109,6 +109,8 @@
div {
\-some-wacky-extension : boo;
another-extension: \-bar;
+ -unescaped-hyphen: -is-better;
+ with_underscore: _is_better;
}
div {
=======================================
---
/trunk/user/test/com/google/gwt/resources/css/ExtractClassNamesVisitorTest.java
Sat Oct 10 13:51:12 2009
+++
/trunk/user/test/com/google/gwt/resources/css/ExtractClassNamesVisitorTest.java
Fri Jan 15 11:17:28 2010
@@ -36,7 +36,8 @@
Set<String> expected = new TreeSet<String>(Arrays.asList("selector1",
"selector2", "selector3", "external1", "external2", "external3",
- "prefixed-selector"));
+ "prefixed-selector", "selector_with_underscores",
+ "-selector-with-hyphen"));
Set<String> actual = new TreeSet<String>(v.getFoundClasses());
assertEquals(expected, actual);
@@ -50,7 +51,8 @@
test(TreeLogger.NULL, "extractClassNames", false, v);
Set<String> expected = new TreeSet<String>(Arrays.asList("selector1",
- "selector2", "selector3", "external1", "external2", "external3"));
+ "selector2", "selector3", "external1", "external2", "external3",
+ "selector_with_underscores", "-selector-with-hyphen"));
Set<String> actual = new TreeSet<String>(v.getFoundClasses());
assertEquals(expected, actual);
=======================================
---
/trunk/user/test/com/google/gwt/resources/css/extractClassNames_expected.css
Sat Oct 10 13:51:12 2009
+++
/trunk/user/test/com/google/gwt/resources/css/extractClassNames_expected.css
Fri Jan 15 11:17:28 2010
@@ -23,6 +23,12 @@
.prefixed-selector {
}
+
+.selector_with_underscores {
+}
+
+.-selector-with-hyphen {
+}
/* This is not a class selector */
fail {
=======================================
---
/trunk/user/test/com/google/gwt/resources/css/extractClassNames_test.css
Sat Oct 10 13:51:12 2009
+++
/trunk/user/test/com/google/gwt/resources/css/extractClassNames_test.css
Fri Jan 15 11:17:28 2010
@@ -23,6 +23,12 @@
.prefixed-selector {
}
+
+.selector_with_underscores {
+}
+
+.-selector-with-hyphen {
+}
/* This is not a class selector */
fail {
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors