class ReVIEW::Compiler::SyntaxElement

Attributes

name[R]

Public Class Methods

new(name, type, argc, &block) click to toggle source
# File lib/review/compiler.rb, line 64
def initialize(name, type, argc, &block)
  @name = name
  @type = type
  @argc_spec = argc
  @checker = block
end

Public Instance Methods

block_allowed?() click to toggle source
# File lib/review/compiler.rb, line 100
def block_allowed?
  @type == :block or @type == :optional or @type == :minicolumn
end
block_required?() click to toggle source
# File lib/review/compiler.rb, line 96
def block_required?
  @type == :block or @type == :minicolumn
end
check_args(args) click to toggle source
# File lib/review/compiler.rb, line 73
def check_args(args)
  unless @argc_spec === args.size # rubocop:disable Style/CaseEquality
    raise CompileError, "wrong # of parameters (block command //#{@name}, expect #{@argc_spec} but #{args.size})"
  end

  if @checker
    @checker.call(*args)
  end
end
min_argc() click to toggle source
# File lib/review/compiler.rb, line 83
def min_argc
  case @argc_spec
  when Range then @argc_spec.begin
  when Integer then @argc_spec
  else
    raise TypeError, "argc_spec is not Range/Integer: #{inspect}"
  end
end
minicolumn?() click to toggle source
# File lib/review/compiler.rb, line 92
def minicolumn?
  @type == :minicolumn
end