Loading Rakefile +12 −1 Original line number Diff line number Diff line Loading @@ -167,7 +167,7 @@ class JsDuckRunner "--footer", "Ext JS 4.0 Docs - Generated with <a href='https://github.com/senchalabs/jsduck'>JSDuck</a> {VERSION}." + " <a href='http://www.sencha.com/legal/terms-of-use/'>Terms of Use</a>", "--ignore-global", "--no-warnings", "--warnings", "-all", "--images", "#{EXT_BUILD}/docs/doc-resources", "--local-storage-db", "ext-4", "--output", "#{OUT_DIR}", Loading Loading @@ -220,6 +220,17 @@ task :ext4 => :sass do runner.run end desc "Run JSDuck with example test hacks" task :tests => :sass do |t, args| runner = JsDuckRunner.new runner.add_ext4 runner.add_options("--tests") runner.add_debug runner.run system("cp -r #{EXT_BUILD} #{OUT_DIR}/extjs-build") end desc "Run JSDuck on Ext JS from SDK repo (for internal use at Sencha)" task :sdk => :sass do runner = JsDuckRunner.new Loading lib/jsduck/app.rb +21 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ require 'jsduck/index_html' require 'jsduck/api_exporter' require 'jsduck/full_exporter' require 'jsduck/app_exporter' require 'jsduck/examples_exporter' require 'jsduck/inline_examples' require 'jsduck/guide_writer' require 'jsduck/stdout' require 'fileutils' module JsDuck Loading Loading @@ -53,9 +57,18 @@ module JsDuck if @opts.export format_classes FileUtils.rm_rf(@opts.output_dir) unless @opts.output_dir == :stdout exporters = {:full => FullExporter, :api => ApiExporter} exporters = { :full => FullExporter, :api => ApiExporter, :examples => ExamplesExporter, } cw = ClassWriter.new(exporters[@opts.export], @relations, @opts) cw.write(@opts.output_dir, ".json") if @opts.export == :examples 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 Loading @@ -73,6 +86,13 @@ module JsDuck end format_classes if @opts.tests examples = InlineExamples.new examples.add_classes(@relations) examples.add_guides(@assets.guides) examples.write(@opts.output_dir+"/inline-examples.js") end cw = ClassWriter.new(AppExporter, @relations, @opts) cw.write(@opts.output_dir+"/output", ".js") Loading lib/jsduck/app_data.rb +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ module JsDuck :examples => @assets.examples.to_array, :search => SearchData.new.create(@relations.classes, @assets), :stats => @opts.stats ? Stats.new.create(@relations.classes) : [], :tests => @opts.tests, :signatures => MetaTagRegistry.instance.signatures, :localStorageDb => @opts.local_storage_db, :showPrintButton => @opts.seo, Loading lib/jsduck/class_writer.rb +12 −9 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 Loading @@ -24,8 +24,8 @@ module JsDuck private def write_stdout json = @parallel.map(@relations.classes) {|cls| @exporter.export(cls) } puts JsonDuck.generate(json) json = @parallel.map(@relations.classes) {|cls| @exporter.export(cls) }.compact Stdout.instance.add(json) end def write_dir(dir, extension) Loading @@ -34,6 +34,8 @@ module JsDuck filename = dir + "/" + cls[:name] + extension Logger.instance.log("Writing docs", filename) json = @exporter.export(cls) # skip file if exporter returned nil if json if extension == ".json" JsonDuck.write_json(filename, json) elsif extension == ".js" Loading @@ -43,6 +45,7 @@ module JsDuck end end end end end Loading lib/jsduck/examples_exporter.rb 0 → 100644 +56 −0 Original line number Diff line number Diff line require 'jsduck/inline_examples' module JsDuck # Exporter for inline examples. # # It produces the following structure: # # { # :type => :class, # can also be :guide # :name => "Panel", # :examples => [ # {:code => "bla bla", :options => {}}, # {:code => "bla bla", :options => {"raw" => true}}, # ... # ] # } # class ExamplesExporter def initialize(relations, opts) # All params ignored, they're present to be compatible with # other exporters. @inline_examples = InlineExamples.new end # Returns hash of class name and inline examples def export(cls) examples = @inline_examples.extract(cls[:doc]) if examples.length > 0 { :type => :class, :name => cls[:name], :examples => examples, } else nil end end # Returns hash of guide name and inline examples def export_guide(guide) examples = @inline_examples.extract(guide[:html] || "") if examples.length > 0 { :type => :guide, :name => guide["name"], :examples => examples, } else nil end end end end Loading
Rakefile +12 −1 Original line number Diff line number Diff line Loading @@ -167,7 +167,7 @@ class JsDuckRunner "--footer", "Ext JS 4.0 Docs - Generated with <a href='https://github.com/senchalabs/jsduck'>JSDuck</a> {VERSION}." + " <a href='http://www.sencha.com/legal/terms-of-use/'>Terms of Use</a>", "--ignore-global", "--no-warnings", "--warnings", "-all", "--images", "#{EXT_BUILD}/docs/doc-resources", "--local-storage-db", "ext-4", "--output", "#{OUT_DIR}", Loading Loading @@ -220,6 +220,17 @@ task :ext4 => :sass do runner.run end desc "Run JSDuck with example test hacks" task :tests => :sass do |t, args| runner = JsDuckRunner.new runner.add_ext4 runner.add_options("--tests") runner.add_debug runner.run system("cp -r #{EXT_BUILD} #{OUT_DIR}/extjs-build") end desc "Run JSDuck on Ext JS from SDK repo (for internal use at Sencha)" task :sdk => :sass do runner = JsDuckRunner.new Loading
lib/jsduck/app.rb +21 −1 Original line number Diff line number Diff line Loading @@ -20,6 +20,10 @@ require 'jsduck/index_html' require 'jsduck/api_exporter' require 'jsduck/full_exporter' require 'jsduck/app_exporter' require 'jsduck/examples_exporter' require 'jsduck/inline_examples' require 'jsduck/guide_writer' require 'jsduck/stdout' require 'fileutils' module JsDuck Loading Loading @@ -53,9 +57,18 @@ module JsDuck if @opts.export format_classes FileUtils.rm_rf(@opts.output_dir) unless @opts.output_dir == :stdout exporters = {:full => FullExporter, :api => ApiExporter} exporters = { :full => FullExporter, :api => ApiExporter, :examples => ExamplesExporter, } cw = ClassWriter.new(exporters[@opts.export], @relations, @opts) cw.write(@opts.output_dir, ".json") if @opts.export == :examples 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 Loading @@ -73,6 +86,13 @@ module JsDuck end format_classes if @opts.tests examples = InlineExamples.new examples.add_classes(@relations) examples.add_guides(@assets.guides) examples.write(@opts.output_dir+"/inline-examples.js") end cw = ClassWriter.new(AppExporter, @relations, @opts) cw.write(@opts.output_dir+"/output", ".js") Loading
lib/jsduck/app_data.rb +1 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ module JsDuck :examples => @assets.examples.to_array, :search => SearchData.new.create(@relations.classes, @assets), :stats => @opts.stats ? Stats.new.create(@relations.classes) : [], :tests => @opts.tests, :signatures => MetaTagRegistry.instance.signatures, :localStorageDb => @opts.local_storage_db, :showPrintButton => @opts.seo, Loading
lib/jsduck/class_writer.rb +12 −9 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 Loading @@ -24,8 +24,8 @@ module JsDuck private def write_stdout json = @parallel.map(@relations.classes) {|cls| @exporter.export(cls) } puts JsonDuck.generate(json) json = @parallel.map(@relations.classes) {|cls| @exporter.export(cls) }.compact Stdout.instance.add(json) end def write_dir(dir, extension) Loading @@ -34,6 +34,8 @@ module JsDuck filename = dir + "/" + cls[:name] + extension Logger.instance.log("Writing docs", filename) json = @exporter.export(cls) # skip file if exporter returned nil if json if extension == ".json" JsonDuck.write_json(filename, json) elsif extension == ".js" Loading @@ -43,6 +45,7 @@ module JsDuck end end end end end Loading
lib/jsduck/examples_exporter.rb 0 → 100644 +56 −0 Original line number Diff line number Diff line require 'jsduck/inline_examples' module JsDuck # Exporter for inline examples. # # It produces the following structure: # # { # :type => :class, # can also be :guide # :name => "Panel", # :examples => [ # {:code => "bla bla", :options => {}}, # {:code => "bla bla", :options => {"raw" => true}}, # ... # ] # } # class ExamplesExporter def initialize(relations, opts) # All params ignored, they're present to be compatible with # other exporters. @inline_examples = InlineExamples.new end # Returns hash of class name and inline examples def export(cls) examples = @inline_examples.extract(cls[:doc]) if examples.length > 0 { :type => :class, :name => cls[:name], :examples => examples, } else nil end end # Returns hash of guide name and inline examples def export_guide(guide) examples = @inline_examples.extract(guide[:html] || "") if examples.length > 0 { :type => :guide, :name => guide["name"], :examples => examples, } else nil end end end end