Module: Brauser::BrowserMethods::PartialQuerying

Included in:
Brauser::Browser
Defined in:
lib/brauser/browser.rb

Overview

Methods to query with chaining.

Instance Method Summary collapse

Instance Method Details

#accepts(langs = []) ⇒ Query

Check if the browser accepts the specified languages.

Parameters:

  • langs (String|Array) (defaults to: [])

    A list of languages to match against.

Returns:

  • (Query)

    A query which can evaluated for concatenation or result.



621
622
623
624
# File 'lib/brauser/browser.rb', line 621

def accepts(langs = [])
  self.parse_accept_language(@accept_language) if !@languages
  ::Brauser::Query.new(self, (@languages & langs.ensure_array.uniq.compact.collect {|l| l.to_s }).present?)
end

#is(names = [], versions = {}, platforms = []) ⇒ Query

Checks if the browser is a specific name and optionally of a specific version and platform.

Parameters:

  • names (Symbol|Array) (defaults to: [])

    A list of specific names to match. Also, this meta-names are supported: :capable and :tablet.

  • versions (String|Hash) (defaults to: {})

    A string in the form operator version && ... (example: >= 7 && < 4) or an hash with specific version to match against, in form {:operator => version}, where operator is one of :lt, :lte, :eq, :gt, :gte.

  • platforms (Symbol|Array) (defaults to: [])

    A list of specific platform to match. Valid values are all those possible for the platform attribute.

Returns:

  • (Query)

    A query which can evaluated for concatenation or result.

See Also:

  • #v?
  • #on?


576
577
578
579
580
581
582
583
584
585
586
587
588
# File 'lib/brauser/browser.rb', line 576

def is(names = [], versions = {}, platforms = [])
  self.parse_agent(@agent) if !@name

  names = adjust_names(names)
  versions = parse_versions_query(versions)
  platforms = platforms.ensure_array

  ::Brauser::Query.new(self,
    (names.blank? || (names.include?(@name) && check_capable(names))) &&
    (versions.blank? || self.v?(versions)) &&
    (platforms.blank? || self.on?(platforms))
  )
end

#on(platforms = []) ⇒ Query

Check if the browser is on a specific platform.

Parameters:

  • platforms (Symbol|Array) (defaults to: [])

    A list of specific platform to match.

Returns:

  • (Query)

    A query which can evaluated for concatenation or result.



612
613
614
615
# File 'lib/brauser/browser.rb', line 612

def on(platforms = [])
  self.parse_agent(@agent) if !@platform
  ::Brauser::Query.new(self, platforms.blank? || platforms.ensure_array.uniq.compact.collect {|p| p.ensure_string.to_sym }.include?(@platform))
end

#v(versions = {}) ⇒ Query

Checks if the browser is a specific version.

Parameters:

  • versions (String|Hash) (defaults to: {})

    A string in the form operator version && ... (example: >= 7 && < 4) or an hash with specific version to match against, in form {:operator => version}, where operator is one of :lt, :lte, :eq, :gt, :gte.

Returns:

  • (Query)

    A query which can evaluated for concatenation or result.



594
595
596
597
598
599
600
601
602
603
604
605
606
# File 'lib/brauser/browser.rb', line 594

def v(versions = {})
  self.parse_agent(@agent) if !@version

  versions = if versions.is_a?(String) then
    parse_versions_query(versions)
  elsif !versions.is_a?(::Hash) then
    {}
  else
    versions
  end

  ::Brauser::Query.new(self, versions.all? { |operator, value| Brauser::Browser.compare_versions(@version, operator, value) })
end