Commit b59d9762 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Builtin support for primitive types in TypeParser.

- string
- number
- boolean
- null
- undefined

When "string" is used as type and String class exists, a link to
String class is created.  Otherwise just text "string" is shown.
parent 6580f12b
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -29,6 +29,13 @@ module JsDuck
    def initialize(relations={}, formatter={})
      @relations = relations
      @formatter = formatter
      @primitives = {
        "boolean" => "Boolean",
        "number" => "Number",
        "string" => "String",
        "null" => "null",
        "undefined" => "undefined",
      }
    end

    # Parses the type definition
@@ -134,7 +141,13 @@ module JsDuck
        return false
      elsif @relations[name]
        @out << @formatter.link(name, nil, name)
      elsif @relations.ignore?(name) || name == "undefined" || name == "*"
      elsif @primitives[name]
        if @relations[@primitives[name]]
          @out << @formatter.link(@primitives[name], nil, name)
        else
          @out << name
        end
      elsif @relations.ignore?(name) || name == "*"
        @out << name
      else
        @error = :name
+18 −0
Original line number Diff line number Diff line
require "jsduck/relations"
require "jsduck/type_parser"
require "jsduck/doc_formatter"
require "jsduck/class"

describe JsDuck::TypeParser do

@@ -203,6 +205,22 @@ describe JsDuck::TypeParser do
      parse("Array.<>").should == false
    end

    it "always matches primitive types" do
      parse("boolean").should == true
      parse("number").should == true
      parse("string").should == true
      parse("null").should == true
      parse("undefined").should == true
    end

    it "links primitive types to classes" do
      relations = JsDuck::Relations.new([JsDuck::Class.new({:name => "String"})])
      doc_formatter = JsDuck::DocFormatter.new(relations)
      p = JsDuck::TypeParser.new(relations, doc_formatter)
      p.parse("string")
      p.out.should == '<a href="String">string</a>'
    end

  end

end