Class: JSObfu::ECMANoWhitespaceVisitor
- Inherits:
-
RKelly::Visitors::ECMAVisitor
- Object
- RKelly::Visitors::ECMAVisitor
- JSObfu::ECMANoWhitespaceVisitor
- Defined in:
- lib/jsobfu/ecma_tight.rb
Overview
Implements an ECMAVisitor with minimal whitespace and indentation.
Mostly a line-by-line copy of RKelly::Visitors::ECMAVisitor with the whitespace trimmed out.
Direct Known Subclasses
Instance Method Summary collapse
-
#function_params_and_body(o) ⇒ Object
Helper for all the various function nodes.
- #visit_ArgumentsNode(o) ⇒ Object
- #visit_ArrayNode(o) ⇒ Object
- #visit_AssignExprNode(o) ⇒ Object
- #visit_BitwiseNotNode(o) ⇒ Object
- #visit_BlockNode(o) ⇒ Object
- #visit_BracketAccessorNode(o) ⇒ Object
- #visit_BreakNode(o) ⇒ Object
- #visit_CaseBlockNode(o) ⇒ Object
- #visit_CaseClauseNode(o) ⇒ Object
- #visit_CommaNode(o) ⇒ Object
- #visit_ConditionalNode(o) ⇒ Object
- #visit_ConstStatementNode(o) ⇒ Object
- #visit_ContinueNode(o) ⇒ Object
- #visit_DeleteNode(o) ⇒ Object
- #visit_DotAccessorNode(o) ⇒ Object
- #visit_DoWhileNode(o) ⇒ Object
- #visit_ElementNode(o) ⇒ Object
- #visit_EmptyStatementNode(o) ⇒ Object
- #visit_ExpressionStatementNode(o) ⇒ Object
- #visit_FalseNode(o) ⇒ Object
- #visit_ForInNode(o) ⇒ Object
- #visit_ForNode(o) ⇒ Object
- #visit_FunctionBodyNode(o) ⇒ Object
- #visit_FunctionCallNode(o) ⇒ Object
- #visit_FunctionDeclNode(o) ⇒ Object
- #visit_FunctionExprNode(o) ⇒ Object
- #visit_GetterPropertyNode(o) ⇒ Object
- #visit_IfNode(o) ⇒ Object
- #visit_LabelNode(o) ⇒ Object
- #visit_LessNode(o) ⇒ Object
- #visit_LogicalNotNode(o) ⇒ Object
- #visit_NewExprNode(o) ⇒ Object
- #visit_NullNode(o) ⇒ Object
- #visit_NumberNode(o) ⇒ Object
- #visit_ObjectLiteralNode(o) ⇒ Object
- #visit_OpEqualNode(o) ⇒ Object
- #visit_ParameterNode(o) ⇒ Object
- #visit_ParentheticalNode(o) ⇒ Object
- #visit_PostfixNode(o) ⇒ Object
- #visit_PrefixNode(o) ⇒ Object
- #visit_PropertyNode(o) ⇒ Object
- #visit_RegexpNode(o) ⇒ Object
- #visit_ResolveNode(o) ⇒ Object
- #visit_ReturnNode(o) ⇒ Object
- #visit_SetterPropertyNode(o) ⇒ Object
- #visit_SourceElementsNode(o) ⇒ Object
- #visit_StringNode(o) ⇒ Object
- #visit_SwitchNode(o) ⇒ Object
- #visit_ThisNode(o) ⇒ Object
- #visit_ThrowNode(o) ⇒ Object
- #visit_TrueNode(o) ⇒ Object
- #visit_TryNode(o) ⇒ Object
- #visit_TypeOfNode(o) ⇒ Object
- #visit_UnaryMinusNode(o) ⇒ Object
- #visit_UnaryPlusNode(o) ⇒ Object
- #visit_VarDeclNode(o) ⇒ Object
- #visit_VarStatementNode(o) ⇒ Object
- #visit_VoidNode(o) ⇒ Object
- #visit_WhileNode(o) ⇒ Object
- #visit_WithNode(o) ⇒ Object
Instance Method Details
#function_params_and_body(o) ⇒ Object
Helper for all the various function nodes
277 278 279 280 |
# 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 |
#visit_ArgumentsNode(o) ⇒ Object
77 78 79 |
# File 'lib/jsobfu/ecma_tight.rb', line 77 def visit_ArgumentsNode(o) o.value.map { |x| x.accept(self) }.join(',') end |
#visit_ArrayNode(o) ⇒ Object
141 142 143 |
# File 'lib/jsobfu/ecma_tight.rb', line 141 def visit_ArrayNode(o) "[#{o.value.map { |x| x ? x.accept(self) : '' }.join(',')}]" end |
#visit_AssignExprNode(o) ⇒ Object
29 30 31 |
# File 'lib/jsobfu/ecma_tight.rb', line 29 def visit_AssignExprNode(o) "=#{o.value.accept(self)}" end |
#visit_BitwiseNotNode(o) ⇒ Object
133 134 135 |
# File 'lib/jsobfu/ecma_tight.rb', line 133 def visit_BitwiseNotNode(o) "~#{o.value.accept(self)}" end |
#visit_BlockNode(o) ⇒ Object
61 62 63 |
# File 'lib/jsobfu/ecma_tight.rb', line 61 def visit_BlockNode(o) "{#{o.value.accept(self)}}" end |
#visit_BracketAccessorNode(o) ⇒ Object
308 309 310 |
# File 'lib/jsobfu/ecma_tight.rb', line 308 def visit_BracketAccessorNode(o) "#{o.value.accept(self)}[#{o.accessor.accept(self)}]" end |
#visit_BreakNode(o) ⇒ Object
101 102 103 |
# File 'lib/jsobfu/ecma_tight.rb', line 101 def visit_BreakNode(o) "break" + (o.value ? " #{o.value}" : '') + ';' end |
#visit_CaseBlockNode(o) ⇒ Object
229 230 231 |
# File 'lib/jsobfu/ecma_tight.rb', line 229 def visit_CaseBlockNode(o) "{" + (o.value ? o.value.map { |x| x.accept(self) }.join('') : '') + "}" end |
#visit_CaseClauseNode(o) ⇒ Object
233 234 235 236 237 238 239 240 241 |
# 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 |
#visit_CommaNode(o) ⇒ Object
282 283 284 |
# File 'lib/jsobfu/ecma_tight.rb', line 282 def visit_CommaNode(o) "#{o.left.accept(self)},#{o.value.accept(self)}" end |
#visit_ConditionalNode(o) ⇒ Object
291 292 293 294 |
# 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 |
#visit_ConstStatementNode(o) ⇒ Object
21 22 23 |
# File 'lib/jsobfu/ecma_tight.rb', line 21 def visit_ConstStatementNode(o) "const #{o.value.map { |x| x.accept(self) }.join(',')};" end |
#visit_ContinueNode(o) ⇒ Object
105 106 107 |
# File 'lib/jsobfu/ecma_tight.rb', line 105 def visit_ContinueNode(o) "continue" + (o.value ? " #{o.value}" : '') + ';' end |
#visit_DeleteNode(o) ⇒ Object
137 138 139 |
# File 'lib/jsobfu/ecma_tight.rb', line 137 def visit_DeleteNode(o) "delete #{o.value.accept(self)}" end |
#visit_DotAccessorNode(o) ⇒ Object
125 126 127 |
# File 'lib/jsobfu/ecma_tight.rb', line 125 def visit_DotAccessorNode(o) "#{o.value.accept(self)}.#{o.accessor}" end |
#visit_DoWhileNode(o) ⇒ Object
243 244 245 |
# File 'lib/jsobfu/ecma_tight.rb', line 243 def visit_DoWhileNode(o) "do#{o.left.accept(self)}while(#{o.value.accept(self)});" end |
#visit_ElementNode(o) ⇒ Object
145 146 147 |
# File 'lib/jsobfu/ecma_tight.rb', line 145 def visit_ElementNode(o) o.value.accept(self) end |
#visit_EmptyStatementNode(o) ⇒ Object
117 118 119 |
# File 'lib/jsobfu/ecma_tight.rb', line 117 def visit_EmptyStatementNode(o) ';' end |
#visit_ExpressionStatementNode(o) ⇒ Object
65 66 67 |
# File 'lib/jsobfu/ecma_tight.rb', line 65 def visit_ExpressionStatementNode(o) "#{o.value.accept(self)};" end |
#visit_FalseNode(o) ⇒ Object
113 114 115 |
# File 'lib/jsobfu/ecma_tight.rb', line 113 def visit_FalseNode(o) "false" end |
#visit_ForInNode(o) ⇒ Object
296 297 298 299 300 |
# 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 |
#visit_ForNode(o) ⇒ Object
37 38 39 40 41 42 43 |
# 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 |
#visit_FunctionBodyNode(o) ⇒ Object
97 98 99 |
# File 'lib/jsobfu/ecma_tight.rb', line 97 def visit_FunctionBodyNode(o) "{#{o.value.accept(self)}}" end |
#visit_FunctionCallNode(o) ⇒ Object
73 74 75 |
# File 'lib/jsobfu/ecma_tight.rb', line 73 def visit_FunctionCallNode(o) "#{o.value.accept(self)}(#{o.arguments.accept(self)})" end |
#visit_FunctionDeclNode(o) ⇒ Object
89 90 91 |
# File 'lib/jsobfu/ecma_tight.rb', line 89 def visit_FunctionDeclNode(o) "function #{o.value}" + function_params_and_body(o) end |
#visit_FunctionExprNode(o) ⇒ Object
271 272 273 274 |
# 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 |
#visit_GetterPropertyNode(o) ⇒ Object
263 264 265 |
# File 'lib/jsobfu/ecma_tight.rb', line 263 def visit_GetterPropertyNode(o) "get #{o.name}" + function_params_and_body(o.value) end |
#visit_IfNode(o) ⇒ Object
286 287 288 289 |
# 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 |
#visit_LabelNode(o) ⇒ Object
251 252 253 |
# File 'lib/jsobfu/ecma_tight.rb', line 251 def visit_LabelNode(o) "#{o.name}:#{o.value.accept(self)}" end |
#visit_LessNode(o) ⇒ Object
45 46 47 |
# File 'lib/jsobfu/ecma_tight.rb', line 45 def visit_LessNode(o) "#{o.left.accept(self)}<#{o.value.accept(self)}" end |
#visit_LogicalNotNode(o) ⇒ Object
149 150 151 |
# File 'lib/jsobfu/ecma_tight.rb', line 149 def visit_LogicalNotNode(o) "!#{o.value.accept(self)}" end |
#visit_NewExprNode(o) ⇒ Object
312 313 314 |
# File 'lib/jsobfu/ecma_tight.rb', line 312 def visit_NewExprNode(o) "new #{o.value.accept(self)}(#{o.arguments.accept(self)})" end |
#visit_NullNode(o) ⇒ Object
85 86 87 |
# File 'lib/jsobfu/ecma_tight.rb', line 85 def visit_NullNode(o) "null" end |
#visit_NumberNode(o) ⇒ Object
33 34 35 |
# File 'lib/jsobfu/ecma_tight.rb', line 33 def visit_NumberNode(o) o.value.to_s end |
#visit_ObjectLiteralNode(o) ⇒ Object
255 256 257 |
# File 'lib/jsobfu/ecma_tight.rb', line 255 def visit_ObjectLiteralNode(o) "{" + o.value.map { |x| x.accept(self) }.join(",\n") + '}' end |
#visit_OpEqualNode(o) ⇒ Object
69 70 71 |
# File 'lib/jsobfu/ecma_tight.rb', line 69 def visit_OpEqualNode(o) "#{o.left.accept(self)}=#{o.value.accept(self)}" end |
#visit_ParameterNode(o) ⇒ Object
93 94 95 |
# File 'lib/jsobfu/ecma_tight.rb', line 93 def visit_ParameterNode(o) o.value end |
#visit_ParentheticalNode(o) ⇒ Object
9 10 11 |
# File 'lib/jsobfu/ecma_tight.rb', line 9 def visit_ParentheticalNode(o) "(#{o.value.accept(self)})" end |
#visit_PostfixNode(o) ⇒ Object
53 54 55 |
# File 'lib/jsobfu/ecma_tight.rb', line 53 def visit_PostfixNode(o) "#{o.operand.accept(self)}#{o.value}" end |
#visit_PrefixNode(o) ⇒ Object
57 58 59 |
# File 'lib/jsobfu/ecma_tight.rb', line 57 def visit_PrefixNode(o) "#{o.value}#{o.operand.accept(self)}" end |
#visit_PropertyNode(o) ⇒ Object
259 260 261 |
# File 'lib/jsobfu/ecma_tight.rb', line 259 def visit_PropertyNode(o) "#{o.name}:#{o.value.accept(self)}" end |
#visit_RegexpNode(o) ⇒ Object
121 122 123 |
# File 'lib/jsobfu/ecma_tight.rb', line 121 def visit_RegexpNode(o) o.value end |
#visit_ResolveNode(o) ⇒ Object
49 50 51 |
# File 'lib/jsobfu/ecma_tight.rb', line 49 def visit_ResolveNode(o) o.value end |
#visit_ReturnNode(o) ⇒ Object
161 162 163 |
# File 'lib/jsobfu/ecma_tight.rb', line 161 def visit_ReturnNode(o) "return" + (o.value ? " #{o.value.accept(self)}" : '') + ';' end |
#visit_SetterPropertyNode(o) ⇒ Object
267 268 269 |
# File 'lib/jsobfu/ecma_tight.rb', line 267 def visit_SetterPropertyNode(o) "set #{o.name}" + function_params_and_body(o.value) end |
#visit_SourceElementsNode(o) ⇒ Object
13 14 15 |
# File 'lib/jsobfu/ecma_tight.rb', line 13 def visit_SourceElementsNode(o) o.value.map { |x| "#{x.accept(self)}" }.join end |
#visit_StringNode(o) ⇒ Object
81 82 83 |
# File 'lib/jsobfu/ecma_tight.rb', line 81 def visit_StringNode(o) o.value end |
#visit_SwitchNode(o) ⇒ Object
225 226 227 |
# File 'lib/jsobfu/ecma_tight.rb', line 225 def visit_SwitchNode(o) "switch(#{o.left.accept(self)})#{o.value.accept(self)}" end |
#visit_ThisNode(o) ⇒ Object
129 130 131 |
# File 'lib/jsobfu/ecma_tight.rb', line 129 def visit_ThisNode(o) "this" end |
#visit_ThrowNode(o) ⇒ Object
165 166 167 |
# File 'lib/jsobfu/ecma_tight.rb', line 165 def visit_ThrowNode(o) "throw #{o.value.accept(self)};" end |
#visit_TrueNode(o) ⇒ Object
109 110 111 |
# File 'lib/jsobfu/ecma_tight.rb', line 109 def visit_TrueNode(o) "true" end |
#visit_TryNode(o) ⇒ Object
302 303 304 305 306 |
# 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 |
#visit_TypeOfNode(o) ⇒ Object
169 170 171 |
# File 'lib/jsobfu/ecma_tight.rb', line 169 def visit_TypeOfNode(o) "typeof #{o.value.accept(self)}" end |
#visit_UnaryMinusNode(o) ⇒ Object
153 154 155 |
# File 'lib/jsobfu/ecma_tight.rb', line 153 def visit_UnaryMinusNode(o) "-#{o.value.accept(self)}" end |
#visit_UnaryPlusNode(o) ⇒ Object
157 158 159 |
# File 'lib/jsobfu/ecma_tight.rb', line 157 def visit_UnaryPlusNode(o) "+#{o.value.accept(self)}" end |
#visit_VarDeclNode(o) ⇒ Object
25 26 27 |
# File 'lib/jsobfu/ecma_tight.rb', line 25 def visit_VarDeclNode(o) "#{o.name}#{o.value ? o.value.accept(self) : nil}" end |
#visit_VarStatementNode(o) ⇒ Object
17 18 19 |
# File 'lib/jsobfu/ecma_tight.rb', line 17 def visit_VarStatementNode(o) "var #{o.value.map { |x| x.accept(self) }.join(',')};" end |
#visit_VoidNode(o) ⇒ Object
173 174 175 |
# File 'lib/jsobfu/ecma_tight.rb', line 173 def visit_VoidNode(o) "void(#{o.value.accept(self)})" end |
#visit_WhileNode(o) ⇒ Object
221 222 223 |
# File 'lib/jsobfu/ecma_tight.rb', line 221 def visit_WhileNode(o) "while(#{o.left.accept(self)})#{o.value.accept(self)}" end |
#visit_WithNode(o) ⇒ Object
247 248 249 |
# File 'lib/jsobfu/ecma_tight.rb', line 247 def visit_WithNode(o) "with(#{o.left.accept(self)})#{o.value.accept(self)}" end |