• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

wanasit / chrono / 16856703022

10 Aug 2025 03:20AM UTC coverage: 90.768% (-0.04%) from 90.807%
16856703022

Pull #616

github

google-labs-jules[bot]
feat: Increase test coverage for sv locale
Pull Request #616: feat: Increase test coverage for sv locale

1674 of 2123 branches covered (78.85%)

4955 of 5459 relevant lines covered (90.77%)

386.95 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

53.23
/src/locales/sv/parsers/SVCasualDateParser.ts
1
import { ParsingContext } from "../../../chrono";
2
import { ParsingComponents, ParsingResult } from "../../../results";
3
import dayjs from "dayjs";
3✔
4
import { AbstractParserWithWordBoundaryChecking } from "../../../common/parsers/AbstractParserWithWordBoundary";
3✔
5
import { assignSimilarDate, assignTheNextDay, implySimilarTime } from "../../../utils/dayjs";
3✔
6
import * as references from "../../../common/casualReferences";
3✔
7

8
const PATTERN = new RegExp(
3✔
9
    `(nu|idag|imorgon|övermorgon|igår|förrgår|i\\s*förrgår)` +
10
        `(?:\\s*(?:på\\s*)?(morgonen?|förmiddagen?|middagen?|eftermiddagen?|kvällen?|natten?|midnatt))?` +
11
        `(?=\\W|$)`,
12
    "i"
13
);
14

15
const DATE_GROUP = 1;
3✔
16
const TIME_GROUP = 2;
3✔
17

18
export default class SVCasualDateParser extends AbstractParserWithWordBoundaryChecking {
3✔
19
    innerPattern(context: ParsingContext): RegExp {
20
        return PATTERN;
25✔
21
    }
22

23
    innerExtract(context: ParsingContext, match: RegExpMatchArray): ParsingComponents | ParsingResult {
24
        let targetDate = dayjs(context.refDate);
5✔
25
        const dateKeyword = (match[DATE_GROUP] || "").toLowerCase();
5!
26
        const timeKeyword = (match[TIME_GROUP] || "").toLowerCase();
5✔
27

28
        let component = context.createParsingComponents();
5✔
29
        switch (dateKeyword) {
5!
30
            case "nu":
31
                component = references.now(context.reference);
×
32
                break;
×
33

34
            case "idag":
35
                component = references.today(context.reference);
2✔
36
                break;
2✔
37

38
            case "imorgon":
39
            case "imorn":
40
                assignTheNextDay(component, targetDate);
1✔
41
                break;
1✔
42

43
            case "igår":
44
                targetDate = targetDate.add(-1, "day");
1✔
45
                assignSimilarDate(component, targetDate);
1✔
46
                implySimilarTime(component, targetDate);
1✔
47
                break;
1✔
48

49
            case "förrgår":
50
            case "i förrgår":
51
                targetDate = targetDate.add(-2, "day");
1✔
52
                assignSimilarDate(component, targetDate);
1✔
53
                implySimilarTime(component, targetDate);
1✔
54
                break;
1✔
55
        }
56

57
        switch (timeKeyword) {
5!
58
            case "morgon":
59
            case "morgonen":
60
                component.imply("hour", 6);
1✔
61
                component.imply("minute", 0);
1✔
62
                component.imply("second", 0);
1✔
63
                component.imply("millisecond", 0);
1✔
64
                break;
1✔
65

66
            case "förmiddag":
67
            case "förmiddagen":
68
                component.imply("hour", 9);
×
69
                component.imply("minute", 0);
×
70
                component.imply("second", 0);
×
71
                component.imply("millisecond", 0);
×
72
                break;
×
73

74
            case "middag":
75
            case "middagen":
76
                component.imply("hour", 12);
×
77
                component.imply("minute", 0);
×
78
                component.imply("second", 0);
×
79
                component.imply("millisecond", 0);
×
80
                break;
×
81

82
            case "eftermiddag":
83
            case "eftermiddagen":
84
                component.imply("hour", 15);
×
85
                component.imply("minute", 0);
×
86
                component.imply("second", 0);
×
87
                component.imply("millisecond", 0);
×
88
                break;
×
89

90
            case "kväll":
91
            case "kvällen":
92
                component.imply("hour", 20);
×
93
                component.imply("minute", 0);
×
94
                component.imply("second", 0);
×
95
                component.imply("millisecond", 0);
×
96
                break;
×
97

98
            case "natt":
99
            case "natten":
100
            case "midnatt":
101
                if (timeKeyword === "midnatt") {
×
102
                    component.imply("hour", 0);
×
103
                } else {
104
                    component.imply("hour", 2);
×
105
                }
106
                component.imply("minute", 0);
×
107
                component.imply("second", 0);
×
108
                component.imply("millisecond", 0);
×
109
                break;
×
110
        }
111

112
        return component;
5✔
113
    }
114
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc