price_scanner 0.2.1 → 0.2.2

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: 0ecd0d4d00035cf9a9fae5d1e36ef4e86c817432128eae3b02f1a46cef7d0dfa
4
- data.tar.gz: 7a594ab4fb0af0456f4465b867929a7a041e8f19883f0a4e67932a408a1bde14
3
+ metadata.gz: 5866ddf8fd84a9bc437fc7abb5cb6e137ce3d9f9f36d1ff778e1e8db668d0ce1
4
+ data.tar.gz: 92ee758d982507e59b5a3da296d5390f6b1af276ebe52359e3718909b5186271
5
5
  SHA512:
6
- metadata.gz: eaa881c8021e3402d543589efdfb4d0cc081e59b3650714952525fcd9b932a3885c8d245f4f5052637fd33f1b3167edddab3d778c7a8046ece33d60ee4999aac
7
- data.tar.gz: 1ff594ed3d82a7e37848b84e0888cefc3e6a80515e62b91267bfb764c80dbb93335b532ae9adb376bf948c6cd68d4461ad35d10bfe694b3239f768d0b21be8a7
6
+ metadata.gz: 151ba2ea359f8e9bfe5c44b541de9c51e83c8316a8237ca682f00f1e042ac52c2a6328fd778541ab569a7bf577caed233e83d127acf822aabd493c7d519fa6c7
7
+ data.tar.gz: 98e055152d925a8ed027f2baab2523d7e77804a6ea139985d296d3bb36273aa44450e80b8093ac18b23f1661b3350dafb62392948a04cdd869d31cf235d7b5b5
@@ -72,7 +72,25 @@ module PriceScanner
72
72
  end
73
73
 
74
74
  def negative_price?(text_str, match_index)
75
- match_index.positive? && NEGATIVE_PREFIXES.include?(text_str[match_index - 1])
75
+ return false unless match_index.positive?
76
+
77
+ # Direct prefix: "-1.040,00 zł"
78
+ return true if NEGATIVE_PREFIXES.include?(text_str[match_index - 1])
79
+
80
+ # Spaced prefix: "- 1.040 zł" — only when dash is at start or preceded by non-digit
81
+ # "Pack of 3 - 29,99 zł" → dash after digit = range separator, not negative
82
+ i = match_index - 1
83
+ i -= 1 while i >= 0 && text_str[i] =~ /\s/
84
+ return false unless i >= 0 && NEGATIVE_PREFIXES.include?(text_str[i])
85
+
86
+ # Dash at start of text = negative
87
+ return true if i == 0
88
+
89
+ # Check what's before the dash (skip whitespace)
90
+ j = i - 1
91
+ j -= 1 while j >= 0 && text_str[j] =~ /\s/
92
+ # Dash after digit = range separator ("3 - 29,99"), not negative
93
+ j < 0 || text_str[j] !~ /\d/
76
94
  end
77
95
 
78
96
  def per_unit_price?(text_str, match_end)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PriceScanner
4
- VERSION = "0.2.1"
4
+ VERSION = "0.2.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: price_scanner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justyna