class JsDuck::ExternalClasses

Handles patterns of external classes.

A pattern can be a simple classname or a one with a wildcard “*”.

Also one can use a special keyword “@browser” to include all common browser web API class names.

Constants

WEB_APIS

List taken from: developer.mozilla.org/en-US/docs/Web/API Excluding experimental, obsolete, deprecated and non-standardized APIs.

Public Class Methods

new(classnames = []) click to toggle source
# File lib/jsduck/external_classes.rb, line 11
def initialize(classnames = [])
  @class_names = {}
  @patterns = []
  classnames.each {|name| add(name) }
end

Public Instance Methods

add(name) click to toggle source

Adds a classname or pattern to list of external classes.

# File lib/jsduck/external_classes.rb, line 18
def add(name)
  if name =~ /\*/
    @patterns << make_pattern(name)
  elsif name =~ /^@browser$/i
    WEB_APIS.each do |cls|
      @class_names[cls] = true
    end
  else
    @class_names[name] = true
  end
end
is?(classname) click to toggle source

True if the classname matches an external class pattern.

# File lib/jsduck/external_classes.rb, line 31
def is?(classname)
  @class_names[classname] || @patterns.any? {|p| classname =~ p }
end

Private Instance Methods

make_pattern(pattern) click to toggle source
# File lib/jsduck/external_classes.rb, line 37
def make_pattern(pattern)
  Regexp.new("^" + pattern.split(/\*/, -1).map {|s| Regexp.escape(s) }.join(".*") + "$")
end