class ContentfulConverter::Nodes::Base

Attributes

content[RW]
node_type[R]
nokogiri_node[R]
parent[R]

Public Class Methods

new(nokogiri_node = nil, parent = nil) click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 8
def initialize(nokogiri_node = nil, parent = nil)
  @nokogiri_node = nokogiri_node
  @parent = parent
  @node_type = type
  @content = []
end

Public Instance Methods

add_content(node) click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 15
def add_content(node)
  @content << (node.needs_p_wrapping? ? wrap_in_p(node) : node)
end
needs_p_wrapping?() click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 26
def needs_p_wrapping?
  if parent.nil? ||
     parent&.class == Nodes::Header ||
     parent&.class == Nodes::Paragraph ||
     parent&.class == Nodes::Hyperlink

    return false
  end

  true
end
to_h(params = options) click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 19
def to_h(params = options)
  params[:nodeType] = node_type
  params[:data]     = params[:data] || {}
  params[:content]  = content.map(&:to_h).compact
  params
end

Private Instance Methods

options() click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 56
def options
  {}
end
type() click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 52
def type
  raise NotImplementedError
end
value() click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 48
def value
  nokogiri_node.content
end
wrap_in_p(node) click to toggle source
# File lib/contentful_converter/nodes/base.rb, line 42
def wrap_in_p(node)
  p_node = Nodes::Paragraph.new(nil, node.parent)
  p_node.content << node
  p_node
end