<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>16397</bug_id>
          
          <creation_ts>2007-12-10 23:16:51 -0800</creation_ts>
          <short_desc>Patch to pretty-print JavaScript</short_desc>
          <delta_ts>2010-02-04 11:31:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>kmccullough</cc>
    
    <cc>powrsurg</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>63901</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-10 23:16:51 -0800</bug_when>
    <thetext>I was playing with Drosera on Amazon.com and got tired of being unable to test any features due to the one-line javascript implementations they use.

I put together the attached patch to give rudimentary indention for javascript files.  It works reasonably well, though it could probably be improved considerably by a knowledgeable JavaScript hacker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63902</commentid>
    <comment_count>1</comment_count>
      <attachid>17839</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-10 23:17:31 -0800</bug_when>
    <thetext>Created attachment 17839
Patch to enable javascript indent in Drosera.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63909</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-12-10 23:54:33 -0800</bug_when>
    <thetext>Yay - this is a huge problem when debugging sites!

Is this patch intended for review? Please mark it as such via Edit link if it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63959</commentid>
    <comment_count>3</comment_count>
      <attachid>17839</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-11 13:13:47 -0800</bug_when>
    <thetext>Comment on attachment 17839
Patch to enable javascript indent in Drosera.

&gt;Index: ChangeLog
&gt;===================================================================
&gt;--- ChangeLog	(revision 28609)
&gt;+++ ChangeLog	(working copy)
&gt;@@ -1,3 +1,9 @@
&gt;+2007-12-10  Brent Fulgham  &lt;bfulgham@gmail.com&gt;
&gt;+
&gt;+        Reviewed by NOBODY (OOPS!).
&gt;+
&gt;+        * Drosera/debugger.js:
&gt;+
&gt; 2007-12-10  Brady Eidson  &lt;beidson@apple.com&gt;
&gt; 
&gt;         Rubberstamped by Sam Weinig
&gt;Index: Drosera/debugger.js
&gt;===================================================================
&gt;--- Drosera/debugger.js	(revision 28609)
&gt;+++ Drosera/debugger.js	(working copy)
&gt;@@ -713,6 +713,61 @@ function syntaxHighlight(code, file)
&gt;         return false;
&gt;     }
&gt; 
&gt;+    function nextNonWSisClosingBrace(currLoc) {
&gt;+        // scan forward.  If the first thing we hit is a closing brace, must decrement indent.
&gt;+        var sz  = ((code.length - currLoc) &gt; 80) ? 80 : code.length - currLoc - 1;
&gt;+        var sub = code.substr(currLoc, sz);
&gt;+        var pat = /\S/;
&gt;+        var pos = sub.search(pat);
&gt;+        if (pos &gt;= 0 &amp;&amp; code.charAt(pos + currLoc) == &quot;}&quot;) {
&gt;+            return true;
&gt;+        }
&gt;+
&gt;+        return false;
&gt;+    }
&gt;+
&gt;+    var findEOL = /\s*\n/;
&gt;+    var indentLevel = 0;
&gt;+    var indentSize = 4;        // 4 spaces per indent.  Should be configurable!
&gt;+
&gt;+    function indentLine(currLoc, indentLevel) {
&gt;+        var c = code.charAt(currLoc);
&gt;+        var indentCount = 0;
&gt;+
&gt;+        if (nextNonWSisClosingBrace(currLoc)) {
&gt;+            if (indentLevel &gt; 0)
&gt;+                --indentLevel;
&gt;+        }
&gt;+
&gt;+        if (0 == indentLevel)
&gt;+            return currLoc;
&gt;+
&gt;+        while (c == &quot; &quot; || c == &quot;\t&quot; || c == &quot;\n&quot;) {
&gt;+            if (indentCount &lt; indentLevel * indentSize) {
&gt;+                if (c == &quot;\t&quot;) {
&gt;+                    for (var j = 0; j &lt; indentSize; ++j)
&gt;+                        echoChar(&quot; &quot;);
&gt;+                } else if (c == &quot;\n&quot;) {
&gt;+                    echoChar(&quot; &quot;);
&gt;+                } else
&gt;+                    echoChar(c);
&gt;+            }
&gt;+            currLoc++;
&gt;+            c = code.charAt(currLoc);
&gt;+            if (c == &quot;\t&quot;)
&gt;+                indentCount += indentSize;
&gt;+            else
&gt;+                indentCount++;
&gt;+        }
&gt;+
&gt;+        while (indentCount &lt; indentLevel * indentSize) { 
&gt;+            echoChar(&quot; &quot;);
&gt;+            indentCount++;
&gt;+        }
&gt;+
&gt;+        return currLoc;
&gt;+    }
&gt;+
&gt;     var result = &quot;&quot;;
&gt;     var cPrev = &quot;&quot;;
&gt;     var c = &quot;&quot;;
&gt;@@ -751,6 +806,8 @@ function syntaxHighlight(code, file)
&gt;             }
&gt;             result += &quot;&lt;/span&gt;&quot;;
&gt;             echoChar(c);
&gt;+            
&gt;+            i = indentLine(i+1, indentLevel) - 1;
&gt;             continue;
&gt;         } else if (c == &quot;\&quot;&quot; || c == &quot;&apos;&quot;) {
&gt;             var instringtype = c;
&gt;@@ -865,6 +922,28 @@ function syntaxHighlight(code, file)
&gt; 
&gt;                 continue;
&gt;             }
&gt;+        } else if (c == &quot;{&quot;) {
&gt;+            indentLevel++;
&gt;+            echoChar(c);
&gt;+            echoChar(&quot;\n&quot;);
&gt;+            i = indentLine(i+1, indentLevel) - 1;
&gt;+            continue;
&gt;+        } else if (c == &quot;}&quot;) {
&gt;+
&gt;+            if (cPrev != &quot; &quot; &amp;&amp; cPrev != &quot;\t&quot; &amp;&amp; cPrev != &quot;\n&quot; &amp;&amp; cPrev != &quot;;&quot;) {
&gt;+                echoChar(&quot;\n&quot;);
&gt;+                i = indentLine(i, indentLevel);
&gt;+            }
&gt;+
&gt;+            echoChar(c);
&gt;+            if (indentLevel &gt; 0)
&gt;+                indentLevel--;
&gt;+            continue;
&gt;+       } else if (c == &quot;;&quot;) {
&gt;+            echoChar(c);
&gt;+            echoChar(&quot;\n&quot;);
&gt;+            i = indentLine(i+1, indentLevel) - 1;
&gt;+            continue;
&gt;         }
&gt; 
&gt;         echoChar(c);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63960</commentid>
    <comment_count>4</comment_count>
      <attachid>17839</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-11 13:15:02 -0800</bug_when>
    <thetext>Comment on attachment 17839
Patch to enable javascript indent in Drosera.

The patch unfortunately contains some changes related to another patch I submitted (Bug 16314).  Basically the only diff needed is the debugger.js file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63962</commentid>
    <comment_count>5</comment_count>
      <attachid>17855</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2007-12-11 13:24:57 -0800</bug_when>
    <thetext>Created attachment 17855
Patch to provide rudimentary indentation for JavaScript.

Removed extraneous changes from unrelated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63964</commentid>
    <comment_count>6</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-12-11 13:29:45 -0800</bug_when>
    <thetext>In the future, you should include the title of the bug report and a link to it in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63993</commentid>
    <comment_count>7</comment_count>
      <attachid>17855</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-12-11 22:03:54 -0800</bug_when>
    <thetext>Comment on attachment 17855
Patch to provide rudimentary indentation for JavaScript.

This patch seems good and is a good step. However, this will break breakpoints. The line numbers will not match and you will get random breaks that don&apos;t match the original code.

To really fix this we should remember what the original line was and make sure adding a breakpoint on the &quot;virtual line&quot; really adds a breakpoint for the original line.

Pretty printing should also be optional, and off by default. We should have a toolbar button, or something to toggle between pretty print and the original.

Also as mentioned on IRC by bdash, syntax highlighting and pretty printing should be done in JavaScriptCore. But that can be done later. It would help speed Drosera up too.

r- until breakpoints work and this is optional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80723</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-05-17 09:40:32 -0700</bug_when>
    <thetext>This should be added to the Web Inspector in some fashion now that Drosera doesn&apos;t exist and the debugger is in the Inspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160432</commentid>
    <comment_count>9</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2009-11-04 06:41:59 -0800</bug_when>
    <thetext>*** Bug 31118 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17839</attachid>
            <date>2007-12-10 23:17:31 -0800</date>
            <delta_ts>2007-12-11 13:24:57 -0800</delta_ts>
            <desc>Patch to enable javascript indent in Drosera.</desc>
            <filename>drosera.patch</filename>
            <type>text/plain</type>
            <size>5419</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjA5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDctMTIt
MTAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEcm9zZXJhL2RlYnVnZ2VyLmpzOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0ZGlycy5wbToKKyAgICAgICAgKiBXZWJLaXRMYXVuY2hl
ci9XZWJLaXRMYXVuY2hlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDA3LTEyLTEw
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXJzdGFt
cGVkIGJ5IFNhbSBXZWluaWcKSW5kZXg6IERyb3NlcmEvZGVidWdnZXIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gRHJvc2VyYS9kZWJ1Z2dlci5qcwkocmV2aXNpb24gMjg2MDkpCisrKyBEcm9zZXJhL2RlYnVn
Z2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03MTMsNiArNzEzLDYxIEBAIGZ1bmN0aW9uIHN5bnRh
eEhpZ2hsaWdodChjb2RlLCBmaWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisg
ICAgZnVuY3Rpb24gbmV4dE5vbldTaXNDbG9zaW5nQnJhY2UoY3VyckxvYykgeworICAgICAgICAv
LyBzY2FuIGZvcndhcmQuICBJZiB0aGUgZmlyc3QgdGhpbmcgd2UgaGl0IGlzIGEgY2xvc2luZyBi
cmFjZSwgbXVzdCBkZWNyZW1lbnQgaW5kZW50LgorICAgICAgICB2YXIgc3ogID0gKChjb2RlLmxl
bmd0aCAtIGN1cnJMb2MpID4gODApID8gODAgOiBjb2RlLmxlbmd0aCAtIGN1cnJMb2MgLSAxOwor
ICAgICAgICB2YXIgc3ViID0gY29kZS5zdWJzdHIoY3VyckxvYywgc3opOworICAgICAgICB2YXIg
cGF0ID0gL1xTLzsKKyAgICAgICAgdmFyIHBvcyA9IHN1Yi5zZWFyY2gocGF0KTsKKyAgICAgICAg
aWYgKHBvcyA+PSAwICYmIGNvZGUuY2hhckF0KHBvcyArIGN1cnJMb2MpID09ICJ9IikgeworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgdmFyIGZpbmRFT0wgPSAvXHMqXG4vOworICAgIHZhciBpbmRlbnRMZXZl
bCA9IDA7CisgICAgdmFyIGluZGVudFNpemUgPSA0OyAgICAgICAgLy8gNCBzcGFjZXMgcGVyIGlu
ZGVudC4gIFNob3VsZCBiZSBjb25maWd1cmFibGUhCisKKyAgICBmdW5jdGlvbiBpbmRlbnRMaW5l
KGN1cnJMb2MsIGluZGVudExldmVsKSB7CisgICAgICAgIHZhciBjID0gY29kZS5jaGFyQXQoY3Vy
ckxvYyk7CisgICAgICAgIHZhciBpbmRlbnRDb3VudCA9IDA7CisKKyAgICAgICAgaWYgKG5leHRO
b25XU2lzQ2xvc2luZ0JyYWNlKGN1cnJMb2MpKSB7CisgICAgICAgICAgICBpZiAoaW5kZW50TGV2
ZWwgPiAwKQorICAgICAgICAgICAgICAgIC0taW5kZW50TGV2ZWw7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoMCA9PSBpbmRlbnRMZXZlbCkKKyAgICAgICAgICAgIHJldHVybiBjdXJyTG9jOwor
CisgICAgICAgIHdoaWxlIChjID09ICIgIiB8fCBjID09ICJcdCIgfHwgYyA9PSAiXG4iKSB7Cisg
ICAgICAgICAgICBpZiAoaW5kZW50Q291bnQgPCBpbmRlbnRMZXZlbCAqIGluZGVudFNpemUpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYyA9PSAiXHQiKSB7CisgICAgICAgICAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgaW5kZW50U2l6ZTsgKytqKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZWNob0NoYXIoIiAiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gIlxuIikg
eworICAgICAgICAgICAgICAgICAgICBlY2hvQ2hhcigiICIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICBlY2hvQ2hhcihjKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGN1cnJMb2MrKzsKKyAgICAgICAgICAgIGMgPSBjb2RlLmNoYXJBdChjdXJyTG9j
KTsKKyAgICAgICAgICAgIGlmIChjID09ICJcdCIpCisgICAgICAgICAgICAgICAgaW5kZW50Q291
bnQgKz0gaW5kZW50U2l6ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmRl
bnRDb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKGluZGVudENvdW50IDwgaW5k
ZW50TGV2ZWwgKiBpbmRlbnRTaXplKSB7IAorICAgICAgICAgICAgZWNob0NoYXIoIiAiKTsKKyAg
ICAgICAgICAgIGluZGVudENvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY3Vy
ckxvYzsKKyAgICB9CisKICAgICB2YXIgcmVzdWx0ID0gIiI7CiAgICAgdmFyIGNQcmV2ID0gIiI7
CiAgICAgdmFyIGMgPSAiIjsKQEAgLTc1MSw2ICs4MDYsOCBAQCBmdW5jdGlvbiBzeW50YXhIaWdo
bGlnaHQoY29kZSwgZmlsZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCArPSAi
PC9zcGFuPiI7CiAgICAgICAgICAgICBlY2hvQ2hhcihjKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaSA9IGluZGVudExpbmUoaSsxLCBpbmRlbnRMZXZlbCkgLSAxOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAiXCIiIHx8IGMgPT0gIiciKSB7CiAg
ICAgICAgICAgICB2YXIgaW5zdHJpbmd0eXBlID0gYzsKQEAgLTg2NSw2ICs5MjIsMjggQEAgZnVu
Y3Rpb24gc3ludGF4SGlnaGxpZ2h0KGNvZGUsIGZpbGUpCiAKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjID09ICJ7IikgeworICAg
ICAgICAgICAgaW5kZW50TGV2ZWwrKzsKKyAgICAgICAgICAgIGVjaG9DaGFyKGMpOworICAgICAg
ICAgICAgZWNob0NoYXIoIlxuIik7CisgICAgICAgICAgICBpID0gaW5kZW50TGluZShpKzEsIGlu
ZGVudExldmVsKSAtIDE7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfSBlbHNlIGlm
IChjID09ICJ9IikgeworCisgICAgICAgICAgICBpZiAoY1ByZXYgIT0gIiAiICYmIGNQcmV2ICE9
ICJcdCIgJiYgY1ByZXYgIT0gIlxuIiAmJiBjUHJldiAhPSAiOyIpIHsKKyAgICAgICAgICAgICAg
ICBlY2hvQ2hhcigiXG4iKTsKKyAgICAgICAgICAgICAgICBpID0gaW5kZW50TGluZShpLCBpbmRl
bnRMZXZlbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVjaG9DaGFyKGMpOworICAg
ICAgICAgICAgaWYgKGluZGVudExldmVsID4gMCkKKyAgICAgICAgICAgICAgICBpbmRlbnRMZXZl
bC0tOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgfSBlbHNlIGlmIChjID09ICI7Iikg
eworICAgICAgICAgICAgZWNob0NoYXIoYyk7CisgICAgICAgICAgICBlY2hvQ2hhcigiXG4iKTsK
KyAgICAgICAgICAgIGkgPSBpbmRlbnRMaW5lKGkrMSwgaW5kZW50TGV2ZWwpIC0gMTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgZWNob0NoYXIoYyk7CkluZGV4
OiBTY3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU2NyaXB0cy93ZWJraXRkaXJz
LnBtCShyZXZpc2lvbiAyODYwOSkKKysrIFNjcmlwdHMvd2Via2l0ZGlycy5wbQkod29ya2luZyBj
b3B5KQpAQCAtODMyLDQgKzgzMiw0MCBAQCBzdWIgcnVuU2FmYXJpCiAgICAgcmV0dXJuIDE7CiB9
CiAKK3N1YiBydW5Ecm9zZXJhCit7CisgICAgbXkgKCRkZWJ1Z2dlcikgPSBAXzsKKworICAgIGlm
IChpc09TWCgpKSB7CisgICAgICAgIHJldHVybiBzeXN0ZW0gIiRGaW5kQmluOjpCaW4vZ2RiLWRy
b3NlcmEiLCBAQVJHViBpZiAkZGVidWdnZXI7CisKKyAgICAgICAgbXkgJHByb2R1Y3REaXIgPSBw
cm9kdWN0RGlyKCk7CisgICAgICAgIHByaW50ICJTdGFydGluZyBEcm9zZXJhIHdpdGggRFlMRF9G
UkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQgdG8gYnVpbHQgV2ViS2l0IGluICRwcm9kdWN0RGly
LlxuIjsKKyAgICAgICAgJEVOVntEWUxEX0ZSQU1FV09SS19QQVRIfSA9ICRwcm9kdWN0RGlyOwor
ICAgICAgICAkRU5We1dFQktJVF9VTlNFVF9EWUxEX0ZSQU1FV09SS19QQVRIfSA9ICJZRVMiOwor
CisgICAgICAgIG15ICRkcm9zZXJhUGF0aCA9ICIkcHJvZHVjdERpci9Ecm9zZXJhLmFwcC9Db250
ZW50cy9NYWNPUy9Ecm9zZXJhIjsKKyAgICAgICAgcmV0dXJuIHN5c3RlbSAkZHJvc2VyYVBhdGgs
IEBBUkdWOworICAgIH0KKworICAgIGlmIChpc0N5Z3dpbigpKSB7CisgICAgICAgIHByaW50ICJS
dW5uaW5nIERyb3NlcmEuLi5cbiI7CisgICAgICAgIG15ICRzY3JpcHQgPSAicnVuLWRyb3NlcmEt
bmlnaHRseS5jbWQiOworCW15ICRwcm9kRGlyID0gcHJvZHVjdERpcigpOworICAgICAgICBteSAk
cmVzdWx0ID0gc3lzdGVtICJjcCIsICIkRmluZEJpbjo6QmluLyRzY3JpcHQiLCAkcHJvZERpcjsK
KyAgICAgICAgcmV0dXJuICRyZXN1bHQgaWYgJHJlc3VsdDsKKworICAgICAgICBteSAkY3dkID0g
Z2V0Y3dkKCk7CisgICAgICAgIGNoZGlyICRwcm9kRGlyOworCisgICAgICAgIG15ICRkZWJ1Z2dl
ckZsYWcgPSAkZGVidWdnZXIgPyAiL2RlYnVnZ2VyIiA6ICIiOworICAgICAgICAkcmVzdWx0ID0g
c3lzdGVtICJjbWQiLCAiL2MiLCAiY2FsbCAkc2NyaXB0ICRkZWJ1Z2dlckZsYWciOworICAgICAg
ICBjaGRpciAkY3dkOworICAgICAgICByZXR1cm4gJHJlc3VsdDsKKyAgICB9CisKKyAgICByZXR1
cm4gMTsKK30KKworCiAxOwpJbmRleDogV2ViS2l0TGF1bmNoZXIvV2ViS2l0TGF1bmNoZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRMYXVuY2hlci9XZWJL
aXRMYXVuY2hlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODYwOSkKKysr
IFdlYktpdExhdW5jaGVyL1dlYktpdExhdW5jaGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNiBAQAogCQkJbWFpbkdyb3VwID0gMjlCOTcz
MTRGRENGQTM5NDExQ0EyQ0VBIC8qIFdlYktpdCAqLzsKIAkJCXByb2plY3REaXJQYXRoID0gIiI7
CiAJCQlwcm9qZWN0Um9vdCA9ICIiOwotCQkJc2hvdWxkQ2hlY2tDb21wYXRpYmlsaXR5ID0gMTsK
IAkJCXRhcmdldHMgPSAoCiAJCQkJOEQxMTA3MjYwNDg2Q0VCODAwRTQ3MDkwIC8qIFdlYktpdCAq
LywKIAkJCQk1RDY1MEYzMzA5REI4QjI4MDA3NUU5QTggLyogV2ViS2l0TmlnaHRseUVuYWJsZXIg
Ki8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17855</attachid>
            <date>2007-12-11 13:24:57 -0800</date>
            <delta_ts>2007-12-11 22:03:54 -0800</delta_ts>
            <desc>Patch to provide rudimentary indentation for JavaScript.</desc>
            <filename>drosera.patch</filename>
            <type>text/plain</type>
            <size>3474</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjI5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOSBAQAorMjAwNy0xMi0x
MSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERyb3NlcmEvZGVidWdnZXIuanM6CisK
IDIwMDctMTItMTEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFuZGVycwpJbmRleDogRHJvc2VyYS9kZWJ1Z2dlci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBEcm9zZXJhL2RlYnVnZ2VyLmpzCShyZXZpc2lvbiAyODYyOSkKKysrIERyb3NlcmEvZGVi
dWdnZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw2ICs3MTMsNjEgQEAgZnVuY3Rpb24gc3lu
dGF4SGlnaGxpZ2h0KGNvZGUsIGZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
KyAgICBmdW5jdGlvbiBuZXh0Tm9uV1Npc0Nsb3NpbmdCcmFjZShjdXJyTG9jKSB7CisgICAgICAg
IC8vIHNjYW4gZm9yd2FyZC4gIElmIHRoZSBmaXJzdCB0aGluZyB3ZSBoaXQgaXMgYSBjbG9zaW5n
IGJyYWNlLCBtdXN0IGRlY3JlbWVudCBpbmRlbnQuCisgICAgICAgIHZhciBzeiAgPSAoKGNvZGUu
bGVuZ3RoIC0gY3VyckxvYykgPiA4MCkgPyA4MCA6IGNvZGUubGVuZ3RoIC0gY3VyckxvYyAtIDE7
CisgICAgICAgIHZhciBzdWIgPSBjb2RlLnN1YnN0cihjdXJyTG9jLCBzeik7CisgICAgICAgIHZh
ciBwYXQgPSAvXFMvOworICAgICAgICB2YXIgcG9zID0gc3ViLnNlYXJjaChwYXQpOworICAgICAg
ICBpZiAocG9zID49IDAgJiYgY29kZS5jaGFyQXQocG9zICsgY3VyckxvYykgPT0gIn0iKSB7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICB2YXIgZmluZEVPTCA9IC9ccypcbi87CisgICAgdmFyIGluZGVudExl
dmVsID0gMDsKKyAgICB2YXIgaW5kZW50U2l6ZSA9IDQ7ICAgICAgICAvLyA0IHNwYWNlcyBwZXIg
aW5kZW50LiAgU2hvdWxkIGJlIGNvbmZpZ3VyYWJsZSEKKworICAgIGZ1bmN0aW9uIGluZGVudExp
bmUoY3VyckxvYywgaW5kZW50TGV2ZWwpIHsKKyAgICAgICAgdmFyIGMgPSBjb2RlLmNoYXJBdChj
dXJyTG9jKTsKKyAgICAgICAgdmFyIGluZGVudENvdW50ID0gMDsKKworICAgICAgICBpZiAobmV4
dE5vbldTaXNDbG9zaW5nQnJhY2UoY3VyckxvYykpIHsKKyAgICAgICAgICAgIGlmIChpbmRlbnRM
ZXZlbCA+IDApCisgICAgICAgICAgICAgICAgLS1pbmRlbnRMZXZlbDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICgwID09IGluZGVudExldmVsKQorICAgICAgICAgICAgcmV0dXJuIGN1cnJMb2M7
CisKKyAgICAgICAgd2hpbGUgKGMgPT0gIiAiIHx8IGMgPT0gIlx0IiB8fCBjID09ICJcbiIpIHsK
KyAgICAgICAgICAgIGlmIChpbmRlbnRDb3VudCA8IGluZGVudExldmVsICogaW5kZW50U2l6ZSkg
eworICAgICAgICAgICAgICAgIGlmIChjID09ICJcdCIpIHsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaiA9IDA7IGogPCBpbmRlbnRTaXplOyArK2opCisgICAgICAgICAgICAgICAgICAg
ICAgICBlY2hvQ2hhcigiICIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAiXG4i
KSB7CisgICAgICAgICAgICAgICAgICAgIGVjaG9DaGFyKCIgIik7CisgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVjaG9DaGFyKGMpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY3VyckxvYysrOworICAgICAgICAgICAgYyA9IGNvZGUuY2hhckF0KGN1cnJM
b2MpOworICAgICAgICAgICAgaWYgKGMgPT0gIlx0IikKKyAgICAgICAgICAgICAgICBpbmRlbnRD
b3VudCArPSBpbmRlbnRTaXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlu
ZGVudENvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoaW5kZW50Q291bnQgPCBp
bmRlbnRMZXZlbCAqIGluZGVudFNpemUpIHsgCisgICAgICAgICAgICBlY2hvQ2hhcigiICIpOwor
ICAgICAgICAgICAgaW5kZW50Q291bnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBj
dXJyTG9jOworICAgIH0KKwogICAgIHZhciByZXN1bHQgPSAiIjsKICAgICB2YXIgY1ByZXYgPSAi
IjsKICAgICB2YXIgYyA9ICIiOwpAQCAtNzUxLDYgKzgwNiw4IEBAIGZ1bmN0aW9uIHN5bnRheEhp
Z2hsaWdodChjb2RlLCBmaWxlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ICs9
ICI8L3NwYW4+IjsKICAgICAgICAgICAgIGVjaG9DaGFyKGMpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpID0gaW5kZW50TGluZShpKzEsIGluZGVudExldmVsKSAtIDE7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfSBlbHNlIGlmIChjID09ICJcIiIgfHwgYyA9PSAiJyIpIHsK
ICAgICAgICAgICAgIHZhciBpbnN0cmluZ3R5cGUgPSBjOwpAQCAtODY1LDYgKzkyMiwyOCBAQCBm
dW5jdGlvbiBzeW50YXhIaWdobGlnaHQoY29kZSwgZmlsZSkKIAogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGMgPT0gInsiKSB7Cisg
ICAgICAgICAgICBpbmRlbnRMZXZlbCsrOworICAgICAgICAgICAgZWNob0NoYXIoYyk7CisgICAg
ICAgICAgICBlY2hvQ2hhcigiXG4iKTsKKyAgICAgICAgICAgIGkgPSBpbmRlbnRMaW5lKGkrMSwg
aW5kZW50TGV2ZWwpIC0gMTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9IGVsc2Ug
aWYgKGMgPT0gIn0iKSB7CisKKyAgICAgICAgICAgIGlmIChjUHJldiAhPSAiICIgJiYgY1ByZXYg
IT0gIlx0IiAmJiBjUHJldiAhPSAiXG4iICYmIGNQcmV2ICE9ICI7IikgeworICAgICAgICAgICAg
ICAgIGVjaG9DaGFyKCJcbiIpOworICAgICAgICAgICAgICAgIGkgPSBpbmRlbnRMaW5lKGksIGlu
ZGVudExldmVsKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWNob0NoYXIoYyk7Cisg
ICAgICAgICAgICBpZiAoaW5kZW50TGV2ZWwgPiAwKQorICAgICAgICAgICAgICAgIGluZGVudExl
dmVsLS07CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICB9IGVsc2UgaWYgKGMgPT0gIjsi
KSB7CisgICAgICAgICAgICBlY2hvQ2hhcihjKTsKKyAgICAgICAgICAgIGVjaG9DaGFyKCJcbiIp
OworICAgICAgICAgICAgaSA9IGluZGVudExpbmUoaSsxLCBpbmRlbnRMZXZlbCkgLSAxOworICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBlY2hvQ2hhcihjKTsK
</data>
<flag name="review"
          id="7708"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>