// Path: src/com/hdweiss/codemap/util/SyntaxHighlighter.java
// public class SyntaxHighlighter {
// 	
// 	private final String[] C_KEYWORDS =  {
// 			"auto",
// 			"break",
// 			"case",
// 			"char",
// 			"const",
// 			"continue",
// 			"default",
// 			"do",
// 			"double",
// 			"else",
// 			"enum",
// 			"extern",
// 			"float",
// 			"for",
// 			"goto",
// 			"if",
// 			"int",
// 			"long",
// 			"register",
// 			"return",
// 			"short",
// 			"unsigned",
// 			"signed",
// 			"sizeof",
// 			"static",
// 			"struct",
// 			"switch",
// 			"typedef",
// 			"union",
// 			"void",
// 			"volatile",
// 			"while" };
// 					
// 	private String content;
// 	
// 	public SyntaxHighlighter(String contents) {
// 		this.content = contents;
// 	}
// 	
// 	public SpannableString formatToHtml() {
// 		formatNewline();
// 		highlightKeywords();
// 		highlightComments();
// 		
// 		SpannableString spannableString = new SpannableString(
// 				Html.fromHtml(content));
// 		return spannableString;
// 	}
// 	
// 	private void formatNewline() {
// 		content = content.replaceAll("\n\r", "<br />");
// 		content = content.replaceAll("\n", "<br />");
// 		content = content.replaceAll("\r", "<br />");
// 	}
// 	
// 	private void highlightKeywords() {
// 		for(String keyword: C_KEYWORDS) {
// 			content = content.replaceAll(keyword, "<font color=\"purple\">" + keyword + "</font>");
// 		}
// 	}
// 	
// 	private void highlightComments() {
// 		content = content.replaceAll("/\\*.*?\\*/", "<font color=\"green\">$0</font>");
// 		content = content.replaceAll("//[^\n]*?\n", "<font color=\"green\">$0</font>");
// 	}
// 	
// 	public void markupReferences(ArrayList<CscopeEntry> references) {
// 		StringBuilder result = new StringBuilder(content);
// 		for(CscopeEntry entry: references) {
// 			Matcher matcher = Pattern.compile("(" + Pattern.quote(entry.actualName) + ")(?:\\s?\\()").matcher(result);
// 			
// 			if(matcher.find()) {
// 				result.insert(matcher.end(1), "</a>");
// 				result.insert(matcher.start(1), "<a href=\"" + entry.actualName + "\">");
// 			}
// 		}
// 		content = result.toString();
// 	}
// }


import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import android.content.Context;
import android.text.SpannableString;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import com.hdweiss.codemap.util.SyntaxHighlighter;
		final String fileName = getFileFromUrl(url);
		final String functionName = getFunctionFromUrl(url);

		ArrayList<CscopeEntry> allEntries = cscopeWrapper.getAllEntries(
				functionName, fileName);
		
		return allEntries;
	}
	
	
	/**
	 * Call in case of full url.
	 */
	// TODO Refactor, only createCodeMapItem() calls this
	public SpannableString getFunctionSource(String url) {
		final String fileName = getFileFromUrl(url);
		final String functionName = getFunctionFromUrl(url);

		try {
			ArrayList<CscopeEntry> allEntries = cscopeWrapper.getAllEntries(
					functionName, fileName);
			return getFunctionSource(allEntries.get(0));
		} catch (IllegalArgumentException e) {
			Log.e("CodeMap", e.getLocalizedMessage());
			return new SpannableString("");
		}
	}
	
	public SpannableString getFunctionSource(CscopeEntry entry) {
		String content = cscopeWrapper.getFunction(entry).trim();
// Path: src/com/hdweiss/codemap/util/SyntaxHighlighter.java
// public class SyntaxHighlighter {
// 	
// 	private final String[] C_KEYWORDS =  {
// 			"auto",
// 			"break",
// 			"case",
// 			"char",
// 			"const",
// 			"continue",
// 			"default",
// 			"do",
// 			"double",
// 			"else",
// 			"enum",
// 			"extern",
// 			"float",
// 			"for",
// 			"goto",
// 			"if",
// 			"int",
// 			"long",
// 			"register",
// 			"return",
// 			"short",
// 			"unsigned",
// 			"signed",
// 			"sizeof",
// 			"static",
// 			"struct",
// 			"switch",
// 			"typedef",
// 			"union",
// 			"void",
// 			"volatile",
// 			"while" };
// 					
// 	private String content;
// 	
// 	public SyntaxHighlighter(String contents) {
// 		this.content = contents;
// 	}
// 	
// 	public SpannableString formatToHtml() {
// 		formatNewline();
// 		highlightKeywords();
// 		highlightComments();
// 		
// 		SpannableString spannableString = new SpannableString(
// 				Html.fromHtml(content));
// 		return spannableString;
// 	}
// 	
// 	private void formatNewline() {
// 		content = content.replaceAll("\n\r", "<br />");
// 		content = content.replaceAll("\n", "<br />");
// 		content = content.replaceAll("\r", "<br />");
// 	}
// 	
// 	private void highlightKeywords() {
// 		for(String keyword: C_KEYWORDS) {
// 			content = content.replaceAll(keyword, "<font color=\"purple\">" + keyword + "</font>");
// 		}
// 	}
// 	
// 	private void highlightComments() {
// 		content = content.replaceAll("/\\*.*?\\*/", "<font color=\"green\">$0</font>");
// 		content = content.replaceAll("//[^\n]*?\n", "<font color=\"green\">$0</font>");
// 	}
// 	
// 	public void markupReferences(ArrayList<CscopeEntry> references) {
// 		StringBuilder result = new StringBuilder(content);
// 		for(CscopeEntry entry: references) {
// 			Matcher matcher = Pattern.compile("(" + Pattern.quote(entry.actualName) + ")(?:\\s?\\()").matcher(result);
// 			
// 			if(matcher.find()) {
// 				result.insert(matcher.end(1), "</a>");
// 				result.insert(matcher.start(1), "<a href=\"" + entry.actualName + "\">");
// 			}
// 		}
// 		content = result.toString();
// 	}
// }


// Path: src/com/hdweiss/codemap/data/ProjectController.java
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import android.content.Context;
import android.text.SpannableString;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
import com.hdweiss.codemap.util.SyntaxHighlighter;

		final String fileName = getFileFromUrl(url);
		final String functionName = getFunctionFromUrl(url);

		ArrayList<CscopeEntry> allEntries = cscopeWrapper.getAllEntries(
				functionName, fileName);
		
		return allEntries;
	}
	
	
	/**
	 * Call in case of full url.
	 */
	// TODO Refactor, only createCodeMapItem() calls this
	public SpannableString getFunctionSource(String url) {
		final String fileName = getFileFromUrl(url);
		final String functionName = getFunctionFromUrl(url);

		try {
			ArrayList<CscopeEntry> allEntries = cscopeWrapper.getAllEntries(
					functionName, fileName);
			return getFunctionSource(allEntries.get(0));
		} catch (IllegalArgumentException e) {
			Log.e("CodeMap", e.getLocalizedMessage());
			return new SpannableString("");
		}
	}
	
	public SpannableString getFunctionSource(CscopeEntry entry) {
		String content = cscopeWrapper.getFunction(entry).trim();
		SyntaxHighlighter highlighter = new SyntaxHighlighter(content);