ndr_import 10.2.0 → 10.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aaca9cf96e7433b7889c004f769997288ea1cec77322754e965b97a545ffb0ab
4
- data.tar.gz: 4a1e456f8766f2ea3422b0b712b2ca4c420873248e66fc77b1db8559470a1247
3
+ metadata.gz: 877346774d65eccb73f913081d75a48345a92b9e4c11e6f87702c9e0d59ebc3d
4
+ data.tar.gz: e59f23137e7568ce5e6eb1e4734b9046aed8f8fa93f392a9f2d82091013c3c04
5
5
  SHA512:
6
- metadata.gz: '081ce6d8bce5dde04dca97a68057897a093bc90cca23f7336415330d92dcc599b96b606e9626358731c6638f0c3c1e41b7e763b2c03488cb76eeaa5c5c7a2cd8'
7
- data.tar.gz: 802ba8017a16cc843196004854c3a82d161e76bdd4c2f61a5f93e34018dae9090212dd67c4e503a46c5ee78d6ed2da2d7e6f17192e62e4abefbd2382389d1cce
6
+ metadata.gz: 5bd15b2baf53b654a9f2be306d45dd3a509c298427790c139431f9f77df84b14f6506d625620b6781e9d44315fb8ada40307865a059c2ae3e78945293065dc9f
7
+ data.tar.gz: 06070cd9f9d5311835a523f8f926c938e0c65561c863d8bc972a1250a278ccf06991013773c31f877173873b600bbee40e6ce9faa6d3da167dd93a4fc11b4965
data/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  ## [Unreleased]
2
+ =======
2
3
  *no unreleased changes*
3
4
 
5
+ ## 10.3.0 / 2023-09-07
6
+ ### Added
7
+ * VCF file support
8
+ * Support Ruby 3.2. Drop support for Ruby 2.7, Rails 6.0
9
+
4
10
  ## 10.2.0 / 2023-05-16
5
11
  * avro file support
6
12
  * allow storage of `significant_mapped_fields` in `Table`
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # NdrImport [![Build Status](https://github.com/NHSDigital/ndr_import/workflows/Test/badge.svg)](https://github.com/NHSDigital/ndr_import/actions?query=workflow%3Atest) [![Gem Version](https://badge.fury.io/rb/ndr_import.svg)](https://rubygems.org/gems/ndr_import) [![Documentation](https://img.shields.io/badge/ndr_import-docs-blue.svg)](https://www.rubydoc.info/gems/ndr_import)
2
2
  This is the NHS Digital (NHSD) National Disease Registers (NDR) Import ETL ruby gem, providing:
3
3
 
4
- 1. file import handlers for *extracting* data from delimited files (csv, pipe, tab, thorn), JSON Lines, .xls(x) spreadsheets, .doc(x) word documents, PDF, PDF AcroForms, XML, 7-Zip, Zip and avro files.
4
+ 1. file import handlers for *extracting* data from delimited files (csv, pipe, tab, thorn), JSON Lines, .xls(x) spreadsheets, .doc(x) word documents, PDF, PDF AcroForms, XML, 7-Zip, Zip, avro and VCF files.
5
5
  2. table mappers for *transforming* tabular and non-tabular data into key value pairs grouped by a common "klass".
6
6
 
7
7
  ## Installation
@@ -8,6 +8,7 @@ require_relative 'pdf'
8
8
  require_relative 'seven_zip'
9
9
  require_relative 'text'
10
10
  require_relative 'unregistered_filetype'
11
+ require_relative 'vcf'
11
12
  require_relative 'word'
12
13
  require_relative 'xml'
13
14
  require_relative 'zip'
@@ -0,0 +1,25 @@
1
+ require 'bio-vcf/vcfline'
2
+ require 'ndr_support/safe_file'
3
+ require_relative 'registry'
4
+
5
+ module NdrImport
6
+ # This is one of a collection of file handlers that deal with individual formats of data.
7
+ # They can be instantiated directly or via the factory method Registry.tables
8
+ module File
9
+ # This class is a vcf file handler that returns a single table.
10
+ class Vcf < Base
11
+ private
12
+
13
+ def rows(&block)
14
+ return enum_for(:rows) unless block
15
+
16
+ ::File.read(@filename).each_line do |line|
17
+ next if line =~ /^##/
18
+
19
+ yield BioVcf::VcfLine.parse(line)
20
+ end
21
+ end
22
+ end
23
+ Registry.register(Vcf, 'vcf')
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require 'ndr_import/table'
2
+
3
+ module NdrImport
4
+ module Vcf
5
+ # Syntatic sugar to ensure `header_lines` and `footer_lines` are 1 and 0 respectively.
6
+ # All other Table logic is inherited from `NdrImport::Table`
7
+ class Table < ::NdrImport::Table
8
+ def self.all_valid_options
9
+ super - %w[delimiter header_lines footer_lines xml_record_xpath]
10
+ end
11
+
12
+ def header_lines
13
+ 1
14
+ end
15
+
16
+ def footer_lines
17
+ 0
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  # This stores the current version of the NdrImport gem
3
3
  module NdrImport
4
- VERSION = '10.2.0'
4
+ VERSION = '10.3.0'
5
5
  end
data/lib/ndr_import.rb CHANGED
@@ -10,6 +10,7 @@ require 'ndr_import/fixed_width/table'
10
10
  require 'ndr_import/xml/table'
11
11
  require 'ndr_import/pdf_form/table'
12
12
  require 'ndr_import/avro/table'
13
+ require 'ndr_import/vcf/table'
13
14
  require 'ndr_import/unmapped_data_error'
14
15
  require 'ndr_import/acroform_reader'
15
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ndr_import
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.2.0
4
+ version: 10.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - NCRS Development Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-18 00:00:00.000000000 Z
11
+ date: 2023-09-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '6.0'
33
+ version: '6.1'
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
36
  version: '7.1'
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: '6.0'
43
+ version: '6.1'
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '7.1'
@@ -106,6 +106,20 @@ dependencies:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
108
  version: 1.11.0
109
+ - !ruby/object:Gem::Dependency
110
+ name: bio-vcf
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: 0.9.5
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: 0.9.5
109
123
  - !ruby/object:Gem::Dependency
110
124
  name: docx
111
125
  requirement: !ruby/object:Gem::Requirement
@@ -399,6 +413,7 @@ files:
399
413
  - lib/ndr_import/file/seven_zip.rb
400
414
  - lib/ndr_import/file/text.rb
401
415
  - lib/ndr_import/file/unregistered_filetype.rb
416
+ - lib/ndr_import/file/vcf.rb
402
417
  - lib/ndr_import/file/word.rb
403
418
  - lib/ndr_import/file/xml.rb
404
419
  - lib/ndr_import/file/zip.rb
@@ -424,6 +439,7 @@ files:
424
439
  - lib/ndr_import/table.rb
425
440
  - lib/ndr_import/universal_importer_helper.rb
426
441
  - lib/ndr_import/unmapped_data_error.rb
442
+ - lib/ndr_import/vcf/table.rb
427
443
  - lib/ndr_import/version.rb
428
444
  - lib/ndr_import/xml/control_char_escaper.rb
429
445
  - lib/ndr_import/xml/table.rb
@@ -439,14 +455,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
439
455
  requirements:
440
456
  - - ">="
441
457
  - !ruby/object:Gem::Version
442
- version: '2.7'
458
+ version: '3.0'
443
459
  required_rubygems_version: !ruby/object:Gem::Requirement
444
460
  requirements:
445
461
  - - ">="
446
462
  - !ruby/object:Gem::Version
447
463
  version: '0'
448
464
  requirements: []
449
- rubygems_version: 3.2.33
465
+ rubygems_version: 3.4.10
450
466
  signing_key:
451
467
  specification_version: 4
452
468
  summary: NDR Import