@ -398,8 +398,17 @@ class Parser {
const browserNames = Object . keys ( browsers ) ;
const matchingDefinition = Utils . find ( browserNames , name => ( this . isBrowser ( name , true ) ) ) ;
if ( matchingDefinition !== void 0 ) {
return this . compareVersion ( browsers [ matchingDefinition ] ) ;
if ( matchingDefinition !== void 0 && ! checkTree . OS ) {
return this . compareBrowserVersion ( browsers [ matchingDefinition ] ) ;
}
if ( matchingDefinition !== void 0 && checkTree . OS ) {
return this . compareBrowserVersion ( browsers [ matchingDefinition ] )
&& this . compareOSVersion ( checkTree . OS ) ;
}
if ( checkTree . OS ) {
return this . compareOSVersion ( checkTree . OS ) ;
}
}
@ -423,39 +432,47 @@ class Parser {
return browserNameLower === defaultBrowserName ;
}
compareVersion ( version ) {
compareBrowserVersion ( versionToCompare ) {
const currentBrowserVersion = this . getBrowserVersion ( ) ;
return this . compareVersion ( currentBrowserVersion , versionToCompare ) ;
}
compareOSVersion ( versionToCompare ) {
const currentOSVersion = this . getOSVersion ( ) ;
return this . compareVersion ( currentOSVersion , versionToCompare ) ;
}
compareVersion = ( version , versionToCompare ) => {
let expectedResults = [ 0 ] ;
let comparableVersion = version ;
let comparableVersion = version ToCompare ;
let isLoose = false ;
const currentBrowserVersion = this . getBrowserVersion ( ) ;
if ( typeof currentBrowserVersion !== 'string' ) {
if ( typeof version !== 'string' ) {
return void 0 ;
}
if ( version [ 0 ] === '>' || version [ 0 ] === '<' ) {
comparableVersion = version . substr ( 1 ) ;
if ( version [ 1 ] === '=' ) {
if ( version ToCompare [ 0 ] === '>' || version ToCompare [ 0 ] === '<' ) {
comparableVersion = version ToCompare . substr ( 1 ) ;
if ( version ToCompare [ 1 ] === '=' ) {
isLoose = true ;
comparableVersion = version . substr ( 2 ) ;
comparableVersion = version ToCompare . substr ( 2 ) ;
} else {
expectedResults = [ ] ;
}
if ( version [ 0 ] === '>' ) {
if ( version ToCompare [ 0 ] === '>' ) {
expectedResults . push ( 1 ) ;
} else {
expectedResults . push ( - 1 ) ;
}
} else if ( version [ 0 ] === '=' ) {
comparableVersion = version . substr ( 1 ) ;
} else if ( version [ 0 ] === '~' ) {
} else if ( version ToCompare [ 0 ] === '=' ) {
comparableVersion = version ToCompare . substr ( 1 ) ;
} else if ( version ToCompare [ 0 ] === '~' ) {
isLoose = true ;
comparableVersion = version . substr ( 1 ) ;
comparableVersion = version ToCompare . substr ( 1 ) ;
}
return expectedResults . indexOf (
Utils . compareVersions ( currentBrowserV ersion, comparableVersion , isLoose ) ,
Utils . compareVersions ( v ersion, comparableVersion , isLoose ) ,
) > - 1 ;
}