/// <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; }
}// 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