class JsDuck::Inline::Example

Implementation of @example tag.

Looks for @example tag at the beginning of code blocks. When found, adds an “inline-example” CSS class to the <pre> element.

Unlike other Inline

classes this doesn't implement an

{@example} tag as could be expected. But it fits nicely along with other inline tags as it's processed inside DocFormatter, so it mostly fits here along with the others.

Public Class Methods

new(opts=OpenStruct.new) click to toggle source

Constructor takes opts parameter for consistency with other JsDuck::Inline::* classes.

# File lib/jsduck/inline/example.rb, line 19
def initialize(opts=OpenStruct.new)
  @re = /<pre><code>\s*@example( +[^\n]*)?\s+/m
end

Public Instance Methods

replace(input) click to toggle source

Takes StringScanner instance.

Looks for “<pre><code>@example” at the current scan pointer position, when found, moves scan pointer forward and performs the apporpriate replacement.

# File lib/jsduck/inline/example.rb, line 28
def replace(input)
  if input.check(@re)
    # Match possible classnames following @example and add them
    # as CSS classes inside <pre> element.
    input.scan(@re) =~ @re
    css_classes = ($1 || "").strip

    return "<pre class='inline-example #{css_classes}'><code>"
  else
    false
  end
end