Class: Kitchen::Directions::BakeIframes::V1

Inherits:
Object
  • Object
show all
Defined in:
lib/kitchen/directions/bake_iframes/v1.rb

Instance Method Summary collapse

Instance Method Details

#bake(book:) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/kitchen/directions/bake_iframes/v1.rb', line 5

def bake(book:)
  iframes = book.search_with(Kitchen::PageElementEnumerator, \
                             Kitchen::CompositePageElementEnumerator).search('iframe')
  return unless iframes.any?

  iframes.each do |iframe|
    next if iframe.has_class?('os-is-iframe') # don't double-bake

    iframe_link = \
      begin
        iframe.rex_link
      rescue StandardError
        warn "Unable to find rex link for iframe #{iframe}"
        iframe[:src]
      end
    iframe.wrap('<div class="os-has-iframe" data-type="switch">')
    iframe.add_class('os-is-iframe')

    iframe = iframe.parent
    iframe.add_class('os-has-link')

    iframe.prepend(child:
      <<~HTML
        <a class="os-is-link" href="#{iframe_link}" target="_blank" rel="noopener nofollow">#{I18n.t(:iframe_link_text)}</a>
      HTML
    )

    iframe.first('a.os-is-link').add_platform_media('print')
    iframe.first('iframe').add_platform_media('screen')
  end
end