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;
		}
Beispiel #4
0
		private IWikiBuilderTaskExecutor getDefaultExecutor(WikiBuilderTask task) {
			return myapp.ioc.get<IWikiBuilderTaskExecutor>(task.Type.ToString() + ".wiki.builder");
		}