class ApiDiff::Api

Attributes

classes[RW]
enums[RW]
interfaces[RW]
structs[RW]

Public Class Methods

new() click to toggle source
# File lib/api_diff/api.rb, line 5
def initialize
  @classes = []
  @structs = []
  @interfaces = []
  @enums = []
end

Public Instance Methods

class(named: nil, fully_qualified_name: nil) click to toggle source
# File lib/api_diff/api.rb, line 12
def class(named: nil, fully_qualified_name: nil)
  classes.find { |c| c.name == named || c.fully_qualified_name == fully_qualified_name }
end
enum(named: nil, fully_qualified_name: nil) click to toggle source
# File lib/api_diff/api.rb, line 24
def enum(named: nil, fully_qualified_name: nil)
  enums.find { |e| e.name == named || e.fully_qualified_name == fully_qualified_name }
end
interface(named: nil, fully_qualified_name: nil) click to toggle source
# File lib/api_diff/api.rb, line 20
def interface(named: nil, fully_qualified_name: nil)
  interfaces.find { |i| i.name == named || i.fully_qualified_name == fully_qualified_name }
end
struct(named: nil, fully_qualified_name: nil) click to toggle source
# File lib/api_diff/api.rb, line 16
def struct(named: nil, fully_qualified_name: nil)
  structs.find { |s| s.name == named || s.fully_qualified_name == fully_qualified_name }
end
to_s(fully_qualified_names: true, order: :global) click to toggle source
# File lib/api_diff/api.rb, line 28
def to_s(fully_qualified_names: true, order: :global)
  result = []
  if order == "global"
    result << (enums + interfaces + classes).sort.map { |e| e.to_s(fully_qualified_name: fully_qualified_names) }
  elsif order == "fqn"
    types = enums + interfaces + classes
    type_order = { "enum" => 1, "interface" => 2, "class" => 3 }
    types.sort! do |t1, t2|
      [t1.package, type_order[t1.class.type_name], t1.name] <=> [t2.package, type_order[t2.class.type_name], t2.name]
    end
    result << types.map { |e| e.to_s(fully_qualified_name: fully_qualified_names) }
  else
    result << enums.sort.map { |e| e.to_s(fully_qualified_name: fully_qualified_names) }
    result << interfaces.sort.map { |i| i.to_s(fully_qualified_name: fully_qualified_names) }
    result << classes.sort.map { |c| c.to_s(fully_qualified_name: fully_qualified_names) }
  end
  result.flatten.join("\n\n")
end