class Unparser::Writer::Binary
def dispatch
def dispatch if node.type.eql?(:and) && left.type.equal?(:or) emit_with(KEYWORD_TOKENS) else left_emitter.write_to_buffer write(' ', MAP.fetch(effective_symbol), ' ') visit(right) end end
def effective_symbol
def effective_symbol if NEED_KEYWORD.include?(right.type) || NEED_KEYWORD.include?(left.type) return keyword_symbol end unless left_emitter.symbol_name return operator_symbol end keyword_symbol end
def emit_operator
def emit_operator emit_with(OPERATOR_TOKENS) end
def emit_with(map)
def emit_with(map) visit(left) write(' ', map.fetch(node.type), ' ') visit(right) end
def keyword_symbol
def keyword_symbol KEYWORD_SYMBOLS.fetch(node.type) end
def left_emitter
def left_emitter emitter(left) end
def operator_symbol
def operator_symbol OPERATOR_SYMBOLS.fetch(node.type) end
def right_emitter
def right_emitter emitter(right) end
def symbol_name
def symbol_name true end