[Mapcss] Little syntax easement

Paul Hartmann phaaurlt at googlemail.com
Mon Feb 6 14:35:57 GMT 2012


On 02/06/2012 10:27 AM, Richard Fairhurst wrote:
> Hi all,
> 
> I'd like to suggest a little 'easement' to make MapCSS syntax less
> verbose in one particular case.
> 
> Right now, if you want to use a tag value in a declaration, you need to
> fire up the eval parser:
>     way[highway] { width: eval("tag('lanes')"); }
> 
> It'd be more pleasant, and more efficient, to allow this too:
>     way[highway] { width: tag('lanes'); }
> 
> and it's quite CSS-like, because you can of course use a similar syntax
> in Real CSS:
>     way[highway] { color: rgb(0,0,0); }

+1

I'd go one or two steps further:

  (1) Get rid of eval:

 width: eval("tag('lanes') * 5");

would become

 width: tag('lanes') * 5;


  (2) Interpret any keyword FOO in an expression as prop("FOO") unless
it matches a build-in keyword. (This adds support for global constants.)

way {
  RESIDENTIAL_COLOR: #AAAAAA;
  LANE_WIDTH: 3;
}
way[highway=residential] {
  color: RESIDENTIAL_COLOR;
  width: tag("lanes") * LANE_WIDTH;
}
way[highway=residential][oneway=yes] {
  width: width - 2;
}

Paul



More information about the Mapcss mailing list