csv_plus_plus 0.2.0 → 0.2.1
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 +5 -0
- data/docs/CHANGELOG.md +3 -1
- data/lib/csv_plus_plus/cli_flag.rb +6 -0
- data/lib/csv_plus_plus/options/options.rb +8 -3
- data/lib/csv_plus_plus/version.rb +1 -1
- data/lib/csv_plus_plus/writer/merger.rb +30 -5
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c29d586e678385367fe7a4a67fa66f4f0d111ceb1ace46125daaecbdd0bf7b03
|
4
|
+
data.tar.gz: aa13e49605c6448aa61cbf6d64ac39f3cfd9d8f84cb20370d8129ab5f1dd6f4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6736fa3154f3ad44a4b3737a7d6e3b6571f6ba34226a8be4191a6cce3a53b1bcd09057b25bbc96da0ad01cc8c397e7b78df379b48fd510f881a810e8754aec65
|
7
|
+
data.tar.gz: 8160d63e5bda5417619d6a6e4e2a73b5cee744fc26b356d2c36efe3c56b93e2cfda8ed5cb128758079463542d0306d634c4804e02b7e4c56c14d9b98b0f3c1db
|
data/README.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
# Deprecated!!!
|
2
|
+
|
3
|
+
This version of csv++ is deprecated. For the current version please go to [github.com/patrickomatic/csv-plus-plus](https://github.com/patrickomatic/csv-plus-plus)
|
4
|
+
|
1
5
|

|
2
6
|
[](https://rubystyle.guide)
|
3
7
|
[](https://badge.fury.io/rb/csv_plus_plus)
|
@@ -59,6 +63,7 @@ Usage: csv++ [options]
|
|
59
63
|
-k, --key-values KEY_VALUES A comma-separated list of key=values which will be made available to the template
|
60
64
|
-n, --sheet-name SHEET_NAME The name of the sheet to apply the template to
|
61
65
|
-o, --output OUTPUT_FILE The file to write to (must be .csv, .ods, .xls)
|
66
|
+
-s, --safe Do not overwrite values in the spreadsheet being written to. The default is to overwrite
|
62
67
|
-v, --verbose Enable verbose output
|
63
68
|
-x, --offset-columns OFFSET Apply the template offset by OFFSET cells
|
64
69
|
-y, --offset-rows OFFSET Apply the template offset by OFFSET rows
|
data/docs/CHANGELOG.md
CHANGED
@@ -46,6 +46,7 @@ module CSVPlusPlus
|
|
46
46
|
'offset-columns': ->(options, v) { options.offset[0] = v },
|
47
47
|
'offset-rows': ->(options, v) { options.offset[1] = v },
|
48
48
|
output: ->(options, v) { options.output_filename = ::Pathname.new(v) },
|
49
|
+
safe: ->(options, _v) { options.overwrite_values = false },
|
49
50
|
verbose: ->(options, _v) { options.verbose = true }
|
50
51
|
},
|
51
52
|
::T::Hash[::Symbol, ::T.proc.params(options: ::CSVPlusPlus::Options::Options, v: ::String).void]
|
@@ -81,6 +82,11 @@ module CSVPlusPlus
|
|
81
82
|
'--output OUTPUT_FILE',
|
82
83
|
'The file to write to (must be .csv, .ods, .xls)'
|
83
84
|
),
|
85
|
+
::CSVPlusPlus::CLIFlag.new(
|
86
|
+
'-s',
|
87
|
+
'--safe',
|
88
|
+
'Do not overwrite values in the spreadsheet being written to. The default is to overwrite'
|
89
|
+
),
|
84
90
|
::CSVPlusPlus::CLIFlag.new('-v', '--verbose', 'Enable verbose output'),
|
85
91
|
::CSVPlusPlus::CLIFlag.new('-x OFFSET', '--offset-columns OFFSET', 'Apply the template offset by OFFSET cells'),
|
86
92
|
::CSVPlusPlus::CLIFlag.new('-y OFFSET', '--offset-rows OFFSET', 'Apply the template offset by OFFSET rows')
|
@@ -9,6 +9,7 @@ module CSVPlusPlus
|
|
9
9
|
# @attr create_if_not_exists [Boolean] Create the spreadsheet if it does not exist?
|
10
10
|
# @attr key_values [Hash] Additional variables that can be supplied to the template
|
11
11
|
# @attr offset [Array<Integer>] An [x, y] offset (array with two integers)
|
12
|
+
# @attr overwrite_values [Boolean] Whether or not to overwrite existing values in the output spreadsheet.
|
12
13
|
# @attr sheet_name [String] The name of the spreadsheet to write to
|
13
14
|
# @attr verbose [Boolean] Include extra verbose output?
|
14
15
|
class Options
|
@@ -29,6 +30,9 @@ module CSVPlusPlus
|
|
29
30
|
sig { returns(::T::Array[::Integer]) }
|
30
31
|
attr_accessor :offset
|
31
32
|
|
33
|
+
sig { returns(::T::Boolean) }
|
34
|
+
attr_accessor :overwrite_values
|
35
|
+
|
32
36
|
sig { returns(::String) }
|
33
37
|
attr_accessor :sheet_name
|
34
38
|
|
@@ -38,12 +42,13 @@ module CSVPlusPlus
|
|
38
42
|
sig { params(sheet_name: ::String).void }
|
39
43
|
# Initialize a defaul +Options+ object
|
40
44
|
def initialize(sheet_name)
|
41
|
-
@
|
42
|
-
@offset = ::T.let([0, 0], ::T::Array[::Integer])
|
45
|
+
@backup = ::T.let(false, ::T::Boolean)
|
43
46
|
@create_if_not_exists = ::T.let(false, ::T::Boolean)
|
44
47
|
@key_values = ::T.let({}, ::T::Hash[::Symbol, ::CSVPlusPlus::Entities::Entity])
|
48
|
+
@offset = ::T.let([0, 0], ::T::Array[::Integer])
|
49
|
+
@overwrite_values = ::T.let(true, ::T::Boolean)
|
50
|
+
@sheet_name = sheet_name
|
45
51
|
@verbose = ::T.let(false, ::T::Boolean)
|
46
|
-
@backup = ::T.let(false, ::T::Boolean)
|
47
52
|
end
|
48
53
|
|
49
54
|
sig { abstract.returns(::CSVPlusPlus::Options::OutputFormat) }
|
@@ -16,16 +16,41 @@ module CSVPlusPlus
|
|
16
16
|
options: ::CSVPlusPlus::Options::Options
|
17
17
|
).returns(::T.nilable(::T.type_parameter(:V)))
|
18
18
|
end
|
19
|
-
#
|
19
|
+
# Consistently enforce our strategy for resolving differences between new changes and existing. By default we
|
20
|
+
# overwrite values that are currently in the spreadsheet but you can override that with the --safe flag
|
20
21
|
def merge_cell_value(existing_value:, new_value:, options:)
|
21
|
-
|
22
|
-
merged_value = new_value || existing_value
|
22
|
+
merged_value = merge_with_strategy(existing_value:, new_value:, options:)
|
23
23
|
|
24
|
-
return merged_value
|
24
|
+
return merged_value unless options.verbose
|
25
|
+
|
26
|
+
if options.overwrite_values && merged_value != existing_value
|
27
|
+
warn("Overwriting existing value: \"#{existing_value}\" with \"#{new_value}\"")
|
28
|
+
# rubocop:disable Style/MissingElse
|
29
|
+
elsif !options.overwrite_values && new_value != merged_value
|
30
|
+
# rubocop:enable Style/MissingElse
|
31
|
+
warn("Keeping old value: \"#{existing_value}\" rather than new value: \"#{new_value}\"")
|
32
|
+
end
|
25
33
|
|
26
|
-
warn("Overwriting existing value: \"#{existing_value}\" with \"#{new_value}\"")
|
27
34
|
merged_value
|
28
35
|
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
sig do
|
40
|
+
type_parameters(:V)
|
41
|
+
.params(
|
42
|
+
existing_value: ::T.nilable(::T.all(::T.type_parameter(:V), ::BasicObject)),
|
43
|
+
new_value: ::T.nilable(::T.all(::T.type_parameter(:V), ::BasicObject)),
|
44
|
+
options: ::CSVPlusPlus::Options::Options
|
45
|
+
).returns(::T.nilable(::T.type_parameter(:V)))
|
46
|
+
end
|
47
|
+
def merge_with_strategy(existing_value:, new_value:, options:)
|
48
|
+
if options.overwrite_values
|
49
|
+
new_value || existing_value
|
50
|
+
else
|
51
|
+
existing_value || new_value
|
52
|
+
end
|
53
|
+
end
|
29
54
|
end
|
30
55
|
end
|
31
56
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csv_plus_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrick Carroll
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google-apis-drive_v3
|
@@ -212,16 +212,16 @@ files:
|
|
212
212
|
- lib/csv_plus_plus/writer/open_document.rb
|
213
213
|
- lib/csv_plus_plus/writer/rubyxl_builder.rb
|
214
214
|
- lib/csv_plus_plus/writer/writer.rb
|
215
|
-
homepage: https://github.com/patrickomatic/csv-plus-plus
|
215
|
+
homepage: https://github.com/patrickomatic/csv-plus-plus-ruby
|
216
216
|
licenses:
|
217
217
|
- MIT
|
218
218
|
metadata:
|
219
|
-
bug_tracker_uri: https://github.com/patrickomatic/csv-plus-plus/issues
|
219
|
+
bug_tracker_uri: https://github.com/patrickomatic/csv-plus-plus-ruby/issues
|
220
220
|
documentation_uri: https://www.rubydoc.info/gems/csv_plus_plus/
|
221
|
-
github_repo: git://github.com/patrickomatic/csv-plus-plus
|
222
|
-
homepage_uri: https://github.com/patrickomatic/csv-plus-plus
|
223
|
-
source_code_uri: https://github.com/patrickomatic/csv-plus-plus
|
224
|
-
changelog_uri: https://github.com/patrickomatic/csv-plus-plus/blob/main/docs/CHANGELOG.md
|
221
|
+
github_repo: git://github.com/patrickomatic/csv-plus-plus-ruby
|
222
|
+
homepage_uri: https://github.com/patrickomatic/csv-plus-plus-ruby
|
223
|
+
source_code_uri: https://github.com/patrickomatic/csv-plus-plus-ruby
|
224
|
+
changelog_uri: https://github.com/patrickomatic/csv-plus-plus-ruby/blob/main/docs/CHANGELOG.md
|
225
225
|
rubygems_mfa_required: 'true'
|
226
226
|
post_install_message:
|
227
227
|
rdoc_options: []
|