Module: PathMapper::Node::Base::File
Instance Attribute Summary collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
7
8
9
10
11
12
13
14
|
# 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
|
Instance Attribute Details
#changes_overlay ⇒ Object
Returns the value of attribute changes_overlay.
5
6
7
|
# File 'lib/path_mapper/node/base/file.rb', line 5
def changes_overlay
@changes_overlay
end
|
Instance Method Details
#_append!(content) ⇒ Object
32
33
34
|
# File 'lib/path_mapper/node/base/file.rb', line 32
def _append!(content)
{ d: { result: self }, code: :ok }
end
|
#_create! ⇒ Object
20
21
22
|
# File 'lib/path_mapper/node/base/file.rb', line 20
def _create!
{ d: { result: self }, code: :ok }
end
|
#_delete!(full: false) ⇒ Object
51
52
53
|
# File 'lib/path_mapper/node/base/file.rb', line 51
def _delete!(full: false)
{ d: { result: self }, code: :ok }
end
|
#_override!(content) ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# 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) ⇒ Object
24
25
26
|
# File 'lib/path_mapper/node/base/file.rb', line 24
def _put!(content)
{ d: { result: self }, code: :ok }
end
|
#_remove_line!(line) ⇒ Object
36
37
38
|
# File 'lib/path_mapper/node/base/file.rb', line 36
def _remove_line!(line)
{ d: { result: self }, code: :ok }
end
|
#_rename!(new_path) ⇒ Object
40
41
42
43
44
45
46
47
48
49
|
# 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) ⇒ Object
28
29
30
|
# File 'lib/path_mapper/node/base/file.rb', line 28
def _safe_put!(content)
{ d: { result: self }, code: :ok }
end
|
#check(line) ⇒ Object
88
89
90
|
# File 'lib/path_mapper/node/base/file.rb', line 88
def check(line)
false
end
|
#compare_with(obj) ⇒ Object
79
80
81
82
83
84
85
86
|
# 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) ⇒ Object
102
103
104
|
# 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) ⇒ Object
96
97
98
99
100
|
# 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 ⇒ Object
92
93
94
|
# File 'lib/path_mapper/node/base/file.rb', line 92
def md5
Digest::MD5.new.digest(self.value)
end
|