Class: CodeLexer::SpaceAbstractor

Inherits:
AbstractorPiece show all
Defined in:
lib/code-lexer/abstractor.rb

Instance Method Summary collapse

Methods inherited from AbstractorPiece

#initialize

Constructor Details

This class inherits a constructor from CodeLexer::AbstractorPiece

Instance Method Details

#abstract(tokens) ⇒ Object



214
215
216
217
218
219
220
221
222
223
224
225
# File 'lib/code-lexer/abstractor.rb', line 214

def abstract(tokens)
    tokens.select { |t| t.type == :space }.each do |space_token|
        previous_index = tokens.index(space_token) - 1
        if previous_index < 0 || tokens[previous_index].type == :newline
            space_token.abstracted_value = Token.special("INDENTATION")
        else
            space_token.abstracted_value = Token.special("WHITESPACE")
        end
    end
    
    return tokens
end

#deabstract(tokens) ⇒ Object



227
228
229
230
231
232
233
234
235
236
237
# File 'lib/code-lexer/abstractor.rb', line 227

def deabstract(tokens)
    tokens.select do |t| 
        t.abstracted_value == Token.special("INDENTATION") || 
        t.abstracted_value == Token.special("WHITESPACE")
    end.each do |token|
        token.type = :space
        token.value = ' '
    end
    
    return tokens
end