Warning, /frameworks/syntax-highlighting/autotests/folding/test.mss.fold is written in an unsupported language. File is not indexed.

0001 <beginfold id='1'></beginfold id='1'>/* kate: hl CartoCSS
0002    This file contains some content coming from
0003    https://github.com/gravitystorm/openstreetmap-carto
0004    with CC0 license. This file is just for testing
0005    katepart highlighting engine.
0006    <endfold id='1'>*/</endfold id='1'>
0007 
0008 <beginfold id='1'></beginfold id='1'>/* This is
0009 a multiline comment. <endfold id='1'>*/</endfold id='1'>
0010 
0011 // This is a single-line comment.
0012 
0013 #world <beginfold id='2'>{</beginfold id='2'>
0014     // various styles to define colors (all except the color function are rendered the same way):
0015     // Numbers are always treated as floating-point and highlighted. This syntax
0016     polygon-opacity: 50%;
0017     // is equivalent to
0018     polygon-opacity: 0.5;
0019     // This is a coma-separated list of numbers:
0020     line-dasharray: 6,3,2,3,2,3;
0021     // Also function calls are possible. Function calls like “url” get special highlighting:
0022     shield-file: url("myfile.svg");
0023     // Within function calls, strings can contains fields like [width] which get special highlighting:
0024     shield-file: url("symbols/shields/motorway_[width]x[height].svg");
0025     polygon-fill: white; // List of known colors
0026     polygon-fill: #ffffff; // Six-digit hex color
0027     polygon-fill: #fff; // Three-digit hex color
0028     polygon-fill: #ffff; // Invalid hex color
0029     polygon-fill: rgba(255,255,255,1); // define a color by a special function
0030     // everything else is simply interpreted as keyword:
0031     line-clip: false;
0032     line-clip: abcdef;
0033 <endfold id='2'>}</endfold id='2'>
0034 
0035 // You can define macros called “CartoCSS variables” with arbitrary values and types.
0036 // They do not behave much like variable, but more like macros.
0037 @myvariable: 15;
0038 @myvariable: #123456;
0039 @myvariable: white;
0040 @myothervariable: @myvariable; // this variable gets defined by the value of another variable
0041 @myvariable: darken(white, 5%); // A variable defined by the result of a function. The function “darken” gets special highlighting.
0042 // Variables can also contain strings:
0043 @myvariable: 'abc';
0044 
0045 // These variables can be used later as values
0046 #world <beginfold id='2'>{</beginfold id='2'>
0047     polygon-fill: @myvariable;
0048 <endfold id='2'>}</endfold id='2'>
0049 
0050 <beginfold id='1'></beginfold id='1'>/* Typically, in MSS files you declare filters like “#world[zoom >= 17]”
0051 followed by curly braces with parameters like “size” for Mapnik symbolizers like “text”. <endfold id='1'>*/</endfold id='1'>
0052 
0053 // Each Mapnik symbolizer parameter can be on its own line:
0054 #world[zoom >= 17] <beginfold id='2'>{</beginfold id='2'>
0055   text-wrap-width: 20;
0056   text-size: 11;
0057 <endfold id='2'>}</endfold id='2'>
0058 // Or you can put various of them into the same line:
0059 #world[zoom >= 19] <beginfold id='2'>{</beginfold id='2'> text-wrap-width: 20; text-size: 11; <endfold id='2'>}</endfold id='2'>
0060 
0061 // It is allowed to omit the final “;” for the last Mapnik symbolizer parameter within a block:
0062 #world[zoom >= 19] <beginfold id='2'>{</beginfold id='2'> text-wrap-width: 20; text-size: 11 <endfold id='2'>}</endfold id='2'>
0063 // Also after an omitted final “;” the following code is nevertheless highlighted correctly:
0064 #world[zoom >= 19] <beginfold id='2'>{</beginfold id='2'> text-wrap-width: 20; text-size: 11 ; <endfold id='2'>}</endfold id='2'>
0065 // “null” and “zoom” are special keywords within filters, and highlighted as such:
0066 ["name" != null]["ref" = null][zoom >= 19] <beginfold id='2'>{</beginfold id='2'> text-wrap-width: 20; <endfold id='2'>}</endfold id='2'>
0067 
0068 #admin-low-zoom[zoom < 11], // You can make coma-separated lists of various filters
0069 #admin-mid-zoom[zoom >= 11][zoom < 13], // like this one.
0070 #admin-high-zoom[zoom >= 13] <beginfold id='2'>{</beginfold id='2'>
0071   [zoom = 15] // “zoom” has special behaviour within filters and gets its own highlighting
0072   [admin_level = '2'], // data fields like “admin_level” can be referenced by their name and get highlighting as data fields
0073   ["admin_level" = '2'], // data fields like “admin_level” can be referenced by their name in quotes and get highlighting as data fields
0074   [admin_level = '3'] <beginfold id='2'>{</beginfold id='2'>
0075     [zoom >= 4] <beginfold id='2'>{</beginfold id='2'>
0076       // You can create additional “Named instances” of Mapnik symbolizers by adding a “myname/” before the symbolizer.
0077       // The name of the named instance gets special highlighting:
0078       background/line-color: white;
0079       line-color: @admin-boundaries;
0080     <endfold id='2'>}</endfold id='2'>
0081   <endfold id='2'>}</endfold id='2'>
0082 <endfold id='2'>}</endfold id='2'>
0083 
0084 #admin-mid-zoom[zoom >= 11][zoom < 13] <beginfold id='2'>{</beginfold id='2'>
0085   [admin_level = 'abc'] <beginfold id='2'>{</beginfold id='2'> // The string 'abc' is highlighted as a verbatim string, not as an expression string.
0086     [zoom >= 4] <beginfold id='2'>{</beginfold id='2'>
0087       text-name: [test]; // simplified reference to the value of the data field “test”
0088       text-name: "[test]"; // another reference to the data field “test”, this time within an expression string
0089       // A rather complex expression string that will do some math; @zoom is a special runtime value (in spite
0090       // of the @ it has nothing to do with ordinary variables):
0091       text-size: "([way_area]*pow(4,@zoom)/24505740000)";
0092       // Here the same thing as simple expression:
0093       // Note that @zoom now is highlighted in another color, because in this context it does not reference to a
0094       // runtime variable anymore, but to an ordinary CartoCSS variable:
0095       text-size: ([way_area]*pow(4,@zoom)/24505740000);
0096       text-name: "'Value: '[test]"; // A verbatim string 'Value: ' as part of an expression string.
0097       text-name: '"Value: "[test]'; // " and ' are interchangeable. The outer is always the expression string and the inner the verbatim string.
0098       text-name: "[field]\n"; // Expression strings however do not have escape sequences, so \n gets no special highlighting here. [field] however is highlighted as data field.
0099       text-name: "[field]+'\n'+[otherfield]"; // Inner strings, here the single-quoted string, are normal strings and highlight escape sequences like \n.
0100       text-name: "[field]+'[testfield]'+[otherfield]"; // Inner strings, here the single-quoted string, are normal strings and do not highlight any fields like [testfield].
0101       text-name: [name] + /* Comments are not allowed within expressions, so no special comment highlighting here. */ "\n" + [ref];
0102     <endfold id='2'>}</endfold id='2'>
0103   <endfold id='2'>}</endfold id='2'>
0104 <endfold id='2'>}</endfold id='2'>
0105 
0106 .nature <beginfold id='2'>{</beginfold id='2'> // .nature references a class, which is similar to a layer like #nature, so both are rendered the same way
0107     ::fill <beginfold id='2'>{</beginfold id='2'>
0108         <beginfold id='1'></beginfold id='1'>/* The :: syntax defined “attachments” (a sort of sub-layer within normal layers), here “::fill”.
0109         Everything that is defined within an attachment is applied in the order of the first occurrence
0110         of the attachment, instead of following the normal appliance order. Therefore attachments are
0111         highlighted as dsControlFlow by default. <endfold id='1'>*/</endfold id='1'>
0112         opacity: 0.05;
0113     <endfold id='2'>}</endfold id='2'>
0114 <endfold id='2'>}</endfold id='2'>