| 
					
				 | 
			
			
				@@ -124,6 +124,7 @@ def _MacroRefRe(macro_names): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return re.compile(r'\b(?P<macro_ref>(?P<name>(%s))\((?P<args>.*?)\))' % 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     '|'.join(macro_names)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def _MacroArgRefRe(macro_arg_names): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   # Takes in a list of macro arg names and makes a regex that will match 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   # uses of those args. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -318,25 +319,26 @@ class MacroCollection(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return macro.body 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     assert len(arg_values) == len(macro.args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     args = dict(zip(macro.args, arg_values)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def _lookupArg(match): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       val = args[match.group('name')] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       opt = match.group('option') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if opt: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if opt == 'S': # Spaces for the length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if opt == 'S':  # Spaces for the length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           return ' ' * len(val) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elif opt == 'l': # Lowercase first character 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif opt == 'l':  # Lowercase first character 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if val: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return val[0].lower() + val[1:] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return val 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elif opt == 'L': # All Lowercase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif opt == 'L':  # All Lowercase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           return val.lower() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elif opt == 'u': # Uppercase first character 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif opt == 'u':  # Uppercase first character 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if val: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return val[0].upper() + val[1:] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return val 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elif opt == 'U': # All Uppercase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        elif opt == 'U':  # All Uppercase 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           return val.upper() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           raise PDDMError('Unknown arg option "%s$%s" while expanding "%s".%s' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -350,6 +352,7 @@ class MacroCollection(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   def _EvalMacrosRefs(self, text, macro_stack): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     macro_ref_re = _MacroRefRe(self._macros.keys()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def _resolveMacro(match): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return self._Expand(match, macro_stack) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return macro_ref_re.sub(_resolveMacro, text) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -496,9 +499,10 @@ class SourceFile(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       # Add the ending marker. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if len(captured_lines) == 1: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         result.append('//%%PDDM-EXPAND-END %s' % 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                       captured_lines[0][directive_len:].strip()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      captured_lines[0][directive_len:].strip()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        result.append('//%%PDDM-EXPAND-END (%s expansions)' % len(captured_lines)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        result.append('//%%PDDM-EXPAND-END (%s expansions)' % 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      len(captured_lines)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -669,15 +673,15 @@ def main(args): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if src_file.processed_content != src_file.original_content: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if not opts.dry_run: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        print 'Updating for "%s".' % a_path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print('Updating for "%s".' % a_path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         with open(a_path, 'w') as f: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           f.write(src_file.processed_content) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # Special result to indicate things need updating. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        print 'Update needed for "%s".' % a_path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        print('Update needed for "%s".' % a_path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         result = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     elif opts.verbose: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      print 'No update for "%s".' % a_path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      print('No update for "%s".' % a_path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |