@@ -66,40 +66,77 @@ def process_feed(app, doctree, fromdocname):
66
66
rss_items = []
67
67
for docname in node ['entries' ]:
68
68
entry = env .get_doctree (docname )
69
-
70
- for field in entry .traverse (nodes .field ):
71
- field_date = [f for f in field .traverse (nodes .field_name )][0 ]
72
- pars = []
73
- for b in field .traverse (nodes .field_body ):
74
- for p in b .traverse (nodes .paragraph ):
75
- pars .append (p )
76
-
77
- rss_item_description = nodes .compound ()
78
- for p in pars [1 :]:
79
- rss_item_description += p .deepcopy ()
80
-
81
- document += rss_item_description
82
- app .env .resolve_references (
83
- document ,
84
- node ['link' ],
85
- app .builder ,
86
- )
87
- document .remove (rss_item_description )
88
-
89
- if app .builder .format == 'html' :
90
- rss_item_description = "\n " .join (
91
- app .builder .render_partial (p )['body' ]
92
- for p in rss_item_description
93
- )
94
- rss_item_date = dateutil .parser .parse (field_date .astext ().strip ())
95
- rss_item_title = "%s: %s" % (field_date .astext (), pars [0 ].astext ())
96
- rss_item = RSSItem (
97
- rss_item_title ,
98
- node ['link' ],
99
- rss_item_description ,
100
- rss_item_date ,
101
- )
102
- rss_items .append (rss_item )
69
+ title = entry .next_node (nodes .section )
70
+ first_year = title .next_node (nodes .section )
71
+
72
+ for year in first_year .traverse (
73
+ nodes .section , descend = False , siblings = True
74
+ ):
75
+ first_subsection = year .next_node (nodes .section )
76
+ for subsection in first_subsection .traverse (
77
+ nodes .section , descend = False , siblings = True
78
+ ):
79
+ if app .builder .format == 'html' :
80
+ # date
81
+ date = subsection .next_node (nodes .title ).astext ().split (":" )[0 ]
82
+ rss_item_date = dateutil .parser .parse (date .strip ())
83
+
84
+ # link
85
+ rss_item_link = node ["link" ] + "#" + subsection ['ids' ][0 ]
86
+
87
+ # title
88
+ title = subsection .next_node (nodes .title )
89
+
90
+ document += title
91
+ app .env .resolve_references (
92
+ document ,
93
+ node ['link' ],
94
+ app .builder ,
95
+ )
96
+ document .remove (title )
97
+
98
+ rss_item_title = title .astext ()
99
+
100
+ # description
101
+ pars = []
102
+ for b in subsection .traverse (nodes .paragraph ):
103
+ for p in b .traverse (nodes .paragraph ):
104
+ pars .append (p )
105
+
106
+ rss_item_description = nodes .compound ()
107
+ for p in pars :
108
+ rss_item_description += p .deepcopy ()
109
+
110
+ document += rss_item_description
111
+ app .env .resolve_references (
112
+ document ,
113
+ node ['link' ],
114
+ app .builder ,
115
+ )
116
+ document .remove (rss_item_description )
117
+
118
+ rss_item_description = "\n " .join (
119
+ app .builder .render_partial (p )['body' ]
120
+ for p in rss_item_description
121
+ )
122
+ if True :
123
+ print ("--------------------------------------------" )
124
+ print ("--------------------------------------------" )
125
+ print ("--------------------------------------------" )
126
+ print ("newsfeed item:" )
127
+ print (" title:" , rss_item_title )
128
+ print (" date:" , rss_item_date )
129
+ print (" link:" , rss_item_link )
130
+ print (" desc:" , rss_item_description )
131
+ print (" " , flush = True )
132
+
133
+ rss_item = RSSItem (
134
+ rss_item_title ,
135
+ rss_item_link ,
136
+ rss_item_description ,
137
+ rss_item_date ,
138
+ )
139
+ rss_items .append (rss_item )
103
140
104
141
node .replace_self ([])
105
142
0 commit comments