Class: Ibex::Runtime::CST::TextEdit
- Inherits:
-
Object
- Object
- Ibex::Runtime::CST::TextEdit
- Defined in:
- lib/json5/generated_parser.rb
Overview
One byte-oriented source replacement.
Instance Attribute Summary collapse
- #delete_length ⇒ Object readonly
- #insert_text ⇒ Object readonly
- #start ⇒ Object readonly
Class Method Summary collapse
-
.normalize(edits) ⇒ Object
Sort and merge adjacent edits while rejecting intersecting source ranges.
Instance Method Summary collapse
-
#initialize(start:, delete_length:, insert_text:) ⇒ TextEdit
constructor
A new instance of TextEdit.
- #range ⇒ Object
Constructor Details
#initialize(start:, delete_length:, insert_text:) ⇒ TextEdit
Returns a new instance of TextEdit.
1850 1851 1852 1853 1854 1855 1856 1857 1858 |
# File 'lib/json5/generated_parser.rb', line 1850 def initialize(start:, delete_length:, insert_text:) raise ArgumentError, "start must be non-negative" if start.negative? raise ArgumentError, "delete_length must be non-negative" if delete_length.negative? @start = start @delete_length = delete_length @insert_text = insert_text.b.freeze freeze end |
Instance Attribute Details
#delete_length ⇒ Object (readonly)
1846 1847 1848 |
# File 'lib/json5/generated_parser.rb', line 1846 def delete_length @delete_length end |
#insert_text ⇒ Object (readonly)
1847 1848 1849 |
# File 'lib/json5/generated_parser.rb', line 1847 def insert_text @insert_text end |
#start ⇒ Object (readonly)
1845 1846 1847 |
# File 'lib/json5/generated_parser.rb', line 1845 def start @start end |
Class Method Details
.normalize(edits) ⇒ Object
Sort and merge adjacent edits while rejecting intersecting source ranges. All edits remain expressed against the unedited source.
1801 1802 1803 1804 1805 1806 1807 1808 1809 |
# File 'lib/json5/generated_parser.rb', line 1801 def normalize(edits) raise ArgumentError, "edits must contain only TextEdit values" unless edits.all?(TextEdit) merge_adjacent( edits.each_with_index.sort_by do |edit, index| [edit.start, edit.delete_length.zero? ? 0 : 1, index] end.map(&:first) ).freeze end |
Instance Method Details
#range ⇒ Object
1861 |
# File 'lib/json5/generated_parser.rb', line 1861 def range = @start...(@start + @delete_length) |