protected function patterns()
 {
     $patterns = array();
     $measures_list = implode('|', parent::getMeasureAliases($this->measures));
     $measures = $this->measures;
     $current_key = $this->current_key;
     $patterns = parent::generateSimplePatterns($current_key, $measures);
     return $patterns;
 }
 protected function patterns()
 {
     $patterns = array();
     $measures_list = implode('|', parent::getMeasureAliases($this->measures));
     $measures = $this->measures;
     $patterns['/(\\d+)\\s?(' . $measures_list . ')/mi'] = function ($matches) use($measures) {
         $min_key = array_search(min($matches[1]), $matches[1]);
         return array('key' => 'Отношение сигнал/шум (не меньше)', 'value' => $matches[1][$min_key], 'measure' => \common\spec_parsers\NumericSpecParser::getMeasureByAlias($matches[2][$min_key], $measures));
     };
     return $patterns;
 }
 protected function patterns()
 {
     $patterns = array();
     $measures_list = implode('|', parent::getMeasureAliases($this->measures));
     $measures = $this->measures;
     $current_key = $this->current_key;
     $patterns['/(\\d+)\\s?(' . $measures_list . ')/mi'] = function ($matches) use($measures, $current_key) {
         $max_key = array_search(max($matches[1]), $matches[1]);
         return array('key' => $current_key, 'value' => $matches[1][$max_key], 'measure' => \common\spec_parsers\NumericSpecParser::getMeasureByAlias($matches[2][$max_key], $measures));
     };
     return $patterns;
 }
 protected function patterns()
 {
     $measures = $this->measures;
     $measures_list = implode('|', NumericSpecParser::getMeasureAliases($measures));
     $patterns = $this->generateSimplePatterns('Ширина', $this->measures);
     $patterns['/^(\\d+\\.?\\d*)\\.\\.\\.(\\d+\\.?\\d*)\\s?(' . $measures_list . ')$/mi'] = function ($matches) use($measures) {
         return array('key' => 'Ширина', 'value' => $matches[2], 'measure' => \common\spec_parsers\NumericSpecParser::getMeasureByAlias($matches[3], $measures));
     };
     $patterns['/^\\d+$/mi'] = function ($matches) {
         return NULL;
     };
     return $patterns;
 }
 protected function patterns()
 {
     $measures = $this->measures;
     $measures_list = implode('|', NumericSpecParser::getMeasureAliases($measures));
     $patterns = $this->generateSimplePatterns('Размеры', $this->measures);
     // 107x62x34 мм
     // 107x62 мм
     // мы не можем парсить такие значения так как не знаем очередность величин
     $patterns['/^(\\d+\\.?\\d*)\\s?x\\s?(\\d+\\.?\\d*)\\s?x\\s?(\\d+\\.?\\d*)\\s(' . $measures_list . ')$/mi'] = function ($matches) {
         return NULL;
     };
     $patterns['/^(\\d+\\.?\\d*)\\s?x\\s?(\\d+\\.?\\d*)\\s(' . $measures_list . ')$/mi'] = function ($matches) {
         return NULL;
     };
     // варианты с х в русской раскладке
     $patterns['/^(\\d+\\.?\\d*)\\s?х\\s?(\\d+\\.?\\d*)\\s?х\\s?(\\d+\\.?\\d*)\\s(' . $measures_list . ')$/mi'] = function ($matches) {
         return NULL;
     };
     $patterns['/^(\\d+\\.?\\d*)\\s?х\\s?(\\d+\\.?\\d*)\\s(' . $measures_list . ')$/mi'] = function ($matches) {
         return NULL;
     };
     // 31 - 36
     // 31 - 36 (...)
     // похоже на размер одежды, и нет ед измерений, так что пропускаем
     $patterns['/^(\\d+\\.?\\d*)\\s?-\\s?(\\d+\\.?\\d*)$/mi'] = function ($matches) {
         return NULL;
     };
     $patterns['/^(\\d+\\.?\\d*)\\s?-\\s?(\\d+\\.?\\d*)\\s?\\(.*\\)$/mi'] = function ($matches) {
         return NULL;
     };
     // 31
     // просто число без ед измерений, пропускаем
     $patterns['/^\\d+$/mi'] = function ($matches) {
         return NULL;
     };
     return $patterns;
 }