Commit 85ad5328 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Fix writing to stdout.

Created Stdout class that merges arrays from multiple sources together
and then finally writes all to STDOUT.
parent 0dc0fd55
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ require 'jsduck/app_exporter'
require 'jsduck/examples_exporter'
require 'jsduck/inline_examples'
require 'jsduck/guide_writer'
require 'jsduck/stdout'
require 'fileutils'

module JsDuck
@@ -67,6 +68,7 @@ module JsDuck
          gw = GuideWriter.new(exporters[@opts.export], @assets.guides, @opts)
          gw.write(@opts.output_dir, ".json")
        end
        Stdout.instance.flush
      else
        FileUtils.rm_rf(@opts.output_dir)
        TemplateDir.new(@opts).write
+2 −2
Original line number Diff line number Diff line
require 'jsduck/parallel_wrap'
require 'jsduck/logger'
require 'jsduck/json_duck'
require 'jsduck/stdout'
require 'fileutils'

module JsDuck
@@ -25,7 +25,7 @@ module JsDuck

    def write_stdout
      json = @parallel.map(@relations.classes) {|cls| @exporter.export(cls) }.compact
      puts JsonDuck.generate(json)
      Stdout.instance.add(json)
    end

    def write_dir(dir, extension)
+2 −2
Original line number Diff line number Diff line
require 'jsduck/parallel_wrap'
require 'jsduck/logger'
require 'jsduck/json_duck'
require 'jsduck/stdout'
require 'fileutils'

module JsDuck
@@ -25,7 +25,7 @@ module JsDuck

    def write_stdout
      json = @parallel.map(all_guides) {|guide| @exporter.export_guide(guide) }.compact
      puts JsonDuck.generate(json)
      Stdout.instance.add(json)
    end

    def write_dir(dir, extension)

lib/jsduck/stdout.rb

0 → 100644
+31 −0
Original line number Diff line number Diff line
require 'jsduck/json_duck'
require 'singleton'

module JsDuck

  # Central place for buffering JSON data that's meant to be written to STDOUT
  class Stdout
    include Singleton

    def initialize
      @data = nil
    end

    # Adds array of new data
    def add(data)
      if @data
        @data += data
      else
        @data = data
      end
    end

    # Writes data to STDOUT in JSON format,
    # but only if some data was added.
    def flush
      puts JsonDuck.generate(@data) if @data
    end

  end

end