Commit ed82556b authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Warn when referencing missing images from guides.

Achieving this required extensive refactoring of how the images get
processed.  Previously the existance of images was looked up after
all the @img tag had been replaced.  Now the check for existance is
part of expanding the @img tag, so the check happens also for images
in guides, for which the check didn't occour previously as there is
no images copy step in there.

The old Images class has been replaced with ImageDir and ImageDirSet.
parent 2ee12607
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
require 'jsduck/images'
require 'jsduck/image_dir_set'
require 'jsduck/welcome'
require 'jsduck/guides'
require 'jsduck/videos'
@@ -29,7 +29,7 @@ module JsDuck
      doc_formatter = DocFormatter.new(@opts)
      doc_formatter.relations = @relations

      @images = Images.new(@opts.images)
      @images = ImageDirSet.new(@opts.images, "images")
      @welcome = Welcome.create(@opts.welcome, doc_formatter)
      @guides = Guides.create(@opts.guides, doc_formatter, @opts)
      @videos = Videos.create(@opts.videos)
+7 −3
Original line number Diff line number Diff line
require 'jsduck/util/parallel'
require 'jsduck/class_formatter'
require 'jsduck/doc_formatter'
require 'jsduck/image_dir_set'
require 'jsduck/logger'

module JsDuck
@@ -21,7 +22,7 @@ module JsDuck
        begin
          {
            :doc => formatter.format(cls.internal_doc),
            :images => formatter.images
            :images => formatter.images.all_used
          }
        rescue
          Logger.fatal_backtrace("Error while formatting #{cls[:name]} #{files}", $!)
@@ -32,7 +33,10 @@ module JsDuck
      # Then merge the data back to classes sequentially
      formatted_classes.each do |cls|
        relations[cls[:doc][:name]].internal_doc = cls[:doc]
        cls[:images].each {|img| assets.images.add(img) }
        # Perform lookup of all the images again.  We're really doing
        # this work twice now, but as we usually don't have excessive
        # amounts of images, the performance penalty should be minimal.
        cls[:images].each {|img| assets.images.get(img[:filename]) }
      end
    end

@@ -40,7 +44,7 @@ module JsDuck
    def self.create_class_formatter(relations, opts)
      doc_formatter = DocFormatter.new(opts)
      doc_formatter.relations = relations
      doc_formatter.img_path = "images"
      doc_formatter.images = ImageDirSet.new(opts.images, "images")

      class_formatter = ClassFormatter.new(relations, doc_formatter)
      # Don't format types when exporting
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ module JsDuck
      cls
    end

    # Returns the images detected by doc-formatter
    # Access to the ImageDirSet object inside doc-formatter
    def images
      @formatter.images
    end
+4 −5
Original line number Diff line number Diff line
@@ -24,12 +24,10 @@ module JsDuck
      @doc_context = {}
    end

    # Sets base path to prefix images from {@img} tags.
    def img_path=(path)
      @inline_img.base_path = path
    # Accessors to the images attribute of Inline::Img
    def images=(images)
      @inline_img.images = images
    end

    # Returns list of all image paths gathered from {@img} tags.
    def images
      @inline_img.images
    end
@@ -47,6 +45,7 @@ module JsDuck
      @doc_context = doc
      @inline_video.doc_context = doc
      @inline_link.doc_context = doc
      @inline_img.doc_context = doc
    end

    # Returns the current documentation context
+2 −1
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ require 'jsduck/util/null_object'
require 'jsduck/logger'
require 'jsduck/grouped_asset'
require 'jsduck/util/html'
require 'jsduck/image_dir'
require 'fileutils'

module JsDuck
@@ -59,7 +60,7 @@ module JsDuck

      begin
        @formatter.doc_context = {:filename => guide_file, :linenr => 0}
        @formatter.img_path = "guides/#{guide["name"]}"
        @formatter.images = ImageDir.new(guide["url"], "guides/#{guide["name"]}")

        return add_toc(guide, @formatter.format(Util::IO.read(guide_file)))
      rescue
Loading