def translate_codes(ggd361_csv, out_file, move_codes, replace_codes): """ :param ggd361_csv: input CSV file :param out_file: output CSV file :param codes: codes CSV file """ are_moving = move_codes != None codes = move_codes if not are_moving: codes = replace_codes csv_data = [] condition_cols, replacement_cols, mapping = get_conditions_replacements(codes) col_ind = None csv_header = None with open(ggd361_csv) as csv_values: reader = csv.reader(csv_values, delimiter=',', quoting=csv.QUOTE_NONE) csv_header = reader.next() col_ind = get_header_indices(condition_cols, replacement_cols, csv_header, are_moving) csv_subset, csv_full = subset_csv_data(reader, col_ind, are_moving) temp_in = 'temp_in.csv' temp_out = 'temp_out.csv' code_subset = subset_code_data(csv_full[0][0], mapping) # For each row of condition/replacement script call appropriate replacement script: for conditions, replacements in code_subset: with open(temp_in, 'w') as tfile: writer = csv.writer(tfile, delimiter=',', quoting=csv.QUOTE_NONE, lineterminator='\n') writer.writerows(csv_subset) if are_moving: # Call with to_replace (condition), with_replace (replacement), subset column file move_text.move_text(temp_in, temp_out, conditions[1], replacements[0]) else: # Call with list of conditions, list of replacements, subset column file replace_text.replace_text(temp_in, temp_out, conditions[1], replacements[0]) with open(temp_out, 'r') as tfile: reader = csv.reader(tfile, delimiter=',', quoting=csv.QUOTE_NONE) csv_subset = [] for row in reader: csv_subset.append(row) # Read in output file from replacement script containing just columns to be replaced (one or more). with open(temp_out, 'r') as tfile: write_csv = csv_header for ind, full_row in enumerate(csv_full): replace_ind = 0 for ind in col_ind[1:]: full_row[ind] = csv_subset[ind][replace_ind] replace_ind = replace_ind + 1 write_csv.append(full_row) # Write out original CSV file with new column values. with open(out_file, 'w') as ofile: writer = csv.writer(ofile, delimiter=',', quoting=csv.QUOTE_NONE, lineterminator='\n') writer.writerows(write_csv)
def run(self): is_valid, errors = self.validate_args() if is_valid: for k in self.iterator_array: res = self.resource_format % k dest = self.destination_format % k res = self.value_substitutor.substitute(res) dest = self.value_substitutor.substitute(dest) rurl = replace_from_url(executor=self.executor, resources=self.resources, variables=self.variables, verbose=self.verbose) rtext = replace_text(executor=self.executor, resources=self.resources, variables=self.variables, verbose=self.verbose) match = "</Project>$" repl = "<ItemGroup><AndroidResource Include=\"" + dest.replace( '/', "\\\\") + "\" /></ItemGroup>\n</Project>" rurl.set_args(res, dest) rtext.set_args(self.project_file, match, repl) rurl.run() rtext.run() else: raise InvalidCommandArgumentsError(str(errors))
def run(self): is_valid, errors = self.validate_args() if is_valid: for k in self.iterator_array: res = self.resource_format%k dest = self.destination_format%k res = self.value_substitutor.substitute(res) dest = self.value_substitutor.substitute(dest) rurl = replace_from_url(executor = self.executor, resources = self.resources, variables = self.variables, verbose=self.verbose) rtext= replace_text(executor = self.executor, resources = self.resources, variables = self.variables, verbose=self.verbose) match = "</Project>$" repl = "<ItemGroup><BundleResource Include=\""+dest.replace('/', "\\\\")+"\" /></ItemGroup>\n</Project>" rurl.set_args(res, dest) rtext.set_args(self.project_file, match, repl) rurl.run() rtext.run() else: raise InvalidCommandArgumentsError(str(errors))