]> git.saurik.com Git - cycript.git/blobdiff - Output.cpp
Got jQuery parsing (empty finally block, function statements, carriage return) and...
[cycript.git] / Output.cpp
index e6bedf4cec2c7dbbf285b7d4df26c51d83181c6f..09ee163a739f138b964081d9a9d0aab5e4afdefd 100644 (file)
@@ -98,7 +98,7 @@ void CYAssignment::Output(CYOutput &out, CYFlags flags) const {
 }
 
 void CYBlock::Output(CYOutput &out) const {
-    for (CYSource *statement(statements_); statement != NULL; statement = statement->next_)
+    for (CYStatement *statement(statements_); statement != NULL; statement = statement->next_)
         statement->Output(out);
 }
 
@@ -126,8 +126,10 @@ void CYCall::Output(CYOutput &out, CYFlags flags) const {
 }
 
 void CYCatch::Output(CYOutput &out) const {
-    out << "catch(" << *name_ << ')';
-    code_->Output(out, true);
+    out << "catch(" << *name_ << "){";
+    if (code_ != NULL)
+        code_->Show(out);
+    out << "}";
 }
 
 void CYCategory::Output(CYOutput &out) const {
@@ -300,7 +302,7 @@ void CYEmpty::Output(CYOutput &out) const {
 
 void CYEmpty::Output(CYOutput &out, bool block) const {
     if (next_ != NULL)
-        CYSource::Output(out, block);
+        CYStatement::Output(out, block);
     else
         out << "{}";
 }
@@ -345,6 +347,13 @@ void CYField::Output(CYOutput &out) const {
     // XXX: implement!
 }
 
+void CYFinally::Output(CYOutput &out) const {
+    out << "finally{";
+    if (code_ != NULL)
+        code_->Show(out);
+    out << "}";
+}
+
 void CYFor::Output(CYOutput &out) const {
     out << "for(";
     if (initialiser_ != NULL)
@@ -651,12 +660,12 @@ void CYSend::Output(CYOutput &out, CYFlags flags) const {
     out << ')';
 }
 
-void CYSource::Show(CYOutput &out) const {
-    for (const CYSource *next(this); next != NULL; next = next->next_)
+void CYStatement::Show(CYOutput &out) const {
+    for (const CYStatement *next(this); next != NULL; next = next->next_)
         next->Output_(out);
 }
 
-void CYSource::Output(CYOutput &out, bool block) const {
+void CYStatement::Output(CYOutput &out, bool block) const {
     if (!block && !IsBlock())
         Output(out);
     else {
@@ -666,10 +675,6 @@ void CYSource::Output(CYOutput &out, bool block) const {
     }
 }
 
-void CYSource::Output_(CYOutput &out) const {
-    Output(out);
-}
-
 void CYStatement::Output_(CYOutput &out) const {
     for (CYLabel *label(labels_); label != NULL; label = label->next_)
         out << *label->name_ << ':';
@@ -750,14 +755,14 @@ void CYThrow::Output(CYOutput &out) const {
 }
 
 void CYTry::Output(CYOutput &out) const {
-    out << "try";
-    try_->Output(out, true);
+    out << "try{";
+    if (code_ != NULL)
+        code_->Show(out);
+    out << "}";
     if (catch_ != NULL)
         catch_->Output(out);
-    if (finally_ != NULL) {
-        out << "finally";
-        finally_->Output(out, true);
-    }
+    if (finally_ != NULL)
+        finally_->Output(out);
 }
 
 void CYVar::Output(CYOutput &out) const {