lib/inch/language/nodejs/provider/jsdoc/object.rb in inch-0.5.0.rc5 vs lib/inch/language/nodejs/provider/jsdoc/object.rb in inch-0.5.0.rc6

- old
+ new

@@ -1,5 +1,10 @@ +require 'inch/language/nodejs/provider/jsdoc/object/base' +require 'inch/language/nodejs/provider/jsdoc/object/function_object' +require 'inch/language/nodejs/provider/jsdoc/object/module_object' +require 'inch/language/nodejs/provider/jsdoc/object/member_object' + module Inch module Language module Nodejs module Provider module JSDoc @@ -15,37 +20,40 @@ # # @param jsdoc_object [Hash] # @return [Provider::JSDoc::Object] def for(jsdoc_object) @cache ||= {} - if proxy_object = @cache[cache_key(jsdoc_object)] + if (proxy_object = @cache[cache_key(jsdoc_object)]) proxy_object else @cache[cache_key(jsdoc_object)] = class_for(jsdoc_object).new(jsdoc_object) end end private - # Returns a Proxy class for the given +jsdoc_object+ + # Returns a Proxy class for the given +json_object+ # - # @param jsdoc_object [Hash] + # @param json_object [Hash] # @return [Class] - def class_for(jsdoc_object) - class_name = jsdoc_object.class.to_s.split("::").last - const_get(class_name) + def class_for(json_object) + class_name = json_object['kind'].capitalize + 'Object' + JSDoc::Object.const_get(class_name) rescue NameError - Base + JSDoc::Object::Base end # Returns a cache key for the given +jsdoc_object+ # # @param jsdoc_object [Hash] # @return [String] def cache_key(jsdoc_object) return if jsdoc_object['meta'].nil? - "#{jsdoc_object['meta']['path']}/#{jsdoc_object['meta']['path']}:#{jsdoc_object['meta']['lineno']}" + "#{jsdoc_object['longname']}/" \ + "#{jsdoc_object['meta']['path']}/" \ + "#{jsdoc_object['meta']['filename']}:" \ + "#{jsdoc_object['meta']['lineno']}" end end end end end