Module: Dispersion

Defined in:
lib/dispersion.rb,
lib/dispersion/tokens.rb,
lib/dispersion/version.rb,
lib/dispersion/annotator.rb

Defined Under Namespace

Modules: Tokens Classes: Annotator

Constant Summary collapse

THEME =
{
	Tokens::COMMENT => "\e[90m",
	Tokens::KEYWORD => "\e[31m",
	Tokens::CONSTANT => "\e[34m",
	Tokens::FUNCTION => "\e[33m",
	Tokens::PUNCTUATION => "\e[37m",
	Tokens::LOCAL_VARIABLE => "\e[32m",
	Tokens::INSTANCE_VARIABLE => "\e[35m",
	Tokens::OPERATOR => "\e[33m",
	Tokens::STRING => "\e[32m",
	Tokens::SYMBOL => "\e[36m",
	Tokens::INTEGER => "\e[33m",
	Tokens::FLOAT => "\e[33m",
}.freeze
VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.annotate(code) ⇒ Object



24
25
26
# File 'lib/dispersion.rb', line 24

def self.annotate(code)
	Annotator.call(code)
end

.ansi(code) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dispersion.rb', line 28

def self.ansi(code)
	code.dup.tap do |buffer|
		offset = 0

		for start_offset, end_offset, token in annotate(code)
			start = THEME.fetch(token)

			buffer.bytesplice(start_offset + offset, 0, start)
			offset += start.bytesize

			buffer.bytesplice(end_offset + offset, 0, "\e[0m")
			offset += 4
		end
	end
end