33 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Awk
		
	
	
	
	
	
# a no-nonsense source-to-markdown generator which scans for:
 | 
						|
#
 | 
						|
# /**
 | 
						|
#  * # foo
 | 
						|
#  *
 | 
						|
#  * this is markdown $(cat bar.md)
 | 
						|
#  */
 | 
						|
#
 | 
						|
#  var foo; //  comment with 2 leading spaces is markdown too $(date)
 | 
						|
#
 | 
						|
# easily refactorable to hash-based languages (py/bash/perl/lua e.g.) 
 | 
						|
# by changing the regexes
 | 
						|
#
 | 
						|
/\$\(/                   { cmd=$0; 
 | 
						|
                           gsub(/^.*\$\(/,"",cmd); 
 | 
						|
                           gsub(/\).*/,"",cmd);
 | 
						|
                           cmd | getline stdout; close(cmd);
 | 
						|
                           sub(/\$\(.*\)/,stdout);
 | 
						|
                         } 
 | 
						|
/\/\*\*/                 { doc=1; sub(/^.*\/\*/,""); }
 | 
						|
doc && /\*\//            { doc=0;
 | 
						|
                           sub(/[[:space:]]*\*\/.*/,"");
 | 
						|
                           sub(/^[[:space:]]*\*[[:space:]]?/,"");
 | 
						|
                           print
 | 
						|
                         }
 | 
						|
doc && /^[[:space:]]*\*/ { sub(/^[[:space:]]*\*[[:space:]]?/,""); 
 | 
						|
                           print 
 | 
						|
                         }
 | 
						|
!doc && /\/\/  /         { sub(".*//  ",""); 
 | 
						|
                           sub("# ","\n# ");
 | 
						|
                           sub("> ","\n> ");
 | 
						|
                           print
 | 
						|
                         }
 |