Пример #1
0
            public override void EnterOperation([NotNull] WebIDLParser.OperationContext context)
            {
                base.EnterOperation(context);

                returnType    = TranslateType(context.returnType().GetText());
                rawMethodName = context.operationRest().optionalIdentifier().GetText();
                var methodName = CSharpify(rawMethodName);

                outputStream.Write($"        public");

                var rawOperation = context.GetText();

                if (operations.Contains(rawOperation))
                {
                    outputStream.Write($" new");

                    Console.WriteLine($"Operation already processed: {rawOperation}");
                }
                else
                {
                    operations.Add(rawOperation);

                    Console.WriteLine($"Operation added: {rawOperation}");
                }

                outputStream.Write($" {returnType} {methodName}(");

                @params = string.Empty;
            }
Пример #2
0
            public override void ExitOperation([NotNull] WebIDLParser.OperationContext context)
            {
                base.ExitOperation(context);

                outputStream.Write(") => ");

                var isArray           = returnType.EndsWith("[]", StringComparison.InvariantCultureIgnoreCase);
                var isReturnTypeBasic = typesDictionary.ContainsValue(returnType) && returnType != "object";

                if (isArray)
                {
                    WriteArrayInvoke();
                }
                else if (isReturnTypeBasic)
                {
                    if (returnTypesMappingDictionary.ContainsKey(rawMethodName))
                    {
                        outputStream.Write($"({returnType})");
                        returnType = returnTypesMappingDictionary[rawMethodName];
                    }

                    outputStream.Write($"InvokeForBasicType<{returnType}>");
                }
                else
                {
                    outputStream.Write("Invoke");

                    var isGenericNeeded = returnType != "void" && returnType != "object";

                    if (isGenericNeeded)
                    {
                        outputStream.Write($"<{returnType}>");
                    }
                }

                outputStream.Write($"(\"{rawMethodName}\"{@params});");
                outputStream.WriteLine();
                outputStream.WriteLine();
            }