public SplitResult split(String inputText) {
		if (inputText == null) {
			return new SplitResult(Priority.NONE, "", "", false, "");
		}

		Matcher completedMatcher = COMPLETED_PATTERN.matcher(inputText);
		boolean completed;
		String text;
		if (completedMatcher.find()) {
			completed = true;
			text = completedMatcher.group(2);
		} else {
			completed = false;
			text = inputText;
		}

		Priority priority = Priority.NONE;
		if (!completed) {
			PriorityTextSplitter.PrioritySplitResult prioritySplitResult = PriorityTextSplitter
					.getInstance().split(text);
			priority = prioritySplitResult.priority;
			text = prioritySplitResult.text;
		}

		String completedDate = "";
		String prependedDate = "";
		if (completed) {
			Matcher completedAndPrependedDatesMatcher = COMPLETED_PREPENDED_DATES_PATTERN
					.matcher(text);
			if (completedAndPrependedDatesMatcher.find()) {
				completedDate = completedAndPrependedDatesMatcher.group(1);
				prependedDate = completedAndPrependedDatesMatcher.group(2);
				text = completedAndPrependedDatesMatcher.group(3);
			} else {
				Matcher completionDateMatcher = SINGLE_DATE_PATTERN
						.matcher(text);
				if (completionDateMatcher.find()) {
					completedDate = completionDateMatcher.group(1);
					text = completionDateMatcher.group(2);
				}
			}
		} else {
			Matcher prependedDateMatcher = SINGLE_DATE_PATTERN.matcher(text);
			if (prependedDateMatcher.find()) {
				text = prependedDateMatcher.group(2);
				prependedDate = prependedDateMatcher.group(1);
			}
		}

		return new SplitResult(priority, text, prependedDate, completed,
				completedDate);
	}