public void Execute(IWikiRepository repository, WikiBuilderTask task, IConsoleLogHost logger) { this.brail = new BooViewEngine(); brail.Options = new MonoRailViewEngineOptions(); brail.Options.BaseType = "Castle.MonoRail.Views.Brail.WikiBrailBase"; this.render = new WikiRender(); var srcpages = new List<WikiPage>(); foreach (var src in task.Sources) { foreach (var p in repository.Search(src)) { srcpages.Add(p); } } foreach (var target in task.Targets) { var outfile = myapp.files.Resolve(target,false); var parameters = new Dictionary<string, object>() { {"task", task}, {"logger", logger}, {"repository", repository}, {"render", render}, {"pages", srcpages.ToArray()}, }; var sw = new StringWriter(); brail.Process(task.View,task.Layout,sw, parameters); File.WriteAllText(outfile,sw.ToString()); } }
public override void InitProperties(Framework.IEngineContext myContext, Framework.IController myController, Framework.IControllerContext controllerContext) { base.InitProperties(myContext, myController, controllerContext); this.repository = controllerContext.PropertyBag["repository"] as IWikiRepository; this.wikirender = controllerContext.PropertyBag["render"] as IWikiRenderService; this.task = controllerContext.PropertyBag["task"] as WikiBuilderTask; this.pages = controllerContext.PropertyBag["pages"] as WikiPage[]; this.workrender = this.wikirender.Start(); }
public static WikiBuilderTask ReadFromXml (XElement x) { var result = new WikiBuilderTask(); x.applyTo(result); foreach (var e in x.Elements("source")) { result.Sources.Add(e.idorvalue()); } foreach (var e in x.Elements("target")) { result.Targets.Add(e.idorvalue()); } foreach (var e in x.Elements("extension")) { result.Extensions.Add(e.idorvalue().toType().create<object>()); } foreach (var e in x.Elements("param")) { result.Parameters[e.attr("id")] = e.Value; } if(WikiBuilderTaskType.Custom==result.Type) { result.CustomExecutor = x.attr("executor").toType().create<IWikiBuilderTaskExecutor>(); } return result; }
private IWikiBuilderTaskExecutor getDefaultExecutor(WikiBuilderTask task) { return myapp.ioc.get<IWikiBuilderTaskExecutor>(task.Type.ToString() + ".wiki.builder"); }