@@ -2,28 +2,80 @@ class Page
2
2
module Sitepressed
3
3
extend ActiveSupport ::Concern
4
4
5
- NullResource = Data . define ( :request_path ) do
6
- def data = NullData . new ( title : nil , description : nil )
5
+ Resource = Data . define (
6
+ :request_path ,
7
+ :body ,
8
+ :title ,
9
+ :description ,
10
+ :image ,
11
+ :meta_image ,
12
+ :toc ,
13
+ :enable_twitter_widgets ,
14
+ :uuid ,
15
+ :author ,
16
+ :published_on ,
17
+ :updated_on
18
+ ) do
19
+ def published_at = published_on &.to_time &.middle_of_day
20
+
21
+ def revised_at = updated_on &.to_time &.middle_of_day
22
+
23
+ def self . from ( sitepress_resource )
24
+ Resource . new \
25
+ request_path : sitepress_resource . request_path ,
26
+ body : sitepress_resource . body ,
27
+ title : sitepress_resource . data . title ,
28
+ description : sitepress_resource . data . description ,
29
+ image : sitepress_resource . data . image ,
30
+ meta_image : sitepress_resource . data . meta_image ,
31
+ toc : sitepress_resource . data . toc ,
32
+ enable_twitter_widgets : sitepress_resource . data . enable_twitter_widgets ,
33
+ uuid : sitepress_resource . data . uuid ,
34
+ author : sitepress_resource . data . author ,
35
+ published_on : sitepress_resource . data . published &.to_date ,
36
+ updated_on : sitepress_resource . data . updated &.to_date
37
+ end
38
+ end
39
+
40
+ NullSitepressResource = Data . define ( :request_path ) do
41
+ def data = NullSitpressData . new
42
+
43
+ def handler = "html"
7
44
8
45
def body = ""
9
46
end
10
47
11
- NullData = Data . define ( :title , :description ) do
48
+ class NullSitpressData
49
+ def title = nil
50
+
51
+ def description = nil
52
+
53
+ def toc = nil
54
+
55
+ def enable_twitter_widgets = nil
56
+
12
57
def uuid = nil
13
58
59
+ def author = nil
60
+
61
+ def published = nil
62
+
63
+ def updated = nil
64
+
14
65
def image = "articles/placeholder.jpg"
15
66
16
- def author = nil
67
+ def meta_image = image
17
68
end
18
69
19
- def sitepress_resource = Sitepress . site . get ( request_path ) ||
20
- NullResource . new ( request_path : request_path )
70
+ def resource = Resource . from ( sitepress_resource )
21
71
22
- def upsert_page_from_sitepress!
23
- self . class . upsert_page_from_sitepress! ( sitepress_resource )
24
- end
72
+ def sitepress_resource = @sitepress_resource ||= Sitepress . site . get ( request_path ) || NullSitepressResource . new ( request_path : request_path )
25
73
26
- def resource_missing? = sitepress_resource . is_a? ( NullResource )
74
+ def upsert_page_from_sitepress! = upsert_page_from_resource!
75
+
76
+ def upsert_page_from_resource! = self . class . upsert_page_from_resource! ( resource )
77
+
78
+ def resource_missing? = sitepress_resource . is_a? ( NullSitepressResource )
27
79
28
80
def handler = sitepress_resource . handler
29
81
@@ -35,16 +87,16 @@ def handler = sitepress_resource.handler
35
87
# the split personality for now.
36
88
#
37
89
def upsert_collection_from_sitepress! ( limit : nil )
38
- enum = SitepressPage . all . resources . lazy
90
+ enum = SitepressPage . all . resources . lazy . map { | s | Resource . from ( s ) }
39
91
40
92
if limit
41
- enum = enum . filter do |sitepress_resource |
42
- find_by ( request_path : sitepress_resource . request_path ) . nil?
93
+ enum = enum . filter do |resource |
94
+ find_by ( request_path : resource . request_path ) . nil?
43
95
end
44
96
end
45
97
46
- enum = enum . map do |sitepress_resource |
47
- upsert_page_from_sitepress! ( sitepress_resource )
98
+ enum = enum . map do |resource |
99
+ upsert_page_from_resource! ( resource )
48
100
end
49
101
50
102
if limit
@@ -54,14 +106,14 @@ def upsert_collection_from_sitepress!(limit: nil)
54
106
enum . to_a
55
107
end
56
108
57
- def upsert_page_by_request_path! ( request_path )
58
- upsert_page_from_sitepress! ( Sitepress . site . get ( request_path ) )
59
- end
109
+ def upsert_page_by_request_path! ( request_path ) = upsert_page_from_sitepress! ( Sitepress . site . get ( request_path ) )
110
+
111
+ def upsert_page_from_sitepress! ( sitepress_resource ) = upsert_page_from_resource! Resource . from ( sitepress_resource )
60
112
61
- def upsert_page_from_sitepress! ( sitepress_resource )
62
- page = find_or_initialize_by ( request_path : sitepress_resource . request_path )
63
- page . published_at = sitepress_resource . data . published . to_time . middle_of_day if sitepress_resource . data . published
64
- page . updated_at = sitepress_resource . data . updated . to_time . middle_of_day if sitepress_resource . data . updated
113
+ def upsert_page_from_resource! ( resource )
114
+ page = find_or_initialize_by ( request_path : resource . request_path )
115
+ page . published_at = resource . published_at if resource . published_at
116
+ page . updated_at = resource . revised_at if resource . revised_at # Should use a `Page#revised_at` column instead
65
117
page . save!
66
118
page
67
119
end
0 commit comments