Loading lib/jsduck/js/method.rb +5 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,11 @@ module JsDuck elsif ast.property? && ast["value"].function? make(ast["key"].key_value, ast["value"]) # Object.defineProperty(obj, "prop", {value: function() {} }) elsif exp && (value = exp.value_of_define_property) && detect(value) name = exp["arguments"][1].to_value make(name, value) else nil end Loading lib/jsduck/js/node.rb +11 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,17 @@ module JsDuck end end # Returns the value field from Object.defineProperty call # descriptor object. def value_of_define_property return unless define_property? descriptor = child("arguments")[2] descriptor.each_property do |key, value, prop| return value if key == "value" end end # Returns line number in parsed source where the Node resides. def linenr # Get line number from third place at range array. Loading lib/jsduck/js/property.rb +1 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ module JsDuck # Object.defineProperty(obj, "prop", {value: x}) elsif exp && exp.define_property? name = exp["arguments"][1].to_value descriptor = exp["arguments"][2] make(name, value_from_descriptor(descriptor)) make(name, exp.value_of_define_property) else nil Loading spec/aggregator_method_spec.rb +13 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,19 @@ describe JsDuck::Aggregator do it_should_behave_like "method" end describe "Object.defineProperty with function value" do before do @doc = parse_method(<<-EOS) /** Some function */ Object.defineProperty(this, 'foo', { writable: false, value: function() { return true; } }); EOS end it_should_behave_like "method" end describe "doc-comment followed by 'function'" do before do @doc = parse_method("/** Some function */ 'function';") Loading Loading
lib/jsduck/js/method.rb +5 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,11 @@ module JsDuck elsif ast.property? && ast["value"].function? make(ast["key"].key_value, ast["value"]) # Object.defineProperty(obj, "prop", {value: function() {} }) elsif exp && (value = exp.value_of_define_property) && detect(value) name = exp["arguments"][1].to_value make(name, value) else nil end Loading
lib/jsduck/js/node.rb +11 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,17 @@ module JsDuck end end # Returns the value field from Object.defineProperty call # descriptor object. def value_of_define_property return unless define_property? descriptor = child("arguments")[2] descriptor.each_property do |key, value, prop| return value if key == "value" end end # Returns line number in parsed source where the Node resides. def linenr # Get line number from third place at range array. Loading
lib/jsduck/js/property.rb +1 −2 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ module JsDuck # Object.defineProperty(obj, "prop", {value: x}) elsif exp && exp.define_property? name = exp["arguments"][1].to_value descriptor = exp["arguments"][2] make(name, value_from_descriptor(descriptor)) make(name, exp.value_of_define_property) else nil Loading
spec/aggregator_method_spec.rb +13 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,19 @@ describe JsDuck::Aggregator do it_should_behave_like "method" end describe "Object.defineProperty with function value" do before do @doc = parse_method(<<-EOS) /** Some function */ Object.defineProperty(this, 'foo', { writable: false, value: function() { return true; } }); EOS end it_should_behave_like "method" end describe "doc-comment followed by 'function'" do before do @doc = parse_method("/** Some function */ 'function';") Loading