1- using NAudio . MediaFoundation ;
2- using System . Net . Http . Headers ;
3- using System . Windows . Forms ;
4-
5- namespace EZCode . Converter
1+ namespace EZCode . Converter
62{
73 public class Converter
84 {
@@ -11,7 +7,7 @@ public enum ProgrammingLanguage
117 Python ,
128 }
139 private static readonly ProgrammingLanguage Default = ProgrammingLanguage . Python ;
14- public ProgrammingLanguage Language { get ; set ; } = Default ;
10+ public static ProgrammingLanguage Language { get ; set ; } = Default ;
1511 public string Code { get ; set ; } = "" ;
1612 public Converter ( ) { }
1713 public Converter ( string code , ProgrammingLanguage language )
@@ -105,16 +101,17 @@ private static string Convert(string code, ProgrammingLanguage language)
105101
106102 if ( language == ProgrammingLanguage . Python )
107103 {
108- con = ConvertLinePython ( action , line , ref tab ) ;
104+ con = ConvertLinePython ( action , line , objects , ref tab ) ;
109105 }
110106
111107 converted += con + Environment . NewLine ;
112108 }
113109
114110 if ( language == ProgrammingLanguage . Python && ImportAndDefine . ContainsMethod )
115111 {
112+ int ttab = 0 ;
116113 string firstMethod = lines . FirstOrDefault ( x => getAction ( x , objects ) == Actions . Method , "method Start" ) ;
117- firstMethod = ConvertLinePython ( Actions . Method , firstMethod , ref tab ) . Split ( " " ) [ 1 ] . Replace ( ":" , "" ) ;
114+ firstMethod = ConvertLinePython ( Actions . Method , firstMethod , objects , ref ttab ) . Split ( " " ) . Select ( x => x . Trim ( ) ) . ToArray ( ) [ 1 ] . Replace ( ":" , "" ) ;
118115 converted += Environment . NewLine + firstMethod + Environment . NewLine ;
119116 }
120117
@@ -136,7 +133,7 @@ private static string Convert(string code, ProgrammingLanguage language)
136133
137134 return converted ;
138135 }
139- private static string ConvertLinePython ( Actions action , string line , ref int _tab )
136+ private static string ConvertLinePython ( Actions action , string line , List < EZCodeObject > objects , ref int _tab )
140137 {
141138 try
142139 {
@@ -271,11 +268,34 @@ private static string ConvertLinePython(Actions action, string line, ref int _ta
271268 }
272269 string parameters = string . Join ( ", " , newW ) ;
273270 line = $ "def { w [ 1 ] } ({ parameters } ):";
274- tab += 1 ;
271+ tab ++ ;
275272 break ;
276273 case Actions . EndMethod :
277274 line = "" ;
278- tab -= 1 ;
275+ tab -- ;
276+ break ;
277+ case Actions . ClosingBracket :
278+ line = "" ;
279+ tab -- ;
280+ break ;
281+ case Actions . OpenningBracket :
282+ line = "" ;
283+ break ;
284+ case Actions . If :
285+ int next = 0 ;
286+ line = $ "if { returnAgument ( w , 1 , objects , ref next ) } :";
287+ if ( w . Length > next && ! string . Join ( " " , w ) . Trim ( ) . EndsWith ( "{" ) )
288+ {
289+ string nextLine = string . Join ( " " , w . Skip ( next ) ) ;
290+ Actions _action = getAction ( nextLine , objects ) ;
291+ tab ++ ;
292+ line += Environment . NewLine + ConvertLinePython ( _action , nextLine , objects , ref tab ) ;
293+ tab -- ;
294+ }
295+ else
296+ {
297+ tab ++ ;
298+ }
279299 break ;
280300 }
281301 string tabs = string . Join ( "" , Enumerable . Repeat ( " " , _tab ) ) ;
@@ -287,6 +307,29 @@ private static string ConvertLinePython(Actions action, string line, ref int _ta
287307 return "" ;
288308 }
289309 }
310+ private static string returnAgument ( string [ ] _w , int index , List < EZCodeObject > objects , ref int next )
311+ {
312+ string val = "" ;
313+ string [ ] w = _w . Skip ( index ) . TakeWhile ( x => x != ":" ) . Select ( y => y . Trim ( ) ) . ToArray ( ) ;
314+ for ( int i = 0 ; i < w . Length ; i ++ )
315+ {
316+ if ( objects . FirstOrDefault ( x => x . Type == EZCodeObject . EZType . Var && x . Name == w [ i ] , null ) != null )
317+ {
318+ val += w [ i ] + " " ;
319+ }
320+ else if ( new [ ] { "=" , "!" , "!=" , ">" , "<" , "<=" , ">=" , "&" , "and" , "or" } . Any ( x => w [ i ] == x ) )
321+ {
322+ val += w [ i ] + " " ;
323+ }
324+ else
325+ {
326+ val += returnValue ( w , i , false ) + " " ;
327+ }
328+ }
329+ if ( val . EndsWith ( " " ) ) val = val . Remove ( val . Length - 1 , 1 ) ;
330+ next = _w . ToList ( ) . IndexOf ( ":" ) + 1 ;
331+ return val . Replace ( " = " , " == " ) . Replace ( " ! " , " not " ) ;
332+ }
290333 private static string returnArray ( string [ ] w )
291334 {
292335 string val = "[" ;
@@ -349,6 +392,8 @@ private enum Actions
349392 SplitList ,
350393 Method ,
351394 EndMethod ,
395+ ClosingBracket ,
396+ OpenningBracket ,
352397 Loop ,
353398 Else ,
354399 If ,
@@ -736,9 +781,23 @@ private static Actions getAction(ref string line, List<EZCodeObject> objects)
736781 }
737782 break ;
738783 case "method" :
784+ if ( parts . Length > 2 )
785+ {
786+ string [ ] param = string . Join ( " " , parts . Skip ( 3 ) ) . Split ( "," ) . Select ( x=> x . Trim ( ) ) . ToArray ( ) ;
787+ EZCodeObject [ ] vals = new EZCodeObject [ 0 ] ;
788+ foreach ( string val in param )
789+ {
790+ vals = vals . Append ( new EZCodeObject ( val . Split ( ":" ) [ 0 ] , EZCodeObject . EZType . Var ) ) . ToArray ( ) ;
791+ }
792+ objects . AddRange ( vals . ToList ( ) ) ;
793+ }
739794 return Actions . Method ;
740795 case "endmethod" :
741796 return Actions . EndMethod ;
797+ case "}" :
798+ return Actions . ClosingBracket ;
799+ case "{" :
800+ return Actions . OpenningBracket ;
742801 default :
743802 if ( parts . Length == 0 ) return Actions . None ;
744803 //vars
@@ -780,7 +839,7 @@ private static Actions getAction(ref string line, List<EZCodeObject> objects)
780839 }
781840 return Actions . None ;
782841 }
783- struct EZCodeObject
842+ class EZCodeObject
784843 {
785844 public enum EZType
786845 {
@@ -925,39 +984,73 @@ private static string ColonResponse(string value)
925984 switch ( ind [ 2 ] . ToLower ( ) )
926985 {
927986 case "today" :
928- return "datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0).strftime(\" %m/%d/%Y %I:%M:%S %p\" )" ;
987+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
988+ return "datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0).strftime(\" %m/%d/%Y %I:%M:%S %p\" )" ;
989+ else return "" ;
929990 case "now" :
930- return "datetime.datetime.now().strftime(\" %m/%d/%Y %I:%M:%S %p\" )" ;
991+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
992+ return "datetime.datetime.now().strftime(\" %m/%d/%Y %I:%M:%S %p\" )" ;
993+ else return "" ;
931994 case "utcnow" :
932- return "datetime.datetime.utcnow().strftime(\" %m/%d/%Y %I:%M:%S %p\" )" ;
995+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
996+ return "datetime.datetime.utcnow().strftime(\" %m/%d/%Y %I:%M:%S %p\" )" ;
997+ else return "" ;
933998 case "unixepoch" :
934- return "1/1/1970 12:00:00 AM" ;
999+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1000+ return "1/1/1970 12:00:00 AM" ;
1001+ else return "" ;
9351002 case "hour24" :
936- return "datetime.datetime.now().strftime(\" %H\" )" ;
1003+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1004+ return "datetime.datetime.now().strftime(\" %H\" )" ;
1005+ else return "" ;
9371006 case "hour" :
938- return "datetime.datetime.now().strftime(\" %I %p\" )" ;
1007+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1008+ return "datetime.datetime.now().strftime(\" %I %p\" )" ;
1009+ else return "" ;
9391010 case "minute" :
940- return "datetime.datetime.now().strftime(\" %M\" )" ;
1011+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1012+ return "datetime.datetime.now().strftime(\" %M\" )" ;
1013+ else return "" ;
9411014 case "second" :
942- return "datetime.datetime.now().strftime(\" %S\" )" ;
1015+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1016+ return "datetime.datetime.now().strftime(\" %S\" )" ;
1017+ else return "" ;
9431018 case "milisecond" :
944- return "datetime.datetime.now().strftime(\" %f\" )[:-3]" ;
1019+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1020+ return "datetime.datetime.now().strftime(\" %f\" )[:-3]" ;
1021+ else return "" ;
9451022 case "nownormal" :
946- return "datetime.datetime.now().strftime(\" %m/%d/%Y %I:%M %p\" )" ;
1023+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1024+ return "datetime.datetime.now().strftime(\" %m/%d/%Y %I:%M %p\" )" ;
1025+ else return "" ;
9471026 case "now24" :
948- return "datetime.datetime.now().strftime(\" %m/%d/%Y %H:%M\" )" ;
1027+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1028+ return "datetime.datetime.now().strftime(\" %m/%d/%Y %H:%M\" )" ;
1029+ else return "" ;
9491030 case "date" :
950- return "datetime.datetime.now().strftime(\" %m/%d/%Y\" )" ;
1031+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1032+ return "datetime.datetime.now().strftime(\" %m/%d/%Y\" )" ;
1033+ else return "" ;
9511034 case "datedash" :
952- return "datetime.datetime.now().strftime(\" %m-%d-%Y\" )" ;
1035+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1036+ return "datetime.datetime.now().strftime(\" %m-%d-%Y\" )" ;
1037+ else return "" ;
9531038 case "month" :
954- return "datetime.datetime.now().strftime(\" %B\" )" ;
1039+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1040+ return "datetime.datetime.now().strftime(\" %B\" )" ;
1041+ else return "" ;
9551042 case "monthnumber" :
956- return "datetime.datetime.now().strftime(\" %m\" )" ;
1043+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1044+ return "datetime.datetime.now().strftime(\" %m\" )" ;
1045+ else return "" ;
9571046 case "day" :
958- return "datetime.datetime.now().strftime(\" %d\" )" ;
1047+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1048+ return "datetime.datetime.now().strftime(\" %d\" )" ;
1049+ else return "" ;
9591050 case "dayname" :
960- return "datetime.datetime.now().strftime(\" %A\" )" ;
1051+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1052+ return "datetime.datetime.now().strftime(\" %A\" )" ;
1053+ else return "" ;
9611054 }
9621055 break ;
9631056 case "random" :
@@ -968,46 +1061,70 @@ private static string ColonResponse(string value)
9681061 bool more = value . Contains ( "system:random:" ) ;
9691062 if ( more )
9701063 {
971- return $ "random.randint({ ind [ 2 ] } , { ind [ 3 ] } )";
1064+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1065+ return $ "random.randint({ ind [ 2 ] } , { ind [ 3 ] } )";
1066+ else return "" ;
9721067 }
9731068 else
9741069 {
9751070 Converter . ImportAndDefine . Sys = true ;
976- return "random.randint(0, sys.maximize)" ;
1071+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1072+ return "random.randint(0, sys.maximize)" ;
1073+ else return "" ;
9771074 }
9781075 case "single" :
979- return "random.random()" ;
1076+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1077+ return "random.random()" ;
1078+ else return "" ;
9801079 }
9811080 case "isnumber" :
9821081 Converter . ImportAndDefine . IsNumber = true ;
983- return $ "is_number({ Converter . returnValue ( ind , 2 , false ) } )";
1082+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1083+ return $ "is_number({ Converter . returnValue ( ind , 2 , false ) } )";
1084+ else return "" ;
9841085 case "machine" :
9851086 switch ( ind [ 2 ] . ToLower ( ) )
9861087 {
9871088 case "machinename" :
9881089 Converter . ImportAndDefine . Socket = true ;
989- return "socket.gethostname()" ;
1090+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1091+ return "socket.gethostname()" ;
1092+ else return "" ;
9901093 case "osversion" :
9911094 Converter . ImportAndDefine . Platform = true ;
992- return "platform.platform()" ;
1095+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1096+ return "platform.platform()" ;
1097+ else return "" ;
9931098 case "is64bitoperatingsystem" :
9941099 Converter . ImportAndDefine . Is64Bit = true ;
995- return "is_windows_64but()" ;
1100+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1101+ return "is_windows_64but()" ;
1102+ else return "" ;
9961103 case "username" :
9971104 Converter . ImportAndDefine . OS = true ;
998- return "os.getlogin()" ;
1105+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1106+ return "os.getlogin()" ;
1107+ else return "" ;
9991108 case "workingset" :
1000- return "\" CAN_NOT_GET_WORKING_SET\" " ;
1109+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1110+ return "\" CAN_NOT_GET_WORKING_SET\" " ;
1111+ else return "" ;
10011112 case "hasshutdownstarted" :
1002- return "\" CAN_NOT_GET_HAS_SHUT_DOWN_STARTED\" " ;
1113+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1114+ return "\" CAN_NOT_GET_HAS_SHUT_DOWN_STARTED\" " ;
1115+ else return "" ;
10031116 }
10041117 break ;
10051118 case "currentfile" :
10061119 Converter . ImportAndDefine . OS = true ;
1007- return "os.path.dirname(os.path.realpath(__file__))" ;
1120+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1121+ return "os.path.dirname(os.path.realpath(__file__))" ;
1122+ else return "" ;
10081123 case "currentplaydirectory" :
10091124 Converter . ImportAndDefine . OS = true ;
1010- return "os.getcwd()" ;
1125+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1126+ return "os.getcwd()" ;
1127+ else return "" ;
10111128 case "space" :
10121129 return "\" \" " ;
10131130 case "newline" :
@@ -1023,11 +1140,17 @@ private static string ColonResponse(string value)
10231140 switch ( ind [ 1 ] . ToLower ( ) )
10241141 {
10251142 case "length" :
1026- return ind [ 0 ] + ".__len__()" ;
1143+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1144+ return ind [ 0 ] + ".__len__()" ;
1145+ else return "" ;
10271146 case "contains" :
1028- return ind [ 0 ] + ".__contains__()" ;
1147+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1148+ return ind [ 0 ] + ".__contains__()" ;
1149+ else return "" ;
10291150 default :
1030- return $ "{ ind [ 0 ] } [{ ind [ 1 ] } ]";
1151+ if ( Converter . Language == Converter . ProgrammingLanguage . Python )
1152+ return $ "{ ind [ 0 ] } [{ ind [ 1 ] } ]";
1153+ else return "" ;
10311154
10321155
10331156
0 commit comments