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