class DocTemplate::Tags::ImageStudentWorksheetTag

Constants

HEIGHT_MOD
TAG_NAME
TEMPLATE

Public Instance Methods

parse(node, _options = {}) click to toggle source
# File lib/doc_template/tags/image_student_worksheet_tag.rb, line 12
def parse(node, _options = {})
  if (image = find_image node)
    image.ancestors('p').first.try(:remove)
    params = prepare_content image
    @content = parse_template params, TEMPLATE
    replace_tag node
  else
    node.remove
  end

  self
end

Private Instance Methods

find_image(node) click to toggle source
# File lib/doc_template/tags/image_student_worksheet_tag.rb, line 27
def find_image(node)
  while (node = node.next_sibling)
    if (image = node.at_xpath('.//img')).present?
      return image
    end
  end
end
prepare_content(image) click to toggle source
# File lib/doc_template/tags/image_student_worksheet_tag.rb, line 35
def prepare_content(image)
  {}.tap do |result|
    result[:src] = image['src']

    image['style'].split(';').each do |style|
      Hash[*style.strip.split(':')].each do |(k, v)|
        case k
        when 'height' then result[:height] = "#{(v.to_i * HEIGHT_MOD).floor}px"
        when 'width' then result[:width] = v.strip
        end
      end
    end
  end
end