Sha256: 4f1f9cf67caa8926ac41f2975baff8122f1ad20152e4459eeb3e2ebc1fd436be

Contents?: true

Size: 722 Bytes

Versions: 28

Compression:

Stored size: 722 Bytes

Contents

module JsDuck

  # Handles patterns of external classes.
  #
  # A pattern can be a simple classname or a one with a wildcard "*".
  class ExternalClasses

    def initialize(classnames = [])
      @class_names = {}
      @patterns = []
      classnames.each do |name|
        if name =~ /\*/
          @patterns << make_pattern(name)
        else
          @class_names[name] = true
        end
      end
    end

    # True if the classname matches an external class pattern.
    def is?(classname)
      @class_names[classname] || @patterns.any? {|p| classname =~ p }
    end

    def make_pattern(pattern)
      Regexp.new("^" + pattern.split(/\*/, -1).map {|s| Regexp.escape(s) }.join(".*") + "$")
    end
  end

end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
jsduck-5.3.4 lib/jsduck/external_classes.rb
jsduck-5.3.3 lib/jsduck/external_classes.rb
jsduck-5.3.2 lib/jsduck/external_classes.rb
jsduck-5.3.1 lib/jsduck/external_classes.rb
jsduck-5.3.0 lib/jsduck/external_classes.rb
jsduck-5.2.0 lib/jsduck/external_classes.rb
jsduck-5.1.0 lib/jsduck/external_classes.rb
jsduck-5.0.1 lib/jsduck/external_classes.rb
jsduck-5.0.0 lib/jsduck/external_classes.rb
jsduck-5.0.0.beta5 lib/jsduck/external_classes.rb
jsduck-5.0.0.beta4 lib/jsduck/external_classes.rb
jsduck-4.10.4 lib/jsduck/external_classes.rb
jsduck-5.0.0.beta3 lib/jsduck/external_classes.rb
jsduck-4.10.3 lib/jsduck/external_classes.rb
jsduck-4.10.2 lib/jsduck/external_classes.rb
jsduck-4.10.1 lib/jsduck/external_classes.rb
jsduck-4.10.0 lib/jsduck/external_classes.rb
jsduck-4.9.0 lib/jsduck/external_classes.rb
jsduck-4.8.0 lib/jsduck/external_classes.rb
jsduck-5.0.0.beta2 lib/jsduck/external_classes.rb