Class: ArticleJSON::Import::GoogleDoc::HTML::ImageParser

Inherits:
Object
  • Object
show all
Includes:
Shared::Caption, Shared::Float
Defined in:
lib/article_json/import/google_doc/html/image_parser.rb

Instance Method Summary collapse

Methods included from Shared::Caption

#caption

Constructor Details

#initialize(node:, caption_node:, css_analyzer:) ⇒ ImageParser

Returns a new instance of ImageParser.

Parameters:



12
13
14
15
16
17
18
19
20
# File 'lib/article_json/import/google_doc/html/image_parser.rb', line 12

def initialize(node:, caption_node:, css_analyzer:)
  @node = node
  @caption_node = caption_node
  @href = href
  @css_analyzer = css_analyzer

  # Main node indicates the floating behavior
  @float_node = @node
end

Instance Method Details

#elementArticleJSON::Elements::Image



52
53
54
55
56
57
58
59
# File 'lib/article_json/import/google_doc/html/image_parser.rb', line 52

def element
  ArticleJSON::Elements::Image.new(
    source_url: source_url,
    float: float,
    caption: caption,
    href: @href
  )
end

#floatSymbol

Check if the image is floating (left, right or not at all)

Returns:

  • (Symbol)


36
37
38
# File 'lib/article_json/import/google_doc/html/image_parser.rb', line 36

def float
  super if floatable_size?
end

#hrefString

Extracts an href from the tag [image-link-to: url]) if present in the caption node.

Returns:

  • (String)


43
44
45
46
47
48
49
# File 'lib/article_json/import/google_doc/html/image_parser.rb', line 43

def href
  return if @caption_node.nil?
  match = @caption_node.content.strip.match(href_regexp)
  return if match.nil?
  remove_image_link_tag
  match[:url]
end

#image_nodeNokogiri::HTML::Node

The node of the actual image

Returns:

  • (Nokogiri::HTML::Node)


30
31
32
# File 'lib/article_json/import/google_doc/html/image_parser.rb', line 30

def image_node
  @node.xpath('.//img').first
end

#source_urlString

The value of the image’s ‘src` attribute

Returns:

  • (String)


24
25
26
# File 'lib/article_json/import/google_doc/html/image_parser.rb', line 24

def source_url
  image_node.attribute('src').value
end