|
@@ -9,12 +9,8 @@ using StringTools;
|
|
class Macro {
|
|
class Macro {
|
|
static function buildTestCase():Array<Field> {
|
|
static function buildTestCase():Array<Field> {
|
|
var fields = Context.getBuildFields();
|
|
var fields = Context.getBuildFields();
|
|
- var markerRe = ~/{-(\d+)-}/g;
|
|
|
|
- var testCases = [];
|
|
|
|
var c = Context.getLocalClass().get();
|
|
var c = Context.getLocalClass().get();
|
|
for (field in fields) {
|
|
for (field in fields) {
|
|
- var markers = [];
|
|
|
|
- var posAcc = 0;
|
|
|
|
if (field.doc == null) {
|
|
if (field.doc == null) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
@@ -24,15 +20,8 @@ class Macro {
|
|
} else {
|
|
} else {
|
|
doc += field.doc;
|
|
doc += field.doc;
|
|
}
|
|
}
|
|
- var src = markerRe.map(doc, function(r) {
|
|
|
|
- var p = r.matchedPos();
|
|
|
|
- var name = r.matched(1);
|
|
|
|
- var pos = p.pos - posAcc;
|
|
|
|
- posAcc += p.len;
|
|
|
|
- markers.push(macro $v{Std.parseInt(name)} => $v{pos});
|
|
|
|
- return "";
|
|
|
|
- });
|
|
|
|
- var markers = markers.length > 0 ? macro $a{markers} : macro new Map();
|
|
|
|
|
|
+ var transform = Marker.extractMarkers(doc);
|
|
|
|
+ var markers = transform.markers.length > 0 ? macro $a{transform.markers} : macro new Map();
|
|
var filename = Context.getPosInfos(c.pos).file;
|
|
var filename = Context.getPosInfos(c.pos).file;
|
|
for (meta in field.meta) {
|
|
for (meta in field.meta) {
|
|
if (meta.name == ":filename") {
|
|
if (meta.name == ":filename") {
|
|
@@ -48,7 +37,7 @@ class Macro {
|
|
switch (field.kind) {
|
|
switch (field.kind) {
|
|
case FFun(f) if (f.expr != null):
|
|
case FFun(f) if (f.expr != null):
|
|
f.expr = macro @:pos(f.expr.pos) {
|
|
f.expr = macro @:pos(f.expr.pos) {
|
|
- ctx = new DisplayTestContext($v{filename}, $v{field.name}, $v{src}, $markers);
|
|
|
|
|
|
+ ctx = new DisplayTestContext($v{filename}, $v{field.name}, $v{transform.source}, $markers);
|
|
${f.expr}
|
|
${f.expr}
|
|
};
|
|
};
|
|
case _:
|
|
case _:
|