class Rouge::Lexers::Cypher

def self.functions

def self.functions
  @functions ||= Set.new %w(
    ABS ACOS ALLSHORTESTPATHS ASIN ATAN ATAN2 AVG CEIL COALESCE COLLECT
    COS COT COUNT DATE DEGREES E ENDNODE EXP EXTRACT FILTER FLOOR
    HAVERSIN HEAD ID KEYS LABELS LAST LEFT LENGTH LOG LOG10 LOWER LTRIM
    MAX MIN NODE NODES PERCENTILECONT PERCENTILEDISC PI RADIANS RAND
    RANGE REDUCE REL RELATIONSHIP RELATIONSHIPS REPLACE REVERSE RIGHT
    ROUND RTRIM SHORTESTPATH SIGN SIN SIZE SPLIT SQRT STARTNODE STDEV
    STDEVP STR SUBSTRING SUM TAIL TAN TIMESTAMP TOFLOAT TOINT TOINTEGER
    TOSTRING TRIM TYPE UPPER
  )
end

def self.keywords

def self.keywords
  @keywords ||= Set.new %w(
    AS ASC ASCENDING ASSERT BY CASE COMMIT CONSTRAINT CREATE CSV CYPHER
    DELETE DESC DESCENDING DETACH DISTINCT DROP ELSE END ENDS EXPLAIN
    FALSE FIELDTERMINATOR FOREACH FROM HEADERS IN INDEX IS JOIN LIMIT
    LOAD MATCH MERGE NULL ON OPTIONAL ORDER PERIODIC PROFILE REMOVE
    RETURN SCAN SET SKIP START STARTS THEN TRUE UNION UNIQUE UNWIND USING
    WHEN WHERE WITH CALL YIELD
  )
end

def self.predicates

def self.predicates
  @predicates ||= Set.new %w(
    ALL AND ANY CONTAINS EXISTS HAS IN NONE NOT OR SINGLE XOR
  )
end