1- use emmylua_parser:: LuaVersionNumber ;
1+ use emmylua_parser:: { LuaNonStdSymbol , LuaVersionNumber } ;
22use schemars:: JsonSchema ;
33use serde:: { Deserialize , Serialize } ;
44
@@ -23,6 +23,9 @@ pub struct EmmyrcRuntime {
2323 #[ serde( default ) ]
2424 /// class default overload function.
2525 pub class_default_call : ClassDefaultCall ,
26+ /// Non-standard symbols.
27+ #[ serde( default ) ]
28+ pub nonstandard_symbol : Vec < EmmyrcNonStdSymbol > ,
2629}
2730
2831impl Default for EmmyrcRuntime {
@@ -34,6 +37,7 @@ impl Default for EmmyrcRuntime {
3437 extensions : Default :: default ( ) ,
3538 require_pattern : Default :: default ( ) ,
3639 class_default_call : Default :: default ( ) ,
40+ nonstandard_symbol : Default :: default ( ) ,
3741 }
3842 }
3943}
@@ -101,6 +105,74 @@ fn default_true() -> bool {
101105 true
102106}
103107
108+ #[ derive( Debug , Clone , Copy , PartialEq , Eq , Serialize , Deserialize , JsonSchema ) ]
109+ pub enum EmmyrcNonStdSymbol {
110+ #[ serde( rename = "//" ) ]
111+ DoubleSlash = 1 , // "//"
112+ #[ serde( rename = "/**/" ) ]
113+ SlashStar , // "/**/"
114+ #[ serde( rename = "`" ) ]
115+ Backtick , // "`"
116+ #[ serde( rename = "+=" ) ]
117+ PlusAssign , // "+="
118+ #[ serde( rename = "-=" ) ]
119+ MinusAssign , // "-="
120+ #[ serde( rename = "*=" ) ]
121+ StarAssign , // "*="
122+ #[ serde( rename = "/=" ) ]
123+ SlashAssign , // "/="
124+ #[ serde( rename = "%=" ) ]
125+ PercentAssign , // "%="
126+ #[ serde( rename = "^=" ) ]
127+ CaretAssign , // "^="
128+ #[ serde( rename = "//=" ) ]
129+ DoubleSlashAssign , // "//="
130+ #[ serde( rename = "|=" ) ]
131+ PipeAssign , // "|="
132+ #[ serde( rename = "&=" ) ]
133+ AmpAssign , // "&="
134+ #[ serde( rename = "<<=" ) ]
135+ ShiftLeftAssign , // "<<="
136+ #[ serde( rename = ">>=" ) ]
137+ ShiftRightAssign , // ">>="
138+ #[ serde( rename = "||" ) ]
139+ DoublePipe , // "||"
140+ #[ serde( rename = "&&" ) ]
141+ DoubleAmp , // "&&"
142+ #[ serde( rename = "!" ) ]
143+ Exclamation , // "!"
144+ #[ serde( rename = "!=" ) ]
145+ NotEqual , // "!="
146+ #[ serde( rename = "continue" ) ]
147+ Continue , // "continue"
148+ }
149+
150+ impl From < EmmyrcNonStdSymbol > for LuaNonStdSymbol {
151+ fn from ( symbol : EmmyrcNonStdSymbol ) -> Self {
152+ match symbol {
153+ EmmyrcNonStdSymbol :: DoubleSlash => LuaNonStdSymbol :: DoubleSlash ,
154+ EmmyrcNonStdSymbol :: SlashStar => LuaNonStdSymbol :: SlashStar ,
155+ EmmyrcNonStdSymbol :: Backtick => LuaNonStdSymbol :: Backtick ,
156+ EmmyrcNonStdSymbol :: PlusAssign => LuaNonStdSymbol :: PlusAssign ,
157+ EmmyrcNonStdSymbol :: MinusAssign => LuaNonStdSymbol :: MinusAssign ,
158+ EmmyrcNonStdSymbol :: StarAssign => LuaNonStdSymbol :: StarAssign ,
159+ EmmyrcNonStdSymbol :: SlashAssign => LuaNonStdSymbol :: SlashAssign ,
160+ EmmyrcNonStdSymbol :: PercentAssign => LuaNonStdSymbol :: PercentAssign ,
161+ EmmyrcNonStdSymbol :: CaretAssign => LuaNonStdSymbol :: CaretAssign ,
162+ EmmyrcNonStdSymbol :: DoubleSlashAssign => LuaNonStdSymbol :: DoubleSlashAssign ,
163+ EmmyrcNonStdSymbol :: PipeAssign => LuaNonStdSymbol :: PipeAssign ,
164+ EmmyrcNonStdSymbol :: AmpAssign => LuaNonStdSymbol :: AmpAssign ,
165+ EmmyrcNonStdSymbol :: ShiftLeftAssign => LuaNonStdSymbol :: ShiftLeftAssign ,
166+ EmmyrcNonStdSymbol :: ShiftRightAssign => LuaNonStdSymbol :: ShiftRightAssign ,
167+ EmmyrcNonStdSymbol :: DoublePipe => LuaNonStdSymbol :: DoublePipe ,
168+ EmmyrcNonStdSymbol :: DoubleAmp => LuaNonStdSymbol :: DoubleAmp ,
169+ EmmyrcNonStdSymbol :: Exclamation => LuaNonStdSymbol :: Exclamation ,
170+ EmmyrcNonStdSymbol :: NotEqual => LuaNonStdSymbol :: NotEqual ,
171+ EmmyrcNonStdSymbol :: Continue => LuaNonStdSymbol :: Continue ,
172+ }
173+ }
174+ }
175+
104176#[ cfg( test) ]
105177mod tests {
106178 use super :: * ;
0 commit comments