private TransformationCollection GetTransformations(VisitorResult result, List<RequireCall> flattened)
{
var trans = new TransformationCollection();
var moduleName = this.CheckForConfigPath(RelativeFileName.ToModuleName());
if (!result.RequireCalls.Any())
{
var shim = GetShim(RelativeFileName);
var deps = new List<string>();
if (shim != null)
{
deps = shim.Dependencies.Select(r => r.Dependency).ToList();
}
trans.Add(ShimFileTransformation.Create(moduleName, deps));
}
else
{
foreach (var reqCall in result.RequireCalls.Where(r => r.DependencyArrayNode != null))
{
trans.Add(NormalizeDepsTransformation.Create(reqCall));
}
// if there are no define calls but there is at least one require module call, transform that into a define call
if (!result.RequireCalls.Where(r => r.Type == RequireCallType.Define).Any())
{
if (result.RequireCalls.Where(r => r.IsModule).Any())
{
var call = result.RequireCalls.Where(r => r.IsModule).FirstOrDefault();
trans.Add(ToDefineTransformation.Create(call));
trans.Add(AddIdentifierTransformation.Create(call, moduleName));
}
//TODO: Append shimmed dependencies here too
}
else
{
var defineCall = result.RequireCalls.Where(r => r.Type == RequireCallType.Define).FirstOrDefault();
if (string.IsNullOrEmpty(defineCall.Id))
{
trans.Add(AddIdentifierTransformation.Create(defineCall, moduleName));
}
if (defineCall.DependencyArrayNode == null)
{
trans.Add(AddEmptyDepsArrayTransformation.Create(defineCall));
}
var shim = GetShim(RelativeFileName);
if (shim != null)
{
var deps = shim.Dependencies.Select(r => r.Dependency).ToList();
trans.Add(AddDepsTransformation.Create(defineCall, deps));
}
}
}
return trans;
}