lib/thing.js
function thing(type, value) {
	if (arguments.length < 2) {
		if (instance(type, Thing)) {
			return type;
		}

		value = type;
		type = typeof value === 'string' || typeof value === 'number' || instance(value, RegExp) ?
			'text' :
			'unknown';
	}

	return instance(value, Promise) ?
		value.then(
			thing.bind(null, type)
		) :
		new Thing(type, value);
}
function thing(type, value) {
	if (arguments.length < 2) {
		if (instance(type, Thing)) {
			return type;
		}

		value = type;
		type = typeof value === 'string' || typeof value === 'number' || instance(value, RegExp) ?
			'text' :
			'unknown';
	}

	return instance(value, Promise) ?
		value.then(
			thing.bind(null, type)
		) :
		new Thing(type, value);
}
function thing ( type , value ) { if ( arguments . length < 2 ) { if ( instance ( type , Thing ) ) { return type ; } value = type ; type = typeof value === 'string' || typeof value === 'number' || instance ( value , RegExp ) ? 'text' : 'unknown' ; } return instance ( value , Promise ) ? value . then ( thing . bind ( null , type ) ) : new Thing ( type , value ) ; }
References given `value` as {@link #Thing|Thing} of given `type`.
@param {string} type Thing {@link #Thing#type|type}.
@param {*} value Thing {@link #Thing#value|value}.
@returns {Thing}
@throws {TypeError}
@see {@link #is|is}, {@link #no|no}, {@link #Thing|Thing}
@thing
References given value as {