Sha256: d26ec74f9422dcf99380020cfc3d8b47c066023efea35791182743f834cc34fd

Contents?: true

Size: 1.5 KB

Versions: 16

Compression:

Stored size: 1.5 KB

Contents

require 'jsduck/util/html'
require 'jsduck/logger'
require 'ostruct'

module JsDuck
  module Inline

    # Implementation of inline tag {@img}
    class Img
      # Instance of Img::Dir or Img::DirSet that's used for looking up
      # image information.
      attr_accessor :images

      # Sets up instance to work in context of particular doc object.
      # Used for error reporting.
      attr_accessor :doc_context

      def initialize(opts=OpenStruct.new)
        @tpl = opts.img || '<img src="%u" alt="%a" width="%w" height="%h"/>'

        @re = /\{@img\s+(\S*?)(?:\s+(.+?))?\}/m
      end

      # Takes StringScanner instance.
      #
      # Looks for inline tag at the current scan pointer position, when
      # found, moves scan pointer forward and performs the apporpriate
      # replacement.
      def replace(input)
        if input.check(@re)
          input.scan(@re).sub(@re) { apply_tpl($1, $2) }
        else
          false
        end
      end

      # applies the image template
      def apply_tpl(url, alt_text)
        img = @images.get(url)
        if !img
          Logger.warn(:image, "Image #{url} not found.", @doc_context)
          img = {}
        end

        @tpl.gsub(/(%\w)/) do
          case $1
          when '%u'
            img[:relative_path]
          when '%a'
            Util::HTML.escape(alt_text||"")
          when '%w'
            img[:width]
          when '%h'
            img[:height]
          else
            $1
          end
        end
      end
    end

  end
end

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
solvas-jsduck-6.0.0.30539 lib/jsduck/inline/img.rb
solvas-jsduck-6.0.0.9571 lib/jsduck/inline/img.rb
solvas-jsduck-6.0.0.6154 lib/jsduck/inline/img.rb
solvas-jsduck-6.0.0.4021 lib/jsduck/inline/img.rb
solvas-jsduck-6.0.0.2554 lib/jsduck/inline/img.rb
solvas-jsduck-6.0.0.1891 lib/jsduck/inline/img.rb
solvas-jsduck-6.0.0.beta.1888 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.10 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.9 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.8 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.7 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.5 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.4 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.3 lib/jsduck/inline/img.rb
jsduck-troopjs-0.0.1 lib/jsduck/inline/img.rb
jsduck-6.0.0beta lib/jsduck/inline/img.rb