Closed smd686s closed 10 years ago
Spans with the new type of 'label' are failing. The issue seems to be in
module Prismic module JsonParser class << self def structured_text_parser(json) def self.span_parser(span) case span['type'] when 'em' Prismic::Fragments::StructuredText::Span::Em.new(span['start'], span['end'], span['label']) when 'strong' Prismic::Fragments::StructuredText::Span::Strong.new(span['start'], span['end'], span['label']) when 'hyperlink' Prismic::Fragments::StructuredText::Span::Hyperlink.new(span['start'], span['end'], link_parser(span['data']), span['label']) else puts "Unknown span_parser type: #{span['type']}" end end
I've monkeypatched the ruby kit to create a generic tag:
module Prismic module JsonParser class << self def structured_text_parser(json) def self.span_parser(span) case span['type'] when 'em' Prismic::Fragments::StructuredText::Span::Em.new(span['start'], span['end'], span['label']) when 'strong' Prismic::Fragments::StructuredText::Span::Strong.new(span['start'], span['end'], span['label']) when 'hyperlink' Prismic::Fragments::StructuredText::Span::Hyperlink.new(span['start'], span['end'], link_parser(span['data']), span['label']) when 'label' Prismic::Fragments::StructuredText::Span::SpanTag.new(span['start'], span['end'], span['data']['label']) else puts "Unknown span_parser type: #{span['type']}" end end blocks = json['value'].map do |block| case block['type'] when 'paragraph' spans = block['spans'].map {|span| span_parser(span) } Prismic::Fragments::StructuredText::Block::Paragraph.new(block['text'], spans, block['label']) when 'preformatted' spans = block['spans'].map {|span| span_parser(span) } Prismic::Fragments::StructuredText::Block::Preformatted.new(block['text'], spans, block['label']) when /^heading(\d+)$/ heading = $1 spans = block['spans'].map {|span| span_parser(span) } Prismic::Fragments::StructuredText::Block::Heading.new( block['text'], spans, heading.to_i, block['label'] ) when 'o-list-item' spans = block['spans'].map {|span| span_parser(span) } Prismic::Fragments::StructuredText::Block::ListItem.new( block['text'], spans, true, # ordered block['label'] ) when 'list-item' spans = block['spans'].map {|span| span_parser(span) } Prismic::Fragments::StructuredText::Block::ListItem.new( block['text'], spans, false, # unordered block['label'] ) when 'image' view = Prismic::Fragments::Image::View.new( block['url'], block['dimensions']['width'], block['dimensions']['height'], block['alt'], block['copyright'], block['linkTo'] ? link_parser(block['linkTo']) : nil ) Prismic::Fragments::StructuredText::Block::Image.new(view, block['label']) when 'embed' boembed = block['oembed'] Prismic::Fragments::Embed.new( boembed['type'], boembed['provider_name'], boembed['provider_url'], boembed['html'], boembed ) else puts "Unknown bloc type: #{block['type']}" end end Prismic::Fragments::StructuredText.new(blocks) end end end end module Prismic module Fragments class StructuredText < Fragment class Span class SpanTag < Span def serialize(text, link_resolver = nil) "<span#{class_code}>#{text}</span>" end end end end end end
Thoughts? I'd like to see if the tag approach is worth submitting a pull request.
Best,
Sean
Hi, this is fixed in 1.0.1 (in RubyGems).
Thanks!
Spans with the new type of 'label' are failing. The issue seems to be in
I've monkeypatched the ruby kit to create a generic tag:
Thoughts? I'd like to see if the tag approach is worth submitting a pull request.
Best,
Sean