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