food_ingredient_parser 1.1.0 → 1.1.1

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
  SHA1:
3
- metadata.gz: 629792af43b06c646b98c2ab8ee136895123e3e5
4
- data.tar.gz: 6abbe88e79943cedb8b8776146aab6fdffd427e1
3
+ metadata.gz: 41da81db767bedd583db2794f44d39d710ddef58
4
+ data.tar.gz: 9bc24f8e83d04fb608e8fba4364aa26117fd898b
5
5
  SHA512:
6
- metadata.gz: c1728c6edc995f6a5a18b82eae0e217fa18814c75f1b34d33d52abc4f593428020ba6a425ea526519036a5d4a412a80b43aae55147b2a07bae0e0979394b26bd
7
- data.tar.gz: a9f43ad8e20ab867293e1db59aeb5b7bd6147a6e560adb58159f345d441c6445be453b7eb4ba01bdd4169ae951444e4bf90a6e7873cf85cfa7557b4ac4859d36
6
+ metadata.gz: 7634ebb4a8f3530cab515c5b27d2782df8c2521eb79df67ecbe08945360bcc27d68456d389d69a83808792145ecfb7094b3b97b5c33cbb17119642449813df88
7
+ data.tar.gz: 3b5c5ed78b7c4e41211855523acaf2a4c519b0e021a32eb698a715f7dccf2beacde229593d8422b71ce7a5a55dc1e266347d263c6629a72cdb308556697f7d93
@@ -6,7 +6,7 @@ module FoodIngredientParser::Loose
6
6
  SEP_CHARS = "|;,.".freeze
7
7
  MARK_CHARS = "¹²³⁴⁵ᵃᵇᶜᵈᵉᶠᵍªº⁽⁾†‡•°#^*".freeze
8
8
  PREFIX_RE = /\A\s*(ingredients|contains|ingred[iï][eë]nt(en)?(declaratie)?|bevat|dit zit er\s?in|samenstelling|zutaten)\b\s*[:;.]?\s*/i.freeze
9
- NOTE_RE = /\A\b(dit product kan\b|deze verpakking kan\b|kan sporen\b.*?\bbevatten\b|voor allergenen\b|allergenen\b|E\s*=|gemaakt in\b|geproduceerd in\b|bevat mogelijk\b|kijk voor meer\b|allergie-info|in de fabriek\b|in dit bedrijf\b)/i.freeze
9
+ NOTE_RE = /\A\b(dit product kan\b|deze verpakking kan\b|kan sporen\b.*?\bbevatten\b|voor allergenen\b|allergenen\b|E\s*=|gemaakt in\b|geproduceerd in\b|bevat mogelijk\b|kijk voor meer\b|allergie-info|in de fabriek\b|in dit bedrijf\b|voor [0-9,.]+ (g\.?|gr\.?|ram|ml).*\bis [0-9,.]+ (g\.?|gr\.?|ram|ml).*\bgebruikt\b)/i.freeze
10
10
  # Keep in sync with +abbrev+ in the +Common+ grammar, plus relevant ones from the +Amount+ grammar.
11
11
  ABBREV_RE = Regexp.union(/\A(N°|°C|(ijzer|chroom|koper)\s*\(I+\)\s*[[:alnum:]]+)\b/i, *%w[
12
12
  a.o.p b.g.a b.o.b c.a c.i d.e d.m.v d.o.c d.o.p d.s e.a e.g e.u f.i.l f.o.s i.a
@@ -107,7 +107,10 @@ module FoodIngredientParser::Loose
107
107
  end
108
108
 
109
109
  def scan_iteration_notes
110
- if is_sep?(chars: ".") # dot means new note
110
+ if (len = abbrev_len) > 0 # defer iterations until after any abbreviation
111
+ cur # reference to record starting position
112
+ @i += len - 1
113
+ elsif is_sep?(chars: ".") # dot means new note
111
114
  add_child
112
115
  else
113
116
  cur
@@ -197,7 +200,12 @@ module FoodIngredientParser::Loose
197
200
  cur.name ||= begin
198
201
  i, j = cur.interval.first, @i - 1
199
202
  i += mark_len(i) # skip any mark in front
200
- Node.new(@s, i .. j) if j >= i
203
+ # Set name if there is any. There is one corner-case that needs to be avoided when
204
+ # a nesting was opened without a name, which would set the name to the nesting text.
205
+ # In this case, the name starts with an open-nesting symbol, which should never happen.
206
+ if j >= i && !"([:".include?(@s[i])
207
+ Node.new(@s, i .. j)
208
+ end
201
209
  end
202
210
  end
203
211
 
@@ -1,4 +1,4 @@
1
1
  module FoodIngredientParser
2
- VERSION = '1.1.0'
3
- VERSION_DATE = '2018-09-24'
2
+ VERSION = '1.1.1'
3
+ VERSION_DATE = '2018-09-25'
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: food_ingredient_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - wvengen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-24 00:00:00.000000000 Z
11
+ date: 2018-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop