git-subtree-dir: vendor/git.knownelement.com/ExternalVendorCode/mo git-subtree-split: 7e86c1a5f525f352983077d743c2ce2f5d75f4fa
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| # Example for how #29 can get implemented.
 | |
| 
 | |
| cd "$(dirname "$0")" # Go to the script's directory
 | |
| 
 | |
| foreach() {
 | |
|     # Trying to use unique names
 | |
|     local foreachSourceName foreachIterator foreachEvalString foreachContent
 | |
| 
 | |
|     foreachContent=$(cat)
 | |
| 
 | |
|     local x
 | |
|     x=("${@}")
 | |
|     if [[ "$2" != "as" && "$2" != "in" ]]; then
 | |
|         echo "Invalid foreach - bad format."
 | |
|     elif [[ "$(declare -p "$1")" != "declare -"[aA]* ]]; then
 | |
|         echo "$1 is not an array"
 | |
|     else
 | |
|         foreachSourceName="${1}[@]"
 | |
| 
 | |
|         for foreachIterator in "${!foreachSourceName}"; do
 | |
|             foreachEvalString=$(declare -p "$foreachIterator")
 | |
|             foreachEvalString="declare -A $3=${foreachEvalString#*=}"
 | |
|             eval "$foreachEvalString"
 | |
|             echo "$foreachContent" | mo
 | |
|         done
 | |
|     fi
 | |
| }
 | |
| 
 | |
| 
 | |
| # The links are associative arrays
 | |
| declare -A resque hub rip
 | |
| resque=([name]=Resque [url]=http://example.com/resque)
 | |
| hub=([name]=Hub [url]=http://example.com/hub)
 | |
| rip=([name]=Rip [url]=http://example.com/rip)
 | |
| 
 | |
| # This is a list of the link arrays
 | |
| links=(resque hub rip)
 | |
| 
 | |
| # Source mo in order to work with arrays
 | |
| . ../mo
 | |
| 
 | |
| # Process the template
 | |
| cat <<EOF | mo --allow-function-arguments
 | |
| Here are your links:
 | |
| {{#foreach 'links' 'as' 'link'}}
 | |
|  * [{{link.name}}]({{link.url}})
 | |
| {{/foreach 'links' 'as' 'link'}}
 | |
| 
 | |
| EOF
 |