class CodeRay::Encoders::TokenKindFilter

A Filter that selects tokens based on their token kind.

Options

:exclude

One or many symbols (in an Array) which shall be excluded.

Default: []

:include

One or many symbols (in an array) which shall be included.

Default: :all, which means all tokens are included.

Exclusion wins over inclusion.

See also: CommentFilter

Constants

DEFAULT_OPTIONS

Public Instance Methods

begin_group(kind) click to toggle source

Add the token group to the output stream if kind matches the conditions.

If it does not, all tokens inside the group are excluded from the stream, even if their kinds match.

# File lib/coderay/encoders/token_kind_filter.rb, line 66
def begin_group kind
  if @group_excluded
    @group_excluded += 1
  elsif include_group? kind
    super
  else
    @group_excluded = 1
  end
end
begin_line(kind) click to toggle source

See begin_group.

# File lib/coderay/encoders/token_kind_filter.rb, line 77
def begin_line kind
  if @group_excluded
    @group_excluded += 1
  elsif include_group? kind
    super
  else
    @group_excluded = 1
  end
end
end_group(kind) click to toggle source

Take care of re-enabling the delegation of tokens to the output stream if an exluded group has ended.

# File lib/coderay/encoders/token_kind_filter.rb, line 89
def end_group kind
  if @group_excluded
    @group_excluded -= 1
    @group_excluded = false if @group_excluded.zero?
  else
    super
  end
end
end_line(kind) click to toggle source

See end_group.

# File lib/coderay/encoders/token_kind_filter.rb, line 99
def end_line kind
  if @group_excluded
    @group_excluded -= 1
    @group_excluded = false if @group_excluded.zero?
  else
    super
  end
end
text_token(text, kind) click to toggle source

Add the token to the output stream if kind matches the conditions.

# File lib/coderay/encoders/token_kind_filter.rb, line 57
def text_token text, kind
  super if !@group_excluded && include_text_token?(text, kind)
end

Protected Instance Methods

include_group?(kind) click to toggle source
# File lib/coderay/encoders/token_kind_filter.rb, line 49
def include_group? kind
   (@include == :all || @include.include?(kind)) &&
  !(@exclude == :all || @exclude.include?(kind))
end
include_text_token?(text, kind) click to toggle source
# File lib/coderay/encoders/token_kind_filter.rb, line 45
def include_text_token? text, kind
  include_group? kind
end
setup(options) click to toggle source
# File lib/coderay/encoders/token_kind_filter.rb, line 35
def setup options
  super
  
  @group_excluded = false
  @exclude = options[:exclude]
  @exclude = Array(@exclude) unless @exclude == :all
  @include = options[:include]
  @include = Array(@include) unless @include == :all
end