58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
|  | module OrbitApp | ||
|  |     module Plugin | ||
|  |       module Registration | ||
|  |       Version = "0.1" | ||
|  | 
 | ||
|  |         module ClassMethods | ||
|  |             @@registrations = [] | ||
|  | 
 | ||
|  |           def new( name ,&block) | ||
|  |             @@registrations << DataSheet.new(name,&block) | ||
|  |           end | ||
|  | 
 | ||
|  |           def new_from_module_app(name,base_path,arg) | ||
|  |             @@registrations << DataSheet.new(name,arg,:base_path=>base_path) | ||
|  |           end | ||
|  | 
 | ||
|  |           def find_by_key(key) | ||
|  |             @@registrations.each{|t| | ||
|  |               return t if t.name == key | ||
|  |             } | ||
|  |             return nil | ||
|  |           end | ||
|  | 
 | ||
|  |           def all | ||
|  |             return @@registrations | ||
|  |           end | ||
|  |         end | ||
|  |        | ||
|  |         extend ClassMethods | ||
|  |         def self.included( other ) | ||
|  |           other.extend( ClassMethods ) | ||
|  |         end | ||
|  | 
 | ||
|  |         class DataSheet | ||
|  |           attr_reader :name | ||
|  |           attr_reader :base_path | ||
|  | 
 | ||
|  | 
 | ||
|  |           def initialize(name,partial=nil,*args ,&block) | ||
|  |             @base_path = args[0][:base_path] | ||
|  |             @name = name | ||
|  |             @partial_path = '' | ||
|  | 
 | ||
|  |             unless partial.nil? | ||
|  |               @partial_path = partial[:path] | ||
|  |             end | ||
|  | 
 | ||
|  |             block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? | ||
|  |           end | ||
|  | 
 | ||
|  |           def profile_partial_path | ||
|  |             return  @partial_path | ||
|  |           end | ||
|  |      | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |