acts_as_table_csv 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 39b160ffc4a93b79254c6b33905013a8654334773ef0a44bee15fd111d3e62d6
4
+ data.tar.gz: de211a8b138223ba2c927c3d7b88846465a521022c501498e67f962ba0d58a5b
5
+ SHA512:
6
+ metadata.gz: b9a058e1673e8d4c8358969a979864cd58ab20612e2ab3aab7cd8d02560092a1a937ec034c5ce5d7431d7b0cdf7febe0d154b2f08d0530b311206fae2d5ddf32
7
+ data.tar.gz: a63100f72aa8eff2b8879cf7baeb9ee956f0e7fde352cfa798c0623b456f819225c6f6de780288dde7e18ba3754483ccbfad10f36296dce6ab634957b54d45ef
@@ -0,0 +1 @@
1
+ --markup markdown --markup-provider redcarpet
data/LICENSE ADDED
@@ -0,0 +1,30 @@
1
+ Copyright (c) 2020, Battelle Memorial Institute
2
+ All rights reserved.
3
+
4
+ 1. Battelle Memorial Institute (hereinafter Battelle) hereby grants permission
5
+ to any person or entity lawfully obtaining a copy of this software and
6
+ associated documentation files (hereinafter "the Software") to redistribute
7
+ and use the Software in source and binary forms, with or without
8
+ modification. Such person or entity may use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and may permit
10
+ others to do so, subject to the following conditions:
11
+
12
+ * Redistributions of source code must retain the above copyright notice, this
13
+ list of conditions and the following disclaimers.
14
+ * Redistributions in binary form must reproduce the above copyright notice,
15
+ this list of conditions and the following disclaimer in the documentation
16
+ and/or other materials provided with the distribution.
17
+ * Other than as used herein, neither the name Battelle Memorial Institute or
18
+ Battelle may be used in any form whatsoever without the express written
19
+ consent of Battelle.
20
+
21
+ 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
+ DISCLAIMED. IN NO EVENT SHALL BATTELLE OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
25
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
29
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
30
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,76 @@
1
+ # CSV Support for ActsAsTable
2
+
3
+ This is an [ActsAsTable](https://github.com/pnnl/acts_as_table) extension that adds support for parsing/serializing [Comma-Separated Values](https://tools.ietf.org/html/rfc4180) (CSV) data.
4
+
5
+ * https://github.com/pnnl/acts_as_table_csv
6
+
7
+ ## Documentation
8
+
9
+ * {ActsAsTable::CSV}
10
+ * {ActsAsTable::CSV::Reader}
11
+ * {ActsAsTable::CSV::Writer}
12
+
13
+ ## Dependencies
14
+
15
+ * [ActsAsTable](https://github.com/pnnl/acts_as_table) (~> 0.0.1)
16
+
17
+ ## Installation
18
+
19
+ The recommended installation method is via [RubyGems](http://rubygems.org/).
20
+ To install the latest, official release of the `ActsAsTable::CSV` gem, do:
21
+ ```bash
22
+ % [sudo] gem install acts_as_table_csv
23
+ ```
24
+
25
+ ## Examples
26
+
27
+ ```ruby
28
+ require 'acts_as_table'
29
+ ```
30
+
31
+ ### Writing CSV data
32
+
33
+ ```ruby
34
+ # @return [ActsAsTable::RowModel]
35
+ @row_model = ...
36
+
37
+ # @return [Array<ActiveRecord::Base>]
38
+ @bases = ...
39
+
40
+ ActsAsTable.for(:csv).writer(@row_model, $stdout) do |writer|
41
+ @bases.each do |base|
42
+ writer << base
43
+ end
44
+ end
45
+ ```
46
+
47
+ ### Reading CSV data
48
+
49
+ ```ruby
50
+ # @return [ActsAsTable::RowModel]
51
+ @row_model = ...
52
+
53
+ # @return [ActsAsTable::Table]
54
+ @table = @row_model.tables.new
55
+
56
+ ActsAsTable.for(:csv).reader(@row_model, $stdin) do |reader|
57
+ reader.each_row do |row|
58
+ # @return [Array<ActsAsTable::Record>]
59
+ records = @table.from_row(row)
60
+
61
+ records.each do |record|
62
+ record.position = reader.lineno
63
+ end
64
+ end
65
+ end
66
+ ```
67
+
68
+ ## Author
69
+
70
+ * [Mark Borkum](https://github.com/markborkum)
71
+
72
+ ## License
73
+
74
+ This software is licensed under a 3-clause BSD license.
75
+
76
+ For more information, see the accompanying {file:LICENSE} file.
@@ -0,0 +1,13 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ Bundler::GemHelper.install_tasks
8
+
9
+ require 'yard'
10
+
11
+ YARD::Rake::YardocTask.new do |t|
12
+ t.files = ['lib/**/*.rb']
13
+ end
@@ -0,0 +1,38 @@
1
+ require 'active_support/core_ext/module'
2
+
3
+ module ActsAsTable
4
+ # ActsAsTable serialization format module for comma-separated values (CSV) format.
5
+ module CSV
6
+ extend ::ActiveSupport::Autoload
7
+
8
+ autoload :Reader, 'acts_as_table/csv/reader'
9
+ autoload :Writer, 'acts_as_table/csv/writer'
10
+
11
+ # Returns the symbolic name for this ActsAsTable serialization format.
12
+ #
13
+ # @return [Symbol]
14
+ def self.format
15
+ :csv
16
+ end
17
+
18
+ # Returns a new ActsAsTable reader object for this serialization format.
19
+ #
20
+ # @param [Array<Object>] args
21
+ # @yieldparam [ActsAsTable::CSV::Reader] reader
22
+ # @yieldreturn [void]
23
+ # @return [ActsAsTable::CSV::Reader]
24
+ def self.reader(*args, &block)
25
+ Reader.new(*args, &block)
26
+ end
27
+
28
+ # Returns a new ActsAsTable writer object for this serialization format.
29
+ #
30
+ # @param [Array<Object>] args
31
+ # @yieldparam [ActsAsTable::CSV::Writer] writer
32
+ # @yieldreturn [void]
33
+ # @return [ActsAsTable::CSV::Writer]
34
+ def self.writer(*args, &block)
35
+ Writer.new(*args, &block)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,48 @@
1
+ require 'csv'
2
+
3
+ module ActsAsTable::CSV
4
+ # ActsAsTable reader object for comma-separated values (CSV) format.
5
+ class Reader < ActsAsTable::Reader
6
+ # Returns a new ActsAsTable reader object for comma-separated values (CSV) format using the given ActsAsTable row model, input stream and options.
7
+ #
8
+ # @param [ActsAsTable::RowModel] row_model
9
+ # @param [IO] input
10
+ # @param [Hash<Symbol, Object>] options
11
+ # @yieldparam [ActsAsTable::CSV::Reader] reader
12
+ # @yieldreturn [void]
13
+ # @return [ActsAsTable::CSV::Reader]
14
+ #
15
+ # @note Delegates input stream and options to constructor for +CSV+ object.
16
+ # @see ::CSV.new
17
+ def initialize(row_model, input = $stdin, **options, &block)
18
+ # @return [Hash<Symbol, Object>]
19
+ csv_options = (options[:csv] || {}).merge({
20
+ headers: false,
21
+ })
22
+
23
+ @csv = ::CSV.new(input, **csv_options)
24
+
25
+ super(row_model, input, **options, &block)
26
+ end
27
+
28
+ # Returns a pair, where the first element is the next row or +nil+ if input stream is at end of file and the second element indicates if input stream is at end of file.
29
+ #
30
+ # @return [Object]
31
+ def read_row
32
+ # @return [Array<#to_s>, nil]
33
+ row = @csv.shift
34
+
35
+ if row.nil?
36
+ [row, true]
37
+ else
38
+ row = row.collect(&:to_s).collect(&:strip).collect { |s| s.empty? ? nil : s }
39
+
40
+ if row.all?(&:nil?)
41
+ row = nil
42
+ end
43
+
44
+ [row, false]
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,38 @@
1
+ require 'csv'
2
+
3
+ module ActsAsTable::CSV
4
+ # ActsAsTable writer object for comma-separated values (CSV) format.
5
+ class Writer < ActsAsTable::Writer
6
+ # Returns a new ActsAsTable writer object for comma-separated values (CSV) format using the given ActsAsTable row model, output stream and options.
7
+ #
8
+ # @param [ActsAsTable::RowModel] row_model
9
+ # @param [IO] output
10
+ # @param [Hash<Symbol, Object>] options
11
+ # @yieldparam [ActsAsTable::CSV::Writer] writer
12
+ # @yieldreturn [void]
13
+ # @return [ActsAsTable::CSV::Writer]
14
+ #
15
+ # @note Delegates output stream and options to constructor for +CSV+ object.
16
+ # @see ::CSV.new
17
+ def initialize(row_model, output = $stdout, **options, &block)
18
+ # @return [Hash<Symbol, Object>]
19
+ csv_options = (options[:csv] || {}).merge({
20
+ headers: false,
21
+ })
22
+
23
+ @csv = ::CSV.new(output, **csv_options)
24
+
25
+ super(row_model, output, **options, &block)
26
+ end
27
+
28
+ # Writes a row to the output stream.
29
+ #
30
+ # @param [Array<String, nil>, nil] row
31
+ # @return [ActsAsTable::Writer]
32
+ def write_row(row)
33
+ @csv << row
34
+
35
+ self
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,17 @@
1
+ require 'active_support/core_ext/module'
2
+
3
+ begin
4
+ require 'rails/engine'
5
+ require 'acts_as_table_csv/engine'
6
+ rescue ::LoadError
7
+ # void
8
+ end
9
+
10
+ require 'acts_as_table_csv/version'
11
+
12
+ # ActsAsTable extension for parsing/serializing CSV data.
13
+ module ActsAsTableCsv
14
+ extend ::ActiveSupport::Autoload
15
+
16
+ autoload :VERSION
17
+ end
@@ -0,0 +1,13 @@
1
+ module ActsAsTableCsv
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace ActsAsTableCsv
4
+
5
+ initializer 'acts_as_table_csv.append_format' do |app|
6
+ ActsAsTable.configure do
7
+ require 'acts_as_table/csv'
8
+
9
+ config.formats << :CSV
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,4 @@
1
+ module ActsAsTableCsv
2
+ # @return [String]
3
+ VERSION = '0.0.1'
4
+ end
metadata ADDED
@@ -0,0 +1,111 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_table_csv
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Mark Borkum
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-01-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: acts_as_table
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: redcarpet
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: ActsAsTable extension for parsing/serializing CSV data.
70
+ email:
71
+ - mark.borkum@pnnl.gov
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - ".yardopts"
77
+ - LICENSE
78
+ - README.md
79
+ - Rakefile
80
+ - lib/acts_as_table/csv.rb
81
+ - lib/acts_as_table/csv/reader.rb
82
+ - lib/acts_as_table/csv/writer.rb
83
+ - lib/acts_as_table_csv.rb
84
+ - lib/acts_as_table_csv/engine.rb
85
+ - lib/acts_as_table_csv/version.rb
86
+ homepage: https://github.com/pnnl/acts_as_table_csv
87
+ licenses:
88
+ - BSD-3-Clause
89
+ metadata:
90
+ bug_tracker_uri: https://github.com/pnnl/acts_as_table_csv/issues
91
+ source_code_uri: https://github.com/pnnl/acts_as_table_csv
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubygems_version: 3.0.8
108
+ signing_key:
109
+ specification_version: 4
110
+ summary: CSV support for ActsAsTable.
111
+ test_files: []