From f96179ebc2b6590c5be1278a0c8c74f174a734d6 Mon Sep 17 00:00:00 2001
From: jsclose <jsclose@umich.edu>
Date: Mon, 5 Mar 2018 19:34:14 -0500
Subject: [PATCH] trying to integrate parser and crawler

---
 CMakeLists.txt              |  20 +-
 ParserEndToEndTest          | Bin 0 -> 229488 bytes
 crawler/spider.cpp          |  21 +-
 crawler/spider.h            |   8 +-
 makefile                    | 387 ++++++++++++++++++++++++++++++------
 parser/Parser.cpp           | 106 ++++++++++
 parser/Parser.h             |  84 +-------
 parser/tests/parserTest.cpp |  17 +-
 shared/Document.cpp         | 101 ++++++++++
 shared/Document.h           | 100 +---------
 util/Stemmer.h              |   4 +-
 util/Tokenizer.h            |   2 +-
 util/stringProcessing.h     |   5 +-
 13 files changed, 604 insertions(+), 251 deletions(-)
 create mode 100755 ParserEndToEndTest
 create mode 100644 parser/Parser.cpp
 create mode 100644 shared/Document.cpp

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7c0f522..5dcc721 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,16 +3,23 @@ project(eecs398_search)
 
 set(CMAKE_CXX_STANDARD 11)
 
-add_executable(eecs398_search
+add_executable(search
         main.cpp
         shared/ProducerConsumerQueue.cpp
         shared/ProducerConsumerQueue.h
-        shared/ProducerConsumerQueue_test.cpp parser/Parser.h
-        parser/Parser.h
+         parser/Parser.h
         util/Tokenizer.h
         util/stringProcessing.h
         util/Stemmer.h)
 
+
+
+add_executable(crawl main.cpp   shared/ProducerConsumerQueue.h  shared/ThreadClass.h shared/url.h crawler/crawler.cpp crawler/SocketReader.cpp crawler/StreamReader.h   crawler/spider.cpp util/util.h crawler/LocalReader.h crawler/StreamReader.h parser/Parser.h shared/Document.cpp parser/Parser.cpp)
+
+
+add_executable(test1 main.cpp  shared/ProducerConsumerQueue.h
+        shared/ThreadClass.h crawler/crawler.cpp crawler/spider.cpp shared/url.h crawler/StreamReader.h util/util.cpp crawler/SocketReader.cpp crawler/SocketReader.h crawler/LocalReader.h )
+
 add_executable(StringProcessingTest
         util/stringProcessing.h
         util/Stemmer.h
@@ -32,3 +39,10 @@ add_executable(ParserEndToEndTest
         shared/url.h
         parser/tests/parserTest.cpp)
 
+
+
+find_package(OpenSSL REQUIRED)
+
+target_link_libraries(crawl OpenSSL::SSL)
+
+target_link_libraries(test1 OpenSSL::SSL)
\ No newline at end of file
diff --git a/ParserEndToEndTest b/ParserEndToEndTest
new file mode 100755
index 0000000000000000000000000000000000000000..14ae4eaf767c4f83f33fc6ef6ca5de9218f6345b
GIT binary patch
literal 229488
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
Xge-m3O!hk4qadLlxkx+APt2cxn&eUN

literal 0
HcmV?d00001

diff --git a/crawler/spider.cpp b/crawler/spider.cpp
index 018f121..a19d257 100644
--- a/crawler/spider.cpp
+++ b/crawler/spider.cpp
@@ -6,18 +6,18 @@
 
 
 #include "spider.h"
+#include "../parser/Parser.h"
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
 
 #include <unistd.h>
-#include "../util/util.h"
 
 #include "LocalReader.h"
 #include "SocketReader.h"
 #include "../shared/Document.h"
-
+#include "../util/util.h"
 size_t Spider::hash(const char * s){
 	{
 		// http://www.cse.yorku.ca/~oz/hash.html
@@ -62,7 +62,11 @@ void Spider::FuncToRun()
 				string pathToDisk = util::GetCurrentWorkingDir() + "/crawlerOutput/" + to_string(docID)+ ".txt";
 				int fd = util::writeToNewFileToLocation( reader->buffer, pathToDisk);
 
-				//parser.parse(reader);
+
+				/*
+				Document document ( currentUrl, reader->buffer );
+				auto dictionary = parser.execute ( &document );
+				*/
 				cond = true;
 				}
 			else
@@ -87,7 +91,10 @@ Takes a URL. Hashes it. Checks if the url is in the docMapLookup. If it is, chec
 */
 
 
-
+/*
+ * Takes in a parsed url,  creates a document object, writes information about the document to disk
+ *  returns the begining position of the document on disk, stores that into the in memory lookup hash table
+*/
 bool Spider::writeDocToDisk(ParsedUrl url)
 	{
 	Document d(url);
@@ -103,6 +110,12 @@ bool Spider::writeDocToDisk(ParsedUrl url)
 	return true;
 	}
 
+/*
+ *
+ * Takes a parsed url, checks if its in the local in memory hash table of documents return false
+ * If url was crawled but past a certain point, reindexs or does not exist , indexes the doc
+ * and returns true
+ */
 
 
 bool Spider::shouldURLbeCrawled( ParsedUrl url )
diff --git a/crawler/spider.h b/crawler/spider.h
index a5d2a50..e1a99a2 100644
--- a/crawler/spider.h
+++ b/crawler/spider.h
@@ -9,6 +9,8 @@
 #include<iostream>
 #include <unordered_map>
 #include "StreamReader.h"
+#include "../parser/Parser.h"
+#include "../util/util.h"
 
 using namespace std;
 
@@ -20,8 +22,9 @@ public:
 
 	Spider( string mode_in, ProducerConsumerQueue < string > *url_q_in,
 			  unordered_map < string, int > *doc_map_lookup_in )
-			: mode( mode_in ), urlFrontier( url_q_in ), docMapLookup( doc_map_lookup_in )
-		{ };
+			: mode( mode_in ), urlFrontier( url_q_in ), docMapLookup( doc_map_lookup_in ), parser( Parser( url_q_in))
+		{
+		};
 
 
 	//Takes a url off of the url frontier
@@ -45,6 +48,7 @@ public:
 private:
 
 	int locationOnDisk;
+	Parser parser;
 	ProducerConsumerQueue < string > *urlFrontier;
 	string mode;
 	unordered_map < string, int > *docMapLookup;
diff --git a/makefile b/makefile
index d639ab8..363ce8c 100644
--- a/makefile
+++ b/makefile
@@ -56,17 +56,6 @@ CMAKE_BINARY_DIR = /Users/jakeclose/Desktop/398/project/eecs398-search
 #=============================================================================
 # Targets provided globally by CMake.
 
-# Special rule for the target rebuild_cache
-rebuild_cache:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
-	/Applications/CLion.app/Contents/bin/cmake/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-.PHONY : rebuild_cache
-
-# Special rule for the target rebuild_cache
-rebuild_cache/fast: rebuild_cache
-
-.PHONY : rebuild_cache/fast
-
 # Special rule for the target edit_cache
 edit_cache:
 	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
@@ -78,6 +67,17 @@ edit_cache/fast: edit_cache
 
 .PHONY : edit_cache/fast
 
+# Special rule for the target rebuild_cache
+rebuild_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+	/Applications/CLion.app/Contents/bin/cmake/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
 # The main all target
 all: cmake_check_build_system
 	$(CMAKE_COMMAND) -E cmake_progress_start /Users/jakeclose/Desktop/398/project/eecs398-search/CMakeFiles /Users/jakeclose/Desktop/398/project/eecs398-search/CMakeFiles/progress.marks
@@ -111,30 +111,95 @@ depend:
 .PHONY : depend
 
 #=============================================================================
-# Target rules for targets named url_test
+# Target rules for targets named ParserEndToEndTest
+
+# Build rule for target.
+ParserEndToEndTest: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 ParserEndToEndTest
+.PHONY : ParserEndToEndTest
+
+# fast build rule for target.
+ParserEndToEndTest/fast:
+	$(MAKE) -f CMakeFiles/ParserEndToEndTest.dir/build.make CMakeFiles/ParserEndToEndTest.dir/build
+.PHONY : ParserEndToEndTest/fast
+
+#=============================================================================
+# Target rules for targets named StemmerTest
 
 # Build rule for target.
-url_test: cmake_check_build_system
-	$(MAKE) -f CMakeFiles/Makefile2 url_test
-.PHONY : url_test
+StemmerTest: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 StemmerTest
+.PHONY : StemmerTest
 
 # fast build rule for target.
-url_test/fast:
-	$(MAKE) -f CMakeFiles/url_test.dir/build.make CMakeFiles/url_test.dir/build
-.PHONY : url_test/fast
+StemmerTest/fast:
+	$(MAKE) -f CMakeFiles/StemmerTest.dir/build.make CMakeFiles/StemmerTest.dir/build
+.PHONY : StemmerTest/fast
 
 #=============================================================================
-# Target rules for targets named main
+# Target rules for targets named StringProcessingTest
 
 # Build rule for target.
-main: cmake_check_build_system
-	$(MAKE) -f CMakeFiles/Makefile2 main
-.PHONY : main
+StringProcessingTest: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 StringProcessingTest
+.PHONY : StringProcessingTest
 
 # fast build rule for target.
-main/fast:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/build
-.PHONY : main/fast
+StringProcessingTest/fast:
+	$(MAKE) -f CMakeFiles/StringProcessingTest.dir/build.make CMakeFiles/StringProcessingTest.dir/build
+.PHONY : StringProcessingTest/fast
+
+#=============================================================================
+# Target rules for targets named TokenizerTest
+
+# Build rule for target.
+TokenizerTest: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 TokenizerTest
+.PHONY : TokenizerTest
+
+# fast build rule for target.
+TokenizerTest/fast:
+	$(MAKE) -f CMakeFiles/TokenizerTest.dir/build.make CMakeFiles/TokenizerTest.dir/build
+.PHONY : TokenizerTest/fast
+
+#=============================================================================
+# Target rules for targets named test1
+
+# Build rule for target.
+test1: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 test1
+.PHONY : test1
+
+# fast build rule for target.
+test1/fast:
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/build
+.PHONY : test1/fast
+
+#=============================================================================
+# Target rules for targets named crawl
+
+# Build rule for target.
+crawl: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 crawl
+.PHONY : crawl
+
+# fast build rule for target.
+crawl/fast:
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/build
+.PHONY : crawl/fast
+
+#=============================================================================
+# Target rules for targets named search
+
+# Build rule for target.
+search: cmake_check_build_system
+	$(MAKE) -f CMakeFiles/Makefile2 search
+.PHONY : search
+
+# fast build rule for target.
+search/fast:
+	$(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/build
+.PHONY : search/fast
 
 crawler/SocketReader.o: crawler/SocketReader.cpp.o
 
@@ -142,7 +207,8 @@ crawler/SocketReader.o: crawler/SocketReader.cpp.o
 
 # target to build an object file
 crawler/SocketReader.cpp.o:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/SocketReader.cpp.o
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/SocketReader.cpp.o
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/SocketReader.cpp.o
 .PHONY : crawler/SocketReader.cpp.o
 
 crawler/SocketReader.i: crawler/SocketReader.cpp.i
@@ -151,7 +217,8 @@ crawler/SocketReader.i: crawler/SocketReader.cpp.i
 
 # target to preprocess a source file
 crawler/SocketReader.cpp.i:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/SocketReader.cpp.i
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/SocketReader.cpp.i
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/SocketReader.cpp.i
 .PHONY : crawler/SocketReader.cpp.i
 
 crawler/SocketReader.s: crawler/SocketReader.cpp.s
@@ -160,7 +227,8 @@ crawler/SocketReader.s: crawler/SocketReader.cpp.s
 
 # target to generate assembly for a file
 crawler/SocketReader.cpp.s:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/SocketReader.cpp.s
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/SocketReader.cpp.s
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/SocketReader.cpp.s
 .PHONY : crawler/SocketReader.cpp.s
 
 crawler/crawler.o: crawler/crawler.cpp.o
@@ -169,7 +237,8 @@ crawler/crawler.o: crawler/crawler.cpp.o
 
 # target to build an object file
 crawler/crawler.cpp.o:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/crawler.cpp.o
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/crawler.cpp.o
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/crawler.cpp.o
 .PHONY : crawler/crawler.cpp.o
 
 crawler/crawler.i: crawler/crawler.cpp.i
@@ -178,7 +247,8 @@ crawler/crawler.i: crawler/crawler.cpp.i
 
 # target to preprocess a source file
 crawler/crawler.cpp.i:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/crawler.cpp.i
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/crawler.cpp.i
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/crawler.cpp.i
 .PHONY : crawler/crawler.cpp.i
 
 crawler/crawler.s: crawler/crawler.cpp.s
@@ -187,7 +257,8 @@ crawler/crawler.s: crawler/crawler.cpp.s
 
 # target to generate assembly for a file
 crawler/crawler.cpp.s:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/crawler.cpp.s
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/crawler.cpp.s
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/crawler.cpp.s
 .PHONY : crawler/crawler.cpp.s
 
 crawler/spider.o: crawler/spider.cpp.o
@@ -196,7 +267,8 @@ crawler/spider.o: crawler/spider.cpp.o
 
 # target to build an object file
 crawler/spider.cpp.o:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/spider.cpp.o
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/spider.cpp.o
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/spider.cpp.o
 .PHONY : crawler/spider.cpp.o
 
 crawler/spider.i: crawler/spider.cpp.i
@@ -205,7 +277,8 @@ crawler/spider.i: crawler/spider.cpp.i
 
 # target to preprocess a source file
 crawler/spider.cpp.i:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/spider.cpp.i
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/spider.cpp.i
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/spider.cpp.i
 .PHONY : crawler/spider.cpp.i
 
 crawler/spider.s: crawler/spider.cpp.s
@@ -214,7 +287,8 @@ crawler/spider.s: crawler/spider.cpp.s
 
 # target to generate assembly for a file
 crawler/spider.cpp.s:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/crawler/spider.cpp.s
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/crawler/spider.cpp.s
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/crawler/spider.cpp.s
 .PHONY : crawler/spider.cpp.s
 
 main.o: main.cpp.o
@@ -223,7 +297,9 @@ main.o: main.cpp.o
 
 # target to build an object file
 main.cpp.o:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/main.cpp.o
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/main.cpp.o
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/main.cpp.o
+	$(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/main.cpp.o
 .PHONY : main.cpp.o
 
 main.i: main.cpp.i
@@ -232,7 +308,9 @@ main.i: main.cpp.i
 
 # target to preprocess a source file
 main.cpp.i:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/main.cpp.i
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/main.cpp.i
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/main.cpp.i
+	$(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/main.cpp.i
 .PHONY : main.cpp.i
 
 main.s: main.cpp.s
@@ -241,35 +319,199 @@ main.s: main.cpp.s
 
 # target to generate assembly for a file
 main.cpp.s:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/main.cpp.s
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/main.cpp.s
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/main.cpp.s
+	$(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/main.cpp.s
 .PHONY : main.cpp.s
 
-shared/urlTest.o: shared/urlTest.cpp.o
+parser/Parser.o: parser/Parser.cpp.o
+
+.PHONY : parser/Parser.o
+
+# target to build an object file
+parser/Parser.cpp.o:
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/parser/Parser.cpp.o
+.PHONY : parser/Parser.cpp.o
+
+parser/Parser.i: parser/Parser.cpp.i
+
+.PHONY : parser/Parser.i
+
+# target to preprocess a source file
+parser/Parser.cpp.i:
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/parser/Parser.cpp.i
+.PHONY : parser/Parser.cpp.i
+
+parser/Parser.s: parser/Parser.cpp.s
+
+.PHONY : parser/Parser.s
+
+# target to generate assembly for a file
+parser/Parser.cpp.s:
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/parser/Parser.cpp.s
+.PHONY : parser/Parser.cpp.s
+
+parser/tests/parserTest.o: parser/tests/parserTest.cpp.o
+
+.PHONY : parser/tests/parserTest.o
+
+# target to build an object file
+parser/tests/parserTest.cpp.o:
+	$(MAKE) -f CMakeFiles/ParserEndToEndTest.dir/build.make CMakeFiles/ParserEndToEndTest.dir/parser/tests/parserTest.cpp.o
+.PHONY : parser/tests/parserTest.cpp.o
+
+parser/tests/parserTest.i: parser/tests/parserTest.cpp.i
+
+.PHONY : parser/tests/parserTest.i
+
+# target to preprocess a source file
+parser/tests/parserTest.cpp.i:
+	$(MAKE) -f CMakeFiles/ParserEndToEndTest.dir/build.make CMakeFiles/ParserEndToEndTest.dir/parser/tests/parserTest.cpp.i
+.PHONY : parser/tests/parserTest.cpp.i
+
+parser/tests/parserTest.s: parser/tests/parserTest.cpp.s
+
+.PHONY : parser/tests/parserTest.s
+
+# target to generate assembly for a file
+parser/tests/parserTest.cpp.s:
+	$(MAKE) -f CMakeFiles/ParserEndToEndTest.dir/build.make CMakeFiles/ParserEndToEndTest.dir/parser/tests/parserTest.cpp.s
+.PHONY : parser/tests/parserTest.cpp.s
+
+shared/Document.o: shared/Document.cpp.o
+
+.PHONY : shared/Document.o
+
+# target to build an object file
+shared/Document.cpp.o:
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/shared/Document.cpp.o
+.PHONY : shared/Document.cpp.o
+
+shared/Document.i: shared/Document.cpp.i
+
+.PHONY : shared/Document.i
+
+# target to preprocess a source file
+shared/Document.cpp.i:
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/shared/Document.cpp.i
+.PHONY : shared/Document.cpp.i
+
+shared/Document.s: shared/Document.cpp.s
+
+.PHONY : shared/Document.s
+
+# target to generate assembly for a file
+shared/Document.cpp.s:
+	$(MAKE) -f CMakeFiles/crawl.dir/build.make CMakeFiles/crawl.dir/shared/Document.cpp.s
+.PHONY : shared/Document.cpp.s
+
+shared/ProducerConsumerQueue.o: shared/ProducerConsumerQueue.cpp.o
 
-.PHONY : shared/urlTest.o
+.PHONY : shared/ProducerConsumerQueue.o
 
 # target to build an object file
-shared/urlTest.cpp.o:
-	$(MAKE) -f CMakeFiles/url_test.dir/build.make CMakeFiles/url_test.dir/shared/urlTest.cpp.o
-.PHONY : shared/urlTest.cpp.o
+shared/ProducerConsumerQueue.cpp.o:
+	$(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/shared/ProducerConsumerQueue.cpp.o
+.PHONY : shared/ProducerConsumerQueue.cpp.o
 
-shared/urlTest.i: shared/urlTest.cpp.i
+shared/ProducerConsumerQueue.i: shared/ProducerConsumerQueue.cpp.i
 
-.PHONY : shared/urlTest.i
+.PHONY : shared/ProducerConsumerQueue.i
 
 # target to preprocess a source file
-shared/urlTest.cpp.i:
-	$(MAKE) -f CMakeFiles/url_test.dir/build.make CMakeFiles/url_test.dir/shared/urlTest.cpp.i
-.PHONY : shared/urlTest.cpp.i
+shared/ProducerConsumerQueue.cpp.i:
+	$(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/shared/ProducerConsumerQueue.cpp.i
+.PHONY : shared/ProducerConsumerQueue.cpp.i
 
-shared/urlTest.s: shared/urlTest.cpp.s
+shared/ProducerConsumerQueue.s: shared/ProducerConsumerQueue.cpp.s
 
-.PHONY : shared/urlTest.s
+.PHONY : shared/ProducerConsumerQueue.s
 
 # target to generate assembly for a file
-shared/urlTest.cpp.s:
-	$(MAKE) -f CMakeFiles/url_test.dir/build.make CMakeFiles/url_test.dir/shared/urlTest.cpp.s
-.PHONY : shared/urlTest.cpp.s
+shared/ProducerConsumerQueue.cpp.s:
+	$(MAKE) -f CMakeFiles/search.dir/build.make CMakeFiles/search.dir/shared/ProducerConsumerQueue.cpp.s
+.PHONY : shared/ProducerConsumerQueue.cpp.s
+
+util/tests/stemmerTest.o: util/tests/stemmerTest.cpp.o
+
+.PHONY : util/tests/stemmerTest.o
+
+# target to build an object file
+util/tests/stemmerTest.cpp.o:
+	$(MAKE) -f CMakeFiles/StemmerTest.dir/build.make CMakeFiles/StemmerTest.dir/util/tests/stemmerTest.cpp.o
+.PHONY : util/tests/stemmerTest.cpp.o
+
+util/tests/stemmerTest.i: util/tests/stemmerTest.cpp.i
+
+.PHONY : util/tests/stemmerTest.i
+
+# target to preprocess a source file
+util/tests/stemmerTest.cpp.i:
+	$(MAKE) -f CMakeFiles/StemmerTest.dir/build.make CMakeFiles/StemmerTest.dir/util/tests/stemmerTest.cpp.i
+.PHONY : util/tests/stemmerTest.cpp.i
+
+util/tests/stemmerTest.s: util/tests/stemmerTest.cpp.s
+
+.PHONY : util/tests/stemmerTest.s
+
+# target to generate assembly for a file
+util/tests/stemmerTest.cpp.s:
+	$(MAKE) -f CMakeFiles/StemmerTest.dir/build.make CMakeFiles/StemmerTest.dir/util/tests/stemmerTest.cpp.s
+.PHONY : util/tests/stemmerTest.cpp.s
+
+util/tests/stringProcessingTest.o: util/tests/stringProcessingTest.cpp.o
+
+.PHONY : util/tests/stringProcessingTest.o
+
+# target to build an object file
+util/tests/stringProcessingTest.cpp.o:
+	$(MAKE) -f CMakeFiles/StringProcessingTest.dir/build.make CMakeFiles/StringProcessingTest.dir/util/tests/stringProcessingTest.cpp.o
+.PHONY : util/tests/stringProcessingTest.cpp.o
+
+util/tests/stringProcessingTest.i: util/tests/stringProcessingTest.cpp.i
+
+.PHONY : util/tests/stringProcessingTest.i
+
+# target to preprocess a source file
+util/tests/stringProcessingTest.cpp.i:
+	$(MAKE) -f CMakeFiles/StringProcessingTest.dir/build.make CMakeFiles/StringProcessingTest.dir/util/tests/stringProcessingTest.cpp.i
+.PHONY : util/tests/stringProcessingTest.cpp.i
+
+util/tests/stringProcessingTest.s: util/tests/stringProcessingTest.cpp.s
+
+.PHONY : util/tests/stringProcessingTest.s
+
+# target to generate assembly for a file
+util/tests/stringProcessingTest.cpp.s:
+	$(MAKE) -f CMakeFiles/StringProcessingTest.dir/build.make CMakeFiles/StringProcessingTest.dir/util/tests/stringProcessingTest.cpp.s
+.PHONY : util/tests/stringProcessingTest.cpp.s
+
+util/tests/tokenizerTest.o: util/tests/tokenizerTest.cpp.o
+
+.PHONY : util/tests/tokenizerTest.o
+
+# target to build an object file
+util/tests/tokenizerTest.cpp.o:
+	$(MAKE) -f CMakeFiles/TokenizerTest.dir/build.make CMakeFiles/TokenizerTest.dir/util/tests/tokenizerTest.cpp.o
+.PHONY : util/tests/tokenizerTest.cpp.o
+
+util/tests/tokenizerTest.i: util/tests/tokenizerTest.cpp.i
+
+.PHONY : util/tests/tokenizerTest.i
+
+# target to preprocess a source file
+util/tests/tokenizerTest.cpp.i:
+	$(MAKE) -f CMakeFiles/TokenizerTest.dir/build.make CMakeFiles/TokenizerTest.dir/util/tests/tokenizerTest.cpp.i
+.PHONY : util/tests/tokenizerTest.cpp.i
+
+util/tests/tokenizerTest.s: util/tests/tokenizerTest.cpp.s
+
+.PHONY : util/tests/tokenizerTest.s
+
+# target to generate assembly for a file
+util/tests/tokenizerTest.cpp.s:
+	$(MAKE) -f CMakeFiles/TokenizerTest.dir/build.make CMakeFiles/TokenizerTest.dir/util/tests/tokenizerTest.cpp.s
+.PHONY : util/tests/tokenizerTest.cpp.s
 
 util/util.o: util/util.cpp.o
 
@@ -277,7 +519,7 @@ util/util.o: util/util.cpp.o
 
 # target to build an object file
 util/util.cpp.o:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/util/util.cpp.o
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/util/util.cpp.o
 .PHONY : util/util.cpp.o
 
 util/util.i: util/util.cpp.i
@@ -286,7 +528,7 @@ util/util.i: util/util.cpp.i
 
 # target to preprocess a source file
 util/util.cpp.i:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/util/util.cpp.i
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/util/util.cpp.i
 .PHONY : util/util.cpp.i
 
 util/util.s: util/util.cpp.s
@@ -295,7 +537,7 @@ util/util.s: util/util.cpp.s
 
 # target to generate assembly for a file
 util/util.cpp.s:
-	$(MAKE) -f CMakeFiles/main.dir/build.make CMakeFiles/main.dir/util/util.cpp.s
+	$(MAKE) -f CMakeFiles/test1.dir/build.make CMakeFiles/test1.dir/util/util.cpp.s
 .PHONY : util/util.cpp.s
 
 # Help Target
@@ -304,10 +546,15 @@ help:
 	@echo "... all (the default if no target is provided)"
 	@echo "... clean"
 	@echo "... depend"
-	@echo "... rebuild_cache"
 	@echo "... edit_cache"
-	@echo "... url_test"
-	@echo "... main"
+	@echo "... ParserEndToEndTest"
+	@echo "... rebuild_cache"
+	@echo "... StemmerTest"
+	@echo "... StringProcessingTest"
+	@echo "... TokenizerTest"
+	@echo "... test1"
+	@echo "... crawl"
+	@echo "... search"
 	@echo "... crawler/SocketReader.o"
 	@echo "... crawler/SocketReader.i"
 	@echo "... crawler/SocketReader.s"
@@ -320,9 +567,27 @@ help:
 	@echo "... main.o"
 	@echo "... main.i"
 	@echo "... main.s"
-	@echo "... shared/urlTest.o"
-	@echo "... shared/urlTest.i"
-	@echo "... shared/urlTest.s"
+	@echo "... parser/Parser.o"
+	@echo "... parser/Parser.i"
+	@echo "... parser/Parser.s"
+	@echo "... parser/tests/parserTest.o"
+	@echo "... parser/tests/parserTest.i"
+	@echo "... parser/tests/parserTest.s"
+	@echo "... shared/Document.o"
+	@echo "... shared/Document.i"
+	@echo "... shared/Document.s"
+	@echo "... shared/ProducerConsumerQueue.o"
+	@echo "... shared/ProducerConsumerQueue.i"
+	@echo "... shared/ProducerConsumerQueue.s"
+	@echo "... util/tests/stemmerTest.o"
+	@echo "... util/tests/stemmerTest.i"
+	@echo "... util/tests/stemmerTest.s"
+	@echo "... util/tests/stringProcessingTest.o"
+	@echo "... util/tests/stringProcessingTest.i"
+	@echo "... util/tests/stringProcessingTest.s"
+	@echo "... util/tests/tokenizerTest.o"
+	@echo "... util/tests/tokenizerTest.i"
+	@echo "... util/tests/tokenizerTest.s"
 	@echo "... util/util.o"
 	@echo "... util/util.i"
 	@echo "... util/util.s"
diff --git a/parser/Parser.cpp b/parser/Parser.cpp
new file mode 100644
index 0000000..e412e36
--- /dev/null
+++ b/parser/Parser.cpp
@@ -0,0 +1,106 @@
+//
+// Created by Jake Close on 3/5/18.
+//
+
+
+
+#include "Parser.h"
+
+
+/**
+ * Parses file
+ * @param inFile
+ * @return
+ */
+//TODO instead of grabbing each line, look to see if beginning of
+// TODO title/url/anchortext, etc. Then continue until close tag and add to tokenizer after end of tag found
+void Parser::parse ( string html, Tokenizer *tokenizer )
+	{
+	auto htmlIt = html.begin();
+	int offset = 0;
+	while (htmlIt != html.end())
+		{
+		// if open bracket
+		if ( *htmlIt == '<' )
+			{
+			auto begCloseTag = findNext ("</", htmlIt);
+			auto endCloseTag = findNext ( ">", begCloseTag);
+			string line (htmlIt, endCloseTag + 1);
+			htmlIt = endCloseTag + 2;
+
+			// check if line is url
+			string url = extract_url ( line );
+			if (url != "")
+				{
+				urlFrontier->Push ( url );
+				}
+				// check if line is title
+			else
+				{
+				string title = extract_title ( line );
+				if (title != "")
+					{
+					tokenizer->execute ( title, offset );
+					}
+				}
+			//TODO fix offset?
+			offset = htmlIt - html.begin();
+			}
+		else
+			{
+			++htmlIt;
+			}
+		}
+
+
+	}
+
+/**
+ * Returns a url, or "" if none
+ * @param word
+ * @return
+ */
+string Parser::extract_url ( string word )
+	{
+	string url = "";
+	if ( *findStr ( "<a", word ) != '\0' )
+		{
+		auto foundHref = findStr ( "href", word );
+		auto foundHttp = findNext ( "http", foundHref );
+		if ( *foundHttp != '\0' )
+			{
+			url = "";
+			auto closeTag = findNext ( ">", word.begin ( ) );
+			while ( *foundHttp != *closeTag )
+				{
+				url += *foundHttp;
+				++foundHttp;
+				}
+			}
+		}
+
+	return url;
+	}
+
+/**
+ * Returns a title, or "" if none
+ * @param word
+ * @return
+ */
+string Parser::extract_title ( string & word )
+	{
+	string title = "";
+	char end = '<';
+	auto pos = findStr ( "<title>", word );
+	if ( *pos != '\0')
+		{
+		pos += 7;
+		while ( *pos != end )
+			{
+			title += *pos;
+			++pos;
+			}
+		}
+	return title;
+	}
+
diff --git a/parser/Parser.h b/parser/Parser.h
index 5d1c166..17e5258 100644
--- a/parser/Parser.h
+++ b/parser/Parser.h
@@ -6,7 +6,7 @@
 // tokenizer returns pointer to document dictionary, parser puts it on the indexer's queue
 //
 
-
+#pragma once
 #include <string>
 #include <functional>
 #include <queue>
@@ -17,6 +17,7 @@
 #include "../shared/Document.h"
 #include "../shared/ProducerConsumerQueue.h"
 
+
 using namespace std;
 
 /**
@@ -56,95 +57,24 @@ private:
 	 */
 	//TODO instead of grabbing each line, look to see if beginning of
 	// TODO title/url/anchortext, etc. Then continue until close tag and add to tokenizer after end of tag found
-	void parse ( string html, Tokenizer *tokenizer )
-		{
-		auto htmlIt = html.begin();
-		int offset = 0;
-		while (htmlIt != html.end())
-			{
-			// if open bracket
-			if ( *htmlIt == '<' )
-				{
-				auto begCloseTag = findNext ("</", htmlIt);
-				auto endCloseTag = findNext ( ">", begCloseTag);
-				string line (htmlIt, endCloseTag + 1);
-				htmlIt = endCloseTag + 2;
-
-				// check if line is url
-				string url = extract_url ( line );
-				if (url != "")
-					{
-					urlFrontier->Push ( url );
-					}
-				// check if line is title
-				else
-					{
-					string title = extract_title ( line );
-					if (title != "")
-						{
-						tokenizer->execute ( title, offset );
-						}
-					}
-				//TODO fix offset?
-				offset = htmlIt - html.begin();
-				}
-			else
-				{
-				++htmlIt;
-				}
-			}
+	void parse ( string html, Tokenizer *tokenizer );
 
 
-		}
-
 	/**
 	 * Returns a url, or "" if none
 	 * @param word
 	 * @return
 	 */
-	string extract_url ( string word )
-		{
-		string url = "";
-		if ( *findStr ( "<a", word ) != '\0' )
-			{
-			auto foundHref = findStr ( "href", word );
-			auto foundHttp = findNext ( "http", foundHref );
-			if ( *foundHttp != '\0' )
-				{
-				url = "";
-				auto closeTag = findNext ( ">", word.begin ( ) );
-				while ( *foundHttp != *closeTag )
-					{
-					url += *foundHttp;
-					++foundHttp;
-					}
-				}
-			}
-
-		return url;
-		}
+	string extract_url ( string word );
+
 
 	/**
 	 * Returns a title, or "" if none
 	 * @param word
 	 * @return
 	 */
-	string extract_title ( string & word )
-		{
-		string title = "";
-		char end = '<';
-		auto pos = findStr ( "<title>", word );
-		if ( *pos != '\0')
-			{
-			pos += 7;
-			while ( *pos != end )
-				{
-				title += *pos;
-				++pos;
-				}
-			}
-		return title;
-		}
+	string extract_title ( string & word );
+
 
 	};
 
diff --git a/parser/tests/parserTest.cpp b/parser/tests/parserTest.cpp
index 07d973e..75c6cc8 100644
--- a/parser/tests/parserTest.cpp
+++ b/parser/tests/parserTest.cpp
@@ -27,7 +27,10 @@ void testSimple ( )
 	{
 
 	ProducerConsumerQueue < string >  urlFrontierTest;
-	Document document ( "<title>This Cat Title Cat</title>" );
+	ParsedUrl url = ParsedUrl("testurl.com");
+	char docString[10240];
+	strcpy(docString, "<title>This Cat Title Cat</title>");
+	Document document ( url, docString);
 
 	Parser parser ( &urlFrontierTest );
 	auto dictionary = parser.execute ( &document );
@@ -49,13 +52,15 @@ void testComplex ( )
 	ProducerConsumerQueue < string >  urlFrontierTest;
 	ifstream file("../tests/cats.html");
 	string temp;
-	string docString = "<title>Joe the Cat</title>\n";
-	docString += "<a href=\"https://www.w3schools.com/html/\">Visit our HTML tutorial</a>\n";
+	char docString[10240];
+	strcpy(docString, "<title>Joe the Cat</title>\n");
+
+	strcat(docString, "<a href=\"https://www.w3schools.com/html/\">Visit our HTML tutorial</a>\n");
 	while(std::getline(file, temp)) {
-		docString += temp;
+		//strcat(docString, str(temp));
 		}
-
-	Document document ( docString );
+	ParsedUrl url = ParsedUrl("https://www.w3schools.com/tests/cats.html");
+	Document document ( url, docString );
 
 	Parser parser ( &urlFrontierTest );
 	auto dictionary = parser.execute ( &document );
diff --git a/shared/Document.cpp b/shared/Document.cpp
new file mode 100644
index 0000000..204dde3
--- /dev/null
+++ b/shared/Document.cpp
@@ -0,0 +1,101 @@
+//
+// Created by Jake Close on 3/5/18.
+//
+
+
+
+#include "Document.h"
+
+string Document::DocToString ( )
+	{
+	return string ( docString, strlen ( docString ) ) + "\n";
+	}
+
+int  Document::WriteToDocMap ( )
+	{
+
+	pthread_mutex_lock ( &docMap_mutex );
+
+	//for now just write url
+
+	string loc = util::GetCurrentWorkingDir ( ) + filepath::DOC_MAP;
+	int file = util::getFileDescriptor ( loc.c_str ( ), "W" );
+	off_t resultPosition = 0;
+
+	try
+		{
+		//check if its available
+		if ( file == -1 )
+			{
+			throw ( "error opening docMap" );
+			}
+		else
+			{
+			//get the current size of the docMap
+			size_t seekPosition = util::FileSize ( file );
+			//seek to the end of the file
+			resultPosition = lseek ( file, seekPosition, SEEK_SET );
+
+			if ( resultPosition == -1 )
+				{
+				throw ( "Could not seek" );
+				}
+			cout << "Current docMap position on disk" << endl;
+			cout << resultPosition << endl;
+
+			size_t success = write ( file, this->DocToString ( ).c_str ( ),
+											 strlen ( this->DocToString ( ).c_str ( ) ) );
+			if ( success == -1 )
+				{
+				throw ( "Error writing document object to document map" );
+				}
+			}
+		}
+	catch ( const char *str )
+		{
+		cerr << str << endl;
+		close ( file );
+		pthread_mutex_unlock ( &docMap_mutex );
+		return -1;
+		}
+	close ( file );
+	pthread_mutex_unlock ( &docMap_mutex );
+	return resultPosition;
+	}
+
+
+void  Document::PrintDocMap ( string url, int location )
+	{
+	pthread_mutex_lock ( &docMap_mutex );
+
+	std::cout << url << " is " << location;
+
+	string loc = util::GetCurrentWorkingDir ( ) + filepath::DOC_MAP;
+	int file = util::getFileDescriptor ( loc.c_str ( ), "R" );
+
+
+	//check if its available
+	if ( file )
+		{
+		off_t resultPosition = lseek ( file, ( size_t ) location, SEEK_SET );
+		int bytes = 14;
+		if ( bytes > 0 )
+			{
+			char *buffer = new char[bytes];
+			ssize_t bytesRead;
+			if ( bytesRead = read ( file, buffer, bytes ) )
+				write ( 1, buffer, bytesRead );
+			else
+				{
+				cerr << "Could not read " << bytes << " bytes at position " <<
+					  resultPosition << ", error = " << errno;
+				pthread_mutex_unlock ( &docMap_mutex );
+				return;
+				}
+			}
+
+		}
+	pthread_mutex_unlock ( &docMap_mutex );
+	return;
+
+};
\ No newline at end of file
diff --git a/shared/Document.h b/shared/Document.h
index 5aca64d..acc5b6a 100644
--- a/shared/Document.h
+++ b/shared/Document.h
@@ -8,6 +8,7 @@
 #include <string>
 #include <vector>
 #include <pthread.h>
+#include "../util/util.h"
 
 using namespace std;
 
@@ -23,107 +24,26 @@ class Document
 	{
 private:
 	ParsedUrl url;
+	char *docString;
 	long docID;
 	bool lastCrawlStatus;
 	int lastCrawlDate;
-	int lastCrawlPageCount;
+	int lastCrawlWordCount;
 
 	//add more info fields here
 
 public:
-	Document ( string url_in ) : url ( ParsedUrl ( url_in ) )
-		{ }
-
-	string DocToString ( )
-		{
-		return string ( url.CompleteUrl, strlen ( url.CompleteUrl ) ) + "\n";
-		}
-
-	int WriteToDocMap ( )
-		{
-
-		pthread_mutex_lock ( &docMap_mutex );
-
-		//for now just write url
-
-		string loc = util::GetCurrentWorkingDir ( ) + filepath::DOC_MAP;
-		int file = util::getFileDescriptor ( loc.c_str ( ), "W" );
-		off_t resultPosition = 0;
 
-		try
-			{
-			//check if its available
-			if ( file == -1 )
-				{
-				throw ( "error opening docMap" );
-				}
-			else
-				{
-				//get the current size of the docMap
-				size_t seekPosition = util::FileSize ( file );
-				//seek to the end of the file
-				resultPosition = lseek ( file, seekPosition, SEEK_SET );
-
-				if ( resultPosition == -1 )
-					{
-					throw ( "Could not seek" );
-					}
-				cout << "Current docMap position on disk" << endl;
-				cout << resultPosition << endl;
-
-				size_t success = write ( file, this->DocToString ( ).c_str ( ),
-				                         strlen ( this->DocToString ( ).c_str ( ) ) );
-				if ( success == -1 )
-					{
-					throw ( "Error writing document object to document map" );
-					}
-				}
-			}
-		catch ( const char *str )
-			{
-			cerr << str << endl;
-			close ( file );
-			pthread_mutex_unlock ( &docMap_mutex );
-			return -1;
-			}
-		close ( file );
-		pthread_mutex_unlock ( &docMap_mutex );
-		return resultPosition;
-		}
-
-
-	static void PrintDocMap ( string url, int location )
-		{
-		pthread_mutex_lock ( &docMap_mutex );
+	Document( ParsedUrl url_in ) : url((url_in)), docString( nullptr )
+		{ }
 
-		std::cout << url << " is " << location;
+	Document( ParsedUrl url_in, char *docStringIn ) : url((url_in)), docString( docStringIn )
+		{ }
 
-		string loc = util::GetCurrentWorkingDir ( ) + filepath::DOC_MAP;
-		int file = util::getFileDescriptor ( loc.c_str ( ), "R" );
+	string DocToString();
 
+	int WriteToDocMap();
 
-		//check if its available
-		if ( file )
-			{
-			off_t resultPosition = lseek ( file, ( size_t ) location, SEEK_SET );
-			int bytes = 14;
-			if ( bytes > 0 )
-				{
-				char *buffer = new char[bytes];
-				ssize_t bytesRead;
-				if ( bytesRead = read ( file, buffer, bytes ) )
-					write ( 1, buffer, bytesRead );
-				else
-					{
-					cerr << "Could not read " << bytes << " bytes at position " <<
-					     resultPosition << ", error = " << errno;
-					pthread_mutex_unlock ( &docMap_mutex );
-					return;
-					}
-				}
 
-			}
-		pthread_mutex_unlock ( &docMap_mutex );
-		return;
-		}
+	static void PrintDocMap( string url, int location );
 	};
\ No newline at end of file
diff --git a/util/Stemmer.h b/util/Stemmer.h
index 84e1990..4acbf35 100644
--- a/util/Stemmer.h
+++ b/util/Stemmer.h
@@ -2,9 +2,8 @@
 // Created by Veronica Day on 2/22/18.
 //
 
-#ifndef EECS398_SEARCH_STEMMER_H
-#define EECS398_SEARCH_STEMMER_H
 
+#pragma once
 
 class Stemmer
 	{
@@ -12,4 +11,3 @@ class Stemmer
 	};
 
 
-#endif //EECS398_SEARCH_STEMMER_H
diff --git a/util/Tokenizer.h b/util/Tokenizer.h
index 3de99f5..ba27e43 100644
--- a/util/Tokenizer.h
+++ b/util/Tokenizer.h
@@ -1,7 +1,7 @@
 //
 // Created by anvia on 1/31/2018.
 //
-
+#pragma once
 #include <string>
 #include <unordered_map>
 #include <vector>
diff --git a/util/stringProcessing.h b/util/stringProcessing.h
index 40056e0..03c18a6 100644
--- a/util/stringProcessing.h
+++ b/util/stringProcessing.h
@@ -2,9 +2,7 @@
 // Created by anvia on 1/31/2018.
 //
 
-#ifndef EECS398_SEARCH_STRINGPROCESSING_H
-#define EECS398_SEARCH_STRINGPROCESSING_H
-
+#pragma  once
 #include <string>
 #include <unordered_map>
 #include <vector>
@@ -201,4 +199,3 @@ string stemWord(string word)
 	return "";
 	}
 
-#endif //EECS398_SEARCH_STRINGPROCESSING_H
-- 
GitLab