Exemplo n.º 1
0
		public override void Apply(Node targetNode) {
			targetNode.GetEnclosingModule().Imports.Add(new Import(this.LexicalInfo, "Comdiv.Framework"));
			targetNode.GetEnclosingModule().Imports.Add(new Import(this.LexicalInfo, "Comdiv.Framework.Quick"));
			
			tryClass(targetNode);
			tryMethod(targetNode);
		}
Exemplo n.º 2
0
 public override void Apply(Node targetNode) {
     var cls = targetNode as ClassDefinition;
     if(cls==null) {
         this.Context.Errors.Add(new CompilerError(this.LexicalInfo,
                                                   "ControllerAttribute is applyable only to classes"));
         return;
     }
     targetNode.GetEnclosingModule().Imports.Add(new Import(this.LexicalInfo,"Comdiv.Controllers"));
      cls.BaseTypes.Clear();
      cls.BaseTypes.Insert(0, new SimpleTypeReference("Comdiv.Controllers.ExtensionBaseController"));
     if(!cls.Name.EndsWith("Controller")) {
         cls.Name = cls.Name + "Controller";
     }
     var body = targetNode.GetEnclosingModule()["regmethod"] as Block;
     var registrycall = new SlicingExpression(new ReferenceExpression("registry"), new StringLiteralExpression(cls.Name.ToLower()));
     var assign = new ReferenceExpression(cls.Name);
     var aexpr = new BinaryExpression(BinaryOperatorType.Assign, registrycall, assign);
     body.Add(aexpr);
 }
Exemplo n.º 3
0
		private void tryClass(Node targetNode) {
			var cls = targetNode as ClassDefinition;
			if (cls == null)
			{
				return;
			}
			if (cls.BaseTypes.Count == 0)
			{
				cls.BaseTypes.Insert(0, new SimpleTypeReference("Comdiv.Framework.Quick.QuickBase"));
			}
			var attr = new Attribute("Comdiv.Framework.Quick.actionAttribute");
			attr.Arguments.Add(new StringLiteralExpression(cls.Name.Replace("_", ".")));
			cls.Attributes.Add(attr);

			var body = targetNode.GetEnclosingModule()["regmethod"] as Block;
			var registrycall = new SlicingExpression(new ReferenceExpression("registry"), new StringLiteralExpression(cls.Name.Replace("_", ".") + ".quick"));
			var assign = new ReferenceExpression(cls.Name);
			var aexpr = new BinaryExpression(BinaryOperatorType.Assign, registrycall, assign);
			body.Add(aexpr);
		}