dost 0.0.2 → 0.0.3

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dost.rb +15 -10
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '07449a34d8548c23ddc740498a7b25bf3d06b708'
4
- data.tar.gz: 9b7fed4703a1f1137aee3e7d27df27de56834a91
3
+ metadata.gz: fa3529277f8d4a7e707177292c9fd05c6441db19
4
+ data.tar.gz: 0e15c808fb080596ee560ffd2ed18c155222a62e
5
5
  SHA512:
6
- metadata.gz: 6a632d921c55c5e6ebb4f30ee689f8ecb84f1c1a3d782ef7e21110f8491b15979afcbc59953c345a2f5039b5c0617ba148d498caffe60870838ffbfb44c8934b
7
- data.tar.gz: 331c93a7d4ab90f9bc07a32fd0f16f1890b9efd6acfa518c3aa48909c14f34b1fa0a09b7f8b83f650ee69943b830e475e40b49a96247882cdef44e43edf9f422
6
+ metadata.gz: 2fd316facada5b765e00165e99348313fde08ad03dbecada3336693c0a321e06c1d8eb557838e01aa1e0661808b4a0d04b47173513ab867298e7f9bd4ff9a4ff
7
+ data.tar.gz: c42959614245fc8ac2287a9a1911147a7aa864c67ae4efed5583e7881393603cc046013d0a56e76b4b47d69a2f7459dcb175be0a374b0f918304eb8919eac74c
@@ -1,3 +1,4 @@
1
+ require 'pry'
1
2
  module DOST
2
3
  class Data
3
4
  attr_reader :lines, :headers_delimiters, :values_delimiters
@@ -22,23 +23,27 @@ module DOST
22
23
  first_row = raw_headers.first
23
24
  second_row = raw_headers.last
24
25
 
25
- first_row.map do |(first_key, first_range)|
26
- values_inside = second_row.select do |(lk, lr)|
27
- overlaps?((lr.first..(lk.length + lr.first)), (first_range.first..(first_range.first + first_key.length)))
26
+ first_row.map.with_index do |(first_key, first_range)|
27
+ values_inside = second_row.select do |(second_key, second_range)|
28
+ overlaps?(
29
+ ((second_range.first + second_key.index(/(\S)/))..(second_key.strip.length + second_range.first)),
30
+ (first_range.first..(first_key.strip.length + first_range.first))
31
+ )
28
32
  end
29
33
 
30
- if !values_inside.empty? && values_inside.count > 1
34
+ if values_inside.empty?
35
+ [[first_key.strip.to_sym, first_range]]
36
+ else
31
37
  values_inside.map.with_index do |(second_item_key, second_item_range), index|
32
- key = (first_key.to_s + second_item_key.to_s.prepend('_')).to_sym
38
+ key = (first_key.strip + second_item_key.strip.prepend('_'))
33
39
  is_last_item = (index == values_inside.count - 1)
34
- left_bound = index.zero? ? [second_item_range.first, first_range.first].min : second_item_range.first
40
+ second_item_left_bound = second_item_range.first + second_item_key.index(/(\S)/)
41
+ left_bound = index.zero? ? [second_item_left_bound, first_range.first].min : second_item_range.first
35
42
  right_bound = is_last_item ? [second_item_range.last, first_range.last].min : second_item_range.last
36
43
 
37
44
  range = left_bound..right_bound
38
- [key, range]
45
+ [key.strip.to_sym, range]
39
46
  end
40
- else
41
- [[first_key, first_range]]
42
47
  end
43
48
  end.flatten(1)
44
49
  end
@@ -54,7 +59,7 @@ module DOST
54
59
  private def calc_ranges(header_line)
55
60
  header_line.split(%r{(^\s*\S*\s*)|(\S*\s*)}).reject(&:empty?).reduce([]) do |acc, key|
56
61
  index = acc.last&.last&.last || -1;
57
- acc.push([key.strip.downcase.to_sym, (index + 1)..(index + (key.length))])
62
+ acc.push([key, (index + 1)..(index + key.length)])
58
63
  end
59
64
  end
60
65
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dost
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Takarlikov