Просмотр исходного кода

ox-rss: Prevent dropping lower level headlines

* contrib/lisp/ox-rss.el (org-rss-headline): Transcode lower level
  headlines (headlines with level > 1) using the html backend.  Do not
  drop them.

Previously, lower level headlines were dropped and did not appear in the
exported RSS output.
Arun Isaac 10 лет назад
Родитель
Сommit
9b5e8fdb5c
1 измененных файлов с 53 добавлено и 53 удалено
  1. 53 53
      contrib/lisp/ox-rss.el

+ 53 - 53
contrib/lisp/ox-rss.el

@@ -226,59 +226,59 @@ Return output file name."
   "Transcode HEADLINE element into RSS format.
   "Transcode HEADLINE element into RSS format.
 CONTENTS is the headline contents.  INFO is a plist used as a
 CONTENTS is the headline contents.  INFO is a plist used as a
 communication channel."
 communication channel."
-  (unless (or (org-element-property :footnote-section-p headline)
-	      ;; Only consider first-level headlines
-	      (> (org-export-get-relative-level headline info) 1))
-    (let* ((author (and (plist-get info :with-author)
-			(let ((auth (plist-get info :author)))
-			  (and auth (org-export-data auth info)))))
-	   (htmlext (plist-get info :html-extension))
-	   (hl-number (org-export-get-headline-number headline info))
-	   (hl-home (file-name-as-directory (plist-get info :html-link-home)))
-	   (hl-pdir (plist-get info :publishing-directory))
-	   (hl-perm (org-element-property :RSS_PERMALINK headline))
-	   (anchor (org-export-get-reference headline info))
-	   (category (org-rss-plain-text
-		      (or (org-element-property :CATEGORY headline) "") info))
-	   (pubdate0 (org-element-property :PUBDATE headline))
-	   (pubdate (let ((system-time-locale "C"))
-		      (if pubdate0
-			  (format-time-string
-			   "%a, %d %b %Y %H:%M:%S %z"
-			   (org-time-string-to-time pubdate0)))))
-	   (title (or (org-element-property :RSS_TITLE headline)
-		      (replace-regexp-in-string
-		       org-bracket-link-regexp
-		       (lambda (m) (or (match-string 3 m)
-				  (match-string 1 m)))
-		       (org-element-property :raw-value headline))))
-	   (publink
-	    (or (and hl-perm (concat (or hl-home hl-pdir) hl-perm))
-		(concat
-		 (or hl-home hl-pdir)
-		 (file-name-nondirectory
-		  (file-name-sans-extension
-		   (plist-get info :input-file))) "." htmlext "#" anchor)))
-	   (guid (if org-rss-use-entry-url-as-guid
-		     publink
-		   (org-rss-plain-text
-		    (or (org-element-property :ID headline)
-			(org-element-property :CUSTOM_ID headline)
-			publink)
-		    info))))
-      (if (not pubdate0) "" ;; Skip entries with no PUBDATE prop
-	(format
-	 (concat
-	  "<item>\n"
-	  "<title>%s</title>\n"
-	  "<link>%s</link>\n"
-	  "<author>%s</author>\n"
-	  "<guid isPermaLink=\"false\">%s</guid>\n"
-	  "<pubDate>%s</pubDate>\n"
-	  (org-rss-build-categories headline info) "\n"
-	  "<description><![CDATA[%s]]></description>\n"
-	  "</item>\n")
-	 title publink author guid pubdate contents)))))
+  (if (> (org-export-get-relative-level headline info) 1)
+      (org-export-data-with-backend headline 'html info)
+    (unless (org-element-property :footnote-section-p headline)
+      (let* ((author (and (plist-get info :with-author)
+			  (let ((auth (plist-get info :author)))
+			    (and auth (org-export-data auth info)))))
+	     (htmlext (plist-get info :html-extension))
+	     (hl-number (org-export-get-headline-number headline info))
+	     (hl-home (file-name-as-directory (plist-get info :html-link-home)))
+	     (hl-pdir (plist-get info :publishing-directory))
+	     (hl-perm (org-element-property :RSS_PERMALINK headline))
+	     (anchor (org-export-get-reference headline info))
+	     (category (org-rss-plain-text
+			(or (org-element-property :CATEGORY headline) "") info))
+	     (pubdate0 (org-element-property :PUBDATE headline))
+	     (pubdate (let ((system-time-locale "C"))
+			(if pubdate0
+			    (format-time-string
+			     "%a, %d %b %Y %H:%M:%S %z"
+			     (org-time-string-to-time pubdate0)))))
+	     (title (or (org-element-property :RSS_TITLE headline)
+			(replace-regexp-in-string
+			 org-bracket-link-regexp
+			 (lambda (m) (or (match-string 3 m)
+					 (match-string 1 m)))
+			 (org-element-property :raw-value headline))))
+	     (publink
+	      (or (and hl-perm (concat (or hl-home hl-pdir) hl-perm))
+		  (concat
+		   (or hl-home hl-pdir)
+		   (file-name-nondirectory
+		    (file-name-sans-extension
+		     (plist-get info :input-file))) "." htmlext "#" anchor)))
+	     (guid (if org-rss-use-entry-url-as-guid
+		       publink
+		     (org-rss-plain-text
+		      (or (org-element-property :ID headline)
+			  (org-element-property :CUSTOM_ID headline)
+			  publink)
+		      info))))
+	(if (not pubdate0) "" ;; Skip entries with no PUBDATE prop
+	  (format
+	   (concat
+	    "<item>\n"
+	    "<title>%s</title>\n"
+	    "<link>%s</link>\n"
+	    "<author>%s</author>\n"
+	    "<guid isPermaLink=\"false\">%s</guid>\n"
+	    "<pubDate>%s</pubDate>\n"
+	    (org-rss-build-categories headline info) "\n"
+	    "<description><![CDATA[%s]]></description>\n"
+	    "</item>\n")
+	   title publink author guid pubdate contents))))))
 
 
 (defun org-rss-build-categories (headline info)
 (defun org-rss-build-categories (headline info)
   "Build categories for the RSS item."
   "Build categories for the RSS item."