Class: Literally::BaseProcessor

Inherits:
Prism::Visitor
  • Object
show all
Defined in:
lib/literally/base_processor.rb

Direct Known Subclasses

Processor

Constant Summary collapse

EVAL_METHODS =
Set[:class_eval, :module_eval, :instance_eval, :eval].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBaseProcessor

Returns a new instance of BaseProcessor.



21
22
23
# File 'lib/literally/base_processor.rb', line 21

def initialize
	@annotations = []
end

Instance Attribute Details

#annotationsObject (readonly)

: Array[[Integer, String]]



26
27
28
# File 'lib/literally/base_processor.rb', line 26

def annotations
  @annotations
end

Class Method Details

.call(source) ⇒ Object

: (String) -> String



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/literally/base_processor.rb', line 7

def self.call(source)
	visitor = new
	visitor.visit(Prism.parse(source).value)
	buffer = source.dup
	annotations = visitor.annotations
	annotations.sort_by!(&:first)

	annotations.reverse_each do |offset, length, string|
		buffer[offset, length] = string
	end

	buffer
end