Module: Bridgetown::Builders::DSL::Inspectors

Included in:
PluginBuilder
Defined in:
bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb

Defined Under Namespace

Modules: HTML, QuerySelection, XML

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.process_htmlObject

Shorthand for HTML.call



93
94
95
# File 'bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb', line 93

def process_html(...)
  HTML.call(...)
end

.process_xmlObject

Shorthand for XML.call



98
99
100
# File 'bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb', line 98

def process_xml(...)
  XML.call(...)
end

.setup_nokogiriObject

Require the Nokogiri gem if necessary and add the QuerySelection mixin



75
76
77
78
79
80
81
# File 'bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb', line 75

def setup_nokogiri
  unless defined?(Nokogiri)
    Bridgetown::Utils::RequireGems.require_with_graceful_fail "nokogiri"
  end

  Nokogiri::XML::Node.include QuerySelection unless Nokogiri::XML::Node <= QuerySelection
end

.setup_nokolexborObject

Require the Nokolexbor gem if necessary and add the QuerySelection mixin



84
85
86
87
88
89
90
# File 'bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb', line 84

def setup_nokolexbor
  unless defined?(Nokolexbor)
    Bridgetown::Utils::RequireGems.require_with_graceful_fail "nokolexbor"
  end

  Nokolexbor::Node.include QuerySelection unless Nokolexbor::Node <= QuerySelection
end

Instance Method Details

#inspect_html {|the| ... } ⇒ Object

Set up an inspector to review or manipulate HTML resources

Yields:

  • the block to be called after the resource has been rendered

Yield Parameters:

  • the (Nokogiri::HTML5::Document, Nokolexbor::Document)

    Nokogiri or Nokolexbor document



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb', line 107

def inspect_html(&block)
  unless @_html_inspectors
    @_html_inspectors = []

    if site.config.html_inspector_parser == "nokolexbor"
      Inspectors.setup_nokolexbor
    else
      Inspectors.setup_nokogiri
    end

    hook :resources, :post_render do |resource|
      next unless HTML.can_run?(resource, @_html_inspectors)

      resource.output = Inspectors.process_html(resource, @_html_inspectors)
    end

    hook :generated_pages, :post_render do |page|
      next unless HTML.can_run?(page, @_html_inspectors)

      page.output = Inspectors.process_html(page, @_html_inspectors)
    end
  end

  @_html_inspectors << block
end

#inspect_xml(extension = "xml") {|the| ... } ⇒ Object

Set up an inspector to review or manipulate XML resources

Parameters:

  • extension (String) (defaults to: "xml")

    defaults to xml

Yields:

  • the block to be called after the resource has been rendered

Yield Parameters:

  • the (Nokogiri::XML::Document)

    Nokogiri document



137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'bridgetown-builder/lib/bridgetown-builder/dsl/inspectors.rb', line 137

def inspect_xml(extension = "xml", &block)
  unless @_xml_inspectors
    @_xml_inspectors = {}

    Inspectors.setup_nokogiri

    hook :resources, :post_render do |resource|
      next unless Inspectors::XML.can_run?(resource, @_xml_inspectors)

      resource.output = Inspectors.process_xml(resource, @_xml_inspectors)
    end

    hook :generated_pages, :post_render do |page|
      next unless Inspectors::XML.can_run?(page, @_xml_inspectors)

      page.output = Inspectors.process_xml(page, @_xml_inspectors)
    end
  end

  (@_xml_inspectors[extension.to_s] ||= []).tap do |arr|
    arr << block
  end

  @_xml_inspectors
end