class ApiDiff::Type

Attributes

fully_qualified_name[R]
functions[RW]
name[R]
parents[RW]
properties[RW]

Public Class Methods

new(name, fully_qualified_name) click to toggle source
# File lib/api_diff/type.rb, line 10
def initialize(name, fully_qualified_name)
  @name = name
  @fully_qualified_name = fully_qualified_name
  @parents = []
  @functions = []
  @properties = []
end
type_name() click to toggle source
# File lib/api_diff/type.rb, line 3
def self.type_name
  name.split('::').last.downcase
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/api_diff/type.rb, line 40
def <=>(other)
  name <=> other.name
end
declaration(fully_qualified_name: false) click to toggle source
# File lib/api_diff/type.rb, line 22
def declaration(fully_qualified_name: false)
  name = fully_qualified_name ? self.fully_qualified_name : self.name
  result = "#{self.class.type_name} #{name}"
  result += " : #{parents.join(", ")}" if has_parents?
  result
end
has_parents?() click to toggle source
# File lib/api_diff/type.rb, line 29
def has_parents?
  not @parents.empty?
end
package() click to toggle source
# File lib/api_diff/type.rb, line 18
def package
  fully_qualified_name.split(".")[0..-2].join(".")
end
sections() click to toggle source
# File lib/api_diff/type.rb, line 33
def sections
  [
    properties.sort,
    functions.sort
  ]
end
to_s(fully_qualified_name: true) click to toggle source
# File lib/api_diff/type.rb, line 44
def to_s(fully_qualified_name: true)
  body = sections.map { |s| s.empty? ? nil : s }.compact # remove empty sections
  body.map! { |s| s.map { |entry| "    #{entry}" } }  # convert every entry in every section into a string and indent it
  body.map! { |s| s.join("\n") }  # join all entries into a long string
  [
    "#{declaration(fully_qualified_name: fully_qualified_name)} {",
    body.join("\n\n"),
    "}"
  ].join("\n")
end