Sha256: 6776138a5f1ae30431ca5fed91c731e44db409d836f9ad5b66636148621077b6

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

module Brief::Model::Serializers
  def as_json(options={})
    options.symbolize_keys!
    docs_path = options.fetch(:docs_path) { briefcase.docs_path }
    docs_path = docs_path.to_pathname if docs_path.is_a?(String)

    doc_path  = path.relative_path_from(docs_path).to_s

    # TEMP
    title = data.try(:[], :title) || extracted_content_data.try(:title) || (send(:title) rescue nil) || path.basename.to_s.gsub(/\.html.md/,'')
    title = title.to_s.gsub(/\.md/,'')

    {
      data: data,
      extracted: extracted_content_data,
      path: path.to_s,
      type: type,
      group: type.to_s.pluralize,
      title: document_title,
      actions: self.class.defined_actions,
      updated_at: File.mtime(path).to_i,
      id: (doc_id = file_hash),
      hash: doc_id,
      urls: {
        view_content_url: "/view/content/#{ doc_path }",
        view_rendered_url: "/view/rendered/#{ doc_path }",
        view_details_url: "/view/details/#{ doc_path }",
        update_url: "/update/#{ doc_path }",
        remove_url: "/remove/#{ doc_path }",
        schema_url: "/schema/#{ type }",
        actions_url: "/actions/:action/#{ doc_path }"
      }
    }.tap do |h|
      h[:content] = document.combined_data_and_content if options[:content]
      h[:rendered] = document.to_html if options[:rendered]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
brief-1.8.6 lib/brief/model/serializers.rb
brief-1.8.5 lib/brief/model/serializers.rb