/ / Як отримати сировинний "контент" з усіх сторінок - рубій, мапа сайту, зірочки, посередник

Як отримати сирий "контент" з усіх сторінок - рубій, мапа сайту, зірочки, посередник

Я намагаюся створити файл індексу для свого сайту Middleman і хотів би включити в цей файл сирий "зміст" моїх сторінок, тобто

/source/mypage.md:

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

і

/source/myother.mp3:

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

Мені хочеться мати третю сторінку, в якій знаходиться /source/site_index.json.erb що при виході виглядає приблизно так:

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

Я можу отримати назву тощо, використовуючи щось подібне, але я не знаю, як отримати сире тіло:

[
<% 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 %>
]

Відповіді:

1 для відповіді № 1

Ніколи не використовував Мидман ще до цього, але ви пробували resource.render?

Згідно з документацією на http://rubydoc.info/gems/middleman-core/Middleman/Sitemap/Resource#render-instance_method здається, що це повинно працювати.

Іншим потенційним джерелом є наступне посилання на raw_body_content при https://github.com/middleman/middleman-sitemap-api/blob/master/lib/middleman-sitemap-api/extension.rb#L122

Сподіваюся, це допоможе


1 для відповіді № 2

The resource об'єкт має вказівник на вихідний файл (source_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 %>
]

Це працювало для мене, протестоване середнім 3.3.3.