CurrentFileNameHelper.swift 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. // Software License Agreement (BSD License)
  2. //
  3. // Copyright (c) 2010-2025, Deusty, LLC
  4. // All rights reserved.
  5. //
  6. // Redistribution and use of this software in source and binary forms,
  7. // with or without modification, are permitted provided that the following conditions are met:
  8. //
  9. // * Redistributions of source code must retain the above copyright notice,
  10. // this list of conditions and the following disclaimer.
  11. //
  12. // * Neither the name of Deusty nor the names of its contributors may be used
  13. // to endorse or promote products derived from this software without specific
  14. // prior written permission of Deusty, LLC.
  15. /// Returns a String of the current filename, without full path or extension.
  16. /// Analogous to the C preprocessor macro `THIS_FILE`.
  17. public func currentFileName(_ fileName: StaticString = #file) -> String {
  18. var str = String(describing: fileName)
  19. if let idx = str.range(of: "/", options: .backwards)?.upperBound {
  20. str = String(str[idx...])
  21. }
  22. if let idx = str.range(of: ".", options: .backwards)?.lowerBound {
  23. str = String(str[..<idx])
  24. }
  25. return str
  26. }
  27. // swiftlint:disable identifier_name
  28. // swiftlint doesn't like func names that begin with a capital letter - deprecated
  29. @available(*, deprecated, message: "Please use currentFileName", renamed: "currentFileName")
  30. public func CurrentFileName(_ fileName: StaticString = #file) -> String {
  31. currentFileName(fileName)
  32. }
  33. // swiftlint:enable identifier_name