n1ql.js (4438B)
1 /* 2 Language: N1QL 3 Author: Andres Täht <andres.taht@gmail.com> 4 Contributors: Rene Saarsoo <nene@triin.net> 5 Description: Couchbase query language 6 Website: https://www.couchbase.com/products/n1ql 7 */ 8 9 function n1ql(hljs) { 10 return { 11 name: 'N1QL', 12 case_insensitive: true, 13 contains: [ 14 { 15 beginKeywords: 16 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10', 17 end: /;/, endsWithParent: true, 18 keywords: { 19 // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html 20 keyword: 21 'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' + 22 'case cast cluster collate collection commit connect continue correlate cover create database ' + 23 'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' + 24 'else end every except exclude execute exists explain fetch first flatten for force from ' + 25 'function grant group gsi having if ignore ilike in include increment index infer inline inner ' + 26 'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' + 27 'mapping matched materialized merge minus namespace nest not number object offset on ' + 28 'option or order outer over parse partition password path pool prepare primary private privilege ' + 29 'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' + 30 'schema select self semi set show some start statistics string system then to transaction trigger ' + 31 'truncate under union unique unknown unnest unset update upsert use user using validate value ' + 32 'valued values via view when where while with within work xor', 33 // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html 34 literal: 35 'true false null missing|5', 36 // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html 37 built_in: 38 'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' + 39 'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' + 40 'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' + 41 'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' + 42 'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' + 43 'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' + 44 'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' + 45 'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' + 46 'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' + 47 'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' + 48 'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' + 49 'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring' 50 }, 51 contains: [ 52 { 53 className: 'string', 54 begin: '\'', end: '\'', 55 contains: [hljs.BACKSLASH_ESCAPE], 56 relevance: 0 57 }, 58 { 59 className: 'string', 60 begin: '"', end: '"', 61 contains: [hljs.BACKSLASH_ESCAPE], 62 relevance: 0 63 }, 64 { 65 className: 'symbol', 66 begin: '`', end: '`', 67 contains: [hljs.BACKSLASH_ESCAPE], 68 relevance: 2 69 }, 70 hljs.C_NUMBER_MODE, 71 hljs.C_BLOCK_COMMENT_MODE 72 ] 73 }, 74 hljs.C_BLOCK_COMMENT_MODE 75 ] 76 }; 77 } 78 79 module.exports = n1ql;