Commits

Anonymous committed 6c7684e

Parse lazyli.

Comments (0)

Files changed (1)

src/org/netbeans/examples/props/parsing/PropsParser.java

 
 public class PropsParser extends Parser {
 
+    private Snapshot snpsht;
     private PropsParserResult result;
     
     @Override
     public void parse(Snapshot snpsht, Task task, SourceModificationEvent sme) throws ParseException {
+        this.snpsht = snpsht;
+        this.result = null;
+    }
+
+    private PropsParserResult doParse() {
         final TokenHierarchy<?> th = snpsht.getTokenHierarchy();
         TokenSequence<PropsTokenId> ts = th.tokenSequence(PropsTokenId.language());
         Collection<Mapping> mapping = new ArrayList<Mapping>();
         String lastKey = "";
         int[] keySpan = new int[] {0, 0};
-        
+
         while (ts.moveNext()) {
             Token<PropsTokenId> t = ts.token();
-            
+
             switch (t.id()) {
                 case KEY:
                     lastKey = t.text().toString();
                     break;
             }
         }
-        
-        result = new PropsParserResult(snpsht, mapping);
+
+        return new PropsParserResult(snpsht, mapping);
     }
-
+    
     @Override
     public Result getResult(Task task) throws ParseException {
+        if (result == null) {
+            result = doParse();
+        }
         return result;
     }
 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.