/// <summary>
        /// Check for a match using the input string and the pattern(s)
        /// specified.
        /// </summary>
        /// <param name="input">The string to test.</param>
        /// <returns>MatchInfo object containing information about 
        /// result of a match</returns>
        private MatchInfo SelectString(object input)
        {
            string line = null;

              try
              {
             // Convert the object to a string type
             // safely using language support methods
             line = (string)LanguagePrimitives.ConvertTo(
                      input,
                      typeof(string)
                   );
             line = line.Trim(' ','\t');
              }
              catch (PSInvalidCastException ex)
              {
             WriteError(new ErrorRecord(
                ex,
                "CannotCastObjectToString",
                ErrorCategory.InvalidOperation,
                input
             ));

             return null;
              }

              MatchInfo result = null;

              // If a scriptblock has been specified, call it
              // with the path for processing.  It will return
              // one object.
              if (script != null)
              {
             WriteDebug("Executing script block.");

             Collection<PSObject> psObjects =
                script.Invoke(
                   line,
                   simpleMatch,
                   caseSensitive
                );

             foreach (PSObject psObject in psObjects)
             {
                if (LanguagePrimitives.IsTrue(psObject))
                {
                   result = new MatchInfo();
                   result.Line = line;
                   result.IgnoreCase = !caseSensitive;

                   break;
                }
             }
              }// if script block exists
              // See if this line matches any of the match
              // patterns.
              else
              {
             int patternIndex = 0;

             while (patternIndex < patterns.Length)
             {
                if ((simpleMatch &&
                      wildcardPattern[patternIndex].IsMatch(line))
                   || (regexPattern != null
                      && regexPattern[patternIndex].IsMatch(line))
                )
                {
                   result = new MatchInfo();
                   result.IgnoreCase = !caseSensitive;
                   result.Line = line;
                   result.Pattern = patterns[patternIndex];

                   break;
                }

                patternIndex++;

             }// loop through patterns and do a match
              }// no script block specified

              return result;
        }
Exemple #2
0
        }// protected override void ProcessRecord()

        #endregion Overrides

        #region PrivateMethods
        /// <summary>
        /// Check for a match using the input string and the pattern(s)
        /// specified.
        /// </summary>
        /// <param name="input">The string to test.</param>
        /// <returns>MatchInfo object containing information about
        /// result of a match</returns>
        private MatchInfo SelectString(object input)
        {
            string line = null;

            try
            {
                // Convert the object to a string type
                // safely using language support methods
                line = (string)LanguagePrimitives.ConvertTo(
                    input,
                    typeof(string)
                    );
                line = line.Trim(' ', '\t');
            }
            catch (PSInvalidCastException ex)
            {
                WriteError(new ErrorRecord(
                               ex,
                               "CannotCastObjectToString",
                               ErrorCategory.InvalidOperation,
                               input
                               ));

                return(null);
            }

            MatchInfo result = null;

            // If a scriptblock has been specified, call it
            // with the path for processing.  It will return
            // one object.
            if (script != null)
            {
                WriteDebug("Executing script block.");

                Collection <PSObject> psObjects =
                    script.Invoke(
                        line,
                        simpleMatch,
                        caseSensitive
                        );

                foreach (PSObject psObject in psObjects)
                {
                    if (LanguagePrimitives.IsTrue(psObject))
                    {
                        result            = new MatchInfo();
                        result.Line       = line;
                        result.IgnoreCase = !caseSensitive;

                        break;
                    }
                }
            }// if script block exists
            // See if this line matches any of the match
            // patterns.
            else
            {
                int patternIndex = 0;

                while (patternIndex < patterns.Length)
                {
                    if ((simpleMatch &&
                         wildcardPattern[patternIndex].IsMatch(line)) ||
                        (regexPattern != null &&
                         regexPattern[patternIndex].IsMatch(line))
                        )
                    {
                        result            = new MatchInfo();
                        result.IgnoreCase = !caseSensitive;
                        result.Line       = line;
                        result.Pattern    = patterns[patternIndex];

                        break;
                    }

                    patternIndex++;
                } // loop through patterns and do a match
            }     // no script block specified

            return(result);
        }// end of SelectString