2023-01-16 22:26:34 +00:00
ace . define ( "ace/mode/prisma_highlight_rules" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/mode/text_highlight_rules" ] , function ( require , exports , module ) { /* This file was autogenerated from ../convert.json (uuid: ) */
2020-04-14 12:14:48 +00:00
"use strict" ;
var oop = require ( "../lib/oop" ) ;
var TextHighlightRules = require ( "./text_highlight_rules" ) . TextHighlightRules ;
2023-01-16 22:26:34 +00:00
var PrismaHighlightRules = function ( ) {
2020-04-14 12:14:48 +00:00
this . $rules = {
start : [ {
include : "#triple_comment"
} , {
include : "#double_comment"
} , {
2023-01-16 22:26:34 +00:00
include : "#model_block_definition"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#config_block_definition"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#enum_block_definition"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#type_definition"
} ] ,
"#model_block_definition" : [ {
token : [
"source.prisma.embedded.source" ,
"storage.type.model.prisma" ,
"source.prisma.embedded.source" ,
"entity.name.type.model.prisma" ,
"source.prisma.embedded.source" ,
"punctuation.definition.tag.prisma"
] ,
regex : /^(\s*)(model|type)(\s+)([A-Za-z][\w]*)(\s+)({)/ ,
push : [ {
token : "punctuation.definition.tag.prisma" ,
regex : /\s*\}/ ,
next : "pop"
} , {
include : "#triple_comment"
} , {
include : "#double_comment"
} , {
include : "#field_definition"
} , {
defaultToken : "source.prisma.embedded.source"
} ]
} ] ,
"#enum_block_definition" : [ {
token : [
"source.prisma.embedded.source" ,
"storage.type.enum.prisma" ,
"source.prisma.embedded.source" ,
"entity.name.type.enum.prisma" ,
"source.prisma.embedded.source" ,
"punctuation.definition.tag.prisma"
] ,
regex : /^(\s*)(enum)(\s+)([A-Za-z][\w]*)(\s+)({)/ ,
push : [ {
token : "punctuation.definition.tag.prisma" ,
regex : /\s*\}/ ,
next : "pop"
} , {
include : "#triple_comment"
} , {
include : "#double_comment"
} , {
include : "#enum_value_definition"
} , {
defaultToken : "source.prisma.embedded.source"
} ]
} ] ,
2020-04-14 12:14:48 +00:00
"#config_block_definition" : [ {
2023-01-16 22:26:34 +00:00
token : [
"source.prisma.embedded.source" ,
"storage.type.config.prisma" ,
"source.prisma.embedded.source" ,
"entity.name.type.config.prisma" ,
"source.prisma.embedded.source" ,
"punctuation.definition.tag.prisma"
] ,
regex : /^(\s*)(generator|datasource)(\s+)([A-Za-z][\w]*)(\s+)({)/ ,
push : [ {
token : "source.prisma.embedded.source" ,
regex : /\s*\}/ ,
next : "pop"
} , {
include : "#triple_comment"
} , {
include : "#double_comment"
} , {
include : "#assignment"
} , {
defaultToken : "source.prisma.embedded.source"
} ]
} ] ,
2020-04-14 12:14:48 +00:00
"#assignment" : [ {
2023-01-16 22:26:34 +00:00
token : [
"text" ,
"variable.other.assignment.prisma" ,
"text" ,
"keyword.operator.terraform" ,
"text"
] ,
regex : /^(\s*)(\w+)(\s*)(=)(\s*)/ ,
push : [ {
token : "text" ,
regex : /$/ ,
next : "pop"
} , {
include : "#value"
} , {
include : "#double_comment_inline"
} ]
} ] ,
"#field_definition" : [ {
token : [
"text" ,
"variable.other.assignment.prisma" ,
"invalid.illegal.colon.prisma" ,
"text" ,
"support.type.primitive.prisma" ,
"keyword.operator.list_type.prisma" ,
"keyword.operator.optional_type.prisma" ,
"invalid.illegal.required_type.prisma"
] ,
regex : /^(\s*)(\w+)((?:\s*:)?)(\s+)(\w+)((?:\[\])?)((?:\?)?)((?:\!)?)/
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#attribute_with_arguments"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#attribute"
} ] ,
2020-04-14 12:14:48 +00:00
"#type_definition" : [ {
2023-01-16 22:26:34 +00:00
token : [
"text" ,
"storage.type.type.prisma" ,
"text" ,
"entity.name.type.type.prisma" ,
"text" ,
"support.type.primitive.prisma"
] ,
regex : /^(\s*)(type)(\s+)(\w+)(\s*=\s*)(\w+)/
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#attribute_with_arguments"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#attribute"
} ] ,
"#enum_value_definition" : [ {
token : [
"text" ,
"variable.other.assignment.prisma" ,
"text"
] ,
regex : /^(\s*)(\w+)(\s*$)/
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#attribute_with_arguments"
} , {
include : "#attribute"
} ] ,
"#attribute_with_arguments" : [ {
token : [
"entity.name.function.attribute.prisma" ,
"punctuation.definition.tag.prisma"
] ,
regex : /(@@?[\w\.]+)(\()/ ,
push : [ {
token : "punctuation.definition.tag.prisma" ,
regex : /\)/ ,
next : "pop"
} , {
include : "#named_argument"
} , {
include : "#value"
} , {
defaultToken : "source.prisma.attribute.with_arguments"
} ]
} ] ,
2020-04-14 12:14:48 +00:00
"#attribute" : [ {
2023-01-16 22:26:34 +00:00
token : "entity.name.function.attribute.prisma" ,
regex : /@@?[\w\.]+/
} ] ,
2020-04-14 12:14:48 +00:00
"#array" : [ {
token : "source.prisma.array" ,
2023-01-16 22:26:34 +00:00
regex : /\[/ ,
push : [ {
token : "source.prisma.array" ,
regex : /\]/ ,
next : "pop"
} , {
include : "#value"
} , {
defaultToken : "source.prisma.array"
} ]
} ] ,
"#value" : [ {
include : "#array"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#functional"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#literal"
} ] ,
2020-04-14 12:14:48 +00:00
"#functional" : [ {
2023-01-16 22:26:34 +00:00
token : [
"support.function.functional.prisma" ,
"punctuation.definition.tag.prisma"
] ,
regex : /(\w+)(\()/ ,
push : [ {
token : "punctuation.definition.tag.prisma" ,
regex : /\)/ ,
next : "pop"
} , {
include : "#value"
} , {
defaultToken : "source.prisma.functional"
} ]
} ] ,
"#literal" : [ {
include : "#boolean"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#number"
2020-04-14 12:14:48 +00:00
} , {
2023-01-16 22:26:34 +00:00
include : "#double_quoted_string"
} , {
include : "#identifier"
} ] ,
2020-04-14 12:14:48 +00:00
"#identifier" : [ {
2023-01-16 22:26:34 +00:00
token : "support.constant.constant.prisma" ,
regex : /\b(?:\w)+\b/
} ] ,
2020-04-14 12:14:48 +00:00
"#map_key" : [ {
2023-01-16 22:26:34 +00:00
token : [
"variable.parameter.key.prisma" ,
"text" ,
"punctuation.definition.separator.key-value.prisma" ,
"text"
] ,
regex : /(\w+)(\s*)(:)(\s*)/
} ] ,
2020-04-14 12:14:48 +00:00
"#named_argument" : [ {
2023-01-16 22:26:34 +00:00
include : "#map_key"
} , {
include : "#value"
} ] ,
2020-04-14 12:14:48 +00:00
"#triple_comment" : [ {
token : "comment.prisma" ,
2023-01-16 22:26:34 +00:00
regex : /\/\/\// ,
push : [ {
token : "comment.prisma" ,
regex : /$/ ,
next : "pop"
} , {
defaultToken : "comment.prisma"
} ]
} ] ,
2020-04-14 12:14:48 +00:00
"#double_comment" : [ {
token : "comment.prisma" ,
2023-01-16 22:26:34 +00:00
regex : /\/\// ,
push : [ {
token : "comment.prisma" ,
regex : /$/ ,
next : "pop"
} , {
defaultToken : "comment.prisma"
} ]
} ] ,
2020-04-14 12:14:48 +00:00
"#double_comment_inline" : [ {
2023-01-16 22:26:34 +00:00
token : "comment.prisma" ,
regex : /\/\/[^$]*/
} ] ,
2020-04-14 12:14:48 +00:00
"#boolean" : [ {
2023-01-16 22:26:34 +00:00
token : "constant.language.boolean.prisma" ,
regex : /\b(?:true|false)\b/
} ] ,
2020-04-14 12:14:48 +00:00
"#number" : [ {
2023-01-16 22:26:34 +00:00
token : "constant.numeric.prisma" ,
regex : /(?:0(?:x|X)[0-9a-fA-F]*|(?:\+|-)?\b(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDdg]|UL|ul)?\b/
} ] ,
2020-04-14 12:14:48 +00:00
"#double_quoted_string" : [ {
2023-01-16 22:26:34 +00:00
token : "string.quoted.double.start.prisma" ,
2020-04-14 12:14:48 +00:00
regex : /"/ ,
2023-01-16 22:26:34 +00:00
push : [ {
token : "string.quoted.double.end.prisma" ,
regex : /"/ ,
next : "pop"
} , {
include : "#string_interpolation"
} , {
token : "string.quoted.double.prisma" ,
regex : /[\w\-\/\._\\%@:\?=]+/
} , {
defaultToken : "unnamed"
} ]
} ] ,
2020-04-14 12:14:48 +00:00
"#string_interpolation" : [ {
2023-01-16 22:26:34 +00:00
token : "keyword.control.interpolation.start.prisma" ,
regex : /\$\{/ ,
push : [ {
token : "keyword.control.interpolation.end.prisma" ,
regex : /\s*\}/ ,
next : "pop"
} , {
include : "#value"
} , {
defaultToken : "source.tag.embedded.source.prisma"
} ]
2020-04-14 12:14:48 +00:00
} ]
2020-08-12 12:22:05 +00:00
} ;
2020-04-14 12:14:48 +00:00
this . normalizeRules ( ) ;
} ;
PrismaHighlightRules . metaData = {
name : "Prisma" ,
scopeName : "source.prisma"
2020-08-12 12:22:05 +00:00
} ;
2020-04-14 12:14:48 +00:00
oop . inherits ( PrismaHighlightRules , TextHighlightRules ) ;
exports . PrismaHighlightRules = PrismaHighlightRules ;
2023-01-16 22:26:34 +00:00
} ) ;
2020-04-14 12:14:48 +00:00
2023-01-16 22:26:34 +00:00
ace . define ( "ace/mode/folding/cstyle" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/range" , "ace/mode/folding/fold_mode" ] , function ( require , exports , module ) { "use strict" ;
2020-04-14 12:14:48 +00:00
var oop = require ( "../../lib/oop" ) ;
var Range = require ( "../../range" ) . Range ;
var BaseFoldMode = require ( "./fold_mode" ) . FoldMode ;
2023-01-16 22:26:34 +00:00
var FoldMode = exports . FoldMode = function ( commentRegex ) {
2020-04-14 12:14:48 +00:00
if ( commentRegex ) {
2023-01-16 22:26:34 +00:00
this . foldingStartMarker = new RegExp ( this . foldingStartMarker . source . replace ( /\|[^|]*?$/ , "|" + commentRegex . start ) ) ;
this . foldingStopMarker = new RegExp ( this . foldingStopMarker . source . replace ( /\|[^|]*?$/ , "|" + commentRegex . end ) ) ;
2020-04-14 12:14:48 +00:00
}
} ;
oop . inherits ( FoldMode , BaseFoldMode ) ;
2023-01-16 22:26:34 +00:00
( function ( ) {
2020-04-14 12:14:48 +00:00
this . foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/ ;
this . foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/ ;
2023-01-16 22:26:34 +00:00
this . singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/ ;
2020-04-14 12:14:48 +00:00
this . tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/ ;
this . startRegionRe = /^\s*(\/\*|\/\/)#?region\b/ ;
this . _getFoldWidgetBase = this . getFoldWidget ;
2023-01-16 22:26:34 +00:00
this . getFoldWidget = function ( session , foldStyle , row ) {
2020-04-14 12:14:48 +00:00
var line = session . getLine ( row ) ;
if ( this . singleLineBlockCommentRe . test ( line ) ) {
if ( ! this . startRegionRe . test ( line ) && ! this . tripleStarBlockCommentRe . test ( line ) )
return "" ;
}
var fw = this . _getFoldWidgetBase ( session , foldStyle , row ) ;
if ( ! fw && this . startRegionRe . test ( line ) )
return "start" ; // lineCommentRegionStart
return fw ;
} ;
2023-01-16 22:26:34 +00:00
this . getFoldWidgetRange = function ( session , foldStyle , row , forceMultiline ) {
2020-04-14 12:14:48 +00:00
var line = session . getLine ( row ) ;
if ( this . startRegionRe . test ( line ) )
return this . getCommentRegionBlock ( session , line , row ) ;
var match = line . match ( this . foldingStartMarker ) ;
if ( match ) {
var i = match . index ;
if ( match [ 1 ] )
return this . openingBracketBlock ( session , match [ 1 ] , row , i ) ;
var range = session . getCommentFoldRange ( row , i + match [ 0 ] . length , 1 ) ;
if ( range && ! range . isMultiLine ( ) ) {
if ( forceMultiline ) {
range = this . getSectionRange ( session , row ) ;
2023-01-16 22:26:34 +00:00
}
else if ( foldStyle != "all" )
2020-04-14 12:14:48 +00:00
range = null ;
}
return range ;
}
if ( foldStyle === "markbegin" )
return ;
var match = line . match ( this . foldingStopMarker ) ;
if ( match ) {
var i = match . index + match [ 0 ] . length ;
if ( match [ 1 ] )
return this . closingBracketBlock ( session , match [ 1 ] , row , i ) ;
return session . getCommentFoldRange ( row , i , - 1 ) ;
}
} ;
2023-01-16 22:26:34 +00:00
this . getSectionRange = function ( session , row ) {
2020-04-14 12:14:48 +00:00
var line = session . getLine ( row ) ;
var startIndent = line . search ( /\S/ ) ;
var startRow = row ;
var startColumn = line . length ;
row = row + 1 ;
var endRow = row ;
var maxRow = session . getLength ( ) ;
while ( ++ row < maxRow ) {
line = session . getLine ( row ) ;
var indent = line . search ( /\S/ ) ;
if ( indent === - 1 )
continue ;
2023-01-16 22:26:34 +00:00
if ( startIndent > indent )
2020-04-14 12:14:48 +00:00
break ;
var subRange = this . getFoldWidgetRange ( session , "all" , row ) ;
if ( subRange ) {
if ( subRange . start . row <= startRow ) {
break ;
2023-01-16 22:26:34 +00:00
}
else if ( subRange . isMultiLine ( ) ) {
2020-04-14 12:14:48 +00:00
row = subRange . end . row ;
2023-01-16 22:26:34 +00:00
}
else if ( startIndent == indent ) {
2020-04-14 12:14:48 +00:00
break ;
}
}
endRow = row ;
}
return new Range ( startRow , startColumn , endRow , session . getLine ( endRow ) . length ) ;
} ;
2023-01-16 22:26:34 +00:00
this . getCommentRegionBlock = function ( session , line , row ) {
2020-04-14 12:14:48 +00:00
var startColumn = line . search ( /\s*$/ ) ;
var maxRow = session . getLength ( ) ;
var startRow = row ;
var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/ ;
var depth = 1 ;
while ( ++ row < maxRow ) {
line = session . getLine ( row ) ;
var m = re . exec ( line ) ;
2023-01-16 22:26:34 +00:00
if ( ! m )
continue ;
if ( m [ 1 ] )
depth -- ;
else
depth ++ ;
if ( ! depth )
break ;
2020-04-14 12:14:48 +00:00
}
var endRow = row ;
if ( endRow > startRow ) {
return new Range ( startRow , startColumn , endRow , line . length ) ;
}
} ;
} ) . call ( FoldMode . prototype ) ;
} ) ;
2023-01-16 22:26:34 +00:00
ace . define ( "ace/mode/prisma" , [ "require" , "exports" , "module" , "ace/lib/oop" , "ace/mode/text" , "ace/mode/prisma_highlight_rules" , "ace/mode/folding/cstyle" ] , function ( require , exports , module ) { / *
THIS FILE WAS AUTOGENERATED BY mode . tmpl . js
* /
2020-04-14 12:14:48 +00:00
"use strict" ;
var oop = require ( "../lib/oop" ) ;
var TextMode = require ( "./text" ) . Mode ;
var PrismaHighlightRules = require ( "./prisma_highlight_rules" ) . PrismaHighlightRules ;
var FoldMode = require ( "./folding/cstyle" ) . FoldMode ;
2023-01-16 22:26:34 +00:00
var Mode = function ( ) {
2020-04-14 12:14:48 +00:00
this . HighlightRules = PrismaHighlightRules ;
this . foldingRules = new FoldMode ( ) ;
} ;
oop . inherits ( Mode , TextMode ) ;
2023-01-16 22:26:34 +00:00
( function ( ) {
2020-04-14 12:14:48 +00:00
this . lineCommentStart = "//" ;
2020-08-12 12:22:05 +00:00
this . $id = "ace/mode/prisma" ;
2020-04-14 12:14:48 +00:00
} ) . call ( Mode . prototype ) ;
exports . Mode = Mode ;
2023-01-16 22:26:34 +00:00
2020-04-14 12:14:48 +00:00
} ) ; ( function ( ) {
ace . require ( [ "ace/mode/prisma" ] , function ( m ) {
if ( typeof module == "object" && typeof exports == "object" && module ) {
module . exports = m ;
}
} ) ;
} ) ( ) ;