Index: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/html/HtmlAnalyzeHelper.java |
diff --git a/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/html/HtmlAnalyzeHelper.java b/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/html/HtmlAnalyzeHelper.java |
deleted file mode 100644 |
index 5fa154e44864926b5ad96522d0b93a1208d5c755..0000000000000000000000000000000000000000 |
--- a/editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/html/HtmlAnalyzeHelper.java |
+++ /dev/null |
@@ -1,110 +0,0 @@ |
-/* |
- * Copyright 2012 Dart project authors. |
- * |
- * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except |
- * in compliance with the License. You may obtain a copy of the License at |
- * |
- * http://www.eclipse.org/legal/epl-v10.html |
- * |
- * Unless required by applicable law or agreed to in writing, software distributed under the License |
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
- * or implied. See the License for the specific language governing permissions and limitations under |
- * the License. |
- */ |
- |
-package com.google.dart.tools.core.html; |
- |
-import com.google.common.base.CharMatcher; |
-import com.google.common.base.Charsets; |
-import com.google.common.collect.Maps; |
-import com.google.common.io.Files; |
-import com.google.dart.tools.core.DartCore; |
-import com.google.dart.tools.core.analysis.AnalysisServer; |
-import com.google.dart.tools.core.internal.model.PackageLibraryManagerProvider; |
- |
-import org.eclipse.core.resources.IFile; |
- |
-import java.io.File; |
-import java.util.Map; |
-import java.util.regex.Matcher; |
-import java.util.regex.Pattern; |
- |
-/** |
- * Helper class to analyze Dart code inside of HTML files. |
- */ |
-public class HtmlAnalyzeHelper { |
- private static final Map<File, File> dartToHtmlMap = Maps.newConcurrentMap(); |
- |
- /** |
- * This method should be called from builder to notify that HTML file was changed and should be |
- * analyzed. Note that this is long operation, don't call it from UI thread. |
- */ |
- public static void analyze(IFile htmlResource) { |
- File htmlFile = htmlResource.getLocation().toFile(); |
- try { |
- htmlResource.deleteMarkers(DartCore.DART_PROBLEM_MARKER_TYPE, true, 1); |
- analyzeEx(htmlFile); |
- } catch (Throwable e) { |
- DartCore.logError(e); |
- } |
- } |
- |
- /** |
- * @return the HTML {@link File} from which given Dart {@link File} was generated, may be same |
- * {@link File} if it was not generated from HTML. |
- */ |
- public static File getSourceHtmlFile(File dartFile) { |
- File htmlFile = dartToHtmlMap.get(dartFile); |
- if (htmlFile != null) { |
- return htmlFile; |
- } |
- return dartFile; |
- |
- } |
- |
- /** |
- * Implementation of {@link #analyze(IFile)} which can throw exceptions. |
- */ |
- private static void analyzeEx(File htmlFile) throws Exception { |
- String content = Files.toString(htmlFile, Charsets.UTF_8); |
- // extract <script type="application/dart"> scripts |
- int searchStart = 0; |
- Pattern pattern = Pattern.compile("\\<\\s*script\\s+type=['\"]application/dart['\"]\\s*\\>\\s*(.*)"); |
- Matcher matcher = pattern.matcher(content); |
- while (true) { |
- // find next script |
- if (!matcher.find(searchStart)) { |
- break; |
- } |
- // prepare script start/end |
- int scriptStart = matcher.start(1); |
- int scriptEnd = content.indexOf("</script>", scriptStart); |
- if (scriptEnd == -1) { |
- break; |
- } |
- searchStart = scriptEnd; |
- // extract script |
- String script = content.substring(scriptStart, scriptEnd); |
- // prepare prefix to place script at the same line/offset as it was in HTML |
- String scriptPrefix; |
- { |
- String contentPrefix = content.substring(0, scriptStart); |
- scriptPrefix = CharMatcher.anyOf("\r\n").negate().replaceFrom(contentPrefix, ' '); |
- } |
- // create temporary File with Dart code |
- File scriptFile = File.createTempFile("dartInHtml", ".dart"); |
- Files.write(scriptPrefix + script, scriptFile, Charsets.UTF_8); |
- dartToHtmlMap.put(scriptFile, htmlFile); |
- // ask AnalysisServer to analyze Dart file |
- { |
- AnalysisServer server = PackageLibraryManagerProvider.getDefaultAnalysisServer(); |
- server.getSavedContext().resolve(scriptFile, 30 * 1000); |
- // clean up |
- scriptFile.delete(); |
- // in theory, we should remove mapping, but practically it may be requested later |
-// dartToHtmlMap.remove(scriptFile); |
- } |
- } |
- } |
- |
-} |