Ticket #19875: 19875.3.patch
| File 19875.3.patch, 4.7 KB (added by , 5 years ago) |
|---|
-
src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
356 356 final MapCSSStyleSource source = new MapCSSStyleSource(""); 357 357 final MapCSSParser preprocessor = new MapCSSParser(css, MapCSSParser.LexicalState.PREPROCESSOR); 358 358 try (StringReader mapcss = new StringReader(preprocessor.pp_root(source))) { 359 new MapCSSParser(mapcss, MapCSSParser.LexicalState.DEFAULT).sheet(source );359 new MapCSSParser(mapcss, MapCSSParser.LexicalState.DEFAULT).sheet(source, false); 360 360 } 361 361 // Ignore "meta" rule(s) from external rules of JOSM wiki 362 362 source.removeMetaRules(); -
src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj
541 541 /** 542 542 * entry point for the main parser 543 543 * @param sheet MapCSS style source 544 * @param metadataOnly if true, stop reading after first rule that is not a meta rule 544 545 * @throws ParseException in case of parsing error 545 546 */ 546 void sheet(MapCSSStyleSource sheet ):547 void sheet(MapCSSStyleSource sheet, boolean metadataOnly): 547 548 { 548 549 } 549 550 { … … 552 553 ( 553 554 try { 554 555 rule() w() 556 { 557 if (metadataOnly && !sheet.rules.isEmpty()) { 558 // get first selector of last rule 559 Selector sel = sheet.rules.get(sheet.rules.size() - 1).selectors.get(0); 560 if (!(sel instanceof GeneralSelector) || !Selector.BASE_META.equals(sel.getBase())) { 561 return; 562 } 563 } 564 } 555 565 } catch (MapCSSException mex) { 556 566 Logging.error(mex); 557 567 error_skipto(RBRACE, mex); -
src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSStyleSource.java
51 51 import org.openstreetmap.josm.tools.JosmRuntimeException; 52 52 import org.openstreetmap.josm.tools.LanguageInfo; 53 53 import org.openstreetmap.josm.tools.Logging; 54 import org.openstreetmap.josm.tools.Stopwatch; 54 55 import org.openstreetmap.josm.tools.Utils; 55 56 56 57 /** … … 156 157 public void loadStyleSource(boolean metadataOnly) { 157 158 STYLE_SOURCE_LOCK.writeLock().lock(); 158 159 try { 160 Stopwatch stopwatch = Stopwatch.createStarted(); 159 161 init(); 160 162 rules.clear(); 161 163 ruleIndex.clear(); … … 168 170 169 171 // do the actual mapcss parsing 170 172 try (Reader in2 = new StringReader(preprocessor.pp_root(this))) { 171 new MapCSSParser(in2, MapCSSParser.LexicalState.DEFAULT).sheet(this );173 new MapCSSParser(in2, MapCSSParser.LexicalState.DEFAULT).sheet(this, metadataOnly); 172 174 } 173 175 174 176 loadMeta(); … … 194 196 Logging.error(e); 195 197 logError(new ParseException(e.getMessage())); // allow e to be garbage collected, it links to the entire token stream 196 198 } 197 if (metadataOnly) { 198 return; 199 200 if (!metadataOnly) { 201 // optimization: filter rules for different primitive types 202 ruleIndex.buildIndex(rules.stream()); 203 loaded = true; 199 204 } 200 // optimization: filter rules for different primitive types 201 ruleIndex.buildIndex(rules.stream()); 202 loaded = true; 205 Logging.debug(stopwatch.toString("Parsing map style " + url)); 203 206 } finally { 204 207 STYLE_SOURCE_LOCK.writeLock().unlock(); 205 208 } -
scripts/TagInfoExtract.java
354 354 MapCSSParser parser = new MapCSSParser(reader, MapCSSParser.LexicalState.DEFAULT); 355 355 styleSource = new MapCSSStyleSource(""); 356 356 styleSource.url = ""; 357 parser.sheet(styleSource );357 parser.sheet(styleSource, false); 358 358 } 359 359 } 360 360
