Sha256: 656d9ca8cb51b454a7f5c7c04ba355419db8c1283f90b58df8e722c272f8ce6b
Contents?: true
Size: 1.69 KB
Versions: 2
Compression:
Stored size: 1.69 KB
Contents
module JsDuck # Creates list of all members in all classes that is used by the # searching feature in UI. class Members # Given list of class documentation objects returns an array of # hashes describing all the members. def create(docs) list = [] docs.each do |cls| list << class_node(cls) [:cfg, :property, :method, :event].each do |type| cls.members(type).each do |m| # skip inherited items and constructors if m[:member] == cls.full_name && m[:name] != cls.short_name list << member_node(m, cls) end end end end list end # Creates structure representing one class def class_node(cls) return { :cls => cls.full_name, :member => cls.short_name, :type => :cls, :doc => short_desc(cls[:doc]) } end # Creates structure representing one member def member_node(member, cls) return { :cls => cls.full_name, :member => member[:name], :type => member[:tagname], :doc => short_desc(member[:doc]) } end def short_desc(str) tagless = first_sentence(strip_tags(strip_links(str))) if tagless.length > 120 short_doc = tagless[0..116] ellipsis = tagless.length > short_doc.length ? "..." : "" tagless[0..116] + ellipsis else tagless end end def strip_tags(str) str.gsub(/<.*?>/, "") end def strip_links(str) str = str.gsub(/\{@link +(\S*?)(?: +(.+?))?\}/, "\\1") str = str.gsub(/#/, ".") end def first_sentence(str) str.sub(/\A(.+?\.)\s.*\Z/m, "\\1") end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jsduck-0.6.1 | lib/jsduck/members.rb |
jsduck-0.6 | lib/jsduck/members.rb |