Beispiel #1
0
        public void RegexTransform2()
        {
            string e = @"^
        ([a-zA-Z][-+.a-zA-Z\d]*):                     (?# 1: scheme)
        (?:
           ((?:[-_.!~*'()a-zA-Z\d;?:@&=+$,]|%[a-fA-F\d]{2})(?:[-_.!~*'()a-zA-Z\d;/?:@&=+$,\[\]]|%[a-fA-F\d]{2})*)              (?# 2: opaque)
        |
           (?:(?:
             //(?:
                 (?:(?:((?:[-_.!~*'()a-zA-Z\d;:&=+$,]|%[a-fA-F\d]{2})*)@)?  (?# 3: userinfo)
                   (?:((?:(?:(?:[a-zA-Z\d](?:[-a-zA-Z\d]*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:[-a-zA-Z\d]*[a-zA-Z\d])?)\.?|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\[(?:(?:[a-fA-F\d]{1,4}:)*(?:[a-fA-F\d]{1,4}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|(?:(?:[a-fA-F\d]{1,4}:)*[a-fA-F\d]{1,4})?::(?:(?:[a-fA-F\d]{1,4}:)*(?:[a-fA-F\d]{1,4}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))?)\]))(?::(\d*))?))?(?# 4: host, 5: port)
               |
                 ((?:[-_.!~*'()a-zA-Z\d$,;+@&=+]|%[a-fA-F\d]{2})+)           (?# 6: registry)
               )
             |
             (?!//))                              (?# XXX: '//' is the mark for hostport)
             (/(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*(?:;(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*)*(?:/(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*(?:;(?:[-_.!~*'()a-zA-Z\d:@&=+$,]|%[a-fA-F\d]{2})*)*)*)?              (?# 7: path)
           )(?:\?((?:[-_.!~*'()a-zA-Z\d;/?:@&=+$,\[\]]|%[a-fA-F\d]{2})*))?           (?# 8: query)
        )
        (?:\#((?:[-_.!~*'()a-zA-Z\d;/?:@&=+$,\[\]]|%[a-fA-F\d]{2})*))?            (?# 9: fragment)
      $";
            string t = StringRegex.TransformPattern(e, RubyRegexOptions.Extended | RubyRegexOptions.Multiline);

            Assert(e == t);
            new Regex(t);
        }
Beispiel #2
0
        public async Task <CodeMemberMethod> GCode_CodeDom_GenerateTransitionLambdaMethod(CodeTypeDeclaration codeClass, LinkPinControl element, GenerateCodeContext_Method context)
        {
            var name = StringRegex.GetValidName("Transition" + HostNodesContainer.TitleString + EngineNS.Editor.Assist.GetValuedGUIDString(this.Id) + "_Lambda");

            foreach (var member in codeClass.Members)
            {
                if (member is CodeGenerateSystem.CodeDom.CodeMemberMethod)
                {
                    var existMethod = member as CodeGenerateSystem.CodeDom.CodeMemberMethod;
                    if (existMethod.Name == name)
                    {
                        return(existMethod);
                    }
                }
            }
            CodeGenerateSystem.CodeDom.CodeMemberMethod method = new CodeGenerateSystem.CodeDom.CodeMemberMethod()
            {
                Name       = name,
                Attributes = MemberAttributes.Public | MemberAttributes.Final,
                ReturnType = new CodeTypeReference(typeof(bool)),
            };

            codeClass.Members.Add(method);
            if (!mCtrlValueInputHandle.HasLink)
            {
                method.Statements.Add(new CodeMethodReturnStatement(new CodePrimitiveExpression(true)));
            }
            else
            {
                var linkObj = mCtrlValueInputHandle.GetLinkedObject(0, true);
                var linkElm = mCtrlValueInputHandle.GetLinkedPinControl(0, true);

                var methodContext = new GenerateCodeContext_Method(context.ClassContext, method);
                if (!linkObj.IsOnlyReturnValue)
                {
                    await linkObj.GCode_CodeDom_GenerateCode(codeClass, method.Statements, linkElm, methodContext);
                }
                var exp = linkObj.GCode_CodeDom_GetValue(mCtrlValueInputHandle.GetLinkedPinControl(0), methodContext);
                method.Statements.Add(new CodeMethodReturnStatement(exp));
            }
            return(method);
        }
Beispiel #3
0
        public void RegexEscape1()
        {
            string[] patterns = new string[] {
                @"",
                @"",

                @"\",
                @"\\",

                @"(*)",
                @"\(\*\)",

                "$_^_|_[_]_(_)_\\_._#_-_{_}_*_+_?_\t_\n_\r_\f_\v_\a_\b",
                @"\$_\^_\|_\[_\]_\(_\)_\\_\._\#_\-_\{_\}_\*_\+_\?_\t_\n_\r_\f_" + "\v_\a_\b"
            };

            for (int i = 0; i < patterns.Length; i += 2)
            {
                string expected = patterns[i + 1];
                string actual   = StringRegex.Escape(patterns[i]);
                Assert(actual == expected);
            }
        }
Beispiel #4
0
        public void RegexTransform1()
        {
            string[] incorrectPatterns = new string[] {
                @"\",
                @"\",

                @"\\\",
                @"\\\",

                @"\x",
                @"\x",

                @"\1", // TODO
                @"\1",
            };

            string[] correctPatterns = new string[] {
                @"",
                @"",

                @"\\",
                @"\\",

                @"\_",
                @"_",

                @"abc\0\01\011\a\sabc\Wabc\w",
                @"abc\0\01\011\a\sabc\Wabc\w",

                @"\xd",
                @"\x0d",

                @"\xdz",
                @"\x0dz",

                @"\*",
                @"\*",

                @"\[",
                @"\[",

                @"\#",
                @"\#",

                @"\0",
                @"\0",

                @"\G",
                @"\G",

                @"[a\-z]",
                @"[a\-z]",
            };

            for (int i = 0; i < incorrectPatterns.Length; i += 2)
            {
                string expected = incorrectPatterns[i + 1];
                string actual   = StringRegex.TransformPattern(incorrectPatterns[i], RubyRegexOptions.NONE);
                Assert(actual == expected);
            }

            for (int i = 0; i < correctPatterns.Length; i += 2)
            {
                string expected = correctPatterns[i + 1];
                string actual   = StringRegex.TransformPattern(correctPatterns[i], RubyRegexOptions.NONE);
                Assert(actual == expected);
                new Regex(expected);
            }
        }