public void analyze(String source) {
		int originalSize = source.length();
		
		HtmlCompressor compressor = getCleanCompressor();
		String compResult = compressor.compress(source);
		
		printHeader();
		
		System.out.println(formatLine("Compression disabled", originalSize, originalSize, originalSize));
		int prevSize = originalSize;
		
		
		//spaces inside tags
		System.out.println(formatLine("All settings disabled", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//remove comments
		compressor.setRemoveComments(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Comments removed", originalSize, compResult.length(), prevSize));	
		prevSize = compResult.length();
		
		//remove mulispaces
		compressor.setRemoveMultiSpaces(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Multiple spaces removed", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//remove intertag spaces
		compressor.setRemoveIntertagSpaces(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("No spaces between tags", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();

		//remove min surrounding spaces
		compressor.setRemoveSurroundingSpaces(HtmlCompressor.BLOCK_TAGS_MIN);
		compResult = compressor.compress(source);
		System.out.println(formatLine("No surround spaces (min)", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();

		//remove max surrounding spaces
		compressor.setRemoveSurroundingSpaces(HtmlCompressor.BLOCK_TAGS_MAX);
		compResult = compressor.compress(source);
		System.out.println(formatLine("No surround spaces (max)", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();

		//remove all surrounding spaces
		compressor.setRemoveSurroundingSpaces(HtmlCompressor.ALL_TAGS);
		compResult = compressor.compress(source);
		System.out.println(formatLine("No surround spaces (all)", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//remove quotes
		compressor.setRemoveQuotes(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Quotes removed from tags", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//link attrib
		compressor.setRemoveLinkAttributes(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("<link> attr. removed", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//style attrib
		compressor.setRemoveStyleAttributes(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("<style> attr. removed", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//script attrib
		compressor.setRemoveScriptAttributes(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("<script> attr. removed", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//form attrib
		compressor.setRemoveFormAttributes(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("<form> attr. removed", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//input attrib
		compressor.setRemoveInputAttributes(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("<input> attr. removed", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//simple bool
		compressor.setSimpleBooleanAttributes(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Simple boolean attributes", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//simple doctype
		compressor.setSimpleDoctype(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Simple doctype", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();
		
		//js protocol
		compressor.setRemoveJavaScriptProtocol(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Remove js pseudo-protocol", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();

		//http protocol
		compressor.setRemoveHttpProtocol(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Remove http protocol", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();

		//https protocol
		compressor.setRemoveHttpsProtocol(true);
		compResult = compressor.compress(source);
		System.out.println(formatLine("Remove https protocol", originalSize, compResult.length(), prevSize));
		prevSize = compResult.length();

		
		//inline css
		try {
			compressor.setCompressCss(true);
			compResult = compressor.compress(source);
			System.out.println(formatLine("Compress inline CSS (YUI)", originalSize, compResult.length(), prevSize));
			prevSize = compResult.length();
		} catch (NoClassDefFoundError e){
			System.out.println(formatEmptyLine("Compress inline CSS (YUI)"));
		}
		
		if(jsCompressor.equals(HtmlCompressor.JS_COMPRESSOR_YUI)) {
			//inline js yui
			try {
				compressor.setCompressJavaScript(true);
				compResult = compressor.compress(source);
				System.out.println(formatLine("Compress inline JS (YUI)", originalSize, compResult.length(), prevSize));
				prevSize = compResult.length();
			} catch (NoClassDefFoundError e){
				System.out.println(formatEmptyLine("Compress inline JS (YUI)"));
			}
		} else {
			//inline js yui
			try {
				compressor.setCompressJavaScript(true);
				compressor.setJavaScriptCompressor(new ClosureJavaScriptCompressor());
				compResult = compressor.compress(source);
				System.out.println(formatLine("Compress JS (Closure)", originalSize, compResult.length(), prevSize));
				prevSize = compResult.length();
			} catch (NoClassDefFoundError e){
				System.out.println(formatEmptyLine("Compress JS (Closure)"));
			}
		}
		
		printFooter();
		
	}