Add legacy output for itinero1.0 formats
This commit is contained in:
parent
a98e1c4738
commit
6a70c4bc52
9 changed files with 39 additions and 28 deletions
|
@ -22,7 +22,7 @@ namespace AspectedRouting.Test
|
|||
}
|
||||
);
|
||||
|
||||
var luaPrinter = new LuaSkeleton(new Context());
|
||||
var luaPrinter = new LuaSkeleton(new Context(), false);
|
||||
var result = luaPrinter.MappingToLua(mapping);
|
||||
|
||||
Assert.Equal(
|
||||
|
@ -45,7 +45,7 @@ namespace AspectedRouting.Test
|
|||
)
|
||||
}
|
||||
);
|
||||
var luaPrinter = new LuaSkeleton(new Context());
|
||||
var luaPrinter = new LuaSkeleton(new Context(), false);
|
||||
var result = luaPrinter.MappingToLua(mapping);
|
||||
Assert.Equal("{\n a = {\n b = 42\n }\n}", result);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ namespace AspectedRouting.Test.Snippets
|
|||
public void DefaultSnippet_SimpleDefault_GetsLua()
|
||||
{
|
||||
var gen = new DefaultSnippet();
|
||||
var lua = new LuaSkeleton(new Context());
|
||||
var lua = new LuaSkeleton(new Context(), true);
|
||||
var code = gen.Convert(lua, "result", new List<IExpression> {
|
||||
new Constant("the_default_value"),
|
||||
Funcs.Id,
|
||||
|
@ -29,7 +29,7 @@ namespace AspectedRouting.Test.Snippets
|
|||
public void FirstOfSnippet_SimpleFirstOf_GetLua()
|
||||
{
|
||||
var gen = new FirstMatchOfSnippet();
|
||||
var lua = new LuaSkeleton(new Context());
|
||||
var lua = new LuaSkeleton(new Context(), true);
|
||||
|
||||
// FirstMatchOf: [a] -> (Tags -> [a]) -> Tags -> a
|
||||
|
||||
|
@ -77,7 +77,7 @@ namespace AspectedRouting.Test.Snippets
|
|||
}
|
||||
);
|
||||
var gen = new SimpleMappingSnippet(mapping);
|
||||
var code = gen.Convert(new LuaSkeleton(new Context()), "result", new List<IExpression> {
|
||||
var code = gen.Convert(new LuaSkeleton(new Context(), true), "result", new List<IExpression> {
|
||||
new LuaLiteral(Typs.String, "tags.oneway")
|
||||
});
|
||||
|
||||
|
@ -96,7 +96,7 @@ namespace AspectedRouting.Test.Snippets
|
|||
);
|
||||
|
||||
|
||||
var code = gen.Convert(new LuaSkeleton(new Context()),
|
||||
var code = gen.Convert(new LuaSkeleton(new Context(), true),
|
||||
"result", new List<IExpression>()
|
||||
);
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace AspectedRouting.IO.LuaSkeleton
|
|||
).Invoke(bare))
|
||||
{
|
||||
AddDep("memberOf");
|
||||
return "member_of(funcName, parameters, tags, result)";
|
||||
return "memberOf(funcName, parameters, tags, result)";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -10,11 +10,9 @@ namespace AspectedRouting.IO.LuaSkeleton
|
|||
{
|
||||
public partial class LuaSkeleton
|
||||
{
|
||||
|
||||
public void AddFunction(AspectMetadata meta)
|
||||
{
|
||||
if (_alreadyAddedFunctions.Contains(meta.Name))
|
||||
{
|
||||
if (_alreadyAddedFunctions.Contains(meta.Name)) {
|
||||
// already added
|
||||
return;
|
||||
}
|
||||
|
@ -29,10 +27,8 @@ namespace AspectedRouting.IO.LuaSkeleton
|
|||
|
||||
var funcNameDeclaration = "";
|
||||
|
||||
meta.Visit(e =>
|
||||
{
|
||||
if (e is Function f && f.Name.Equals(Funcs.MemberOf.Name))
|
||||
{
|
||||
meta.Visit(e => {
|
||||
if (e is Function f && f.Name.Equals(Funcs.MemberOf.Name)) {
|
||||
funcNameDeclaration = $"\n local funcName = \"{meta.Name.AsLuaIdentifier()}\"";
|
||||
}
|
||||
|
||||
|
@ -40,13 +36,28 @@ namespace AspectedRouting.IO.LuaSkeleton
|
|||
});
|
||||
|
||||
var expression = meta.ExpressionImplementation;
|
||||
if (expression.Types.First() is Curry c) {
|
||||
expression = expression.Apply(new LuaLiteral(Typs.Tags, "tags"));
|
||||
}
|
||||
|
||||
var ctx = Context;
|
||||
this._context = _context.WithAspectName(meta.Name);
|
||||
var impl = string.Join("\n",
|
||||
_context = _context.WithAspectName(meta.Name);
|
||||
|
||||
var body = "";
|
||||
if (_useSnippets) {
|
||||
if (expression.Types.First() is Curry c) {
|
||||
expression = expression.Apply(new LuaLiteral(Typs.Tags, "tags"));
|
||||
}
|
||||
|
||||
body = Utils.Lines(
|
||||
" local r = nil",
|
||||
" " + Snippets.Convert(this, "r", expression).Indent(),
|
||||
" return r"
|
||||
);
|
||||
}
|
||||
else {
|
||||
body = " return " + ToLua(expression);
|
||||
}
|
||||
|
||||
|
||||
var impl = Utils.Lines(
|
||||
"--[[",
|
||||
meta.Description,
|
||||
"",
|
||||
|
@ -59,13 +70,11 @@ namespace AspectedRouting.IO.LuaSkeleton
|
|||
"Returns values: ",
|
||||
"]]",
|
||||
"function " + meta.Name.AsLuaIdentifier() + "(parameters, tags, result)" + funcNameDeclaration,
|
||||
" local r = nil",
|
||||
" "+Snippets.Convert(this, "r", expression).Indent(),
|
||||
" return r" ,
|
||||
body,
|
||||
"end"
|
||||
);
|
||||
|
||||
this._context = ctx;
|
||||
_context = ctx;
|
||||
_functionImplementations.Add(impl);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ namespace AspectedRouting.IO.LuaSkeleton
|
|||
|
||||
private readonly List<string> _constants = new List<string>();
|
||||
private Context _context;
|
||||
private readonly bool _useSnippets;
|
||||
|
||||
private readonly HashSet<string> _dependencies = new HashSet<string>();
|
||||
private readonly List<string> _functionImplementations = new List<string>();
|
||||
|
@ -32,9 +33,10 @@ namespace AspectedRouting.IO.LuaSkeleton
|
|||
|
||||
public Context Context => _context;
|
||||
|
||||
public LuaSkeleton(Context context, bool staticTables = false)
|
||||
public LuaSkeleton(Context context, bool useSnippets, bool staticTables = false)
|
||||
{
|
||||
_context = context;
|
||||
_useSnippets = useSnippets;
|
||||
_staticTables = staticTables;
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ namespace AspectedRouting.IO.itinero1
|
|||
func.Add(" end");
|
||||
|
||||
|
||||
if (usedParameters.Count() == 0)
|
||||
if (!usedParameters.Any())
|
||||
{
|
||||
// Every behaviour uses the default parameters for this one
|
||||
func.Add(" -- No parameter dependence for aspect " + calledInFunction);
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace AspectedRouting.IO.itinero1
|
|||
_context = context;
|
||||
_aspectTestSuites = aspectTestSuites;
|
||||
_profileTests = profileTests;
|
||||
_skeleton = new LuaSkeleton.LuaSkeleton(context);
|
||||
_skeleton = new LuaSkeleton.LuaSkeleton(context, false);
|
||||
_parameterPrinter = new LuaParameterPrinter(profile, _skeleton);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace AspectedRouting.IO.itinero2
|
|||
List<AspectTestSuite> aspectTests, IEnumerable<BehaviourTestSuite> behaviourTestSuite,
|
||||
DateTime lastChangeTime)
|
||||
{
|
||||
_skeleton = new LuaSkeleton.LuaSkeleton(context, false);
|
||||
_skeleton = new LuaSkeleton.LuaSkeleton(context, true);
|
||||
_profile = profile;
|
||||
_behaviourName = behaviourName;
|
||||
_context = context;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
function memberOf(calledIn, parameters, tags, result)
|
||||
local k = "_relation:" .. calledIn
|
||||
-- This tag is conventiently setup by all the preprocessors, which take the parameters into account
|
||||
-- This tag is conveniently setup by all the preprocessors, which take the parameters into account
|
||||
local doesMatch = tags[k]
|
||||
if (doesMatch == "yes") then
|
||||
result.attributes_to_keep[k] = "yes"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue