Browse Source

Magic operation now shows matching ops even if they are not run.

n1474335 7 years ago
parent
commit
23bdfd04a2
2 changed files with 18 additions and 14 deletions
  1. 13 10
      src/core/FlowControl.js
  2. 5 4
      src/core/lib/Magic.js

+ 13 - 10
src/core/FlowControl.js

@@ -277,7 +277,7 @@ const FlowControl = {
                 style='table-layout: fixed;'>
             <tr>
                 <th>Recipe (click to load)</th>
-                <th>Data snippet</th>
+                <th>Result snippet</th>
                 <th>Properties</th>
             </tr>`;
 
@@ -290,24 +290,27 @@ const FlowControl = {
                 recipeURL = "recipe=" + Utils.encodeURIFragment(Utils.generatePrettyRecipe(recipeConfig));
 
             const bestLanguage = option.languageScores[0];
-            let language = "Unknown",
-                fileType = "Unknown";
+            let language = "",
+                fileType = "",
+                matchingOps = "",
+                validUTF8 = option.isUTF8 ? "Valid UTF8\n" : "";
 
-            if (bestLanguage.probability > 0.00005) {
-                language = Magic.codeToLanguage(bestLanguage.lang) + " " +
-                    (bestLanguage.probability * 100).toFixed(2) + "%";
+            if (bestLanguage.probability > 0.00001) {
+                language = `Language: ${Magic.codeToLanguage(bestLanguage.lang)} ${(bestLanguage.probability * 100).toFixed(2)}%\n`;
             }
 
             if (option.fileType) {
-                fileType = `${option.fileType.mime} (${option.fileType.ext})`;
+                fileType = `File type: ${option.fileType.mime} (${option.fileType.ext})\n`;
+            }
+
+            if (option.matchingOps.length) {
+                matchingOps = `Matching ops: ${[...new Set(option.matchingOps.map(op => op.op))].join(", ")}\n`;
             }
 
             output += `<tr>
                 <td><a href="#${recipeURL}">${Utils.generatePrettyRecipe(option.recipe, true)}</a></td>
                 <td>${Utils.escapeHtml(Utils.printable(Utils.truncate(option.data, 99)))}</td>
-                <td>Language: ${language}
-File type: ${fileType}
-Valid UTF8: ${option.isUTF8}</td>
+                <td>${language}${fileType}${matchingOps}${validUTF8}</td>
             </tr>`;
         });
 

+ 5 - 4
src/core/lib/Magic.js

@@ -174,6 +174,9 @@ class Magic {
     async speculativeExecution(depth = 0, recipeConfig = []) {
         if (depth < 0) return [];
 
+        // Find any operations that can be run on this data
+        const matchingOps = this.findMatchingOps();
+
         let results = [];
 
         // Record the properties of the current data
@@ -182,12 +185,10 @@ class Magic {
             data: this.inputStr.slice(0, 100),
             languageScores: this.detectLanguage(),
             fileType: this.detectFileType(),
-            isUTF8: this.isUTF8()
+            isUTF8: this.isUTF8(),
+            matchingOps: matchingOps
         });
 
-        // Find any operations that can be run on this data
-        const matchingOps = this.findMatchingOps();
-
         // Execute each of those operations, then recursively call the speculativeExecution() method
         // on the resulting data, recording the properties of each option.
         await Promise.all(matchingOps.map(async op => {