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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +83 -10
  3. data/docs/release-v0.2.0-alpha.md +80 -0
  4. data/docs/release-v0.3.0-alpha.md +74 -0
  5. data/lib/csvtool/application/use_cases/run_extraction.rb +17 -17
  6. data/lib/csvtool/application/use_cases/run_row_extraction.rb +111 -0
  7. data/lib/csvtool/application/use_cases/run_row_randomization.rb +105 -0
  8. data/lib/csvtool/cli.rb +10 -2
  9. data/lib/csvtool/domain/{extraction_session → column_session}/column_selection.rb +1 -1
  10. data/lib/csvtool/domain/{extraction_session/extraction_session.rb → column_session/column_session.rb} +2 -2
  11. data/lib/csvtool/domain/{extraction_session → column_session}/csv_source.rb +1 -1
  12. data/lib/csvtool/domain/{extraction_session → column_session}/extraction_options.rb +1 -1
  13. data/lib/csvtool/domain/{extraction_session → column_session}/extraction_value.rb +1 -1
  14. data/lib/csvtool/domain/{extraction_session → column_session}/output_destination.rb +1 -1
  15. data/lib/csvtool/domain/{extraction_session → column_session}/preview.rb +1 -1
  16. data/lib/csvtool/domain/{extraction_session → column_session}/separator.rb +1 -1
  17. data/lib/csvtool/domain/row_randomization_session/randomization_options.rb +17 -0
  18. data/lib/csvtool/domain/row_randomization_session/randomization_output_destination.rb +31 -0
  19. data/lib/csvtool/domain/row_randomization_session/randomization_session.rb +25 -0
  20. data/lib/csvtool/domain/row_randomization_session/randomization_source.rb +23 -0
  21. data/lib/csvtool/domain/row_session/row_output_destination.rb +31 -0
  22. data/lib/csvtool/domain/row_session/row_range.rb +39 -0
  23. data/lib/csvtool/domain/row_session/row_session.rb +25 -0
  24. data/lib/csvtool/domain/row_session/row_source.rb +16 -0
  25. data/lib/csvtool/infrastructure/csv/row_randomizer.rb +83 -0
  26. data/lib/csvtool/infrastructure/csv/row_streamer.rb +27 -0
  27. data/lib/csvtool/infrastructure/output/csv_row_console_writer.rb +34 -0
  28. data/lib/csvtool/infrastructure/output/csv_row_file_writer.rb +45 -0
  29. data/lib/csvtool/interface/cli/errors/presenter.rb +20 -0
  30. data/lib/csvtool/interface/cli/menu_loop.rb +13 -5
  31. data/lib/csvtool/interface/cli/prompts/headers_present_prompt.rb +22 -0
  32. data/lib/csvtool/interface/cli/prompts/seed_prompt.rb +29 -0
  33. data/lib/csvtool/version.rb +1 -1
  34. data/test/csvtool/application/use_cases/run_row_extraction_test.rb +140 -0
  35. data/test/csvtool/application/use_cases/run_row_randomization_test.rb +124 -0
  36. data/test/csvtool/cli_test.rb +237 -6
  37. data/test/csvtool/cli_unit_test.rb +24 -1
  38. data/test/csvtool/domain/{extraction_session → column_session}/column_selection_test.rb +2 -2
  39. data/test/csvtool/domain/column_session/column_session_test.rb +35 -0
  40. data/test/csvtool/domain/column_session/csv_source_test.rb +14 -0
  41. data/test/csvtool/domain/{extraction_session → column_session}/extraction_options_test.rb +3 -3
  42. data/test/csvtool/domain/{extraction_session → column_session}/extraction_value_test.rb +2 -2
  43. data/test/csvtool/domain/{extraction_session → column_session}/output_destination_test.rb +3 -3
  44. data/test/csvtool/domain/column_session/preview_test.rb +18 -0
  45. data/test/csvtool/domain/{extraction_session → column_session}/separator_test.rb +3 -3
  46. data/test/csvtool/domain/row_randomization_session/randomization_options_test.rb +20 -0
  47. data/test/csvtool/domain/row_randomization_session/randomization_output_destination_test.rb +21 -0
  48. data/test/csvtool/domain/row_randomization_session/randomization_session_test.rb +26 -0
  49. data/test/csvtool/domain/row_randomization_session/randomization_source_test.rb +28 -0
  50. data/test/csvtool/domain/row_session/row_output_destination_test.rb +23 -0
  51. data/test/csvtool/domain/row_session/row_range_test.rb +30 -0
  52. data/test/csvtool/domain/row_session/row_session_test.rb +22 -0
  53. data/test/csvtool/domain/row_session/row_source_test.rb +12 -0
  54. data/test/csvtool/infrastructure/csv/row_randomizer_test.rb +37 -0
  55. data/test/csvtool/infrastructure/csv/row_streamer_test.rb +41 -0
  56. data/test/csvtool/infrastructure/output/csv_row_console_writer_test.rb +24 -0
  57. data/test/csvtool/infrastructure/output/csv_row_file_writer_test.rb +40 -0
  58. data/test/csvtool/interface/cli/errors/presenter_test.rb +10 -0
  59. data/test/csvtool/interface/cli/menu_loop_test.rb +68 -12
  60. data/test/csvtool/interface/cli/prompts/headers_present_prompt_test.rb +14 -0
  61. data/test/csvtool/interface/cli/prompts/seed_prompt_test.rb +39 -0
  62. data/test/fixtures/sample_people_bad_tail.csv +5 -0
  63. data/test/fixtures/sample_people_no_headers.csv +3 -0
  64. metadata +53 -17
  65. data/test/csvtool/domain/extraction_session/csv_source_test.rb +0 -14
  66. data/test/csvtool/domain/extraction_session/extraction_session_test.rb +0 -35
  67. 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.1.0.alpha
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/extraction_session/column_selection.rb
75
- - lib/csvtool/domain/extraction_session/csv_source.rb
76
- - lib/csvtool/domain/extraction_session/extraction_options.rb
77
- - lib/csvtool/domain/extraction_session/extraction_session.rb
78
- - lib/csvtool/domain/extraction_session/extraction_value.rb
79
- - lib/csvtool/domain/extraction_session/output_destination.rb
80
- - lib/csvtool/domain/extraction_session/preview.rb
81
- - lib/csvtool/domain/extraction_session/separator.rb
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/extraction_session/column_selection_test.rb
100
- - test/csvtool/domain/extraction_session/csv_source_test.rb
101
- - test/csvtool/domain/extraction_session/extraction_options_test.rb
102
- - test/csvtool/domain/extraction_session/extraction_session_test.rb
103
- - test/csvtool/domain/extraction_session/extraction_value_test.rb
104
- - test/csvtool/domain/extraction_session/output_destination_test.rb
105
- - test/csvtool/domain/extraction_session/preview_test.rb
106
- - test/csvtool/domain/extraction_session/separator_test.rb
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