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
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/openc3/core_ext/file.rb', line 55 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
71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/openc3/core_ext/file.rb', line 71 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
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/openc3/core_ext/file.rb', line 28 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
84 85 86 87 |
# File 'lib/openc3/core_ext/file.rb', line 84 def delete self.close File.delete(self.path) end |