mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 12:54:38 +03:00
Add parser support for 3-letter month (#500)
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
|||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/stashapp/stash/pkg/models"
|
"github.com/stashapp/stash/pkg/models"
|
||||||
|
|
||||||
@@ -98,6 +99,7 @@ func initParserFields() {
|
|||||||
ret["yyyy"] = newParserField("yyyy", `\d{4}`, true)
|
ret["yyyy"] = newParserField("yyyy", `\d{4}`, true)
|
||||||
ret["yy"] = newParserField("yy", `\d{2}`, true)
|
ret["yy"] = newParserField("yy", `\d{2}`, true)
|
||||||
ret["mm"] = newParserField("mm", `\d{2}`, true)
|
ret["mm"] = newParserField("mm", `\d{2}`, true)
|
||||||
|
ret["mmm"] = newParserField("mmm", `\w{3}`, true)
|
||||||
ret["dd"] = newParserField("dd", `\d{2}`, true)
|
ret["dd"] = newParserField("dd", `\d{2}`, true)
|
||||||
ret["yyyymmdd"] = newFullDateParserField("yyyymmdd", `\d{8}`)
|
ret["yyyymmdd"] = newFullDateParserField("yyyymmdd", `\d{8}`)
|
||||||
ret["yymmdd"] = newFullDateParserField("yymmdd", `\d{6}`)
|
ret["yymmdd"] = newFullDateParserField("yymmdd", `\d{6}`)
|
||||||
@@ -290,6 +292,20 @@ func (h *sceneHolder) setDate(field *parserField, value string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func mmmToMonth(mmm string) string {
|
||||||
|
format := "02-Jan-2006"
|
||||||
|
dateStr := "01-" + mmm + "-2000"
|
||||||
|
t, err := time.Parse(format, dateStr)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// expect month in two-digit format
|
||||||
|
format = "01-02-2006"
|
||||||
|
return t.Format(format)[0:2]
|
||||||
|
}
|
||||||
|
|
||||||
func (h *sceneHolder) setField(field parserField, value interface{}) {
|
func (h *sceneHolder) setField(field parserField, value interface{}) {
|
||||||
if field.isFullDateField {
|
if field.isFullDateField {
|
||||||
h.setDate(&field, value.(string))
|
h.setDate(&field, value.(string))
|
||||||
@@ -328,18 +344,16 @@ func (h *sceneHolder) setField(field parserField, value interface{}) {
|
|||||||
h.tags = append(h.tags, value.(string))
|
h.tags = append(h.tags, value.(string))
|
||||||
case "yyyy":
|
case "yyyy":
|
||||||
h.yyyy = value.(string)
|
h.yyyy = value.(string)
|
||||||
break
|
|
||||||
case "yy":
|
case "yy":
|
||||||
v := value.(string)
|
v := value.(string)
|
||||||
v = "20" + v
|
v = "20" + v
|
||||||
h.yyyy = v
|
h.yyyy = v
|
||||||
break
|
case "mmm":
|
||||||
|
h.mm = mmmToMonth(value.(string))
|
||||||
case "mm":
|
case "mm":
|
||||||
h.mm = value.(string)
|
h.mm = value.(string)
|
||||||
break
|
|
||||||
case "dd":
|
case "dd":
|
||||||
h.dd = value.(string)
|
h.dd = value.(string)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ export class ParserField {
|
|||||||
static YYYY = new ParserField("yyyy", "Year");
|
static YYYY = new ParserField("yyyy", "Year");
|
||||||
static YY = new ParserField("yy", "Year (20YY)");
|
static YY = new ParserField("yy", "Year (20YY)");
|
||||||
static MM = new ParserField("mm", "Two digit month");
|
static MM = new ParserField("mm", "Two digit month");
|
||||||
|
static MMM = new ParserField("mmm", "Three letter month (eg Jan)");
|
||||||
static DD = new ParserField("dd", "Two digit date");
|
static DD = new ParserField("dd", "Two digit date");
|
||||||
static YYYYMMDD = new ParserField("yyyymmdd");
|
static YYYYMMDD = new ParserField("yyyymmdd");
|
||||||
static YYMMDD = new ParserField("yymmdd");
|
static YYMMDD = new ParserField("yymmdd");
|
||||||
@@ -48,6 +49,7 @@ export class ParserField {
|
|||||||
ParserField.YYYY,
|
ParserField.YYYY,
|
||||||
ParserField.YY,
|
ParserField.YY,
|
||||||
ParserField.MM,
|
ParserField.MM,
|
||||||
|
ParserField.MMM,
|
||||||
ParserField.DD,
|
ParserField.DD,
|
||||||
ParserField.YYYYMMDD,
|
ParserField.YYYYMMDD,
|
||||||
ParserField.YYMMDD,
|
ParserField.YYMMDD,
|
||||||
|
|||||||
Reference in New Issue
Block a user