Exemplo n.º 1
0
        private static string GenerateAlias(string input, int desiredLength, bool mapToAnsi, bool skipInvalidCharacter, char invalidCharacterReplacement)
        {
            if (string.IsNullOrEmpty(input))
            {
                throw new ArgumentNullException("input");
            }
            if (AliasHelper.Analyze(invalidCharacterReplacement) != AliasHelper.CharacterCategory.RegularCharacter)
            {
                throw new ArgumentOutOfRangeException("invalidCharacterReplacement", invalidCharacterReplacement, new LocalizedString("DEV BUG: Parameter 'invalidCharacterReplacement' should be category of CharacterCategory.RegularCharacter."));
            }
            if (mapToAnsi)
            {
                input = UnicodeToAnsiConverter.Convert(input, skipInvalidCharacter, invalidCharacterReplacement);
            }
            StringBuilder stringBuilder = new StringBuilder(input.Length);

            AliasHelper.RecognisingState recognisingState = AliasHelper.RecognisingState.Start;
            int num  = 0;
            int num2 = 0;

            while (input.Length > num && desiredLength > num2)
            {
                char c = input[num];
                AliasHelper.CharacterCategory characterCategory = AliasHelper.Analyze(c);
                if (characterCategory != AliasHelper.CharacterCategory.WhiteSpaceSymbol)
                {
                    switch (recognisingState)
                    {
                    case AliasHelper.RecognisingState.Start:
                        switch (characterCategory)
                        {
                        case AliasHelper.CharacterCategory.RegularCharacter:
                            recognisingState = AliasHelper.RecognisingState.Terminal;
                            break;

                        case AliasHelper.CharacterCategory.InvalidCharacter:
                        case AliasHelper.CharacterCategory.DotSymbol:
                            if (skipInvalidCharacter)
                            {
                                goto IL_149;
                            }
                            c = invalidCharacterReplacement;
                            recognisingState = AliasHelper.RecognisingState.Terminal;
                            break;
                        }
                        break;

                    case AliasHelper.RecognisingState.Terminal:
                        switch (characterCategory)
                        {
                        case AliasHelper.CharacterCategory.InvalidCharacter:
                            if (skipInvalidCharacter)
                            {
                                goto IL_149;
                            }
                            c = invalidCharacterReplacement;
                            break;

                        case AliasHelper.CharacterCategory.DotSymbol:
                            if (input.Length - 1 == num || desiredLength - 1 == num2)
                            {
                                if (skipInvalidCharacter)
                                {
                                    goto IL_149;
                                }
                                c = invalidCharacterReplacement;
                            }
                            else
                            {
                                recognisingState = AliasHelper.RecognisingState.Middle;
                            }
                            break;
                        }
                        break;

                    case AliasHelper.RecognisingState.Middle:
                        switch (characterCategory)
                        {
                        case AliasHelper.CharacterCategory.RegularCharacter:
                            recognisingState = AliasHelper.RecognisingState.Terminal;
                            break;

                        case AliasHelper.CharacterCategory.InvalidCharacter:
                        case AliasHelper.CharacterCategory.DotSymbol:
                            if (skipInvalidCharacter && input.Length - 1 > num && desiredLength - 1 > num2)
                            {
                                goto IL_149;
                            }
                            c = invalidCharacterReplacement;
                            recognisingState = AliasHelper.RecognisingState.Terminal;
                            break;
                        }
                        break;
                    }
                    stringBuilder.Append(c);
                    num2++;
                }
IL_149:
                num++;
            }
            if (AliasHelper.RecognisingState.Terminal != recognisingState)
            {
                return(null);
            }
            return(stringBuilder.ToString());
        }
Exemplo n.º 2
0
 // Note: this type is marked as 'beforefieldinit'.
 static AliasHelper()
 {
     AliasHelper.CharacterCategory[] array = new AliasHelper.CharacterCategory[256];
     array[0]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[1]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[2]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[3]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[4]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[5]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[6]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[7]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[8]   = AliasHelper.CharacterCategory.InvalidCharacter;
     array[9]   = AliasHelper.CharacterCategory.WhiteSpaceSymbol;
     array[10]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[11]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[12]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[13]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[14]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[15]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[16]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[17]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[18]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[19]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[20]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[21]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[22]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[23]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[24]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[25]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[26]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[27]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[28]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[29]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[30]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[31]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[32]  = AliasHelper.CharacterCategory.WhiteSpaceSymbol;
     array[34]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[40]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[41]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[44]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[46]  = AliasHelper.CharacterCategory.DotSymbol;
     array[58]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[59]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[60]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[62]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[64]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[91]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[92]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[93]  = AliasHelper.CharacterCategory.InvalidCharacter;
     array[127] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[128] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[129] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[130] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[131] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[132] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[133] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[134] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[135] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[136] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[137] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[138] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[139] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[140] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[141] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[142] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[143] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[144] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[145] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[146] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[147] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[148] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[149] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[150] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[151] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[152] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[153] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[154] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[155] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[156] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[157] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[158] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[159] = AliasHelper.CharacterCategory.InvalidCharacter;
     array[160] = AliasHelper.CharacterCategory.InvalidCharacter;
     AliasHelper.CharactersCategoryMap = array;
 }