class Rouge::Lexers::Varnish

def self.functions

def self.functions
  @functions ||= Set.new %w[
    ban call hash_data new regsub regsuball return rollback
    std.cache_req_body std.collect std.duration std.fileread std.healthy
    std.integer std.ip std.log std.port std.querysort std.random std.real
    std.real2time std.rollback std.set_ip_tos std.strstr std.syslog
    std.time std.time2integer std.time2real std.timestamp std.tolower
    std.toupper synth synthetic
  ]
end

def self.keywords

backend acl
def self.keywords
  @keywords ||= Set.new %w[
    vcl set unset include import if else elseif elif elsif director probe
    backend acl
    declare local
    BOOL FLOAT INTEGER IP RTIME STRING TIME
  ]
end

def self.variables

def self.variables
  @variables ||= Set.new %w[
    bereq bereq.backend bereq.between_bytes_timeout bereq.connect_timeout
    bereq.first_byte_timeout bereq.method bereq.proto bereq.retries
    bereq.uncacheable bereq.url bereq.xid beresp beresp.age
    beresp.backend beresp.backend.ip beresp.backend.name beresp.do_esi
    beresp.do_gunzip beresp.do_gzip beresp.do_stream beresp.grace
    beresp.keep beresp.proto beresp.reason beresp.status
    beresp.storage_hint beresp.ttl beresp.uncacheable beresp.was_304
    client.identity client.ip local.ip now obj.age obj.grace obj.hits
    obj.keep obj.proto obj.reason obj.status obj.ttl obj.uncacheable
    remote.ip req req.backend_hint req.can_gzip req.esi req.esi_level
    req.hash_always_miss req.hash_ignore_busy req.method req.proto
    req.restarts req.ttl req.url req.xid resp resp.proto resp.reason
    resp.status server.hostname server.identity server.ip
  ]
end