Class: JsDuck::Examples

Inherits:
GroupedAsset show all
Defined in:
lib/jsduck/examples.rb

Overview

Reads in examples JSON file

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from GroupedAsset

#[], #build_map_by_name, #each_item, #map_items, #to_array

Constructor Details

#initialize(filename, opts) ⇒ Examples

Parses examples config file



19
20
21
22
23
24
# File 'lib/jsduck/examples.rb', line 19

def initialize(filename, opts)
  @groups = Util::Json.read(filename)
  @opts = opts
  fix_examples_data
  build_map_by_name
end

Class Method Details

.create(filename, opts) ⇒ Object

Creates Examples object from filename.



10
11
12
13
14
15
16
# File 'lib/jsduck/examples.rb', line 10

def self.create(filename, opts)
  if filename
    Examples.new(filename, opts)
  else
    Util::NullObject.new(:to_array => [], :[] => nil)
  end
end

Instance Method Details

#fix_examples_dataObject

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



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/jsduck/examples.rb', line 34

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

#icon_url(example) ⇒ Object

Extracts example icon URL from example hash



57
58
59
# File 'lib/jsduck/examples.rb', line 57

def icon_url(example)
  example["icon"]
end