Class: Gloo::Objs::FileHandle
- Inherits:
-
Core::Obj
- Object
- Core::Baseo
- Core::Obj
- Gloo::Objs::FileHandle
- Defined in:
- lib/gloo/objs/system/file_handle.rb
Constant Summary collapse
- KEYWORD =
'file'.freeze
- KEYWORD_SHORT =
'dir'.freeze
- FILE_NAME_ERR =
'file and path name expected'.freeze
- FILE_MISSING_ERR =
'file not found'.freeze
Constants inherited from Core::Baseo
Core::Baseo::NOT_IMPLEMENTED_ERR
Instance Attribute Summary
Attributes inherited from Core::Obj
Attributes inherited from Core::Baseo
Class Method Summary collapse
-
.hash_for_file(file_path) ⇒ Object
Get the SHA256 hash of the file contents.
-
.messages ⇒ Object
Get a list of message names that this object receives.
-
.short_typename ⇒ Object
The short name of the object type.
-
.typename ⇒ Object
The name of the object type.
Instance Method Summary collapse
-
#check_file_exists? ⇒ Boolean
Check to see if the file exists.
-
#msg_delete ⇒ Object
Delete the file.
-
#msg_exists? ⇒ Boolean
Check to see if the file exists.
-
#msg_find_match ⇒ Object
Look for any file matching pattern.
-
#msg_get_ext ⇒ Object
Get the file’s extension.
-
#msg_get_name ⇒ Object
Get the name of the file.
-
#msg_get_parent ⇒ Object
Get the parent directory of the file.
-
#msg_get_sha256 ⇒ Object
Get the SHA256 hash of the file contents.
-
#msg_is_dir? ⇒ Boolean
Check to see if the file is a directory.
-
#msg_is_file? ⇒ Boolean
Check to see if the file is a file.
-
#msg_open ⇒ Object
Open the file in the default application for the file type.
-
#msg_page ⇒ Object
Show the contents of the file, paginated.
-
#msg_read ⇒ Object
Read the contents of the file into the object.
-
#msg_show ⇒ Object
Show the contents of the file.
-
#msg_write ⇒ Object
Write the given data out to the file.
Methods inherited from Core::Obj
#add_child, #add_children_on_create?, #add_default_children, can_create?, #can_receive_message?, #child_count, #child_index, #contains_child?, #delete_children, #dispatch, #display_value, #find_add_child, #find_child, #find_child_resolve_alias, #find_child_value, help, inherited, #initialize, #is_alias?, #is_container?, #is_function?, #msg_blank?, #msg_contains?, #msg_reload, #msg_unload, #multiline_value?, #pn, #remove_child, #render, #root?, #send_message, #set_parent, #set_value, #sql_value, #type_display, #value_display, #value_is_array?, #value_is_blank?, #value_string?
Methods inherited from Core::Baseo
Constructor Details
This class inherits a constructor from Gloo::Core::Obj
Class Method Details
.hash_for_file(file_path) ⇒ Object
Get the SHA256 hash of the file contents.
193 194 195 196 197 198 |
# File 'lib/gloo/objs/system/file_handle.rb', line 193 def self.hash_for_file( file_path ) require 'digest' file_data = File.read( file_path ) file_hash = Digest::SHA256.hexdigest( file_data ) return file_hash end |
.messages ⇒ Object
Get a list of message names that this object receives.
39 40 41 42 43 44 45 |
# File 'lib/gloo/objs/system/file_handle.rb', line 39 def self. basic = %w[read write delete get_name get_ext get_parent get_sha256] checks = %w[exists? is_file? is_dir?] search = %w[find_match] show = %w[show page open] return super + basic + show + checks + search end |
.short_typename ⇒ Object
The short name of the object type.
28 29 30 |
# File 'lib/gloo/objs/system/file_handle.rb', line 28 def self.short_typename return KEYWORD_SHORT end |
.typename ⇒ Object
The name of the object type.
21 22 23 |
# File 'lib/gloo/objs/system/file_handle.rb', line 21 def self.typename return KEYWORD end |
Instance Method Details
#check_file_exists? ⇒ Boolean
Check to see if the file exists. Show error if not.
204 205 206 207 208 209 210 211 212 213 214 215 216 |
# File 'lib/gloo/objs/system/file_handle.rb', line 204 def check_file_exists? if value.blank? @engine.log.error FILE_NAME_ERR return false end unless File.exist?( value ) @engine.log.error FILE_MISSING_ERR return false end return true end |
#msg_delete ⇒ Object
Delete the file.
109 110 111 112 |
# File 'lib/gloo/objs/system/file_handle.rb', line 109 def msg_delete return unless value File.delete( value ) end |
#msg_exists? ⇒ Boolean
Check to see if the file exists.
117 118 119 120 |
# File 'lib/gloo/objs/system/file_handle.rb', line 117 def msg_exists? result = File.exist? value @engine.heap.it.set_to result end |
#msg_find_match ⇒ Object
Look for any file matching pattern.
141 142 143 144 |
# File 'lib/gloo/objs/system/file_handle.rb', line 141 def msg_find_match result = !Dir.glob( value ).empty? @engine.heap.it.set_to result end |
#msg_get_ext ⇒ Object
Get the file’s extension.
161 162 163 164 165 166 167 |
# File 'lib/gloo/objs/system/file_handle.rb', line 161 def msg_get_ext if value.blank? @engine.heap.it.set_to '' else @engine.heap.it.set_to File.extname( value ) end end |
#msg_get_name ⇒ Object
Get the name of the file.
149 150 151 152 153 154 155 156 |
# File 'lib/gloo/objs/system/file_handle.rb', line 149 def msg_get_name if value.blank? @engine.heap.it.set_to '' else file_name = File.basename( value, File.extname( value ) ) @engine.heap.it.set_to file_name end end |
#msg_get_parent ⇒ Object
Get the parent directory of the file.
172 173 174 175 176 177 178 |
# File 'lib/gloo/objs/system/file_handle.rb', line 172 def msg_get_parent if value.blank? @engine.heap.it.set_to '' else @engine.heap.it.set_to File.dirname( value ) end end |
#msg_get_sha256 ⇒ Object
Get the SHA256 hash of the file contents.
183 184 185 186 187 188 |
# File 'lib/gloo/objs/system/file_handle.rb', line 183 def msg_get_sha256 return unless check_file_exists? file_hash = FileHandle.hash_for_file( value ) @engine.heap.it.set_to file_hash end |
#msg_is_dir? ⇒ Boolean
Check to see if the file is a directory.
133 134 135 136 |
# File 'lib/gloo/objs/system/file_handle.rb', line 133 def msg_is_dir? result = File.directory? value @engine.heap.it.set_to result end |
#msg_is_file? ⇒ Boolean
Check to see if the file is a file.
125 126 127 128 |
# File 'lib/gloo/objs/system/file_handle.rb', line 125 def msg_is_file? result = File.file? value @engine.heap.it.set_to result end |
#msg_open ⇒ Object
Open the file in the default application for the file type.
50 51 52 53 54 55 56 |
# File 'lib/gloo/objs/system/file_handle.rb', line 50 def msg_open return unless value && File.exist?( value ) cmd = Gloo::Core::GlooSystem.open_for_platform cmd_with_param = "#{cmd} \"#{value}\"" `#{cmd_with_param}` end |
#msg_page ⇒ Object
Show the contents of the file, paginated.
61 62 63 64 65 |
# File 'lib/gloo/objs/system/file_handle.rb', line 61 def msg_page return unless value && File.file?( value ) system "less #{value}" end |
#msg_read ⇒ Object
Read the contents of the file into the object.
79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/gloo/objs/system/file_handle.rb', line 79 def msg_read return unless check_file_exists? data = File.read( value ) if @params&.token_count&.positive? pn = Gloo::Core::Pn.new( @engine, @params.first ) o = pn.resolve o.set_value data else @engine.heap.it.set_to data end end |
#msg_show ⇒ Object
Show the contents of the file.
70 71 72 73 74 |
# File 'lib/gloo/objs/system/file_handle.rb', line 70 def msg_show return unless value && File.file?( value ) puts File.read( value ) end |
#msg_write ⇒ Object
Write the given data out to the file.
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/gloo/objs/system/file_handle.rb', line 95 def msg_write data = '' return unless value if @params&.token_count&.positive? expr = Gloo::Expr::Expression.new( @engine, @params.tokens ) data = expr.evaluate end File.write( value, data ) end |