evil = window.evil

addBrackets = (query) ->

re = /^([-\w]+:)\s*\d\w+$/im
query.replace re, (match) -> "(#{match})"

media = (query, callback) ->

mql = window.matchMedia addBrackets(query)

if typeof(callback) is 'function' and mql.matches
  callback()
  return

if typeof(callback) is 'object'
  match     = callback['match']
  mismatch  = callback['mismatch']

  return unless match

  handler = (mql) ->
    if mql.matches
      match()
    else
      mismatch() if mismatch

  mql.addListener(handler)
  handler(mql)

evil.block.filters.splice 0, 0, (obj) -> obj.media = media