Class: ReVIEW::Compiler::SyntaxElement

Inherits:
Object
  • Object
show all
Defined in:
lib/review/compiler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, type, argc, &block) ⇒ SyntaxElement

Returns a new instance of SyntaxElement.



64
65
66
67
68
69
# File 'lib/review/compiler.rb', line 64

def initialize(name, type, argc, &block)
  @name = name
  @type = type
  @argc_spec = argc
  @checker = block
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



71
72
73
# File 'lib/review/compiler.rb', line 71

def name
  @name
end

Instance Method Details

#block_allowed?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/review/compiler.rb', line 100

def block_allowed?
  @type == :block or @type == :optional or @type == :minicolumn
end

#block_required?Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/review/compiler.rb', line 96

def block_required?
  @type == :block or @type == :minicolumn
end

#check_args(args) ⇒ Object



73
74
75
76
77
78
79
80
81
# 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_argcObject



83
84
85
86
87
88
89
90
# 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?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/review/compiler.rb', line 92

def minicolumn?
  @type == :minicolumn
end