Class: PlatformosCheck::LanguageServer::DocumentChangeCorrector
- Inherits:
-
Object
- Object
- PlatformosCheck::LanguageServer::DocumentChangeCorrector
show all
- Includes:
- JsonHelpers, URIHelper
- Defined in:
- lib/platformos_check/language_server/document_change_corrector.rb
Instance Method Summary
collapse
-
#add_translation(file, path, value) ⇒ Object
-
#create_file(storage, relative_path, contents = nil, overwrite: false) ⇒ Object
-
#document_changes ⇒ Object
-
#initialize ⇒ DocumentChangeCorrector
constructor
A new instance of DocumentChangeCorrector.
-
#insert_after(node, content, character_range = nil) ⇒ Object
-
#insert_before(node, content, character_range = nil) ⇒ Object
-
#mkdir(storage, relative_path) ⇒ Object
-
#remove(node) ⇒ Object
-
#remove_file(storage, relative_path) ⇒ Object
-
#remove_translation(file, path) ⇒ Object
-
#replace(node, content, character_range = nil) ⇒ Object
-
#replace_inner_json(node, json, **pretty_json_opts) ⇒ Object
-
#replace_inner_markup(node, content) ⇒ Object
-
#wrap(node, insert_before, insert_after) ⇒ Object
#format_json_parse_error, #pretty_json
Methods included from URIHelper
#file_path, #file_uri
Constructor Details
Returns a new instance of DocumentChangeCorrector.
9
10
11
12
13
14
15
16
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 9
def initialize
@json_edits = {}
@json_file_edits = {}
@text_document_edits = {}
@create_files = []
@rename_files = []
@delete_files = []
end
|
Instance Method Details
#add_translation(file, path, value) ⇒ Object
143
144
145
146
147
148
149
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 143
def add_translation(file, path, value)
raise ArgumentError unless file.is_a?(JsonFile)
hash = file.content
JsonHelper.set(hash, path, value)
@json_file_edits[file] = hash
end
|
#create_file(storage, relative_path, contents = nil, overwrite: false) ⇒ Object
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 110
def create_file(storage, relative_path, contents = nil, overwrite: false)
uri = file_uri(storage.path(relative_path))
@create_files << create_file_change(uri, overwrite)
return if contents.nil?
text_document = { uri:, version: nil }
@text_document_edits[text_document] = {
textDocument: text_document,
edits: [{
range: {
start: { line: 0, character: 0 },
end: { line: 0, character: 0 }
},
newText: contents
}]
}
end
|
#document_changes ⇒ Object
18
19
20
21
22
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 18
def document_changes
apply_json_edits
apply_json_file_edits
@create_files + @rename_files + @text_document_edits.values + @delete_files
end
|
#insert_after(node, content, character_range = nil) ⇒ Object
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 37
def insert_after(node, content, character_range = nil)
position = character_range_position(node, character_range) if character_range
edits(node) << {
range: {
start: end_location(position || node),
end: end_location(position || node)
},
newText: content
}
end
|
#insert_before(node, content, character_range = nil) ⇒ Object
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 25
def insert_before(node, content, character_range = nil)
position = character_range_position(node, character_range) if character_range
edits(node) << {
range: {
start: start_location(position || node),
end: start_location(position || node)
},
newText: content
}
end
|
#mkdir(storage, relative_path) ⇒ Object
133
134
135
136
137
138
139
140
141
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 133
def mkdir(storage, relative_path)
path = Pathname.new(relative_path).join("tmp").to_s
create_file(storage, path)
remove_file(storage, path)
end
|
#remove(node) ⇒ Object
57
58
59
60
61
62
63
64
65
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 57
def remove(node)
edits(node) << {
range: {
start: { line: node.outer_markup_start_row, character: node.outer_markup_start_column },
end: { line: node.outer_markup_end_row, character: node.outer_markup_end_column }
},
newText: ''
}
end
|
#remove_file(storage, relative_path) ⇒ Object
128
129
130
131
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 128
def remove_file(storage, relative_path)
uri = file_uri(storage.path(relative_path))
@delete_files << delete_file_change(uri)
end
|
#remove_translation(file, path) ⇒ Object
151
152
153
154
155
156
157
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 151
def remove_translation(file, path)
raise ArgumentError unless file.is_a?(JsonFile)
hash = file.content
JsonHelper.delete(hash, path)
@json_file_edits[file] = hash
end
|
#replace(node, content, character_range = nil) ⇒ Object
48
49
50
51
52
53
54
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 48
def replace(node, content, character_range = nil)
position = character_range_position(node, character_range) if character_range
edits(node) << {
range: range(position || node),
newText: content
}
end
|
#replace_inner_json(node, json, **pretty_json_opts) ⇒ Object
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 83
def replace_inner_json(node, json, **pretty_json_opts)
@json_edits[node] = [json, pretty_json_opts]
end
|
#replace_inner_markup(node, content) ⇒ Object
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 67
def replace_inner_markup(node, content)
edits(node) << {
range: {
start: {
line: node.inner_markup_start_row,
character: node.inner_markup_start_column
},
end: {
line: node.inner_markup_end_row,
character: node.inner_markup_end_column
}
},
newText: content
}
end
|
#wrap(node, insert_before, insert_after) ⇒ Object
103
104
105
106
107
108
|
# File 'lib/platformos_check/language_server/document_change_corrector.rb', line 103
def wrap(node, insert_before, insert_after)
edits(node) << {
range: range(node),
newText: insert_before + node.markup + insert_after
}
end
|