-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparser_cache.go
61 lines (53 loc) · 1.18 KB
/
parser_cache.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
import (
"time"
)
type pageEntityCacheData struct {
modTime time.Time
page page
}
type postEntityCacheData struct {
modTime time.Time
post post
}
var pageCacheData = make(map[string]pageEntityCacheData)
var postCacheData = make(map[string]postEntityCacheData)
func addContentEntityToCache(fileName string, modTime time.Time, ce contentEntity) {
switch ce.ContentEntityType() {
case Page:
pageCacheData[fileName] = pageEntityCacheData{
modTime: modTime,
page: ce.(page),
}
case Post:
postCacheData[fileName] = postEntityCacheData{
modTime: modTime,
post: ce.(post),
}
}
}
func getContentEntityFromCache(ceType contentEntityType, fileName string, modTime time.Time) contentEntity {
switch ceType {
case Page:
if data, ok := pageCacheData[fileName]; ok {
if data.modTime == modTime {
return data.page
}
}
case Post:
if data, ok := postCacheData[fileName]; ok {
if data.modTime == modTime {
return data.post
}
}
}
return nil
}
func removeContentEntityFromCache(ceType contentEntityType, fileName string) {
switch ceType {
case Page:
delete(pageCacheData, fileName)
case Post:
delete(postCacheData, fileName)
}
}