Loading Rakefile +5 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,11 @@ task :sdk => :sass do "--output", OUT_DIR, "--config", "#{SDK_DIR}/extjs/docs/config.json", "--examples-base-url", "extjs-build/examples/", "--import", "Ext JS 2:compare/ext23", "--import", "Ext JS 3:compare/ext34", "--import", "Ext JS 4.0.7:compare/ext407", "--import", "Ext JS 4.1.0:compare/ext410", "--import", "Ext JS 4.1.1", "--seo", "--tests" ) Loading lib/jsduck/app.rb +2 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ require 'jsduck/logger' require 'jsduck/assets' require 'jsduck/json_duck' require 'jsduck/io' require 'jsduck/importer' require 'jsduck/lint' require 'jsduck/template_dir' require 'jsduck/class_writer' Loading Loading @@ -46,6 +47,7 @@ module JsDuck result = aggregate(parsed_files) @relations = filter_classes(result) InheritDoc.new(@relations).resolve_all Importer.import(@opts.imports, @relations) Lint.new(@relations).run # Initialize guides, videos, examples, ... Loading lib/jsduck/importer.rb 0 → 100644 +97 −0 Original line number Diff line number Diff line require 'jsduck/json_duck' require 'jsduck/null_object' module JsDuck # Reads in JSDuck exports of different versions of docs. module Importer module_function # Loads in exported docs and generates @since and @new tags based on that data. def import(imports, relations) if imports.length > 0 generate_since_tags(read_all(imports), relations) end end # Reads in data for all versions, returning array of # version/class-data pairs. We don't use a hash to preserve the # order of versions (from oldest to newest). def read_all(imports) imports.map do |ver| { :version => ver[:version], :classes => ver[:path] ? read(ver[:path]) : current_version, } end end def current_version NullObject.new(:[] => NullObject.new(:[] => true)) end # Reads in data from all .json files in directory def read(path) classes = {} Dir[path + "/*.json"].each do |filename| json = JsonDuck.read(filename) classes[json["name"]] = members_id_index(json) end classes end # creates index of all class members def members_id_index(json) index = {} ["members", "statics"].each do |group_name| json[group_name].each_pair do |tagname, members| members.each do |m| index[m["id"]] = true end end end index end # Using the imported versions data, adds @since tags to all # classes/members. def generate_since_tags(versions, relations) last_version = versions.last[:version] relations.each do |cls| v = cls[:meta][:since] || class_since(versions, cls) cls[:meta][:since] = v cls[:meta][:new] = true if v == last_version cls.all_local_members.each do |m| v = m[:meta][:since] || member_since(versions, cls, m) m[:meta][:since] = v m[:meta][:new] = true if v == last_version end end end def member_since(versions, cls, m) versions.each do |ver| c = ver[:classes][cls[:name]] return ver[:version] if c && c[m[:id]] cls[:alternateClassNames].each do |name| c = ver[:classes][name] return ver[:version] if c && c[m[:id]] end end end # Returns name of the version since which the class is available def class_since(versions, cls) versions.each do |ver| return ver[:version] if ver[:classes][cls[:name]] cls[:alternateClassNames].each do |name| return ver[:version] if ver[:classes][name] end end end end end lib/jsduck/options.rb +13 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ module JsDuck attr_accessor :local_storage_db attr_accessor :touch_examples_ui attr_accessor :ext_namespaces attr_accessor :imports def initialize @input_files = [] Loading Loading @@ -112,6 +113,7 @@ module JsDuck @local_storage_db = "docs" @touch_examples_ui = false @ext_namespaces = ["Ext"] @imports = [] # enable all warnings except :link_auto Logger.instance.set_warning(:all, true) Loading Loading @@ -360,6 +362,17 @@ module JsDuck @ext_namespaces = ns end opts.on('--import=VERSION:PATH', "Imports docs of a particular version generating @since tags.", "Several versions can be imported using the option multiple times.", "To specify the current version, leave the :PATH portion off.", " ") do |v| if v =~ /\A(.*?):(.*)\Z/ @imports << {:version => $1, :path => canonical($2)} else @imports << {:version => v} end end opts.on('--config=PATH', "Loads config options from JSON file.", " ") do |path| path = canonical(path) Loading lib/jsduck/tag/new.rb 0 → 100644 +20 −0 Original line number Diff line number Diff line require "jsduck/meta_tag" require "jsduck/logger" module JsDuck::Tag # Implementation of @new tag. class New < JsDuck::MetaTag def initialize @name = "new" @key = :new @signature = {:long => "★", :short => "★"} # unicode black star char @boolean = true end def to_value(contents) true end end end Loading
Rakefile +5 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,11 @@ task :sdk => :sass do "--output", OUT_DIR, "--config", "#{SDK_DIR}/extjs/docs/config.json", "--examples-base-url", "extjs-build/examples/", "--import", "Ext JS 2:compare/ext23", "--import", "Ext JS 3:compare/ext34", "--import", "Ext JS 4.0.7:compare/ext407", "--import", "Ext JS 4.1.0:compare/ext410", "--import", "Ext JS 4.1.1", "--seo", "--tests" ) Loading
lib/jsduck/app.rb +2 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ require 'jsduck/logger' require 'jsduck/assets' require 'jsduck/json_duck' require 'jsduck/io' require 'jsduck/importer' require 'jsduck/lint' require 'jsduck/template_dir' require 'jsduck/class_writer' Loading Loading @@ -46,6 +47,7 @@ module JsDuck result = aggregate(parsed_files) @relations = filter_classes(result) InheritDoc.new(@relations).resolve_all Importer.import(@opts.imports, @relations) Lint.new(@relations).run # Initialize guides, videos, examples, ... Loading
lib/jsduck/importer.rb 0 → 100644 +97 −0 Original line number Diff line number Diff line require 'jsduck/json_duck' require 'jsduck/null_object' module JsDuck # Reads in JSDuck exports of different versions of docs. module Importer module_function # Loads in exported docs and generates @since and @new tags based on that data. def import(imports, relations) if imports.length > 0 generate_since_tags(read_all(imports), relations) end end # Reads in data for all versions, returning array of # version/class-data pairs. We don't use a hash to preserve the # order of versions (from oldest to newest). def read_all(imports) imports.map do |ver| { :version => ver[:version], :classes => ver[:path] ? read(ver[:path]) : current_version, } end end def current_version NullObject.new(:[] => NullObject.new(:[] => true)) end # Reads in data from all .json files in directory def read(path) classes = {} Dir[path + "/*.json"].each do |filename| json = JsonDuck.read(filename) classes[json["name"]] = members_id_index(json) end classes end # creates index of all class members def members_id_index(json) index = {} ["members", "statics"].each do |group_name| json[group_name].each_pair do |tagname, members| members.each do |m| index[m["id"]] = true end end end index end # Using the imported versions data, adds @since tags to all # classes/members. def generate_since_tags(versions, relations) last_version = versions.last[:version] relations.each do |cls| v = cls[:meta][:since] || class_since(versions, cls) cls[:meta][:since] = v cls[:meta][:new] = true if v == last_version cls.all_local_members.each do |m| v = m[:meta][:since] || member_since(versions, cls, m) m[:meta][:since] = v m[:meta][:new] = true if v == last_version end end end def member_since(versions, cls, m) versions.each do |ver| c = ver[:classes][cls[:name]] return ver[:version] if c && c[m[:id]] cls[:alternateClassNames].each do |name| c = ver[:classes][name] return ver[:version] if c && c[m[:id]] end end end # Returns name of the version since which the class is available def class_since(versions, cls) versions.each do |ver| return ver[:version] if ver[:classes][cls[:name]] cls[:alternateClassNames].each do |name| return ver[:version] if ver[:classes][name] end end end end end
lib/jsduck/options.rb +13 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ module JsDuck attr_accessor :local_storage_db attr_accessor :touch_examples_ui attr_accessor :ext_namespaces attr_accessor :imports def initialize @input_files = [] Loading Loading @@ -112,6 +113,7 @@ module JsDuck @local_storage_db = "docs" @touch_examples_ui = false @ext_namespaces = ["Ext"] @imports = [] # enable all warnings except :link_auto Logger.instance.set_warning(:all, true) Loading Loading @@ -360,6 +362,17 @@ module JsDuck @ext_namespaces = ns end opts.on('--import=VERSION:PATH', "Imports docs of a particular version generating @since tags.", "Several versions can be imported using the option multiple times.", "To specify the current version, leave the :PATH portion off.", " ") do |v| if v =~ /\A(.*?):(.*)\Z/ @imports << {:version => $1, :path => canonical($2)} else @imports << {:version => v} end end opts.on('--config=PATH', "Loads config options from JSON file.", " ") do |path| path = canonical(path) Loading
lib/jsduck/tag/new.rb 0 → 100644 +20 −0 Original line number Diff line number Diff line require "jsduck/meta_tag" require "jsduck/logger" module JsDuck::Tag # Implementation of @new tag. class New < JsDuck::MetaTag def initialize @name = "new" @key = :new @signature = {:long => "★", :short => "★"} # unicode black star char @boolean = true end def to_value(contents) true end end end