mirror of
				https://github.com/go-task/task.git
				synced 2025-10-30 23:58:01 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			780 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			780 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package taskfile
 | |
| 
 | |
| type (
 | |
| 	NodeOption func(*BaseNode)
 | |
| 	// BaseNode is a generic node that implements the Parent() methods of the
 | |
| 	// NodeReader interface. It does not implement the Read() method and it
 | |
| 	// designed to be embedded in other node types so that this boilerplate code
 | |
| 	// does not need to be repeated.
 | |
| 	BaseNode struct {
 | |
| 		parent Node
 | |
| 		dir    string
 | |
| 	}
 | |
| )
 | |
| 
 | |
| func NewBaseNode(dir string, opts ...NodeOption) *BaseNode {
 | |
| 	node := &BaseNode{
 | |
| 		parent: nil,
 | |
| 		dir:    dir,
 | |
| 	}
 | |
| 
 | |
| 	// Apply options
 | |
| 	for _, opt := range opts {
 | |
| 		opt(node)
 | |
| 	}
 | |
| 
 | |
| 	return node
 | |
| }
 | |
| 
 | |
| func WithParent(parent Node) NodeOption {
 | |
| 	return func(node *BaseNode) {
 | |
| 		node.parent = parent
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (node *BaseNode) Parent() Node {
 | |
| 	return node.parent
 | |
| }
 | |
| 
 | |
| func (node *BaseNode) Dir() string {
 | |
| 	return node.dir
 | |
| }
 |