loady 1.0.0 → 2.0.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 +5 -5
- data/README.md +8 -9
- data/lib/loady/attribute_array.rb +2 -2
- data/lib/loady/csv_loader.rb +18 -16
- data/lib/loady/memory_logger.rb +2 -0
- data/lib/loady/version.rb +3 -1
- data/lib/loady.rb +8 -6
- metadata +14 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 99844f1733cb28469a0524638bda878162bd7d5a7820995f5b4662d9092a6719
|
4
|
+
data.tar.gz: 9c471fe97ae22b9d7079244fd5343cdbf602bb5aec379595d70882ae44afc064
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1826d0b630e69989b6701b26150cd13b6befcd9b0fb2cef645a3cf76e921256d986bb38d881edcec049201b6c28c0825d6d7129011c339645e655f7d819765a8
|
7
|
+
data.tar.gz: 3255ac3fee4f7e6a024863443cdacd30aa51eb2fd822abd74a6b16bd1fdad6925d7226e392f1edaa311906a06649a02742ea366a2d6a5c969c32de5d2d7c0ed7
|
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
# Loady
|
2
2
|
|
3
3
|
[](http://rubygems.org/gem/loady)
|
4
|
-
[](https://codeclimate.com/github/teeparham/loady)
|
4
|
+
[](https://github.com/teeparham/loady/actions/workflows/ruby.yml)
|
6
5
|
[](https://coveralls.io/r/teeparham/loady)
|
7
6
|
|
8
7
|
Loady is a simple file reader and logger. Use it to read any delimited file. Loady makes it easy to conveniently convert input fields to an attribute hash, continue on error rows, and do basic logging.
|
@@ -13,13 +12,13 @@ It works with MRI ruby 1.9.3+. It uses ruby's CSV library to parse rows.
|
|
13
12
|
|
14
13
|
## Install
|
15
14
|
|
16
|
-
```
|
15
|
+
```ruby
|
17
16
|
gem install loady
|
18
17
|
```
|
19
18
|
|
20
19
|
Or include the gem in your Gemfile:
|
21
20
|
|
22
|
-
```
|
21
|
+
```ruby
|
23
22
|
gem 'loady'
|
24
23
|
```
|
25
24
|
|
@@ -31,7 +30,7 @@ By default, messages are logged to the standard output.
|
|
31
30
|
|
32
31
|
### Basic usage:
|
33
32
|
|
34
|
-
```
|
33
|
+
```ruby
|
35
34
|
Loady.read "/your/file.csv" do |row|
|
36
35
|
# handle each row
|
37
36
|
end
|
@@ -39,7 +38,7 @@ end
|
|
39
38
|
|
40
39
|
### Skip the first row and log to a file:
|
41
40
|
|
42
|
-
```
|
41
|
+
```ruby
|
43
42
|
logger = Logger.new "/your/file.log"
|
44
43
|
|
45
44
|
Loady.read "/your/file.csv", logger: logger, skip_first_row: true do |row|
|
@@ -49,7 +48,7 @@ end
|
|
49
48
|
|
50
49
|
### Name your attributes:
|
51
50
|
|
52
|
-
```
|
51
|
+
```ruby
|
53
52
|
Loady.read "/your/file.csv" do |row|
|
54
53
|
Monkey.create row.to_attributes [:name, :year, :mom]
|
55
54
|
|
@@ -60,7 +59,7 @@ end
|
|
60
59
|
|
61
60
|
### Load a tab-delimited file:
|
62
61
|
|
63
|
-
```
|
62
|
+
```ruby
|
64
63
|
Loady.read "/your/file.tab", col_sep: "\t" do |row|
|
65
64
|
# go bananas
|
66
65
|
end
|
@@ -70,7 +69,7 @@ end
|
|
70
69
|
|
71
70
|
`Loady::MemoryLoader` is a class that collects log messages in memory.
|
72
71
|
|
73
|
-
```
|
72
|
+
```ruby
|
74
73
|
memory_logger = Loady::MemoryLogger.new
|
75
74
|
|
76
75
|
Loady.read "/your/file.csv", logger: memory_logger do |row|
|
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Loady
|
2
4
|
class AttributeArray < Array
|
3
|
-
|
4
5
|
# usage:
|
5
6
|
# aa = Loady::AttributeArray.new(['john', 'doe'])
|
6
7
|
# aa.to_attributes([:first, :last])
|
@@ -20,6 +21,5 @@ module Loady
|
|
20
21
|
end
|
21
22
|
end
|
22
23
|
end
|
23
|
-
|
24
24
|
end
|
25
25
|
end
|
data/lib/loady/csv_loader.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "csv"
|
4
|
+
require "logger"
|
3
5
|
|
4
6
|
module Loady
|
5
7
|
class CsvLoader
|
@@ -13,29 +15,29 @@ module Loady
|
|
13
15
|
# skip_first_row: true -- default = false
|
14
16
|
# logger: Logger.new('/somewhere/file.log') -- default = Logger.new(STDOUT)
|
15
17
|
# plus any valid options you can pass to CSV.new:
|
16
|
-
# see
|
18
|
+
# see https://ruby.github.io/csv/CSV.html#class-CSV-label-Options
|
17
19
|
def read(filename, options = {}, &block)
|
18
20
|
@logger = options.delete(:logger) || default_logger
|
19
21
|
options[:headers] ||= options.delete(:skip_first_row)
|
20
22
|
|
21
|
-
CSV.foreach(filename, options) do |line|
|
22
|
-
readline line,
|
23
|
+
CSV.foreach(filename, **options) do |line|
|
24
|
+
readline line, &block
|
23
25
|
end
|
24
|
-
@logger.info "Finished. Loaded #{
|
25
|
-
rescue CSV::MalformedCSVError =>
|
26
|
-
@logger.error
|
27
|
-
@logger.error "Stopped Loading after #{
|
26
|
+
@logger.info "Finished. Loaded #{@success} rows. #{@warning} skipped rows."
|
27
|
+
rescue CSV::MalformedCSVError => e
|
28
|
+
@logger.error e.message
|
29
|
+
@logger.error "Stopped Loading after #{@success} rows. #{@warning} skipped rows."
|
28
30
|
end
|
29
31
|
|
30
32
|
class << self
|
31
|
-
def read(
|
32
|
-
new.read(
|
33
|
+
def read(*, **, &)
|
34
|
+
new.read(*, **, &)
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
36
|
-
|
38
|
+
private
|
37
39
|
|
38
|
-
def readline(line
|
40
|
+
def readline(line)
|
39
41
|
@line_number += 1
|
40
42
|
row = if line.respond_to?(:to_hash)
|
41
43
|
AttributeArray.new(line.to_hash.values)
|
@@ -47,13 +49,13 @@ module Loady
|
|
47
49
|
yield row
|
48
50
|
@success += 1
|
49
51
|
end
|
50
|
-
rescue
|
52
|
+
rescue StandardError => e
|
51
53
|
@warning += 1
|
52
|
-
@logger.warn "#{
|
54
|
+
@logger.warn "#{e.to_s.gsub('line 1', "line #{@line_number}")}\n#{line}"
|
53
55
|
end
|
54
56
|
|
55
57
|
def default_logger
|
56
|
-
logger = Logger.new(
|
58
|
+
logger = Logger.new($stdout)
|
57
59
|
logger.datetime_format = "%H:%M:%S"
|
58
60
|
logger
|
59
61
|
end
|
data/lib/loady/memory_logger.rb
CHANGED
data/lib/loady/version.rb
CHANGED
data/lib/loady.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "loady/attribute_array"
|
4
|
+
require "loady/csv_loader"
|
5
|
+
require "loady/memory_logger"
|
4
6
|
|
5
7
|
module Loady
|
6
|
-
def read(
|
7
|
-
Loady::CsvLoader.new.read(
|
8
|
+
def read(*, &)
|
9
|
+
Loady::CsvLoader.new.read(*, &)
|
8
10
|
end
|
9
|
-
|
11
|
+
|
10
12
|
alias csv read
|
11
13
|
|
12
14
|
module_function :read, :csv
|
metadata
CHANGED
@@ -1,57 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loady
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tee Parham
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: csv
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '3.2'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: rake
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '10.4'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '10.4'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '5.5'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '5.5'
|
26
|
+
version: '3.2'
|
55
27
|
description: File loader with simple logging
|
56
28
|
email:
|
57
29
|
- tee@neighborland.com
|
@@ -66,11 +38,12 @@ files:
|
|
66
38
|
- lib/loady/csv_loader.rb
|
67
39
|
- lib/loady/memory_logger.rb
|
68
40
|
- lib/loady/version.rb
|
69
|
-
homepage:
|
41
|
+
homepage: https://github.com/teeparham/loady
|
70
42
|
licenses:
|
71
43
|
- MIT
|
72
|
-
metadata:
|
73
|
-
|
44
|
+
metadata:
|
45
|
+
rubygems_mfa_required: 'true'
|
46
|
+
post_install_message:
|
74
47
|
rdoc_options: []
|
75
48
|
require_paths:
|
76
49
|
- lib
|
@@ -78,17 +51,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
78
51
|
requirements:
|
79
52
|
- - ">="
|
80
53
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
54
|
+
version: 3.2.0
|
82
55
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
56
|
requirements:
|
84
57
|
- - ">="
|
85
58
|
- !ruby/object:Gem::Version
|
86
59
|
version: '0'
|
87
60
|
requirements: []
|
88
|
-
|
89
|
-
|
90
|
-
signing_key:
|
61
|
+
rubygems_version: 3.5.23
|
62
|
+
signing_key:
|
91
63
|
specification_version: 4
|
92
64
|
summary: File loader with simple logging
|
93
65
|
test_files: []
|
94
|
-
has_rdoc:
|