Example #1
0
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))