Commit 0cb17f24 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Links from documentation to source files.

Not yet to exact line numbers, but we're almost there.
parent f83b8e44
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -16,15 +16,25 @@ module JsDuck
      @merger = Merger.new
    end

    def parse(input)
    def parse(input, filename="")
      @current_class = nil
      Parser.new(input).parse.each do |docset|
        doc = @doc_parser.parse(docset[:comment])
        code = docset[:code]
        register(@merger.merge(doc, code))
        register(add_href(@merger.merge(doc, code), filename))
      end
    end

    # Tags doc-object with link to source code where it came from
    def add_href(doc, href)
      doc[:href] = href
      if doc[:tagname] == :class
        doc[:cfg].each {|cfg| cfg[:href] = href }
        doc[:method].each {|method| method[:href] = href }
      end
      doc
    end

    # Registers documentation node either as class or as member of
    # some class.
    def register(node)
+2 −2
Original line number Diff line number Diff line
@@ -41,8 +41,8 @@ module JsDuck
      filenames.each do |fname|
        puts "Parsing #{fname} ..." if @verbose
        code = IO.read(fname)
        agr.parse(code)
        src.write(code, fname)
        src_fname = src.write(code, fname)
        agr.parse(code, File.basename(src_fname))
      end
      agr.result
    end
+4 −2
Original line number Diff line number Diff line
@@ -14,9 +14,11 @@ module JsDuck
    end

    # Converts source to HTML and writes into file in output
    # directory.
    # directory.  It returns the name of the file that it wrote.
    def write(source, filename)
      File.open(html_filename(filename), 'w') {|f| f.write(format(source)) }
      fname = html_filename(filename)
      File.open(fname, 'w') {|f| f.write(format(source)) }
      fname
    end

    def html_filename(filename)
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ module JsDuck

    def signature(item)
      id = @cls.full_name+ "-" + item[:name]
      src = "source/sample.html#" + id
      src = "source/#{item[:href]}"
      return "<a id='#{id}'></a><b><a href='#{src}'>#{item[:name]}</a></b>" + signature_suffix(item)
    end