honey_format 0.24.0 → 0.25.0
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/CHANGELOG.md +4 -0
- data/LICENSE.txt +1 -1
- data/README.md +31 -0
- data/lib/honey_format/matrix/rows.rb +27 -3
- data/lib/honey_format/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bba6cf8014cc6cfa59c8519bbb2448d22800e3f5c3699629fd74132f5b615b82
|
4
|
+
data.tar.gz: d1e7dc2ed46e061edd4d473a267c5c1a0296fd58f080e7fecd878341364cb90f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d67aad924dd6d89a56a2e36b1eb84ae2a30e68f71d717fc11c8be960fbf154b0061311105d814b8458b794c6f0a6f93d078fa91efd9c3f3845afcf87c9abfaa4
|
7
|
+
data.tar.gz: 2981c007e997cad9e8c58e9cdb4b22654b8f0443ef82345355919068b1bd804d278780808ba361f9077cf1e03bad649060b4474fba99de02a999bc9aea3e7efc
|
data/CHANGELOG.md
CHANGED
data/LICENSE.txt
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
The MIT License (MIT)
|
2
2
|
|
3
|
-
Copyright (c)
|
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.
|
@@ -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
|
-
|
21
|
-
|
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)
|
data/lib/honey_format/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: honey_format
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.25.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jacob Burenstam
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: benchmark-ips
|