honey_format 0.24.0 → 0.26.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e7b05a5cbde9ef4df67f043ff78e75c545563faa02333c57c97f70f1adec0f9
4
- data.tar.gz: 91275865eabfd283c22ef0507a76b0c433d64a36c2ab68d92501548b982a00c8
3
+ metadata.gz: 9d5c8d766a0e510eb1acbfeacf9811d8dd94ef570c383f833ea1dcf662e44df0
4
+ data.tar.gz: f20e85d19c17fdec467e1a6d24738d4d9d13acea1bcf586ea42343ed0f2ac32c
5
5
  SHA512:
6
- metadata.gz: c5904b276f295163855c1d74f7afa27568572e50583ec54532e571f70eb59ce06648e60a0e0d29806289d7126b8d0a9351acdd746967c247db03004cec3c4356
7
- data.tar.gz: e498be3c0e31e594cc42d2186404d367564111d70d2fffbe0011d0ea208e5f217ff8416061f12cbdff5137b3075e1f09d857b2dd189d785b865381d02c429d07
6
+ metadata.gz: 20073f13abbaa2c1de4bcec0ac3382ad9e611bc8f4532d5398252c0a7bef40b16efb48202b844c59670c693f4222dd82b6716be7b43bb09d0596ce4297dc9192
7
+ data.tar.gz: 6213369b0d81fe115db2b943dd587bb837b73940f58f6f03b8a270e13795489e673ad38617d5e5ca8892d3dac29d4bcb09ea5af2c571252868913e5e0eaef141
data/.travis.yml CHANGED
@@ -3,26 +3,13 @@ script:
3
3
  - bundle exec rspec
4
4
  matrix:
5
5
  fast_finish: true
6
- allow_failures:
7
- - name: TruffleRuby
8
- rvm: system
9
6
  include:
10
- - rvm: 2.3.0
7
+ - rvm: 2.7.0
11
8
  install:
12
- - gem install bundler --no-document
13
9
  - bundle install
14
- - rvm: 2.5.1
10
+ - rvm: 3.0.0
15
11
  install:
16
- - gem install bundler --no-document
17
12
  - bundle install
18
- - rvm: 2.6.0-preview3
13
+ - rvm: 3.3.0
19
14
  install:
20
15
  - bundle install
21
- - name: TruffleRuby
22
- rvm: system
23
- install:
24
- - export TRUFFLERUBY_VERSION=1.0.0-rc10
25
- - curl -L https://github.com/oracle/truffleruby/releases/download/vm-$TRUFFLERUBY_VERSION/truffleruby-$TRUFFLERUBY_VERSION-linux-amd64.tar.gz | tar xz
26
- - export PATH="$PWD/truffleruby-$TRUFFLERUBY_VERSION-linux-amd64/bin:$PATH"
27
- - gem install bundler -v 1.16.6 --no-ri --no-rdoc
28
- - bundle install
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # HEAD
2
2
 
3
+ ## v0.25.0
4
+
5
+ * Add support for adding multiple `Rows` together, `Rows#+`
6
+
3
7
  ## v0.24.0
4
8
 
5
9
  * Add support for multiple/chained converters. [PR#69](https://github.com/buren/honey_format/pull/69)
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2018 Jacob Burenstam Linder
3
+ Copyright (c) 2021 Jacob Burenstam Linder
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -323,6 +323,13 @@ user.public_send(:"first^name") # => "Jacob"
323
323
  user['first^name'] # => "Jacob"
324
324
  ```
325
325
 
326
+ Emoji characters
327
+ ```ruby
328
+ csv_string = "😎⛷\nEmoji characters"
329
+ csv = HoneyFormat::CSV.new(csv_string)
330
+ csv.rows.first.😎⛷ # => Emoji characters
331
+ ```
332
+
326
333
  __Errors__
327
334
 
328
335
  > When you need to be extra safe.
@@ -428,6 +435,30 @@ user.name # => buren
428
435
  user.created_at.class # => Time
429
436
  ```
430
437
 
438
+ ## Configuration
439
+
440
+ Configuration is optional
441
+ ```ruby
442
+ HoneyFormat.configure do |config|
443
+ config.header_converter = proc { |column| column.downcase }
444
+ config.delimiter = ";"
445
+ config.row_delimiter = "|"
446
+ config.quote_character = "'"
447
+ config.skip_lines = %r{\A#} # Match all lines that start with "#"
448
+ end
449
+ ```
450
+
451
+ Default configuration values
452
+ ```ruby
453
+ HoneyFormat.configure do |config|
454
+ config.header_converter = HoneyFormat::Registry.new(Converters::DEFAULT)[:header_column]
455
+ config.delimiter = ","
456
+ config.row_delimiter = :auto
457
+ config.quote_character = "\""
458
+ config.skip_lines = nil
459
+ end
460
+ ```
461
+
431
462
  ## CLI
432
463
 
433
464
  > Perfect when you want to get something simple done quickly.
data/honey_format.gemspec CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.required_ruby_version = '>= 2.3.0'
24
24
 
25
+ spec.add_dependency 'base64'
26
+
25
27
  spec.add_development_dependency 'benchmark-ips'
26
28
  spec.add_development_dependency 'bundler', '> 1.10', '< 3'
27
29
  spec.add_development_dependency 'byebug'
@@ -12,13 +12,18 @@ module HoneyFormat
12
12
  # @param [Array] rows the array of rows.
13
13
  # @param [Array<Symbol>] columns the array of column symbols.
14
14
  # @param type_map [Hash] map of column_name => type conversion to perform.
15
+ # @param pre_built_rows [boolean] whether the rows come pre-built
15
16
  # @raise [RowError] super class of errors raised when there is a row error.
16
17
  # @raise [EmptyRowColumnsError] raised when there are no columns.
17
18
  # @raise [InvalidRowLengthError] raised when row has more columns than header columns.
18
- def initialize(rows, columns, builder: nil, type_map: {})
19
+ def initialize(rows, columns, builder: nil, type_map: {}, pre_built_rows: false)
19
20
  @columns = columns
20
- builder = RowBuilder.new(@columns, builder: builder, type_map: type_map)
21
- @rows = prepare_rows(builder, rows)
21
+ if pre_built_rows
22
+ @rows = rows
23
+ else
24
+ builder = RowBuilder.new(@columns, builder: builder, type_map: type_map)
25
+ @rows = prepare_rows(builder, rows)
26
+ end
22
27
  end
23
28
 
24
29
  # Row columns
@@ -33,6 +38,18 @@ module HoneyFormat
33
38
  @rows.empty?
34
39
  end
35
40
 
41
+ # Returns the rows added together.
42
+ # @return [Rows] the two sets of Rows added together.
43
+ # @param [Rows] the other Rows object.
44
+ def +(other)
45
+ if columns != columns.union(other.columns)
46
+ raise ArgumentError, "can't added two sets of rows with different columns"
47
+ end
48
+
49
+ rows = @rows + other.rows_data
50
+ self.class.new(rows, columns, pre_built_rows: true)
51
+ end
52
+
36
53
  # @yield [row] The given block will be passed for every row.
37
54
  # @yieldparam [Row] a row in the CSV file.
38
55
  # @return [Enumerator]
@@ -49,6 +66,7 @@ module HoneyFormat
49
66
 
50
67
  # Return element at given position.
51
68
  # @return [Row] of rows.
69
+ # @param [Integer] the index to return.
52
70
  def [](index)
53
71
  @rows[index]
54
72
  end
@@ -84,6 +102,12 @@ module HoneyFormat
84
102
  csv_rows.join
85
103
  end
86
104
 
105
+ protected
106
+
107
+ def rows_data
108
+ @rows
109
+ end
110
+
87
111
  private
88
112
 
89
113
  def prepare_rows(builder, rows)
@@ -4,7 +4,7 @@ module HoneyFormat
4
4
  # Gem version
5
5
  VERSION = [
6
6
  MAJOR_VERSION = 0,
7
- MINOR_VERSION = 24,
7
+ MINOR_VERSION = 26,
8
8
  PATCH_VERSION = 0,
9
9
  ].join('.')
10
10
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honey_format
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Burenstam
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-06 00:00:00.000000000 Z
11
+ date: 2024-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: base64
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: benchmark-ips
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -153,7 +167,7 @@ homepage: https://github.com/buren/honey_format
153
167
  licenses:
154
168
  - MIT
155
169
  metadata: {}
156
- post_install_message:
170
+ post_install_message:
157
171
  rdoc_options: []
158
172
  require_paths:
159
173
  - lib
@@ -168,8 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
182
  - !ruby/object:Gem::Version
169
183
  version: '0'
170
184
  requirements: []
171
- rubygems_version: 3.1.4
172
- signing_key:
185
+ rubygems_version: 3.5.3
186
+ signing_key:
173
187
  specification_version: 4
174
188
  summary: Makes working with CSVs as smooth as honey.
175
189
  test_files: []