Revision: 7427
Author: [email protected]
Date: Tue Jan 19 06:59:10 2010
Log: Merge tr...@7413 to allow CssResource to parse idents with leading hyphens or that contain underscores.

$ svn merge -c 7413 --ignore-ancestry https://google-web-toolkit.googlecode.com/svn/trunk

http://code.google.com/p/google-web-toolkit/source/detail?r=7427

Modified:
 /releases/2.0/branch-info.txt
 /releases/2.0/common.ant.xml
 /releases/2.0/dev/build.xml
 /releases/2.0/eclipse/servlet/.classpath
 /releases/2.0/eclipse/user/.classpath
 /releases/2.0/user/build.xml
 /releases/2.0/user/src/com/google/gwt/resources/css/GenerateCssAst.java
 /releases/2.0/user/src/com/google/gwt/resources/css/RtlVisitor.java
 /releases/2.0/user/src/com/google/gwt/resources/css/ast/CssProperty.java
/releases/2.0/user/test/com/google/gwt/resources/client/CSSResourceTest.java
 /releases/2.0/user/test/com/google/gwt/resources/client/test.css
/releases/2.0/user/test/com/google/gwt/resources/css/ExtractClassNamesVisitorTest.java /releases/2.0/user/test/com/google/gwt/resources/css/extractClassNames_expected.css /releases/2.0/user/test/com/google/gwt/resources/css/extractClassNames_test.css

=======================================
--- /releases/2.0/branch-info.txt       Tue Jan 19 06:47:00 2010
+++ /releases/2.0/branch-info.txt       Tue Jan 19 06:59:10 2010
@@ -1258,3 +1258,7 @@
   Make @url and the gwt-image property accept dot-path values
svn merge -c 7317 --ignore-ancestry https://google-web-toolkit.googlecode.com/svn/trunk

+tr...@7413 was merged into this branch
+ Allow CssResource to parse identifiers containing underscores or that have a leading hyphen. + svn merge -c 7413 --ignore-ancestry https://google-web-toolkit.googlecode.com/svn/trunk
+
=======================================
--- /releases/2.0/common.ant.xml        Tue Dec  1 15:25:46 2009
+++ /releases/2.0/common.ant.xml        Tue Jan 19 06:59:10 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>

=======================================
--- /releases/2.0/dev/build.xml Wed Nov  4 09:50:34 2009
+++ /releases/2.0/dev/build.xml Tue Jan 19 06:59:10 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>
=======================================
--- /releases/2.0/eclipse/servlet/.classpath    Tue Oct 13 16:57:19 2009
+++ /releases/2.0/eclipse/servlet/.classpath    Tue Jan 19 06:59:10 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>
=======================================
--- /releases/2.0/eclipse/user/.classpath       Tue Oct 13 16:57:19 2009
+++ /releases/2.0/eclipse/user/.classpath       Tue Jan 19 06:59:10 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"/>
=======================================
--- /releases/2.0/user/build.xml        Fri Jan 15 13:51:49 2010
+++ /releases/2.0/user/build.xml        Tue Jan 19 06:59:10 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>

=======================================
--- /releases/2.0/user/src/com/google/gwt/resources/css/GenerateCssAst.java Fri Nov 6 10:49:13 2009 +++ /releases/2.0/user/src/com/google/gwt/resources/css/GenerateCssAst.java Tue Jan 19 06:59:10 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 == '_');
   }

   /**
=======================================
--- /releases/2.0/user/src/com/google/gwt/resources/css/RtlVisitor.java Mon Nov 2 12:44:54 2009 +++ /releases/2.0/user/src/com/google/gwt/resources/css/RtlVisitor.java Tue Jan 19 06:59:10 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 {
=======================================
--- /releases/2.0/user/src/com/google/gwt/resources/css/ast/CssProperty.java Tue Jan 19 06:47:00 2010 +++ /releases/2.0/user/src/com/google/gwt/resources/css/ast/CssProperty.java Tue Jan 19 06:59:10 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;
=======================================
--- /releases/2.0/user/test/com/google/gwt/resources/client/CSSResourceTest.java Tue Jan 19 06:47:00 2010 +++ /releases/2.0/user/test/com/google/gwt/resources/client/CSSResourceTest.java Tue Jan 19 06:59:10 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"));

=======================================
--- /releases/2.0/user/test/com/google/gwt/resources/client/test.css Tue Jan 19 06:47:00 2010 +++ /releases/2.0/user/test/com/google/gwt/resources/client/test.css Tue Jan 19 06:59:10 2010
@@ -109,6 +109,8 @@
 div {
   \-some-wacky-extension : boo;
   another-extension: \-bar;
+  -unescaped-hyphen: -is-better;
+  with_underscore: _is_better;
 }

 div {
=======================================
--- /releases/2.0/user/test/com/google/gwt/resources/css/ExtractClassNamesVisitorTest.java Sat Oct 10 13:51:12 2009 +++ /releases/2.0/user/test/com/google/gwt/resources/css/ExtractClassNamesVisitorTest.java Tue Jan 19 06:59:10 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);
=======================================
--- /releases/2.0/user/test/com/google/gwt/resources/css/extractClassNames_expected.css Sat Oct 10 13:51:12 2009 +++ /releases/2.0/user/test/com/google/gwt/resources/css/extractClassNames_expected.css Tue Jan 19 06:59:10 2010
@@ -23,6 +23,12 @@

 .prefixed-selector {
 }
+
+.selector_with_underscores {
+}
+
+.-selector-with-hyphen {
+}

 /* This is not a class selector */
 fail {
=======================================
--- /releases/2.0/user/test/com/google/gwt/resources/css/extractClassNames_test.css Sat Oct 10 13:51:12 2009 +++ /releases/2.0/user/test/com/google/gwt/resources/css/extractClassNames_test.css Tue Jan 19 06:59:10 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

Reply via email to