Module: Datadog::DI::Utils Private
- Defined in:
- lib/datadog/di/utils.rb
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Class Method Summary collapse
-
.path_matches_suffix?(path, suffix) ⇒ Boolean
private
Returns whether the provided
path
matches the user-designated file suffix (of a line probe).
Class Method Details
.path_matches_suffix?(path, suffix) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns whether the provided path
matches the user-designated file suffix (of a line probe).
If suffix is an absolute path (i.e., it starts with a slash), the path must be identical for it to match.
If suffix is not an absolute path, the path matches if its suffix is the provided suffix, at a path component boundary.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/datadog/di/utils.rb', line 14 module_function def path_matches_suffix?(path, suffix) if suffix.start_with?('/') path == suffix else # Exact match is not possible here, meaning any matching path # has to be longer than the suffix. Require full component matches, # meaning either the first character of the suffix is a slash # or the previous character in the path is a slash. # For now only check for forward slashes for Unix-like OSes; # backslash is a legitimate character of a file name in Unix # therefore simply permitting forward or back slash is not # sufficient, we need to perform an OS check to know which # path separator to use. !! if path.length > suffix.length && path.end_with?(suffix) previous_char = path[path.length - suffix.length - 1] previous_char == "/" || suffix[0] == "/" end # Alternative implementation using a regular expression: # !!(path =~ %r,(/|\A)#{Regexp.quote(suffix)}\z,) end end |