require "reverse_markdown" module Adamantium module Queries module Posts class MicroformatPost include Deps["repos.post_repo"] def call(url:, properties:) slug = URI(url).path.split("/").last post = post_repo.fetch_unpublished!(slug) markdown_content = ReverseMarkdown.convert(post.content, unknown_tags: :pass_through, github_flavored: true).to_s if properties.nil? || properties.empty? return { type: ["h-entry"], properties: { published: [post.published_at], content: [markdown_content], photo: post.photos, category: post.tags.map { |t| t.label.to_s } } } end result = {properties: {}} result[:properties][:published] = [post.published_at] if properties.include? "published" result[:properties][:content] = [markdown_content] if properties.include? "content" result[:properties][:category] = post.tags.map { |t| t.label.to_s } if properties.include? "category" result[:properties][:photos] = post.photos if properties.include? "photos" result end end end end end