From 0b5cdf651d4c815115a41dd72d6370f7b6340e1b Mon Sep 17 00:00:00 2001
From: Andreas Gal <andreas.gal@gmail.com>
Date: Mon, 9 May 2011 23:32:22 -0700
Subject: [PATCH] move find out of the Stream class

---
 pdf.js | 37 +++++++++++++++++++------------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/pdf.js b/pdf.js
index 1c03d2648..4a13c74f5 100644
--- a/pdf.js
+++ b/pdf.js
@@ -49,21 +49,6 @@ var Stream = (function() {
         moveStart: function() {
             this.start = this.pos;
         },
-        find: function(needle, limit, backwards) {
-            var length = this.bytes.length;
-            var pos = this.pos;
-            var str = "";
-            if (pos + limit > length)
-                limit = length - pos;
-            for (var n = 0; n < limit; ++n)
-                str += this.getChar();
-            this.pos = pos;
-            var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);
-            if (index == -1)
-                return false; /* not found */
-            this.pos += index;
-            return true; /* found */
-        },
         asString: function() {
             var str = "";
             var ch;
@@ -1480,6 +1465,22 @@ var PDFDoc = (function() {
         this.setup();
     }
 
+    function find(stream, needle, limit, backwards) {
+        var length = stream.length;
+        var pos = stream.pos;
+        var str = "";
+        if (pos + limit > length)
+            limit = length - pos;
+        for (var n = 0; n < limit; ++n)
+            str += stream.getChar();
+        stream.pos = pos;
+        var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);
+        if (index == -1)
+            return false; /* not found */
+        stream.pos += index;
+        return true; /* found */
+    }
+
     constructor.prototype = {
         get linearization() {
             var length = this.stream.length;
@@ -1499,7 +1500,7 @@ var PDFDoc = (function() {
             if (linearization) {
                 // Find end of first obj.
                 stream.reset();
-                if (stream.find("endobj", 1024))
+                if (find(stream, "endobj", 1024))
                     startXRef = stream.pos + 6;
             } else {
                 // Find startxref at the end of the file.
@@ -1507,7 +1508,7 @@ var PDFDoc = (function() {
                 if (start < 0)
                     start = 0;
                 stream.pos = start;
-                if (stream.find("startxref", 1024, true)) {
+                if (find(stream, "startxref", 1024, true)) {
                     stream.skip(9);
                     var ch;
                     while (Lexer.isSpace(ch = stream.getChar()))
@@ -1538,7 +1539,7 @@ var PDFDoc = (function() {
         checkHeader: function() {
             var stream = this.stream;
             stream.reset();
-            if (stream.find("%PDF-", 1024)) {
+            if (find(stream, "%PDF-", 1024)) {
                 // Found the header, trim off any garbage before it.
                 stream.moveStart();
                 return;