diff --git a/distribution/lib/Standard/Table/0.0.0-dev/src/Duplicate_Rows_Method.enso b/distribution/lib/Standard/Table/0.0.0-dev/src/Duplicate_Rows_Method.enso index ce9e92ccc282..044164cda813 100644 --- a/distribution/lib/Standard/Table/0.0.0-dev/src/Duplicate_Rows_Method.enso +++ b/distribution/lib/Standard/Table/0.0.0-dev/src/Duplicate_Rows_Method.enso @@ -15,7 +15,7 @@ import project.Internal.Widget_Helpers from project.Internal.Filter_Condition_Helpers import make_filter_column type Duplicate_Rows_Method - Integer_Range from:(Integer | Column_Ref) to:(Integer | Column_Ref) step:Integer=1 + Integer_Range from:(Integer | Column_Ref | Expression) to:(Integer | Column_Ref | Expression) step:Integer=1 Date_Range from to step:Integer=1 period:Date_Period diff --git a/distribution/lib/Standard/Table/0.0.0-dev/src/Table.enso b/distribution/lib/Standard/Table/0.0.0-dev/src/Table.enso index 36ac69f93c6e..d9cd3b8335b3 100644 --- a/distribution/lib/Standard/Table/0.0.0-dev/src/Table.enso +++ b/distribution/lib/Standard/Table/0.0.0-dev/src/Table.enso @@ -3782,14 +3782,16 @@ type Table @over Duplicate_Rows_Method.default_widget generate_rows self over:Duplicate_Rows_Method = + resolve_to_from value = + case value of + _ : Integer -> self.make_constant_column value + _ : Column_Ref -> (self:Table_Ref).resolve value + _ : Expression -> self.evaluate_expression value ..Report_Warning + x = case over of Duplicate_Rows_Method.Integer_Range from to step -> - from_column = case from of - _ : Integer -> self.make_constant_column from - _ : Column_Ref -> (self:Table_Ref).resolve from - to_column = case to of - _ : Integer -> self.make_constant_column to - _ : Column_Ref -> (self:Table_Ref).resolve to + from_column = resolve_to_from from + to_column = resolve_to_from to range_col = from_column.zip to_column f->t->(f.up_to t step=step) self.set range_col as="generate_rows_id" x.expand_to_rows "generate_rows_id" diff --git a/test/Table_Tests/src/Common_Table_Operations/Generate_Rows_Spec.enso b/test/Table_Tests/src/Common_Table_Operations/Generate_Rows_Spec.enso index f9ec8dbadf31..2fbbcad0193a 100644 --- a/test/Table_Tests/src/Common_Table_Operations/Generate_Rows_Spec.enso +++ b/test/Table_Tests/src/Common_Table_Operations/Generate_Rows_Spec.enso @@ -59,5 +59,9 @@ add_offset_specs suite_builder setup = t4.generate_rows (..Integer_Range (..Name 'Start') (..Name 'Stop') 2) . should_equal ignore_order=setup.is_database Table.new [["Text Values", ["A", "A", "C", "C"]], ["Start", [1, 1, 2, 2]], ["Stop", [5, 5, 5, 5]], ["generate_rows_id", [1, 3, 2, 4]]] + group_builder.specify "Works with Integer_Range column and expression" <| + t3.generate_rows (..Integer_Range (..Name 'Start') (expr '[Stop]+1')) . should_equal ignore_order=setup.is_database + Table.new [["Text Values", ["A", "A", "A", "B", "C", "C"]], ["Start", [1, 1, 1, 0, 2, 2]], ["Stop", [3, 3, 3, 0, 3, 3]], ["generate_rows_id", [1, 2, 3, 0, 2, 3]]] +