Class: CheapCoder::Censor

Inherits:
Object
  • Object
show all
Includes:
AST::Processor::Mixin
Defined in:
lib/cheap_coder/censor.rb

Instance Method Summary collapse

Constructor Details

#initialize(**option) ⇒ Censor

Returns a new instance of Censor.



7
8
9
10
# File 'lib/cheap_coder/censor.rb', line 7

def initialize(**option)
  @authorizer = Authorizer.new(option[:allowed_methods])
  @evaluator = option[:evaluator]
end

Instance Method Details

#handler_missing(node) ⇒ Object



33
34
35
# File 'lib/cheap_coder/censor.rb', line 33

def handler_missing(node)
  default_handler(node)
end

#on_send(node) ⇒ Object



26
27
28
29
30
31
# File 'lib/cheap_coder/censor.rb', line 26

def on_send(node)
  return node if @authorizer.allow?(node)

  print_debug('!SEND', node)
  Parser::AST::Node.new(:nil, [])
end

#on_xstr(node) ⇒ Object



21
22
23
24
# File 'lib/cheap_coder/censor.rb', line 21

def on_xstr(node)
  print_debug('!XSTR', node)
  node.to_a[0]
end

#process(expr) ⇒ Object



16
17
18
19
# File 'lib/cheap_coder/censor.rb', line 16

def process(expr)
  @authorizer.process(expr)
  super
end

#scoreObject



12
13
14
# File 'lib/cheap_coder/censor.rb', line 12

def score
  @evaluator&.score
end