protected override async Task <ImportStatementList> AssignUpsertedReferences(ImportStatementList record)
        {
            record.ListIdentifier = await _strings.UpsertAsync(record.ListIdentifier);

            record.ListIdentifierId = record.ListIdentifier?.AsciiStringReferenceId ?? record.ListIdentifierId;
            return(record);
        }
Example #2
0
 private static void addImports(string pImport)
 {
     if (string.IsNullOrEmpty(pImport))
     {
         return;
     }
     ImportStatementList.AddImport(pImport);
 }
Example #3
0
        private static void addImports(CsAttributes pList, FactoryExpressionCreator pCreator)
        {
            if (pList == null)
            {
                return;
            }

            List <AttributeItem> vals = GetAttributeValue(pList, NAMESPACE_ATTRIBUTE, pCreator);

            if (vals.Count == 0 || vals[0].Parameters.Count == 0)
            {
                return;
            }

            ImportStatementList.AddImport((string)vals[0].Parameters[0]);
        }
Example #4
0
        private static void addImports(IEnumerable <CsEntityAttribute> pList)
        {
            if (pList == null)
            {
                return;
            }

            List <AttributeItem> vals = GetAttributeValue(pList, NAMESPACE_ATTRIBUTE);


            if (vals.Count == 0 || vals[0].Parameters.Count == 0)
            {
                return;
            }

            ImportStatementList.AddImport((string)vals[0].Parameters[0]);
        }
Example #5
0
        public static void Parse(TheEvent pEvent, CodeBuilder pBuilder)
        {
            if (pEvent.IsFlashEvent)
            {
                return;
            }

            ImportStatementList.AddImport(@"System.EventHandler");

            bool isStatic = pEvent.Modifiers.Contains("static");

            pBuilder.AppendFormat(@"private {1} var _e{0}:EventHandler;
		{2}{1} function get {0}():EventHandler {{
			if (_e{0} == null) _e{0} = new EventHandler();
			return _e{0};
		}}"        ,
                                  pEvent.Name,
                                  isStatic ? "static" : string.Empty,
                                  JsHelpers.ConvertModifiers(pEvent.Modifiers, _notValidClassMod)
                                  //,isStatic ? pEvent.MyClass.Name : "this"
                                  );

            pBuilder.AppendLine();
        }
        public Expression Parse(CsExpression pStatement, FactoryExpressionCreator pCreator)
        {
            CsInvocationExpression ex = (CsInvocationExpression)pStatement;

            List <string> indexes = new List <string>();

            if (ex.argument_list != null)
            {
                foreach (CsArgument argument in ex.argument_list.list)
                {
                    indexes.Add(pCreator.Parse(argument.expression).Value);
                }
            }

            TheClass  c = TheClassFactory.Get(pStatement, pCreator);
            TheMethod m;

            CsEntityMethod   method         = ex.entity as CsEntityMethod;
            CsEntityDelegate entityDelegate = ex.entity as CsEntityDelegate;

            string name = pCreator.Parse(ex.expression).Value;

            //call es de tipo super. Necesito saber cuál es la clase heredada)
            if (name.EndsWith("super.", StringComparison.Ordinal))
            {
                c    = c.Base;
                m    = c.GetMethod(method, pCreator);
                name = name + m.Name;
            }
            else if (method != null)
            {
                //si es una expresión de tipo xx.yy.method(), tengo que revisar la expresión
                //porque la invocación se da como expresión completa...
                c = TheClassFactory.Get(method.parent, pCreator);
                m = c.GetMethod(method, pCreator);

                if (m.IsExtensionMethod)
                {
                    int fnIndex = name.IndexOf(m.Name);
                    if (fnIndex > 0)
                    {
                        fnIndex--;
                    }

                    indexes.Insert(0, name.Substring(0, fnIndex));

                    if (Helpers.HasAttribute(((CsEntityClass)method.parent).attributes, "As3ExtensionAttribute"))
                    {
                        name = m.MyClass.FullName;
                        name = name.Substring(0, name.LastIndexOf('.'));
                        name = name + "." + m.Name;
                        ImportStatementList.AddImport(name);
                        name = m.Name;
                    }
                    else
                    {
                        name = m.FullName;
                    }
                }
                else
                {
                    name = name.Replace(m.Name, m.Name);
                }
            }
            else if (entityDelegate != null)
            {
                //es un evento?
                if (ex.expression.ec == expression_classification.ec_event_access)
                {
                    TheEvent theEvent = c.GetEvent(name);
                    name = theEvent.IsFlashEvent ?
                           "dispatchEvent" :
                           string.Format(@"if (_e{0}) _e{0}.fire", name);
                }
            }

            //patch
            if (name.Contains("{0}"))
            {
                string p = indexes[0];
                indexes.RemoveAt(0);
                name = string.Format(name, p, string.Join(", ", indexes.ToArray()));
            }
            else
            {
                name = name + "(" + string.Join(", ", indexes.ToArray()) + ")";
            }

            return(new Expression(
                       name,
                       ex.entity_typeref
                       ));
        }
 protected override Expression <Func <ImportStatementList, bool> > FindExisting(ImportStatementList record)
 => existing => existing.ListIdentifierId == record.ListIdentifierId;
        protected override IEnumerable <object> EnumerateReferences(ImportStatementList record)
        {
            yield return(record.ImportStatementListAssociations);

            yield return(record.ListIdentifier);
        }
Example #9
0
        public void Parse(CsNamespace pNameSpace, IEnumerable <CsUsingDirective> pUsing, string pOutputFolder)
        {
            if (pNameSpace == null)
            {
                return;
            }

            _outputFolder = pOutputFolder;
            string name    = getNamespace(pNameSpace);
            string packDir = pOutputFolder + name.Replace('.', '\\');

            Directory.CreateDirectory(packDir);
            CodeBuilder builder = new CodeBuilder();

            foreach (CsNode cn in pNameSpace.member_declarations)
            {
                builder.Append("package ");

                builder.Append(name);
                builder.AppendLineAndIndent(" {");

                StringBuilder usings = new StringBuilder();

                parseUsing(pUsing, usings);
                parseUsing(pNameSpace.using_directives, usings);
                Using = usings.ToString();

                builder.Append(usings);

                builder.AppendLine(ClassParser.IMPORT_MARKER);
                ImportStatementList.Init();

                CsClass csClass = cn as CsClass;

                if (csClass != null)
                {
                    ClassParser.Parse(csClass, builder, _creator);
                    if (ClassParser.IsExtension)
                    {
                        File.WriteAllText(packDir + "\\" + ClassParser.ExtensionName + ".as", builder.ToString());
                    }
                    else
                    {
                        File.WriteAllText(packDir + "\\" + csClass.identifier.identifier + ".as", builder.ToString());
                    }

                    builder.Length = 0;
                    continue;
                }

                CsInterface csInterface = cn as CsInterface;
                if (csInterface != null)
                {
                    InterfaceParser.Parse(csInterface, builder, _creator);
                    File.WriteAllText(packDir + "\\" + csInterface.identifier.identifier + ".as", builder.ToString());
                    builder.Length = 0;
                    continue;
                }

                if (csClass == null)
                {
                    throw new Exception("Unknown type");
                }
            }
        }
Example #10
0
 public static ImportStatementList Merge(this ImportStatementList instance, in ImportStatementList given)