Sha256: ecf307faf554917b2f26f5f969df43395b52ccf2a1ae4625d5945f4f45f12d86

Contents?: true

Size: 1.52 KB

Versions: 20

Compression:

Stored size: 1.52 KB

Contents

require 'jsduck/json_duck'
require 'jsduck/null_object'
require 'jsduck/grouped_asset'

module JsDuck

  # Reads in examples JSON file
  class Examples < GroupedAsset
    # Creates Examples object from filename.
    def self.create(filename, opts)
      if filename
        Examples.new(filename, opts)
      else
        NullObject.new(:to_array => [], :[] => nil)
      end
    end

    # Parses examples config file
    def initialize(filename, opts)
      @groups = JsonDuck.read(filename)
      @opts = opts
      fix_examples_data
      build_map_by_name("Two examples have the same name")
    end

    # Prefix all relative URL-s in examples list with path given in --examples-base-url
    #
    # For backwards compatibility:
    #
    # - Create names for each example when not present
    # - Create title from text
    # - Create description from desc
    #
    def fix_examples_data
      each_item do |ex|
        ex["name"] = ex["url"] unless ex["name"]

        unless ex["url"] =~ /^https?:\/\//
          ex["url"] = @opts.examples_base_url + ex["url"]
        end
        unless ex["icon"] =~ /^https?:\/\//
          ex["icon"] = @opts.examples_base_url + ex["icon"]
        end

        unless ex["title"]
          ex["title"] = ex["text"]
          ex.delete("text")
        end
        unless ex["description"]
          ex["description"] = ex["desc"]
          ex.delete("desc")
        end
      end
    end

    # Extracts example icon URL from example hash
    def icon_url(example)
      example["icon"]
    end

  end

end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
jsduck-3.11.2 lib/jsduck/examples.rb
jsduck-4.0.beta2 lib/jsduck/examples.rb
jsduck-3.11.1 lib/jsduck/examples.rb
jsduck-4.0.beta lib/jsduck/examples.rb
jsduck-3.11.0 lib/jsduck/examples.rb
jsduck-3.10.5 lib/jsduck/examples.rb
jsduck-3.10.4 lib/jsduck/examples.rb
jsduck-3.10.3 lib/jsduck/examples.rb
jsduck-3.10.2 lib/jsduck/examples.rb
jsduck-3.10.1 lib/jsduck/examples.rb
jsduck-3.10.0 lib/jsduck/examples.rb
jsduck-3.9.1 lib/jsduck/examples.rb
jsduck-3.9.0 lib/jsduck/examples.rb
jsduck-3.9.0.pre lib/jsduck/examples.rb
jsduck-3.8.4 lib/jsduck/examples.rb
jsduck-3.8.3 lib/jsduck/examples.rb
jsduck-3.8.2 lib/jsduck/examples.rb
jsduck-3.8.1 lib/jsduck/examples.rb
jsduck-3.8.0 lib/jsduck/examples.rb
jsduck-3.7.0 lib/jsduck/examples.rb