Implements an ECMAVisitor with minimal whitespace and indentation.
Mostly a line-by-line copy of RKelly::Visitors::ECMAVisitor with the whitespace trimmed out.
Helper for all the various function nodes
# File lib/jsobfu/ecma_tight.rb, line 277 def function_params_and_body(o) "(#{o.arguments.map { |x| x.accept(self) }.join(',')})" + "#{o.function_body.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 77 def visit_ArgumentsNode(o) o.value.map { |x| x.accept(self) }.join(',') end
# File lib/jsobfu/ecma_tight.rb, line 141 def visit_ArrayNode(o) "[#{o.value.map { |x| x ? x.accept(self) : '' }.join(',')}]" end
# File lib/jsobfu/ecma_tight.rb, line 29 def visit_AssignExprNode(o) "=#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 133 def visit_BitwiseNotNode(o) "~#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 61 def visit_BlockNode(o) "{#{o.value.accept(self)}}" end
# File lib/jsobfu/ecma_tight.rb, line 308 def visit_BracketAccessorNode(o) "#{o.value.accept(self)}[#{o.accessor.accept(self)}]" end
# File lib/jsobfu/ecma_tight.rb, line 101 def visit_BreakNode(o) "break" + (o.value ? " #{o.value}" : '') + ';' end
# File lib/jsobfu/ecma_tight.rb, line 229 def visit_CaseBlockNode(o) "{" + (o.value ? o.value.map { |x| x.accept(self) }.join('') : '') + "}" end
# File lib/jsobfu/ecma_tight.rb, line 233 def visit_CaseClauseNode(o) if o.left case_code = "case #{o.left.accept(self)}:" else case_code = "default:" end case_code += "#{o.value.accept(self)}" case_code end
# File lib/jsobfu/ecma_tight.rb, line 282 def visit_CommaNode(o) "#{o.left.accept(self)},#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 291 def visit_ConditionalNode(o) "#{o.conditions.accept(self)}?#{o.value.accept(self)}:" + "#{o.else.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 21 def visit_ConstStatementNode(o) "const #{o.value.map { |x| x.accept(self) }.join(',')};" end
# File lib/jsobfu/ecma_tight.rb, line 105 def visit_ContinueNode(o) "continue" + (o.value ? " #{o.value}" : '') + ';' end
# File lib/jsobfu/ecma_tight.rb, line 137 def visit_DeleteNode(o) "delete #{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 243 def visit_DoWhileNode(o) "do#{o.left.accept(self)}while(#{o.value.accept(self)});" end
# File lib/jsobfu/ecma_tight.rb, line 125 def visit_DotAccessorNode(o) "#{o.value.accept(self)}.#{o.accessor}" end
# File lib/jsobfu/ecma_tight.rb, line 145 def visit_ElementNode(o) o.value.accept(self) end
# File lib/jsobfu/ecma_tight.rb, line 117 def visit_EmptyStatementNode(o) ';' end
# File lib/jsobfu/ecma_tight.rb, line 65 def visit_ExpressionStatementNode(o) "#{o.value.accept(self)};" end
# File lib/jsobfu/ecma_tight.rb, line 113 def visit_FalseNode(o) "false" end
# File lib/jsobfu/ecma_tight.rb, line 296 def visit_ForInNode(o) var = o.left.is_a?(RKelly::Nodes::VarDeclNode) ? 'var ' : '' "for(#{var}#{o.left.accept(self)} in #{o.right.accept(self)})" + "#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 37 def visit_ForNode(o) init = o.init ? o.init.accept(self) : ';' init << ';' unless init.end_with? ';' # make sure it has a ; test = o.test ? o.test.accept(self) : '' counter = o.counter ? o.counter.accept(self) : '' "for(#{init}#{test};#{counter})#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 97 def visit_FunctionBodyNode(o) "{#{o.value.accept(self)}}" end
# File lib/jsobfu/ecma_tight.rb, line 73 def visit_FunctionCallNode(o) "#{o.value.accept(self)}(#{o.arguments.accept(self)})" end
# File lib/jsobfu/ecma_tight.rb, line 89 def visit_FunctionDeclNode(o) "function #{o.value}" + function_params_and_body(o) end
# File lib/jsobfu/ecma_tight.rb, line 271 def visit_FunctionExprNode(o) name = (o.value == 'function') ? '' : ' '+o.value "function" + name + function_params_and_body(o) end
# File lib/jsobfu/ecma_tight.rb, line 263 def visit_GetterPropertyNode(o) "get #{o.name}" + function_params_and_body(o.value) end
# File lib/jsobfu/ecma_tight.rb, line 286 def visit_IfNode(o) "if(#{o.conditions.accept(self)})#{o.value.accept(self)}" + (o.else ? "else #{o.else.accept(self)}" : '') end
# File lib/jsobfu/ecma_tight.rb, line 251 def visit_LabelNode(o) "#{o.name}:#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 45 def visit_LessNode(o) "#{o.left.accept(self)}<#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 149 def visit_LogicalNotNode(o) "!#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 312 def visit_NewExprNode(o) "new #{o.value.accept(self)}(#{o.arguments.accept(self)})" end
# File lib/jsobfu/ecma_tight.rb, line 85 def visit_NullNode(o) "null" end
# File lib/jsobfu/ecma_tight.rb, line 33 def visit_NumberNode(o) o.value.to_s end
# File lib/jsobfu/ecma_tight.rb, line 255 def visit_ObjectLiteralNode(o) "{" + o.value.map { |x| x.accept(self) }.join(",\n") + '}' end
# File lib/jsobfu/ecma_tight.rb, line 69 def visit_OpEqualNode(o) "#{o.left.accept(self)}=#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 93 def visit_ParameterNode(o) o.value end
# File lib/jsobfu/ecma_tight.rb, line 9 def visit_ParentheticalNode(o) "(#{o.value.accept(self)})" end
# File lib/jsobfu/ecma_tight.rb, line 53 def visit_PostfixNode(o) "#{o.operand.accept(self)}#{o.value}" end
# File lib/jsobfu/ecma_tight.rb, line 57 def visit_PrefixNode(o) "#{o.value}#{o.operand.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 259 def visit_PropertyNode(o) "#{o.name}:#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 121 def visit_RegexpNode(o) o.value end
# File lib/jsobfu/ecma_tight.rb, line 49 def visit_ResolveNode(o) o.value end
# File lib/jsobfu/ecma_tight.rb, line 161 def visit_ReturnNode(o) "return" + (o.value ? " #{o.value.accept(self)}" : '') + ';' end
# File lib/jsobfu/ecma_tight.rb, line 267 def visit_SetterPropertyNode(o) "set #{o.name}" + function_params_and_body(o.value) end
# File lib/jsobfu/ecma_tight.rb, line 13 def visit_SourceElementsNode(o) o.value.map { |x| "#{x.accept(self)}" }.join end
# File lib/jsobfu/ecma_tight.rb, line 81 def visit_StringNode(o) o.value end
# File lib/jsobfu/ecma_tight.rb, line 225 def visit_SwitchNode(o) "switch(#{o.left.accept(self)})#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 129 def visit_ThisNode(o) "this" end
# File lib/jsobfu/ecma_tight.rb, line 165 def visit_ThrowNode(o) "throw #{o.value.accept(self)};" end
# File lib/jsobfu/ecma_tight.rb, line 109 def visit_TrueNode(o) "true" end
# File lib/jsobfu/ecma_tight.rb, line 302 def visit_TryNode(o) "try#{o.value.accept(self)}" + (o.catch_block ? " catch(#{o.catch_var})#{o.catch_block.accept(self)}" : '') + (o.finally_block ? " finally#{o.finally_block.accept(self)}" : '') end
# File lib/jsobfu/ecma_tight.rb, line 169 def visit_TypeOfNode(o) "typeof #{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 153 def visit_UnaryMinusNode(o) "-#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 157 def visit_UnaryPlusNode(o) "+#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 25 def visit_VarDeclNode(o) "#{o.name}#{o.value ? o.value.accept(self) : nil}" end
# File lib/jsobfu/ecma_tight.rb, line 17 def visit_VarStatementNode(o) "var #{o.value.map { |x| x.accept(self) }.join(',')};" end
# File lib/jsobfu/ecma_tight.rb, line 173 def visit_VoidNode(o) "void(#{o.value.accept(self)})" end
# File lib/jsobfu/ecma_tight.rb, line 221 def visit_WhileNode(o) "while(#{o.left.accept(self)})#{o.value.accept(self)}" end
# File lib/jsobfu/ecma_tight.rb, line 247 def visit_WithNode(o) "with(#{o.left.accept(self)})#{o.value.accept(self)}" end