@@ -399,7 +399,7 @@ def as_strings(self):
399399 """Return key as nginx config string."""
400400 if self .value == '' or self .value is None :
401401 return '{0};\n ' .format (self .name )
402- if '"' not in self .value and (';' in self .value or '#' in self .value ):
402+ if type ( self . value ) == str and '"' not in self .value and (';' in self .value or '#' in self .value ):
403403 return '{0} "{1}";\n ' .format (self .name , self .value )
404404 return '{0} {1};\n ' .format (self .name , self .value )
405405
@@ -444,43 +444,44 @@ def loads(data, conf=True):
444444 index += m .end ()
445445 continue
446446
447- m = re .compile (r'^\s*location\s*([^;]*?)\s*{' , re .S ).search (data [index :])
448- if m :
447+ n = re .compile (r'(?!\B"[^"]*);(?![^"]*"\B)' )
448+ m = re .compile (r'^\s*location\s+(.*?)\s*(?!\B"[^"]*){(?![^"]*"\B)' , re .S ).search (data [index :])
449+ if m and not n .search (m .group ()):
449450 l = Location (m .group (1 ))
450451 lopen .insert (0 , l )
451452 index += m .end ()
452453 continue
453454
454- m = re .compile (r'^\s*if\s*([^;] *?)\s*{ ' , re .S ).search (data [index :])
455- if m :
455+ m = re .compile (r'^\s*if\s+(. *?)\s*(?!\B"[^"]*){(?![^"]*"\B) ' , re .S ).search (data [index :])
456+ if m and not n . search ( m . group ()) :
456457 ifs = If (m .group (1 ))
457458 lopen .insert (0 , ifs )
458459 index += m .end ()
459460 continue
460461
461- m = re .compile (r'^\s*upstream\s*([^;] *?)\s*{ ' , re .S ).search (data [index :])
462- if m :
462+ m = re .compile (r'^\s*upstream\s+(. *?)\s*(?!\B"[^"]*){(?![^"]*"\B) ' , re .S ).search (data [index :])
463+ if m and not n . search ( m . group ()) :
463464 u = Upstream (m .group (1 ))
464465 lopen .insert (0 , u )
465466 index += m .end ()
466467 continue
467468
468- m = re .compile (r'^\s*geo\s*([^;] *?)\s*{ ' , re .S ).search (data [index :])
469- if m :
469+ m = re .compile (r'^\s*geo\s+(. *?)\s*(?!\B"[^"]*){(?![^"]*"\B) ' , re .S ).search (data [index :])
470+ if m and not n . search ( m . group ()) :
470471 g = Geo (m .group (1 ))
471472 lopen .insert (0 , g )
472473 index += m .end ()
473474 continue
474475
475- m = re .compile (r'^\s*map\s*([^;] *?)\s*{ ' , re .S ).search (data [index :])
476- if m :
476+ m = re .compile (r'^\s*map\s+(. *?)\s*(?!\B"[^"]*){(?![^"]*"\B) ' , re .S ).search (data [index :])
477+ if m and not n . search ( m . group ()) :
477478 g = Map (m .group (1 ))
478479 lopen .insert (0 , g )
479480 index += m .end ()
480481 continue
481482
482- m = re .compile (r'^\s*limit_except\s*([^;] *?)\s*{ ' , re .S ).search (data [index :])
483- if m :
483+ m = re .compile (r'^\s*limit_except\s+(. *?)\s*(?!\B"[^"]*){(?![^"]*"\B) ' , re .S ).search (data [index :])
484+ if m and not n . search ( m . group ()) :
484485 l = LimitExcept (m .group (1 ))
485486 lopen .insert (0 , l )
486487 index += m .end ()
0 commit comments