20 lines
645 B
Crystal
20 lines
645 B
Crystal
|
class PageConverter
|
||
|
def convert(paragraphs : Array(PostResponse::Paragraph)) : Page
|
||
|
first_two_paragraphs = paragraphs.first(2)
|
||
|
first_two_types = first_two_paragraphs.map(&.type)
|
||
|
if first_two_types == [PostResponse::ParagraphType::H3, PostResponse::ParagraphType::H4]
|
||
|
Page.new(
|
||
|
title: first_two_paragraphs[0].text,
|
||
|
subtitle: first_two_paragraphs[1].text,
|
||
|
nodes: ParagraphConverter.new.convert(paragraphs[2..]),
|
||
|
)
|
||
|
else
|
||
|
Page.new(
|
||
|
title: first_two_paragraphs[0].text,
|
||
|
subtitle: nil,
|
||
|
nodes: ParagraphConverter.new.convert(paragraphs[1..]),
|
||
|
)
|
||
|
end
|
||
|
end
|
||
|
end
|