Loading lib/jsduck/old_versions.rb +17 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ module JsDuck end def current_version NullObject.new(:[] => {}) NullObject.new(:[] => NullObject.new(:[] => true)) end # Reads in data from all .json files in directory Loading Loading @@ -55,12 +55,26 @@ module JsDuck # classes/members. def generate_since_tags(versions, relations) relations.each do |cls| cls[:meta][:since] = available_since(versions, cls) cls[:meta][:since] = class_since(versions, cls) cls.all_local_members.each do |m| m[:meta][:since] = member_since(versions, cls, m) 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 available_since(versions, cls) def class_since(versions, cls) versions.each do |ver| return ver[:version] if ver[:classes][cls[:name]] cls[:alternateClassNames].each do |name| Loading spec/old_versions_spec.rb +22 −4 Original line number Diff line number Diff line Loading @@ -6,12 +6,12 @@ describe "JsDuck::OldVersions#generate_since_tags" do @versions = [ { :version => "1.0", :classes => { "VeryOldClass" => {}, "VeryOldClass" => {"cfg-foo" => true}, }, }, { :version => "2.0", :classes => { "VeryOldClass" => {}, "VeryOldClass" => {"cfg-foo" => true, "cfg-bar" => true}, "OldClass" => {}, "ClassWithOldName" => {}, }, Loading @@ -20,12 +20,18 @@ describe "JsDuck::OldVersions#generate_since_tags" do :version => "3.0", :classes => JsDuck::OldVersions.current_version } ] @relations = [ {:name => "VeryOldClass", :meta => {}, :alternateClassNames => []}, {:name => "VeryOldClass", :meta => {}, :alternateClassNames => [], :members => { :cfg => [{:id => "cfg-foo", :meta => {}}], :method => [{:id => "cfg-bar", :meta => {}}], :event => [{:id => "event-baz", :meta => {}}], }}, {:name => "OldClass", :meta => {}, :alternateClassNames => []}, {:name => "NewClass", :meta => {}, :alternateClassNames => []}, {:name => "ClassWithNewName", :meta => {}, :alternateClassNames => ["ClassWithOldName"]}, ] ].map {|cfg| JsDuck::Class.new(cfg) } JsDuck::OldVersions.generate_since_tags(@versions, @relations) end Loading @@ -45,4 +51,16 @@ describe "JsDuck::OldVersions#generate_since_tags" do @relations[3][:meta][:since].should == "2.0" end it "adds @since 1.0 to VeryOldClass#cfg-foo" do @relations[0][:members][:cfg][0][:meta][:since].should == "1.0" end it "adds @since 2.0 to VeryOldClass#method-bar" do @relations[0][:members][:method][0][:meta][:since].should == "2.0" end it "adds @since 3.0 to VeryOldClass#event-baz" do @relations[0][:members][:event][0][:meta][:since].should == "3.0" end end Loading
lib/jsduck/old_versions.rb +17 −3 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ module JsDuck end def current_version NullObject.new(:[] => {}) NullObject.new(:[] => NullObject.new(:[] => true)) end # Reads in data from all .json files in directory Loading Loading @@ -55,12 +55,26 @@ module JsDuck # classes/members. def generate_since_tags(versions, relations) relations.each do |cls| cls[:meta][:since] = available_since(versions, cls) cls[:meta][:since] = class_since(versions, cls) cls.all_local_members.each do |m| m[:meta][:since] = member_since(versions, cls, m) 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 available_since(versions, cls) def class_since(versions, cls) versions.each do |ver| return ver[:version] if ver[:classes][cls[:name]] cls[:alternateClassNames].each do |name| Loading
spec/old_versions_spec.rb +22 −4 Original line number Diff line number Diff line Loading @@ -6,12 +6,12 @@ describe "JsDuck::OldVersions#generate_since_tags" do @versions = [ { :version => "1.0", :classes => { "VeryOldClass" => {}, "VeryOldClass" => {"cfg-foo" => true}, }, }, { :version => "2.0", :classes => { "VeryOldClass" => {}, "VeryOldClass" => {"cfg-foo" => true, "cfg-bar" => true}, "OldClass" => {}, "ClassWithOldName" => {}, }, Loading @@ -20,12 +20,18 @@ describe "JsDuck::OldVersions#generate_since_tags" do :version => "3.0", :classes => JsDuck::OldVersions.current_version } ] @relations = [ {:name => "VeryOldClass", :meta => {}, :alternateClassNames => []}, {:name => "VeryOldClass", :meta => {}, :alternateClassNames => [], :members => { :cfg => [{:id => "cfg-foo", :meta => {}}], :method => [{:id => "cfg-bar", :meta => {}}], :event => [{:id => "event-baz", :meta => {}}], }}, {:name => "OldClass", :meta => {}, :alternateClassNames => []}, {:name => "NewClass", :meta => {}, :alternateClassNames => []}, {:name => "ClassWithNewName", :meta => {}, :alternateClassNames => ["ClassWithOldName"]}, ] ].map {|cfg| JsDuck::Class.new(cfg) } JsDuck::OldVersions.generate_since_tags(@versions, @relations) end Loading @@ -45,4 +51,16 @@ describe "JsDuck::OldVersions#generate_since_tags" do @relations[3][:meta][:since].should == "2.0" end it "adds @since 1.0 to VeryOldClass#cfg-foo" do @relations[0][:members][:cfg][0][:meta][:since].should == "1.0" end it "adds @since 2.0 to VeryOldClass#method-bar" do @relations[0][:members][:method][0][:meta][:since].should == "2.0" end it "adds @since 3.0 to VeryOldClass#event-baz" do @relations[0][:members][:event][0][:meta][:since].should == "3.0" end end