module Prismic::WithFragments
A document with Fragments: usually a Prismic.io Document
, or a Document
within a Group
Attributes
@return [Hash{String => Fragment}]
Public Instance Methods
Get a document's field @return [Fragments::Fragment]
# File lib/prismic/with_fragments.rb, line 53 def [](field) array = field.split('.') if array.length != 2 raise ArgumentError, 'Argument should contain one dot. Example: product.price' end return nil if array[0] != self.type fragments[array[1]] end
Generate an HTML representation of the entire document
@param link_resolver [LinkResolver] The LinkResolver
used to build
application's specific URL
@return [String] the HTML representation
# File lib/prismic/with_fragments.rb, line 22 def as_html(link_resolver) fragments.map { |field, fragment| %(<section data-field="#{field}">#{fragment.as_html(link_resolver)}</section>) }.join("\n") end
Generate a Text representation of the entire document
@return [String] the text representation
# File lib/prismic/with_fragments.rb, line 12 def as_text fragments.map { |field, fragment| fragment.as_text }.join("\n") end
@yieldparam name [String] @yieldparam fragment [Fragment]
# File lib/prismic/with_fragments.rb, line 65 def each(&blk) @fragments.each(&blk) end
Finds the first highest title in a document (if any)
@return [String]
# File lib/prismic/with_fragments.rb, line 31 def first_title # It is impossible to reuse the StructuredText.first_title method, since # we need to test the highest title across the whole document title = false max_level = 6 # any title with a higher level kicks the current one out @fragments.each do |_, fragment| if fragment.is_a? Prismic::Fragments::StructuredText fragment.blocks.each do |block| if block.is_a?(Prismic::Fragments::StructuredText::Block::Heading) if block.level < max_level title = block.text max_level = block.level # new maximum end end end end end title end
@return [Fragments::BooleanField]
# File lib/prismic/with_fragments.rb, line 160 def get_boolean_field(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::BooleanField fragment end
@return [Fragments::Color]
# File lib/prismic/with_fragments.rb, line 140 def get_color(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Color fragment end
@return [Fragments::Date]
# File lib/prismic/with_fragments.rb, line 105 def get_date(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Date fragment end
@return [Fragments::Embed]
# File lib/prismic/with_fragments.rb, line 133 def get_embed(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Embed fragment end
@return [Fragments::GeoPoint]
# File lib/prismic/with_fragments.rb, line 147 def get_geopoint(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::GeoPoint fragment end
@return [Fragments::Group]
# File lib/prismic/with_fragments.rb, line 119 def get_group(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Group fragment end
@return [Fragments::Image]
# File lib/prismic/with_fragments.rb, line 98 def get_image(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Image fragment end
@return [Fragments::Link]
# File lib/prismic/with_fragments.rb, line 126 def get_link(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Link fragment end
@return [Fragments::Number]
# File lib/prismic/with_fragments.rb, line 91 def get_number(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Number fragment end
# File lib/prismic/with_fragments.rb, line 153 def get_slice_zone(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::SliceZone fragment end
@return [Fragments::StructuredText]
# File lib/prismic/with_fragments.rb, line 77 def get_structured_text(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::StructuredText fragment end
@return [Fragments::Text]
# File lib/prismic/with_fragments.rb, line 84 def get_text(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Text fragment end
@return [Fragments::Timestamp]
# File lib/prismic/with_fragments.rb, line 112 def get_timestamp(field) fragment = self[field] return nil unless fragment.is_a? Prismic::Fragments::Timestamp fragment end
@return [Fixum]
# File lib/prismic/with_fragments.rb, line 71 def length @fragments.length end
@return [Array<LinkedDocument>]
# File lib/prismic/with_fragments.rb, line 167 def linked_documents self.fragments.map { |name, fragment| if fragment.is_a? Prismic::Fragments::DocumentLink [fragment] elsif fragment.is_a? Prismic::Fragments::StructuredText fragment.blocks .select { |block| block.is_a? Prismic::Fragments::StructuredText::Block::Text} .map { |block| block.spans }.flatten .select { |span| span.is_a? Prismic::Fragments::StructuredText::Span::Hyperlink } .map { |span| span.link } .select { |link| link.is_a? Prismic::Fragments::DocumentLink } elsif fragment.is_a? Prismic::Fragments::Group fragment.group_documents .map { |groupDoc| groupDoc.linked_documents } .flatten else [] end }.flatten end