Esempio n. 1
0
            private CharMatcher GetMatcher(char ky)
            {
                CharMatcher matcher = null;

                this.Dictionary.TryGetValue(char.ToLower(ky), out matcher);
                return(matcher);
            }
Esempio n. 2
0
        static EmojiParser()
        {
            Parser = new EmojiParser();
            var emojiTexts = "/:^_^,/:^$^,/:q,/:815,/:809,/:^o^,/:081,/:087,/:086,/:h,/:012,/:806,/:b,/:^x^,/:814,/:^w^,/:080,/:066,/:807,/:805,/:071,/:072,/:065,/:804,/:813,/:818,/:015,/:084,/:801,/:811,/:?,/:077,/:083,/:817,/:!,/:068,/:079,/:028,/:026,/:007,/:816,/:'\"\",/:802,/:027,/:(zz...),/:*&*,/:810,/:>_<,/:018,/:>o<,/:020,/:044,/:819,/:085,/:812,/:\",/:>m<,/:>@<,/:076,/:069,/:o,/:067,/:043,/:p,/:808,/:>w<,/:073,/:008,/:803,/:074,/:o=o,/:036,/:039,/:045,/:046,/:048,/:047,/:girl,/:man,/:052,/:(ok),/:8*8 ,/:)-(,/:lip,/:-f,/:-w,/:y,/:qp,/:$,/:%,/:(&),/:@,/:~b,/:u* u,/:clock,/:r,/:c,/:plane,/:075".xSplitByComma(StringSplitOptions.RemoveEmptyEntries);
            int maxLen     = 0;
            int minLen     = int.MaxValue;

            foreach (var emt in emojiTexts)
            {
                if (emt.Length > maxLen)
                {
                    maxLen = emt.Length;
                }
                if (emt.Length < minLen)
                {
                    minLen = emt.Length;
                }
            }
            MaxPhizLength = maxLen;
            MinPhizLength = minLen;
            _emojiSet     = new HashSet <string>(emojiTexts);
            for (int j = 0; j < emojiTexts.Length; j++)
            {
                emojiTexts[j] = emojiTexts[j].Substring(2);
            }
            _matcher = CharMatcher.Create(emojiTexts.ToList());
        }
Esempio n. 3
0
 public void ForPredicateTest()
 {
     CharMatcher.IsNot('m').ForPredicate(c => c == 'm').ShouldBeEmpty();
     CharMatcher.IsNot('m').ForPredicate(c => c == 'n').ShouldBe("m");
     CharMatcher.IsNot('m').Negate().ForPredicate(c => c == 'm').ShouldBe("m");
     CharMatcher.IsNot('m').Negate().ForPredicate(c => c == 'n').ShouldBeEmpty();
 }
Esempio n. 4
0
 public void MatchesAllOfTest()
 {
     CharMatcher.IsNot('m').MatchesAllOf("Nice to meet you").ShouldBeTrue();
     CharMatcher.IsNot('m').MatchesAllOf("mmmmmmmmmmmmmmmmm").ShouldBeFalse();
     CharMatcher.IsNot('m').Negate().MatchesAllOf("Nice to meet you").ShouldBeFalse();
     CharMatcher.IsNot('m').Negate().MatchesAllOf("mmmmmmmmmmmmmmmmm").ShouldBeTrue();
 }
Esempio n. 5
0
 // STATIC CONSTRUCTOR
 static DMMLoader()
 {
     // A-Za-z0-9_/
     ATOM_NAME_CHARS = CharRange.Build('A', 'Z') | CharRange.Build('a', 'z') | CharRange.Build('0', '9') | "_/";
     WHITESPACE      = new ConstCharMatcher("\r\n");
     REGEX_FLOAT     = new Regex(@"^[0-9\.]+([Ee][\+\-][0-9]+)?$");
     REGEX_INTEGER   = new Regex(@"^\d+$");
 }
Esempio n. 6
0
        public void ReplaceFromTest()
        {
            CharMatcher.IsNot('m').ReplaceFrom("Nice to meet you", 'n').ShouldBe("nnnnnnnnmnnnnnnn");
            CharMatcher.IsNot('m').ReplaceFrom("Nice to meet you", "__").ShouldBe("________________m______________");

            CharMatcher.IsNot('m').Negate().ReplaceFrom("Nice to meet you", 'n').ShouldBe("Nice to neet you");
            CharMatcher.IsNot('m').Negate().ReplaceFrom("Nice to meet you", "__").ShouldBe("Nice to __eet you");
        }
 /// <summary>
 /// Creates an instance, validating the name against a matcher.
 /// <para>
 /// In most cases, a <seealso cref="CharMatcher"/> will be faster than a regex <seealso cref="Pattern"/>,
 /// typically by over an order of magnitude.
 ///
 /// </para>
 /// </summary>
 /// <param name="name">  the name, not empty </param>
 /// <param name="matcher">  the matcher for validating the name </param>
 /// <param name="msg">  the message to use to explain validation failure </param>
 protected internal TypedString(string name, CharMatcher matcher, string msg)
 {
     ArgChecker.notEmpty(name, "name");
     ArgChecker.notNull(matcher, "pattern");
     ArgChecker.notEmpty(msg, "msg");
     if (matcher.matchesAllOf(name) == false)
     {
         throw new System.ArgumentException(msg);
     }
     this.name = name;
 }
Esempio n. 8
0
        public void TestPatternSplitWithTrim()
        {
            const string jacksons = "arfo(Marlon)aorf, (Michael)orfa, afro(Jackie)orfa, "
                                    + "ofar(Jemaine), aff(Tito)";
            var family = Splitter.On(new Regex(","))
                         .TrimResults(CharMatcher.anyOf("afro").Or(CharMatcher.Whitespace))
                         .split(jacksons);

            family.Should()
            .ContainExactlyInOrder("(Marlon)", "(Michael)", "(Jackie)", "(Jemaine)", "(Tito)");
        }
Esempio n. 9
0
        public void TestFallback()
        {
            ITokenMatcher matcher1 = new CharMatcher('(');
            ITokenMatcher matcher2 = new CharMatcher(')');
            ITokenMatcher matcher3 = new StringMatcher("(test)");
            ITokenMatcher matcher4 = new AnyCharMatcher("abcdefghijklmnopqrstuvwxyz");

            Tokenizer tokenizer = new Tokenizer();

            tokenizer.AddTokenMatcher(matcher1);
            tokenizer.AddTokenMatcher(matcher2);
            tokenizer.AddTokenMatcher(matcher3);
            tokenizer.AddTokenMatcher(matcher4);

            Token[] tokens = tokenizer.Tokenize("(test)(x)");

            Assert.AreEqual(4, tokens.Length);
        }
Esempio n. 10
0
            public static CharMatcher Create(List <string> emojiTexts)
            {
                Util.Assert(emojiTexts.xCount <string>() > 0);
                var matcher = new CharMatcher();

                emojiTexts.xSortStringByAsciiAsc();
                while (emojiTexts.Count > 0)
                {
                    if (emojiTexts.First() == "")
                    {
                        matcher.Dictionary['\0'] = null;
                        int idx = emojiTexts.FindIndex(k => !string.IsNullOrEmpty(k));
                        if (idx == -1)
                        {
                            idx = emojiTexts.Count;
                        }
                        emojiTexts.RemoveRange(0, idx);
                    }
                    else
                    {
                        char ch  = emojiTexts[0][0];
                        int  idx = emojiTexts.FindIndex(k => k[0] != ch);
                        if (idx == -1)
                        {
                            idx = emojiTexts.Count;
                        }
                        var emojits = emojiTexts.xCopy(0, idx);
                        for (int i = 0; i < emojits.Count; i++)
                        {
                            emojits[i] = emojits[i].Substring(1);
                        }
                        matcher.Dictionary[ch] = CharMatcher.Create(emojits);
                        emojiTexts.RemoveRange(0, idx);
                    }
                }
                return(matcher);
            }
Esempio n. 11
0
 public void TrimLeadingFormTest()
 {
     CharMatcher.IsNot('m').TrimLeadingForm("Nice to meet you").ShouldBeEmpty();
     CharMatcher.IsNot('N').TrimLeadingForm("Nice to meet you").ShouldBe("N");
     CharMatcher.IsNot('u').TrimLeadingForm("Nice to meet you").ShouldBeEmpty();
 }
Esempio n. 12
0
 public void LastIndexInTest()
 {
     CharMatcher.IsNot('m').LastIndexIn("Nice to meet you").ShouldBe(8);
     CharMatcher.IsNot('m').Negate().LastIndexIn("Nice to meet you").ShouldBe(8);
 }
Esempio n. 13
0
 public void TrimFromTest()
 {
     CharMatcher.IsNot('m').TrimFrom("Nice to meet you").ShouldBeEmpty();
     CharMatcher.IsNot('N').TrimFrom("Nice to meet you").ShouldBe("NN");
     CharMatcher.IsNot('u').TrimFrom("Nice to meet you").ShouldBe("uu");
 }
Esempio n. 14
0
 public void RetainFromTest()
 {
     CharMatcher.IsNot('m').RetainFrom("Nice to meet you").ShouldBe("Nice to eet you");
     CharMatcher.IsNot('m').Negate().RetainFrom("Nice to meet you").ShouldBe("m");
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*'name'.*") public void test_matches_CharMatcher_String_nullString()
        public virtual void test_matches_CharMatcher_String_nullString()
        {
            ArgChecker.matches(CharMatcher.inRange('A', 'Z'), 1, 2, null, "name", "[A-Z]+");
        }
Esempio n. 16
0
 public void InRangeTest()
 {
     CharMatcher.IsNot('m').InRange('l', 'n').ShouldBeEmpty();
     CharMatcher.IsNot('m').InRange('o', 'q').ShouldBe("m");
 }
Esempio n. 17
0
 public void IndexInTest()
 {
     CharMatcher.IsNot('m').IndexIn("Nice to meet you").ShouldBe(8);
     CharMatcher.IsNot('m').IndexIn("Nice to meet you", 5).ShouldBe(8);
     CharMatcher.IsNot('m').IndexIn("Nice to meet you", 9).ShouldBe(-1);
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*'name'.*'123'.*") public void test_matches_CharMatcher_String_noMatch()
        public virtual void test_matches_CharMatcher_String_noMatch()
        {
            ArgChecker.matches(CharMatcher.inRange('A', 'Z'), 1, int.MaxValue, "123", "name", "[A-Z]+");
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp = ".*'name'.*") public void test_matches_CharMatcher_String_tooShort()
        public virtual void test_matches_CharMatcher_String_tooShort()
        {
            ArgChecker.matches(CharMatcher.inRange('A', 'Z'), 1, 2, "", "name", "[A-Z]+");
        }
Esempio n. 20
0
 public void ApplyTest()
 {
     CharMatcher.IsNot('m').Apply('m').ShouldBeFalse();
     CharMatcher.IsNot('m').Negate().Apply('m').ShouldBeTrue();
 }
Esempio n. 21
0
 public void TrimFromTest()
 {
     CharMatcher.Is('m').TrimFrom("Nice to meet you").ShouldBe("Nice to meet you");
     CharMatcher.Is('N').TrimFrom("Nice to meet you").ShouldBe("ice to meet you");
     CharMatcher.Is('u').TrimFrom("Nice to meet you").ShouldBe("Nice to meet yo");
 }
Esempio n. 22
0
 public void TrimAndCollapseFromTest()
 {
     CharMatcher.Is('m').TrimAndCollapseFrom("Nice to meet you", 'y').ShouldBe("Nice to yeet you");
     CharMatcher.Is('N').TrimAndCollapseFrom("Nice to meet you", 'y').ShouldBe("ice to meet you");
     CharMatcher.Is('u').TrimAndCollapseFrom("Nice to meet you", 'y').ShouldBe("Nice to meet yo");
 }
Esempio n. 23
0
 public void CollapseFromTest()
 {
     CharMatcher.IsNot('m').CollapseFrom("Nice to meet you", 'y').ShouldBe("yyyyyyyymyyyyyyy");
     CharMatcher.IsNot('m').Negate().CollapseFrom("Nice to meet you", 'y').ShouldBe("Nice to yeet you");
 }
Esempio n. 24
0
 public void CountInTest()
 {
     CharMatcher.IsNot('m').CountIn("Nice to meet you").ShouldBe(1);
     CharMatcher.IsNot('m').Negate().CountIn("Nice to meet you").ShouldBe(1);
 }
Esempio n. 25
0
        static MappingTokenizer()
        {
            var nameChars = CharMatcher.AnyOf(
                CharMatcher.Range('a', 'z'),
                CharMatcher.Range('A', 'Z'),
                CharMatcher.Range('0', '9'),
                CharMatcher.AnyOf('_', '-'));

            var newLineChars    = CharMatcher.AnyOf('\r', '\n');
            var whitespaceChars = CharMatcher.AnyOf(' ', '\t');

            Tokeniser = new Tokenizer <TokenType>(TokenType.String)
                        .Token(
                TokenType.Comment,
                o => o
                .Match(CharMatcher.Single('/')).CanStart()
                .Then(CharMatcher.Single('/'))
                .Then(CharMatcher.NoneOf(newLineChars)).CanRepeat().CanEnd())
                        .Token(
                TokenType.Comment,
                o =>
            {
                var commentContent = o
                                     .Match(CharMatcher.Single('/')).CanStart()
                                     .Then(CharMatcher.Single('*'))
                                     .Then(CharMatcher.NoneOf('*')).CanRepeat();

                var closingStar = commentContent
                                  .Then(CharMatcher.Single('*')).CanRepeat();

                closingStar
                .Then(CharMatcher.Single('/')).CanEnd();

                closingStar.CanFollowWith(commentContent);
            })
                        .Token(
                TokenType.QuotedItem,
                o =>
            {
                var start = o.Match(CharMatcher.Single('"')).CanStart();
                var end   = start
                            .Then(CharMatcher.NoneOf('"')).CanRepeat()
                            .Then(CharMatcher.Single('"')).CanEnd();

                end.CanFollowWith(start);
                start.CanFollowWith(end);
            })
                        .Token(
                TokenType.Partial,
                o => o
                .Match(CharMatcher.Single('<')).CanStart()
                .Then(CharMatcher.Single('<'))
                .Then(nameChars).CanRepeat()
                .Then(CharMatcher.Single('>'))
                .Then(CharMatcher.Single('>')).CanEnd())
                        .Token(
                TokenType.Variable,
                o => o
                .Match(CharMatcher.Single('$')).CanStart()
                .Then(CharMatcher.Single('('))
                .Then(nameChars).CanRepeat()
                .Then(CharMatcher.Single(')')).CanEnd())
                        .Token(
                TokenType.LineContinuation,
                o =>
            {
                var start = o.Match(newLineChars).CanRepeat().CanStart();
                var end   = o.Match(whitespaceChars).CanRepeat().CanEnd();
                start.CanFollowWith(end);
                end.CanFollowWith(start);
            })
                        .Token(
                TokenType.NewLine,
                o => o.Match(newLineChars).CanStart().CanRepeat().CanEnd())
                        .Token(
                TokenType.Whitespace,
                o => o.Match(whitespaceChars).CanStart().CanRepeat().CanEnd())
                        .Token(TokenType.PartialAssignment, "::")
                        .Token(TokenType.And, "&&")
                        .Token(TokenType.Or, "||")
                        .Token(TokenType.Equals, '=')
                        .Token(TokenType.Dot, '.')
                        .Token(TokenType.Array, "[]")
                        .Token(TokenType.OpenSquareBracket, '[')
                        .Token(TokenType.CloseSquareBracket, ']')
                        .Token(TokenType.OpenCurlyBracket, '{')
                        .Token(TokenType.CloseCurlyBracket, '}')
                        .Token(TokenType.Comma, ',')
                        .Token(TokenType.QuestionMark, '?')
                        .Token(TokenType.ExclaimationMark, '!')
                        .Token(TokenType.OpenRoundBracket, '(')
                        .Token(TokenType.CloseRoundBracket, ')')
                        .Token(TokenType.Colon, ":")
                        .Token(
                TokenType.Item,
                o => o.Match(nameChars).CanStart().CanRepeat().CanEnd())
                        .Token(TokenType.WildCard, '*');
        }
 //-------------------------------------------------------------------------
 public virtual void test_matches_CharMatcher_String_ok()
 {
     assertEquals(ArgChecker.matches(CharMatcher.inRange('A', 'Z'), 1, int.MaxValue, "OG", "name", "[A-Z]+"), "OG");
 }