示例#1
0
        private static void ReplaceSingleQuote(ref ActionScript code)
        {
            var matches = Regex.Matches(code.ActionCode, @"\'((.)*?)\'");

            foreach (Match m in matches)
            {
                var name = m.Groups[2].Value;
                code.ActionCode = code.ActionCode.Replace(m.Groups[0].Value, $"\"{name}\"");
            }
        }
示例#2
0
        private static void FunctionParameter(ref ActionScript code)
        {
            var matches = Regex.Matches(code.ActionCode, @"\s*(var)?(\w+)\:(\w+)\s*");

            foreach (Match m in matches)
            {
                var name = m.Groups[2].Value;
                var type = m.Groups[3].Value;
                code.ActionCode = code.ActionCode.Replace(m.Groups[0].Value, $"{type} {name}");
            }
        }
示例#3
0
 public static ActionScript Parse2Csharp(ActionScript actionScript)
 {
     actionScript.ActionCode = CleanCDATA(actionScript.ActionCode);
     actionScript.CSImports  = GetNamespaces(ref actionScript);
     actionScript            = FilterExtraWhiteSpace(actionScript);
     ParseFields(ref actionScript);
     FunctionParameter(ref actionScript);
     FunctionDefinition(ref actionScript);
     ReplaceSingleQuote(ref actionScript);
     DictionaryReplace(ref actionScript);
     return(actionScript);
 }
示例#4
0
        private static ActionScript FilterExtraWhiteSpace(ActionScript str)
        {
            var match = Regex.Match(str.ActionCode, @"^\s*$", RegexOptions.Multiline);

            if (match.Groups.Count >= 1)
            {
                if (match.Groups[0].Value.Length > 0)
                {
                    str.ActionCode = str.ActionCode.Replace(match.Groups[0].Value, "\r\n");
                }
            }

            return(str);
        }
示例#5
0
        private static string GetNamespaces(ref ActionScript str)
        {
            StringBuilder sb      = new StringBuilder(string.Empty);
            var           matches = Regex.Matches(str.ActionCode, @"import\s+((.)*);");

            foreach (Match m in matches)
            {
                sb.Append("@using " + m.Groups[1].Value + ";\n");
                str.ActionCode = str.ActionCode.Replace(m.Groups[0].Value, string.Empty);
            }

            sb = sb.Replace(".*", string.Empty);
            return(sb.ToString());
        }
示例#6
0
        private static void FunctionDefinition(ref ActionScript code)
        {
            var matches = Regex.Matches(code.ActionCode, @"function\s+(\w+)(\((.|\n)*?\)\s*):(\w+)");

            foreach (Match m in matches)
            {
                var name  = m.Groups[1].Value;
                var type  = m.Groups[4].Value;
                var param = m.Groups[2].Value;

                code.ActionCode = code.ActionCode.Replace(m.Groups[0].Value, $"{type} {name}{param}");
            }
            code.ActionCode = code.ActionCode.Replace("function", string.Empty);
        }
示例#7
0
        private static void ParseFields(ref ActionScript code)
        {
            var matches = Regex.Matches(code.ActionCode, @"var\s+(\w+)\:(\w+)\s*[;=]");

            foreach (Match m in matches)
            {
                var name = m.Groups[1].Value;
                var type = m.Groups[2].Value;
                if (m.Groups[0].Value.IndexOf('=') < 0)
                {
                    code.ActionCode = code.ActionCode.Replace(m.Groups[0].Value, $"{type} {name};");
                }
                else
                {
                    code.ActionCode = code.ActionCode.Replace(m.Groups[0].Value, $"{type} {name}=");
                }
            }
        }