module Sus::It

def self.build(parent, description = nil, &block)

def self.build(parent, description = nil, &block)
	base = Class.new(parent)
	base.extend(It)
	base.description = description
	base.identity = Identity.nested(parent.identity, base.description)
	
	if block_given?
		base.define_method(:call, &block)
	end
	
	return base
end

def call(assertions)

def call(assertions)
	assertions.nested(self, identity: self.identity, isolated: true, measure: true) do |assertions|
		instance = self.new(assertions)
		
		instance.around do
			instance.call
		end
	end
end

def leaf?

def leaf?
	true
end

def print(output)

def print(output)
	self.superclass.print(output)
	
	if description = self.description
		output.write(" it ", :it, description, :reset, " ", :identity, self.identity.to_s, :reset)
	else
		output.write(" and ", :identity, self.identity.to_s, :reset)
	end
end