Tools for parsingdata/metal
Live demo available at: gertjanal.github.io/metal-tools
The package metal-tools-jshexviewer contains a HexViewer, written in HTML.
This hexviewer highlights all Metal Def tokens from a ParseGraph
. For example, in the test a byte array is added with a string;
length + data
: stream(7, 'G', 'e', 'r', 't', 'j', 'a', 'n');
Using JsHexViewer.generate(result.environment.order);
, the following hexviewer is generated:
Note that after opening the hexviewer webpage, you need to browse to the source data to view the bytes.
Below is a screenshot of the hexviewer with the screenshot_data.png
from the previous example as input. As you can see this hexviewer is newer than the example above. It has more features, like bookmarking definitions.
Simply create a test class to call the parse of the graph and generate a hexviewer page.
@Test
public void generate() throws Exception {
final Environment env = EnvironmentFactory.stream(getClass().getResource("/data.zip").toURI());
final Optional<ParseState> result = ZIP.FORMAT.parse(env);
if (result.isEmpty()) {
fail("Parse failed");
}
JsHexViewer.generate(result.get().order, "zip");
}
The package metal-tools-jstree contains a generator for a Javascript tree, written in D3.
This tree shows the Metal structure of a ParseGraph
.
Using JsTree.generate(result.get().order);
, the following tree is generated:
Simply create a test class to call the parse of the graph and generate a hexviewer page.
@Test
public void generate() throws Exception {
final Environment env = EnvironmentFactory.stream(getClass().getResource("/data.zip").toURI());
final Optional<ParseState> result = ZIP.FORMAT.parse(env);
if (result.isEmpty()) {
fail("Parse failed");
}
JsTree.generate(result.get().order, "zip");
}