csvops 0.1.0.alpha → 0.3.0.alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +83 -10
- data/docs/release-v0.2.0-alpha.md +80 -0
- data/docs/release-v0.3.0-alpha.md +74 -0
- data/lib/csvtool/application/use_cases/run_extraction.rb +17 -17
- data/lib/csvtool/application/use_cases/run_row_extraction.rb +111 -0
- data/lib/csvtool/application/use_cases/run_row_randomization.rb +105 -0
- data/lib/csvtool/cli.rb +10 -2
- data/lib/csvtool/domain/{extraction_session → column_session}/column_selection.rb +1 -1
- data/lib/csvtool/domain/{extraction_session/extraction_session.rb → column_session/column_session.rb} +2 -2
- data/lib/csvtool/domain/{extraction_session → column_session}/csv_source.rb +1 -1
- data/lib/csvtool/domain/{extraction_session → column_session}/extraction_options.rb +1 -1
- data/lib/csvtool/domain/{extraction_session → column_session}/extraction_value.rb +1 -1
- data/lib/csvtool/domain/{extraction_session → column_session}/output_destination.rb +1 -1
- data/lib/csvtool/domain/{extraction_session → column_session}/preview.rb +1 -1
- data/lib/csvtool/domain/{extraction_session → column_session}/separator.rb +1 -1
- data/lib/csvtool/domain/row_randomization_session/randomization_options.rb +17 -0
- data/lib/csvtool/domain/row_randomization_session/randomization_output_destination.rb +31 -0
- data/lib/csvtool/domain/row_randomization_session/randomization_session.rb +25 -0
- data/lib/csvtool/domain/row_randomization_session/randomization_source.rb +23 -0
- data/lib/csvtool/domain/row_session/row_output_destination.rb +31 -0
- data/lib/csvtool/domain/row_session/row_range.rb +39 -0
- data/lib/csvtool/domain/row_session/row_session.rb +25 -0
- data/lib/csvtool/domain/row_session/row_source.rb +16 -0
- data/lib/csvtool/infrastructure/csv/row_randomizer.rb +83 -0
- data/lib/csvtool/infrastructure/csv/row_streamer.rb +27 -0
- data/lib/csvtool/infrastructure/output/csv_row_console_writer.rb +34 -0
- data/lib/csvtool/infrastructure/output/csv_row_file_writer.rb +45 -0
- data/lib/csvtool/interface/cli/errors/presenter.rb +20 -0
- data/lib/csvtool/interface/cli/menu_loop.rb +13 -5
- data/lib/csvtool/interface/cli/prompts/headers_present_prompt.rb +22 -0
- data/lib/csvtool/interface/cli/prompts/seed_prompt.rb +29 -0
- data/lib/csvtool/version.rb +1 -1
- data/test/csvtool/application/use_cases/run_row_extraction_test.rb +140 -0
- data/test/csvtool/application/use_cases/run_row_randomization_test.rb +124 -0
- data/test/csvtool/cli_test.rb +237 -6
- data/test/csvtool/cli_unit_test.rb +24 -1
- data/test/csvtool/domain/{extraction_session → column_session}/column_selection_test.rb +2 -2
- data/test/csvtool/domain/column_session/column_session_test.rb +35 -0
- data/test/csvtool/domain/column_session/csv_source_test.rb +14 -0
- data/test/csvtool/domain/{extraction_session → column_session}/extraction_options_test.rb +3 -3
- data/test/csvtool/domain/{extraction_session → column_session}/extraction_value_test.rb +2 -2
- data/test/csvtool/domain/{extraction_session → column_session}/output_destination_test.rb +3 -3
- data/test/csvtool/domain/column_session/preview_test.rb +18 -0
- data/test/csvtool/domain/{extraction_session → column_session}/separator_test.rb +3 -3
- data/test/csvtool/domain/row_randomization_session/randomization_options_test.rb +20 -0
- data/test/csvtool/domain/row_randomization_session/randomization_output_destination_test.rb +21 -0
- data/test/csvtool/domain/row_randomization_session/randomization_session_test.rb +26 -0
- data/test/csvtool/domain/row_randomization_session/randomization_source_test.rb +28 -0
- data/test/csvtool/domain/row_session/row_output_destination_test.rb +23 -0
- data/test/csvtool/domain/row_session/row_range_test.rb +30 -0
- data/test/csvtool/domain/row_session/row_session_test.rb +22 -0
- data/test/csvtool/domain/row_session/row_source_test.rb +12 -0
- data/test/csvtool/infrastructure/csv/row_randomizer_test.rb +37 -0
- data/test/csvtool/infrastructure/csv/row_streamer_test.rb +41 -0
- data/test/csvtool/infrastructure/output/csv_row_console_writer_test.rb +24 -0
- data/test/csvtool/infrastructure/output/csv_row_file_writer_test.rb +40 -0
- data/test/csvtool/interface/cli/errors/presenter_test.rb +10 -0
- data/test/csvtool/interface/cli/menu_loop_test.rb +68 -12
- data/test/csvtool/interface/cli/prompts/headers_present_prompt_test.rb +14 -0
- data/test/csvtool/interface/cli/prompts/seed_prompt_test.rb +39 -0
- data/test/fixtures/sample_people_bad_tail.csv +5 -0
- data/test/fixtures/sample_people_no_headers.csv +3 -0
- metadata +53 -17
- data/test/csvtool/domain/extraction_session/csv_source_test.rb +0 -14
- data/test/csvtool/domain/extraction_session/extraction_session_test.rb +0 -35
- data/test/csvtool/domain/extraction_session/preview_test.rb +0 -18
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: csvops
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0.alpha
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Robert Hall
|
|
@@ -68,61 +68,97 @@ files:
|
|
|
68
68
|
- bin/tool
|
|
69
69
|
- csvops.gemspec
|
|
70
70
|
- docs/release-v0.1.0-alpha.md
|
|
71
|
+
- docs/release-v0.2.0-alpha.md
|
|
72
|
+
- docs/release-v0.3.0-alpha.md
|
|
71
73
|
- exe/csvtool
|
|
72
74
|
- lib/csvtool/application/use_cases/run_extraction.rb
|
|
75
|
+
- lib/csvtool/application/use_cases/run_row_extraction.rb
|
|
76
|
+
- lib/csvtool/application/use_cases/run_row_randomization.rb
|
|
73
77
|
- lib/csvtool/cli.rb
|
|
74
|
-
- lib/csvtool/domain/
|
|
75
|
-
- lib/csvtool/domain/
|
|
76
|
-
- lib/csvtool/domain/
|
|
77
|
-
- lib/csvtool/domain/
|
|
78
|
-
- lib/csvtool/domain/
|
|
79
|
-
- lib/csvtool/domain/
|
|
80
|
-
- lib/csvtool/domain/
|
|
81
|
-
- lib/csvtool/domain/
|
|
78
|
+
- lib/csvtool/domain/column_session/column_selection.rb
|
|
79
|
+
- lib/csvtool/domain/column_session/column_session.rb
|
|
80
|
+
- lib/csvtool/domain/column_session/csv_source.rb
|
|
81
|
+
- lib/csvtool/domain/column_session/extraction_options.rb
|
|
82
|
+
- lib/csvtool/domain/column_session/extraction_value.rb
|
|
83
|
+
- lib/csvtool/domain/column_session/output_destination.rb
|
|
84
|
+
- lib/csvtool/domain/column_session/preview.rb
|
|
85
|
+
- lib/csvtool/domain/column_session/separator.rb
|
|
86
|
+
- lib/csvtool/domain/row_randomization_session/randomization_options.rb
|
|
87
|
+
- lib/csvtool/domain/row_randomization_session/randomization_output_destination.rb
|
|
88
|
+
- lib/csvtool/domain/row_randomization_session/randomization_session.rb
|
|
89
|
+
- lib/csvtool/domain/row_randomization_session/randomization_source.rb
|
|
90
|
+
- lib/csvtool/domain/row_session/row_output_destination.rb
|
|
91
|
+
- lib/csvtool/domain/row_session/row_range.rb
|
|
92
|
+
- lib/csvtool/domain/row_session/row_session.rb
|
|
93
|
+
- lib/csvtool/domain/row_session/row_source.rb
|
|
82
94
|
- lib/csvtool/infrastructure/csv/header_reader.rb
|
|
95
|
+
- lib/csvtool/infrastructure/csv/row_randomizer.rb
|
|
96
|
+
- lib/csvtool/infrastructure/csv/row_streamer.rb
|
|
83
97
|
- lib/csvtool/infrastructure/csv/value_streamer.rb
|
|
84
98
|
- lib/csvtool/infrastructure/output/console_writer.rb
|
|
85
99
|
- lib/csvtool/infrastructure/output/csv_file_writer.rb
|
|
100
|
+
- lib/csvtool/infrastructure/output/csv_row_console_writer.rb
|
|
101
|
+
- lib/csvtool/infrastructure/output/csv_row_file_writer.rb
|
|
86
102
|
- lib/csvtool/interface/cli/errors/presenter.rb
|
|
87
103
|
- lib/csvtool/interface/cli/menu_loop.rb
|
|
88
104
|
- lib/csvtool/interface/cli/prompts/column_selector_prompt.rb
|
|
89
105
|
- lib/csvtool/interface/cli/prompts/confirm_prompt.rb
|
|
90
106
|
- lib/csvtool/interface/cli/prompts/file_path_prompt.rb
|
|
107
|
+
- lib/csvtool/interface/cli/prompts/headers_present_prompt.rb
|
|
91
108
|
- lib/csvtool/interface/cli/prompts/output_destination_prompt.rb
|
|
109
|
+
- lib/csvtool/interface/cli/prompts/seed_prompt.rb
|
|
92
110
|
- lib/csvtool/interface/cli/prompts/separator_prompt.rb
|
|
93
111
|
- lib/csvtool/interface/cli/prompts/skip_blanks_prompt.rb
|
|
94
112
|
- lib/csvtool/services/preview_builder.rb
|
|
95
113
|
- lib/csvtool/version.rb
|
|
96
114
|
- test/csvtool/application/use_cases/run_extraction_test.rb
|
|
115
|
+
- test/csvtool/application/use_cases/run_row_extraction_test.rb
|
|
116
|
+
- test/csvtool/application/use_cases/run_row_randomization_test.rb
|
|
97
117
|
- test/csvtool/cli_test.rb
|
|
98
118
|
- test/csvtool/cli_unit_test.rb
|
|
99
|
-
- test/csvtool/domain/
|
|
100
|
-
- test/csvtool/domain/
|
|
101
|
-
- test/csvtool/domain/
|
|
102
|
-
- test/csvtool/domain/
|
|
103
|
-
- test/csvtool/domain/
|
|
104
|
-
- test/csvtool/domain/
|
|
105
|
-
- test/csvtool/domain/
|
|
106
|
-
- test/csvtool/domain/
|
|
119
|
+
- test/csvtool/domain/column_session/column_selection_test.rb
|
|
120
|
+
- test/csvtool/domain/column_session/column_session_test.rb
|
|
121
|
+
- test/csvtool/domain/column_session/csv_source_test.rb
|
|
122
|
+
- test/csvtool/domain/column_session/extraction_options_test.rb
|
|
123
|
+
- test/csvtool/domain/column_session/extraction_value_test.rb
|
|
124
|
+
- test/csvtool/domain/column_session/output_destination_test.rb
|
|
125
|
+
- test/csvtool/domain/column_session/preview_test.rb
|
|
126
|
+
- test/csvtool/domain/column_session/separator_test.rb
|
|
127
|
+
- test/csvtool/domain/row_randomization_session/randomization_options_test.rb
|
|
128
|
+
- test/csvtool/domain/row_randomization_session/randomization_output_destination_test.rb
|
|
129
|
+
- test/csvtool/domain/row_randomization_session/randomization_session_test.rb
|
|
130
|
+
- test/csvtool/domain/row_randomization_session/randomization_source_test.rb
|
|
131
|
+
- test/csvtool/domain/row_session/row_output_destination_test.rb
|
|
132
|
+
- test/csvtool/domain/row_session/row_range_test.rb
|
|
133
|
+
- test/csvtool/domain/row_session/row_session_test.rb
|
|
134
|
+
- test/csvtool/domain/row_session/row_source_test.rb
|
|
107
135
|
- test/csvtool/infrastructure/csv/header_reader_test.rb
|
|
136
|
+
- test/csvtool/infrastructure/csv/row_randomizer_test.rb
|
|
137
|
+
- test/csvtool/infrastructure/csv/row_streamer_test.rb
|
|
108
138
|
- test/csvtool/infrastructure/csv/value_streamer_test.rb
|
|
109
139
|
- test/csvtool/infrastructure/output/console_writer_test.rb
|
|
110
140
|
- test/csvtool/infrastructure/output/csv_file_writer_test.rb
|
|
141
|
+
- test/csvtool/infrastructure/output/csv_row_console_writer_test.rb
|
|
142
|
+
- test/csvtool/infrastructure/output/csv_row_file_writer_test.rb
|
|
111
143
|
- test/csvtool/interface/cli/errors/presenter_test.rb
|
|
112
144
|
- test/csvtool/interface/cli/menu_loop_test.rb
|
|
113
145
|
- test/csvtool/interface/cli/prompts/column_selector_prompt_test.rb
|
|
114
146
|
- test/csvtool/interface/cli/prompts/confirm_prompt_test.rb
|
|
115
147
|
- test/csvtool/interface/cli/prompts/file_path_prompt_test.rb
|
|
148
|
+
- test/csvtool/interface/cli/prompts/headers_present_prompt_test.rb
|
|
116
149
|
- test/csvtool/interface/cli/prompts/output_destination_prompt_test.rb
|
|
150
|
+
- test/csvtool/interface/cli/prompts/seed_prompt_test.rb
|
|
117
151
|
- test/csvtool/interface/cli/prompts/separator_prompt_test.rb
|
|
118
152
|
- test/csvtool/interface/cli/prompts/skip_blanks_prompt_test.rb
|
|
119
153
|
- test/csvtool/services/preview_builder_test.rb
|
|
120
154
|
- test/fixtures/empty.csv
|
|
121
155
|
- test/fixtures/sample_people.csv
|
|
122
156
|
- test/fixtures/sample_people.tsv
|
|
157
|
+
- test/fixtures/sample_people_bad_tail.csv
|
|
123
158
|
- test/fixtures/sample_people_blanks.csv
|
|
124
159
|
- test/fixtures/sample_people_colon.txt
|
|
125
160
|
- test/fixtures/sample_people_many.csv
|
|
161
|
+
- test/fixtures/sample_people_no_headers.csv
|
|
126
162
|
- test/test_helper.rb
|
|
127
163
|
homepage: https://github.com/RobertAndrewHall/csvops
|
|
128
164
|
licenses:
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../../../test_helper"
|
|
4
|
-
require "csvtool/domain/extraction_session/csv_source"
|
|
5
|
-
require "csvtool/domain/extraction_session/separator"
|
|
6
|
-
|
|
7
|
-
class CsvSourceTest < Minitest::Test
|
|
8
|
-
def test_stores_path_and_separator
|
|
9
|
-
separator = Csvtool::Domain::ExtractionSession::Separator.new(",")
|
|
10
|
-
source = Csvtool::Domain::ExtractionSession::CsvSource.new(path: "/tmp/a.csv", separator: separator)
|
|
11
|
-
assert_equal "/tmp/a.csv", source.path
|
|
12
|
-
assert_equal separator, source.separator
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../../../test_helper"
|
|
4
|
-
require "csvtool/domain/extraction_session/extraction_session"
|
|
5
|
-
require "csvtool/domain/extraction_session/csv_source"
|
|
6
|
-
require "csvtool/domain/extraction_session/separator"
|
|
7
|
-
require "csvtool/domain/extraction_session/column_selection"
|
|
8
|
-
require "csvtool/domain/extraction_session/extraction_options"
|
|
9
|
-
require "csvtool/domain/extraction_session/preview"
|
|
10
|
-
require "csvtool/domain/extraction_session/extraction_value"
|
|
11
|
-
require "csvtool/domain/extraction_session/output_destination"
|
|
12
|
-
|
|
13
|
-
class ExtractionSessionTest < Minitest::Test
|
|
14
|
-
def test_state_transitions
|
|
15
|
-
session = Csvtool::Domain::ExtractionSession::ExtractionSession.start(
|
|
16
|
-
source: Csvtool::Domain::ExtractionSession::CsvSource.new(
|
|
17
|
-
path: "/tmp/in.csv",
|
|
18
|
-
separator: Csvtool::Domain::ExtractionSession::Separator.new(",")
|
|
19
|
-
),
|
|
20
|
-
column_selection: Csvtool::Domain::ExtractionSession::ColumnSelection.new(name: "name"),
|
|
21
|
-
options: Csvtool::Domain::ExtractionSession::ExtractionOptions.new(skip_blanks: true, preview_limit: 10)
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
preview = Csvtool::Domain::ExtractionSession::Preview.new(
|
|
25
|
-
values: [Csvtool::Domain::ExtractionSession::ExtractionValue.new("Alice")]
|
|
26
|
-
)
|
|
27
|
-
session = session.with_preview(preview).confirm!.with_output_destination(
|
|
28
|
-
Csvtool::Domain::ExtractionSession::OutputDestination.console
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
assert_equal true, session.confirmed?
|
|
32
|
-
assert_equal preview, session.preview
|
|
33
|
-
assert_equal true, session.output_destination.console?
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../../../test_helper"
|
|
4
|
-
require "csvtool/domain/extraction_session/preview"
|
|
5
|
-
require "csvtool/domain/extraction_session/extraction_value"
|
|
6
|
-
|
|
7
|
-
class PreviewTest < Minitest::Test
|
|
8
|
-
def test_exposes_size_and_string_values
|
|
9
|
-
values = [
|
|
10
|
-
Csvtool::Domain::ExtractionSession::ExtractionValue.new("Alice"),
|
|
11
|
-
Csvtool::Domain::ExtractionSession::ExtractionValue.new("Bob")
|
|
12
|
-
]
|
|
13
|
-
preview = Csvtool::Domain::ExtractionSession::Preview.new(values: values)
|
|
14
|
-
|
|
15
|
-
assert_equal 2, preview.size
|
|
16
|
-
assert_equal %w[Alice Bob], preview.to_strings
|
|
17
|
-
end
|
|
18
|
-
end
|