/ / Come ottenere il "contenuto" non elaborato da tutte le pagine: ruby, sitemap, pignoni, middleman

Come ottenere il "contenuto" non elaborato da tutte le pagine: ruby, sitemap, pignoni, middleman

Sto cercando di creare un file indice per il mio sito Middleman e vorrei includere in quel file il "contenuto" non elaborato delle mie pagine.

/source/mypage.md:

---
title: My Page
---
# This is my page
With *my markdown*

e

/source/myotherpage.md:

---
title: My Other Page
---
# Here is my other page

Mi piacerebbe avere una terza pagina che sia /source/site_index.json.erb che quando l'output assomiglia a qualcosa:

 [
{"title": "My Page", "body": "#This is my pagenWith *my markdownn"},
{"title": "My Other Page", "body": "#Here is my other pagen"}
]

Posso ottenere il titolo ecc usando qualcosa di simile, ma non so come ottenere il corpo grezzo:

[
<% sitemap.resources.select{|resource| resource.content_type == "text/html; charset=utf-8" unless resource.data.ignore }.each do |resource| %>
{
"title": <%= resource.data.title.to_json %>,
"body": <%= nil %>
} ,
<% end %>
]

risposte:

1 per risposta № 1

Non ho mai usato Middleman ma ci hai provato resource.render?

Secondo la documentazione di http://rubydoc.info/gems/middleman-core/Middleman/Sitemap/Resource#render-instance_method sembra che dovrebbe funzionare.

Un altro potenziale vantaggio è il seguente riferimento a raw_body_content a https://github.com/middleman/middleman-sitemap-api/blob/master/lib/middleman-sitemap-api/extension.rb#L122

Spero che questo ti aiuti


1 per risposta № 2

Il resource oggetto ha un puntatore al file sorgente (source_file) e potresti semplicemente leggere il contenuto del file:

[
<%
pages = sitemap.resources.select{|resource| resource.content_type == "text/html; charset=utf-8" unless resource.data.ignore }
pages.each_with_index do |resource, index|
file = File.open(resource.source_file, "r")
content = file.read
%>
{
"title": <%= resource.data.title.to_json %>,
"body": <%= content.to_json %>
} <%="," unless( index == pages.length-1) %>
<% end %>
]

Questo ha funzionato per me, testato con Middleman 3.3.3.