module PathMapper::Node::Base::File
Attributes
changes_overlay[RW]
Public Instance Methods
_append!(content)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 32 def _append!(content) { d: { result: self }, code: :ok } end
_create!()
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 20 def _create! { d: { result: self }, code: :ok } end
_delete!(full: false)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 51 def _delete!(full: false) { d: { result: self }, code: :ok } end
_override!(content)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 55 def _override!(content) if content.empty? { d: { result: self.delete!(logger: false) }, code: :deleted } else self.with_dry_run do |dry_run| tmp_mapper = self._create_node(@path.dirname.join(".#{@name}.tmp")).put!(content, logger: false) if self.nil? or !self.compare_with(tmp_mapper) if dry_run self.storage[@path] = tmp_mapper.raw_value else tmp_mapper.rename!(@path, logger: false) end code = :overrided else tmp_mapper.delete!(logger: false) code = :ok end { d: { result: self._create_node(@path) }, code: code } end end end
_put!(content)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 24 def _put!(content) { d: { result: self }, code: :ok } end
_remove_line!(line)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 36 def _remove_line!(line) { d: { result: self }, code: :ok } end
_rename!(new_path)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 40 def _rename!(new_path) self.with_dry_run do |dry_run| if dry_run self.storage[new_path] = self.storage_file_delete(@path) else ::File.rename(@path, new_path) end end { d: { result: self._create_node(new_path) }, code: :renamed } end
_safe_put!(content)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 28 def _safe_put!(content) { d: { result: self }, code: :ok } end
check(line)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 88 def check(line) false end
compare_with(obj)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 79 def compare_with(obj) return if obj.nil? if obj.respond_to? :node? and obj.node? self.md5 == obj.md5 else self.md5 == Digest::MD5.new.digest(obj.to_s) end end
custom_diff(a, b)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 102 def custom_diff(a, b) Diffy::Diff.new(a, b).to_s end
diff(content)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 96 def diff(content) content = with_line_separator(content.chomp) unless content.nil? diff = Diffy::Diff.new(content, self.raw_value, diff: '-U 3').to_s diff.empty? ? nil : diff end
md5()
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 92 def md5 Digest::MD5.new.digest(self.value) end
method_missing(m, *args, &block)
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 7 def method_missing(m, *args, &block) kwargs = self.kwargs(args) self.with_logger(logger: kwargs.delete(:logger)) do self.changes_overlay = kwargs.delete(:change_overlay) if kwargs.key? :change_overlay args << kwargs unless kwargs.empty? self.changes_overlay.send("_#{m}", *args, &block)[:d][:result] if self.respond_to?("_#{m}") end end
Protected Instance Methods
_file_puts(content, file_mode='w')
click to toggle source
# File lib/path_mapper/node/base/file.rb, line 108 def _file_puts(content, file_mode='w') return self if content.to_s.empty? self.parent.create! with_dry_run do |dry_run| if dry_run self.storage[@path] = case file_mode when 'w' then with_line_separator(content) when 'a+' then self.storage[@path].to_s + with_line_separator(content) end else ::File.open(@path, file_mode) {|f| f.puts(content) } end end self._create_node(@path) end
_general_options()
click to toggle source
Calls superclass method
# File lib/path_mapper/node/base/file.rb, line 126 def _general_options super[:changes_overlay] = @changes_overlay if @changes_overlay != self end