Much prettier sorting
This commit is contained in:
parent
646d4a297d
commit
ea228d9285
13
lol.rb
13
lol.rb
|
@ -14,7 +14,7 @@ to_string_template = "0 1 x 2 meter"
|
||||||
sorting_one = Type.new("String", "Name")
|
sorting_one = Type.new("String", "Name")
|
||||||
sorting_two = Type.new("int", "Length")
|
sorting_two = Type.new("int", "Length")
|
||||||
sorting_three = Type.new("int", "Width")
|
sorting_three = Type.new("int", "Width")
|
||||||
|
sorting_filters = [sorting_one, sorting_two, sorting_three]
|
||||||
|
|
||||||
def construct_class(name_of_class, parameters, to_string_template, sorting_filters)
|
def construct_class(name_of_class, parameters, to_string_template, sorting_filters)
|
||||||
|
|
||||||
|
@ -25,16 +25,13 @@ def construct_class(name_of_class, parameters, to_string_template, sorting_filte
|
||||||
fields += "private #{x[:type]} #{x[:name]}; \n"
|
fields += "private #{x[:type]} #{x[:name]}; \n"
|
||||||
end
|
end
|
||||||
|
|
||||||
tmptmp = parameters.map { |x| "#{x[:type]} #{x[:name]}"}
|
constructor_parameters = parameters.map { |x| "#{x[:type]} #{x[:name]}"}.join ","
|
||||||
constructor_parameters = tmptmp.join ","
|
|
||||||
|
|
||||||
lel = parameters.map do |x|
|
getters = parameters.map do |x|
|
||||||
"public #{x[:type]} get#{x[:name]}(){
|
"public #{x[:type]} get#{x[:name]}(){
|
||||||
return #{x[:name]};
|
return #{x[:name]};
|
||||||
}"
|
}"
|
||||||
end
|
end.join "\n"
|
||||||
|
|
||||||
getters = lel.join "\n"
|
|
||||||
|
|
||||||
lol = parameters.map do |x|
|
lol = parameters.map do |x|
|
||||||
"this.#{x[:name]} = #{x[:name]};"
|
"this.#{x[:name]} = #{x[:name]};"
|
||||||
|
@ -195,7 +192,7 @@ end
|
||||||
|
|
||||||
file = File.open("#{name}.java", "w")
|
file = File.open("#{name}.java", "w")
|
||||||
params = [{:type => "String", :name => "Name"}, {:type => "int", :name => "Length"}, {:type => "int", :name => "Width"}]
|
params = [{:type => "String", :name => "Name"}, {:type => "int", :name => "Length"}, {:type => "int", :name => "Width"}]
|
||||||
file.puts(construct_class name, params, to_string_template)
|
file.puts(construct_class name, params, to_string_template, sorting_filters)
|
||||||
file.close
|
file.close
|
||||||
|
|
||||||
|
|
||||||
|
|
116
sorting_algos.rb
116
sorting_algos.rb
|
@ -1,93 +1,39 @@
|
||||||
|
|
||||||
# TODO: Make variadic, such that we only need one method
|
# TODO: Make variadic, such that we only need one method
|
||||||
def compare_to_two_vars(first, second)
|
def compare_to(sortings)
|
||||||
|
first, second, third = *sortings
|
||||||
|
|
||||||
if first.type == "String"
|
def return_stat sorting
|
||||||
if_statement = "
|
if sorting.type == "String"
|
||||||
if (!this.#{first.variable}.equals(other.#{first.variable}) {
|
{:ret => "this.#{sorting.variable}.compareTo(other.#{sorting.variable})"}
|
||||||
return this.#{first.variable}.compareTo(other.#{first.variable});
|
|
||||||
}
|
|
||||||
"
|
|
||||||
else
|
|
||||||
if first.comparator == ">"
|
|
||||||
return_string = "return this.#{first.variable} - other.#{first.variable};"
|
|
||||||
else
|
else
|
||||||
return_string = "return other.#{first.variable} - this.#{first.variable};"
|
{:ret => sorting.comparator == ">" ? "this.#{sorting.variable} - other.#{sorting.variable}" : "other.#{sorting.variable} - this.#{sorting.variable}"}
|
||||||
end
|
|
||||||
if_statement = "
|
|
||||||
if (this.#{first_variable} != other.#{first.variable} {
|
|
||||||
#{return_string}
|
|
||||||
}
|
|
||||||
"
|
|
||||||
end
|
|
||||||
|
|
||||||
if second.type == "String"
|
|
||||||
return_string = "return this.#{second.variable}.compareTo(other.#{second.variable});"
|
|
||||||
else
|
|
||||||
if second.comparator == ">"
|
|
||||||
return_string = "return this.#{second.variable} - other.#{second.variable};"
|
|
||||||
else
|
|
||||||
return_string = "return other.#{second.variable} - this.#{second.variable};"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
"
|
|
||||||
#{if_statement}
|
|
||||||
#{return_string}
|
|
||||||
"
|
|
||||||
end
|
|
||||||
|
|
||||||
def compare_to_three_vars(first, second, third)
|
|
||||||
if first.type == "String"
|
|
||||||
if_statement = "
|
|
||||||
if (!this.#{first.variable}.equals(other.#{first.variable})) {
|
|
||||||
return this.#{first.variable}.compareTo(other.#{first.variable});
|
|
||||||
}
|
|
||||||
"
|
|
||||||
else
|
|
||||||
if first.comparator == ">"
|
|
||||||
return_string = "return this.#{first.variable} - other.#{first.variable};"
|
|
||||||
else
|
|
||||||
return_string = "return other.#{first.variable} - this.#{first.variable};"
|
|
||||||
end
|
|
||||||
if_statement = "
|
|
||||||
if (this.#{first.variable} != other.#{first.variable}) {
|
|
||||||
#{return_string}
|
|
||||||
}
|
|
||||||
"
|
|
||||||
end
|
|
||||||
|
|
||||||
if second.type == "String"
|
|
||||||
else_if_statement = "
|
|
||||||
else if (!this.#{second.variable}.equals(other.#{second.variable})) {
|
|
||||||
return this.#{second.variable}.compareTo(other.#{second.variable};
|
|
||||||
}
|
|
||||||
"
|
|
||||||
else
|
|
||||||
if second.comparator == ">"
|
|
||||||
return_string = "return this.#{second.variable} - other.#{second.variable};"
|
|
||||||
else
|
|
||||||
return_string = "return other.#{second.variable} - this.#{second.variable};"
|
|
||||||
end
|
|
||||||
else_if_statement = "
|
|
||||||
else if (this.#{second.variable} != other.#{second.variable}) {
|
|
||||||
#{return_string}
|
|
||||||
}
|
|
||||||
"
|
|
||||||
end
|
|
||||||
|
|
||||||
if third.type == "String"
|
|
||||||
return_string = "return this.#{third.variable}.compareTo(other.#{third.variable});"
|
|
||||||
else
|
|
||||||
if third.comparator == ">"
|
|
||||||
return_string = "return this.#{third.variable} - other.#{third.variable};"
|
|
||||||
else
|
|
||||||
return_string = "return other.#{third.variable} - this.#{third.variable};"
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
"
|
def comp sorting
|
||||||
#{if_statement}
|
if sorting.type == "String"
|
||||||
#{else_if_statement}
|
{:if => "!this.#{sorting.variable}.equals(other.#{sorting.variable})",
|
||||||
#{return_string}
|
:ret => (return_stat sorting)[:ret]}
|
||||||
"
|
else
|
||||||
|
{:if => "this.#{sorting.variable} != other.#{sorting.variable}",
|
||||||
|
:ret => (return_stat sorting)[:ret]}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if defined? third
|
||||||
|
"if (#{(comp first)[:if]}) {
|
||||||
|
return #{(comp first)[:ret]};
|
||||||
|
} else if (#{(comp second)[:if]}) {
|
||||||
|
return #{(comp second)[:ret]};
|
||||||
|
}
|
||||||
|
return #{(comp third)[:ret]};"
|
||||||
|
else
|
||||||
|
"if (#{(comp first)[:if]}) {
|
||||||
|
return #{(comp first)[:ret]};
|
||||||
|
}
|
||||||
|
return #{(comp second)[:ret]};
|
||||||
|
"
|
||||||
|
end
|
||||||
end
|
end
|
Loading…
Reference in New Issue
Block a user