ndr_import 10.2.0 → 10.3.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: 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