Skip to content

Commit

Permalink
Merge pull request #21 from zoho/hawking_dev
Browse files Browse the repository at this point in the history
Day hour start/end configuration, Parser Enhancement and Bug fixes
  • Loading branch information
ajar19 committed Jul 13, 2021
2 parents 49de65e + a5c29e2 commit 3f59aed
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 3 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<groupId>com.zoho</groupId>
<artifactId>hawking</artifactId>
<version>0.1.3</version>
<version>0.1.4</version>
<packaging>jar</packaging>
<name>Hawking</name>
<description>Hawking is a natural language date time parser that extracts date and time from text with context and parse to the required format.</description>
Expand Down
1 change: 1 addition & 0 deletions src/main/java/com/zoho/hawking/HawkingTimeParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public DatesFound parse(String inputSentence, Date referenceDate, HawkingConfigu
parserOutputs.add(date.getParserOutput());
dateGroups.add(date.getDateGroup());
}
parserOutputs = DateTimeProperties.addDefaultTime(parserOutputs, config.getDayhourStart(), config.getDayhourEnd());
datesFound.setParserOutputs(parserOutputs);
datesFound.setDateGroups(dateGroups);
LOGGER.info(datesFound.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ public void present() {
endDaysIncrement = ConfigurationConstants.getConfiguration().getWeekDayAndEnd().getWeekDayDiff();
DateTimeManipulation.setWeekStartAndEndTime(dateAndTime, startWeekIncrement, 0, 0, endDaysIncrement, 1, 2);
} else if (super.abstractLanguage.weekendWords.contains(timeSpan)) {

dateAndTime.setDateAndTime(DateTimeManipulation.addWeeks(dateAndTime.getDateAndTime(), number, 0).
dayOfWeek().setCopy(ConfigurationConstants.getConfiguration().getWeekDayAndEnd().getWeekEndStart()));
startWeekIncrement = number != 0 ? (number - 1) : 0;
Expand Down Expand Up @@ -292,7 +293,9 @@ void extractComponentsTags() {
@Override
void computeNumber() {
if (!isNumberPresent) {
if (super.abstractLanguage.weekdayWords.contains(timeSpan) ||
if(this.tenseIndicator.equals("") && this.implicitPrefix.equals("") && super.abstractLanguage.weekendWords.contains(timeSpan)){
number = 0;
} else if (super.abstractLanguage.weekdayWords.contains(timeSpan) ||
super.abstractLanguage.weekendWords.contains(timeSpan) ||
super.abstractLanguage.weekWords.contains(timeSpan)) {
number = ConfigurationConstants.getConfiguration().getRangeDefault().getWeek();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ public class HawkingConfiguration {
private int minuteSpan = 0;
private int secondSpan = 1;

private int dayhourStart = 0;
private int dayhourEnd = 24;

private int weekDayStart = DateTimeConstants.MONDAY;
private int weekDayEnd = DateTimeConstants.FRIDAY;

Expand Down Expand Up @@ -607,8 +610,37 @@ public String getTimeZone() {
* @param timeZone represent whether to set timezone to referenceDate
* IST, PST, CST
*/

public void setTimeZone(String timeZone) {
this.timeZone = timeZone;
}

/**
* @return the dayhourStart
* */

public int getDayhourStart() { return dayhourStart; }

/**
* @param dayhourStart represent start of the day hour
* range 0-23 , dayhourStart should always less than dayhourEnd
* 0 - 12 AM, 1 - 1 AM, 14 - 2 PM
*/

public void setDayhourStart(int dayhourStart) { this.dayhourStart = dayhourStart; }

/**
* @return the dayhourEnd
*/

public int getDayhourEnd() { return dayhourEnd; }

/**
* @param dayhourEnd represent end of the day hour
* range 1-24 , dayhourEnd should always greater than dayhourStart
* 17 - 5 PM, 20 - 8 PM, 22 - 10 PM
*/

public void setDayhourEnd(int dayhourEnd) { this.dayhourEnd = dayhourEnd; }

}
31 changes: 30 additions & 1 deletion src/main/java/com/zoho/hawking/utils/DateTimeProperties.java
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ private String removeTimeZone(String parsedText) {
returnText = returnText.replaceAll("Year", "year"); //No I18N
returnText = returnText.replaceAll("\\b(?i)" + "final", "last"); //No I18N
returnText = returnText.replaceAll("\\.$", " ").trim(); //No I18N
String test = returnText.replaceAll("^(and |or |to )?\\d*$",""); //No I18N
String test = returnText.replaceAll("^(and |or |to )?([1-9][0-9]{0,2}|1000)$",""); //No I18N
returnText = returnText.replaceAll("^- ", " "); //No I18N
returnText = returnText.replaceAll("post", "after"); //No I18N
returnText = returnText.replaceAll("breakfast", "8 AM"); //No I18N
Expand Down Expand Up @@ -267,4 +267,33 @@ public static DatesFound emptyDatesRemover(DatesFound dates) {
date.setParserOutputs(parserOutput);
return date;
}

public static List<ParserOutput> addDefaultTime(List<ParserOutput> parserOutputs, int dayhourStart, int dayhourEnd) {
List<ParserOutput> parserOutputsreturn = new ArrayList<>();
if(!(dayhourStart == 0 && dayhourEnd == 24)){
for (ParserOutput parserOutput : parserOutputs) {
DateTime start = parserOutput.getDateRange().getStart();
DateTime end = parserOutput.getDateRange().getEnd();
String recogizerLabel = "";
for (RecognizerOutput recognizerOutput : parserOutput.getRecognizerOutputs()) {
recogizerLabel += " " + recognizerOutput.getRecognizerLabel();
}
if (!(parserOutput.getIsExactTimePresent()) && !recogizerLabel.contains("part_of_day")) {
if (start != null && end != null) {
parserOutput.getDateRange().setStart(start.plusHours(dayhourStart));
parserOutput.getDateRange().setEnd(start.plusHours(dayhourEnd).minusSeconds(1));
} else if (start != null) {
parserOutput.getDateRange().setStart(start.plusHours(dayhourStart));
} else if (end != null) {
parserOutput.getDateRange().setEnd(end.minusHours((end.getHourOfDay()-dayhourEnd)+1));
}
}
parserOutputsreturn.add(parserOutput);
}
return parserOutputsreturn;
}
else {
return parserOutputs;
}
}
}
Binary file modified src/main/resources/parser/parser.crf.ser.gz
Binary file not shown.

0 comments on commit 3f59aed

Please sign in to comment.