Class: File
Overview
OpenC3 specific additions to the Ruby File class
Direct Known Subclasses
Constant Summary collapse
- NON_ASCII_PRINTABLE =
Non printable ASCII characters
/[^\x21-\x7e\s]/
Class Method Summary collapse
-
.build_timestamped_filename(tags = nil, extension = '.txt', time = Time.now.sys) ⇒ String
Builds a String for use in creating a file.
-
.find_in_search_path(filename) ⇒ String
The full path to the filename if it was found in the Ruby search path.
-
.is_ascii?(filename) ⇒ Boolean
Whether the file only contains ASCII characters.
Instance Method Summary collapse
Class Method Details
.build_timestamped_filename(tags = nil, extension = '.txt', time = Time.now.sys) ⇒ String
Builds a String for use in creating a file. The time is formatted as YYYY_MM_DD_HH_MM_SS. The tags and joined with an underscore and appended to the date before appending the extension.
For example:
File.(['test','only'], '.bin', Time.now.sys)
# result is YYYY_MM_DD_HH_MM_SS_test_only.bin
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/openc3/core_ext/file.rb', line 58 def self.( = nil, extension = '.txt', time = Time.now.sys) = sprintf("%04u_%02u_%02u_%02u_%02u_%02u", time.year, time.month, time.mday, time.hour, time.min, time.sec) ||= [] .compact! = .join("_") if .length > 0 filename = + "_" + + extension else filename = + extension end return filename end |
.find_in_search_path(filename) ⇒ String
Returns The full path to the filename if it was found in the Ruby search path. nil if the fild was not found.
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/openc3/core_ext/file.rb', line 74 def self.find_in_search_path(filename) $:.each do |load_path| Find.find(load_path) do |path| Find.prune if /\.svn/.match?(path) return path if File.basename(path) == filename end rescue Errno::ENOENT # Ignore non-existent folders next end return nil end |
.is_ascii?(filename) ⇒ Boolean
Returns Whether the file only contains ASCII characters.
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/openc3/core_ext/file.rb', line 31 def self.is_ascii?(filename) return_value = true File.open(filename) do |file| while buf = file.read(1024) if NON_ASCII_PRINTABLE.match?(buf) return_value = false break end end end return return_value end |
Instance Method Details
#delete ⇒ Object
87 88 89 90 |
# File 'lib/openc3/core_ext/file.rb', line 87 def delete self.close File.delete(self.path) end |