Add support for importing jaggy csv and ", " delim

This commit is contained in:
don-tnowe 2022-10-23 16:45:49 +03:00
parent f26eabf69b
commit 1e7eef6e3f
4 changed files with 45 additions and 15 deletions

View File

@ -19,17 +19,25 @@ func set_value(entry, key : String, value, index : int):
func save_entries(all_entries : Array, indices : Array, repeat : bool = true):
if timer == null || timer.time_left <= 0.0:
var file = File.new()
var space_after_delimeter = import_data.delimeter.ends_with(" ")
file.open(import_data.edited_path, File.WRITE)
if import_data.remove_first_row:
var names = []
names.resize(import_data.prop_names.size())
for i in names.size():
names[i] = TextEditingUtils.string_snake_to_naming_case(import_data.prop_names[i])
if i != 0 and space_after_delimeter:
names[i] = " " + names[i]
file.store_csv_line(names, import_data.delimeter)
file.store_csv_line(names, import_data.delimeter[0])
for x in csv_rows:
file.store_csv_line(x, import_data.delimeter)
if space_after_delimeter:
for i in x.size():
if i == 0: continue
x[i] = " " + x[i]
file.store_csv_line(x, import_data.delimeter[0])
file.close()
if repeat:
@ -48,15 +56,26 @@ func import_from_path(path : String, insert_func : FuncRef, sort_by : String, so
var line
var first = true
var space_after_delimeter = import_data.delimeter.ends_with(" ")
csv_rows = []
while !file.eof_reached():
line = file.get_csv_line(import_data.delimeter)
if first && import_data.remove_first_row:
line = file.get_csv_line(import_data.delimeter[0])
if space_after_delimeter:
for i in line.size():
line[i] = line[i].trim_prefix(" ")
if first and import_data.remove_first_row:
line = " "
first = false
continue
if csv_rows.size() == 0 || line.size() == csv_rows[0].size():
if csv_rows.size() == 0:
csv_rows.append(line)
elif line.size() != 1:
if line.size() != csv_rows[0].size():
line.resize(csv_rows[0].size())
csv_rows.append(line)
var rows := []

View File

@ -40,16 +40,33 @@ func _load_entries():
import_data.delimeter = ";"
var text_lines := [file.get_line().split(import_data.delimeter)]
var space_after_delimeter = false
var line = text_lines[0]
if line.size() == 1:
import_data.delimeter = ","
text_lines[0] = text_lines[0][0].split(import_data.delimeter)
line = line[0].split(import_data.delimeter)
text_lines[0] = line
if line[1].begins_with(" "):
for i in line.size():
line[i] = line[i].trim_prefix(" ")
text_lines[0] = line
space_after_delimeter = true
import_data.delimeter = ", "
while !file.eof_reached():
line = file.get_csv_line(import_data.delimeter)
line = file.get_csv_line(import_data.delimeter[0])
if space_after_delimeter:
for i in line.size():
line[i] = line[i].trim_prefix(" ")
if line.size() == text_lines[0].size():
text_lines.append(line)
elif line.size() != 1:
line.resize(text_lines[0].size())
text_lines.append(line)
entries = []
entries.resize(text_lines.size())

View File

@ -167,7 +167,7 @@ func create_enum_for_prop(col_index):
func strings_to_resource(strings : Array):
var new_res = new_script.new()
for j in prop_names.size():
for j in min(prop_names.size(), strings.size()):
new_res.set(prop_names[j], string_to_property(strings[j], j))
if prop_used_as_filename != "":

View File

@ -63,11 +63,6 @@ _global_script_classes=[ {
"class": "ThemeStylebox",
"language": "GDScript",
"path": "res://addons/resources_speadsheet_view/editor_stylebox_overrider.gd"
}, {
"base": "Resource",
"class": "TrainBigmartsalesprediction",
"language": "GDScript",
"path": "res://aa/train_BigMartSalesPrediction.gd"
} ]
_global_script_class_icons={
"CellEditor": "",
@ -80,8 +75,7 @@ _global_script_class_icons={
"SpreadsheetImport": "",
"TextEditingUtils": "",
"ThemeIconButton": "",
"ThemeStylebox": "",
"TrainBigmartsalesprediction": ""
"ThemeStylebox": ""
}
color_rows=false
color_arrays=true