rundel / carto-generator

C++ Parser for the Carto stylesheet language
15 stars 1 forks source link

unnecessary nesting breaks mss output #17

Open gubuntu opened 10 years ago

gubuntu commented 10 years ago

In each of these elements one set of braces is redundant and makes the document invalid.

    #cleantopo {
        .raster {
            {
            }
        }
    }
    #countries {
        .Countries_style {
            {
                polygon-fill: rgb(255, 245, 229);
                line-color: rgb(107, 107, 107);
                line-width: 1.16;
            }
        }
    }

In a stylesheet with thousands of lines this is difficult to clean up when there are some styles like this where a filter expression makes the extra set of braces required.

    #freeway10mil {
        .Freeway10million_style_label {
            [([country]!='South Africa')] {
                shield-name: "";
                shield-face-name: "DejaVu Sans Bold";
                shield-size: 7;
                shield-min-distance: 30.0;
                shield-spacing: 750;
                shield-file: "shield2_test.svg";
            }
        }
    }
rundel commented 10 years ago

Do you have a small example xml file that produces the faulty output?

gubuntu commented 10 years ago

"raster" from above:

<Style name="raster" >
        <Rule>
                <RasterSymbolizer scaling="bilinear">
                </RasterSymbolizer>
        </Rule>
  </Style>
  <Layer minzoom="8000000" maxzoom="100000000" name="Cleantopo" status="on" srs="+init=epsg:&srid_raster;" >
        <StyleName>raster</StyleName>
        <Datasource>
                <Parameter name="type">gdal</Parameter>
                <Parameter name="file">cleanafrica_relief.tif</Parameter>
                <Parameter name="format">tiff</Parameter>
        </Datasource>
</Layer>

"countries" from above:

<Style name="Countries_style">
    <Rule>
      <PolygonSymbolizer fill="rgb(255,245,229)"/>
      <LineSymbolizer stroke="rgb(107,107,107)" stroke-width="1.16"/>
    </Rule>
   </Style>
  <Layer maxzoom="60000" name="Countries" srs="+init=epsg:&srid;">
    <StyleName>Countries_style</StyleName>
    <Datasource>
      <Parameter name="dbname">&dbname;</Parameter>
      <Parameter name="estimate_extent">0</Parameter>
      <Parameter name="extent">&extent;</Parameter>
      <Parameter name="geometry_field">&geometry_field;</Parameter>
      <Parameter name="host">&host;</Parameter>
      <Parameter name="password">&password;</Parameter>
      <Parameter name="port">&port;</Parameter>
      <Parameter name="srid">&srid;</Parameter>
      <Parameter name="table">a_countries</Parameter>
      <Parameter name="type">&datasourcetype;</Parameter>
      <Parameter name="user">&password;</Parameter>
    </Datasource>
  </Layer>