Module: Audrey::Util

Defined in:
lib/audrey.rb

Overview

Audrey::Util

Constant Summary collapse

RCLASS_FROM_FCLASS_CACHE =

rclass_from_fclass

{}
@@CUSTOM_CLASSES =

custom_class?

{}

Class Method Summary collapse

Class Method Details

.custom_class?(fclass) ⇒ Boolean

Returns:

  • (Boolean)


1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
# File 'lib/audrey.rb', line 1499

def self.custom_class?(fclass)
	# $tm.hrm
	
	# cache
	if not @@CUSTOM_CLASSES.has_key?(fclass)
		# puts fclass
		@@CUSTOM_CLASSES[fclass] = rclass_from_fclass(fclass) < Audrey::Object::Custom
	end
	
	# return
	return @@CUSTOM_CLASSES[fclass]
end

.fclass_fco(fclass) ⇒ Object


fclass_fco, fclass_isolate



1458
1459
1460
# File 'lib/audrey.rb', line 1458

def self.fclass_fco(fclass)
	return self.rclass_from_fclass(fclass).fco
end

.fclass_isolate(fclass) ⇒ Object



1462
1463
1464
# File 'lib/audrey.rb', line 1462

def self.fclass_isolate(fclass)
	return self.rclass_from_fclass(fclass).isolate
end

.graph_field?(fclass, hkey) ⇒ Boolean


graph_field?

Returns:

  • (Boolean)


1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
# File 'lib/audrey.rb', line 1473

def self.graph_field?(fclass, hkey)
	# $tm.hrm
	
	if fclass and Module.const_defined?(fclass)
		clss = Module.const_get(fclass)
		
		if clss.respond_to?('fields')
			if dfn = clss.fields[hkey]
				return dfn.graph
			end
		end
	end
	
	# if we get this far then it's not a graph field
	return false
end

.randstr(len = 5) ⇒ Object


randstr Always returns a string consisting of just alphabetic characters. String is untainted.



1419
1420
1421
# File 'lib/audrey.rb', line 1419

def self.randstr(len=5)
	return (0...len).map { ('a'..'z').to_a[rand(26)] }.join.untaint
end

.rclass_from_fclass(fclass) ⇒ Object



1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
# File 'lib/audrey.rb', line 1432

def self.rclass_from_fclass(fclass)
	if early = RCLASS_FROM_FCLASS_CACHE[fclass]
		return early
	end
	
	if Module.const_defined?(fclass)
		rclass = Module.const_get(fclass)
		
		if rclass < Audrey::Object
			RCLASS_FROM_FCLASS_CACHE[fclass] = rclass
			return rclass
		else
			raise 'not-custom-class: ' + fclass.to_s
		end
	else
		raise 'unknown-fclass: ' + fclass.to_s
	end
end

.uuidObject


uuid



1406
1407
1408
# File 'lib/audrey.rb', line 1406

def self.uuid
	return SecureRandom.uuid
end