module HS::ElementPreview

Public Instance Methods

element_preview(tag_name, params, children) click to toggle source
# File lib/hs/preview/element_preview.rb, line 12
def element_preview(tag_name, params, children)
  [
    element_start(tag_name, params, children),
    element_content(children),
    element_end(tag_name, children)
  ].join
end
text_preview(text) click to toggle source
# File lib/hs/preview/element_preview.rb, line 7
def text_preview(text)
  return unless text
  CGI.escapeHTML(text)
end
wrap_into_tag(tag_name, params) { || ... } click to toggle source
# File lib/hs/preview/element_preview.rb, line 20
def wrap_into_tag(tag_name, params)
  children = yield
  [
    element_start(tag_name, params, children),
    children.join(''),
    element_end(tag_name, children)
  ].join
end

Private Instance Methods

element_content(children) click to toggle source
# File lib/hs/preview/element_preview.rb, line 43
def element_content(children)
  return if children.empty?
  children.map(&:preview).compact.join
end
element_end(tag, children) click to toggle source
# File lib/hs/preview/element_preview.rb, line 48
def element_end(tag, children)
  return if children.empty?

  "</#{tag}>"
end
element_start(tag, params, children) click to toggle source
# File lib/hs/preview/element_preview.rb, line 31
def element_start(tag, params, children)
  start = "<#{tag}"

  unless params.empty?
    params_str = params.map { |k, v| "#{k}=\"#{v}\"" }.join(' ')
    start = "#{start} #{params_str}"
  end

  return "#{start} />" if children.empty?
  "#{start}>"
end