class Solargraph::Source::Change
A change to be applied to text.
def commit text, insert
-
(String)
-
Parameters:
-
insert
(String
) -- -
text
(String
) --
def commit text, insert start_offset = Position.to_offset(text, range.start) end_offset = Position.to_offset(text, range.ending) (start_offset == 0 ? '' : text[0..start_offset-1].to_s) + normalize(insert) + text[end_offset..-1].to_s end
def initialize range, new_text
-
new_text
(String
) -- The text to be changed. -
range
(Range
) -- The starting and ending positions of the change.
def initialize range, new_text @range = range @new_text = new_text end
def repair text
-
(String)
- The updated text.
Parameters:
-
text
(String
) -- The text to be changed.
def repair text fixed = new_text.gsub(/[^\s]/, ' ') if range.nil? fixed else result = commit text, fixed off = Position.to_offset(text, range.start) match = result[0, off].match(/[\.:]+\z/) if match result = result[0, off].sub(/#{match[0]}\z/, ' ' * match[0].length) + result[off..-1] end result end end
def write text, nullable = false
-
(String)
- The updated text.
Parameters:
-
nullable
(Boolean
) -- If true, minor changes that could generate -
text
(String
) -- The text to be changed.
def write text, nullable = false if nullable and !range.nil? and new_text.match(/[\.\[\{\(@\$:]$/) [':', '@'].each do |dupable| next unless new_text == dupable offset = Position.to_offset(text, range.start) if text[offset - 1] == dupable p = Position.from_offset(text, offset - 1) r = Change.new(Range.new(p, range.start), ' ') text = r.write(text) end break end commit text, "#{new_text[0..-2]} " elsif range.nil? new_text else commit text, new_text end end