public override object GetValue(RubyContext/*!*/ context, RubyScope scope) { switch (_id) { // regular expressions: case GlobalVariableId.MatchData: return (scope != null) ? scope.GetInnerMostClosureScope().CurrentMatch : null; case GlobalVariableId.MatchLastGroup: return (scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchLastGroup() : null; case GlobalVariableId.MatchPrefix: // TODO: throw new NotImplementedException(); case GlobalVariableId.MatchSuffix: // TODO: throw new NotImplementedException(); case GlobalVariableId.EntireMatch: return (scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchGroup(0) : null; // exceptions: case GlobalVariableId.CurrentException: return context.CurrentException; case GlobalVariableId.CurrentExceptionBacktrace: return context.GetCurrentExceptionBacktrace(); // input: case GlobalVariableId.InputContent: return context.InputProvider.Singleton; case GlobalVariableId.InputFileName: return context.InputProvider.CurrentFileName; case GlobalVariableId.LastInputLine: return (scope != null) ? scope.GetInnerMostClosureScope().LastInputLine : null; case GlobalVariableId.LastInputLineNumber: return context.InputProvider.LastInputLineNumber; case GlobalVariableId.CommandLineArguments: return context.InputProvider.CommandLineArguments; // output: case GlobalVariableId.OutputStream: return context.StandardOutput; case GlobalVariableId.ErrorOutputStream: return context.StandardErrorOutput; case GlobalVariableId.InputStream: return context.StandardInput; // separators: case GlobalVariableId.InputSeparator: return context.InputSeparator; case GlobalVariableId.OutputSeparator: return context.OutputSeparator; case GlobalVariableId.StringSeparator: return context.StringSeparator; case GlobalVariableId.ItemSeparator: return context.ItemSeparator; // loader: case GlobalVariableId.LoadPath: return context.Loader.LoadPaths; case GlobalVariableId.LoadedFiles: return context.Loader.LoadedFiles; // misc: case GlobalVariableId.SafeLevel: return context.CurrentSafeLevel; case GlobalVariableId.Verbose: return context.Verbose; case GlobalVariableId.KCode: #if !SILVERLIGHT if (context.RubyOptions.Compatibility == RubyCompatibility.Ruby18) { return MutableString.Create(KCoding.GetKCodeName(context.KCode)); } #endif context.ReportWarning("variable $KCODE is no longer effective"); return null; case GlobalVariableId.ChildProcessExitStatus: return context.ChildProcessExitStatus; case GlobalVariableId.CommandLineProgramPath: return context.CommandLineProgramPath; default: throw Assert.Unreachable; } }
public override object GetValue(RubyContext /*!*/ context, RubyScope scope) { switch (_id) { // regular expressions: case GlobalVariableId.MatchData: return((scope != null) ? scope.GetInnerMostClosureScope().CurrentMatch : null); case GlobalVariableId.MatchLastGroup: return((scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchLastGroup() : null); case GlobalVariableId.MatchPrefix: // TODO: throw new NotImplementedException(); case GlobalVariableId.MatchSuffix: // TODO: throw new NotImplementedException(); case GlobalVariableId.EntireMatch: return((scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchGroup(0) : null); // exceptions: case GlobalVariableId.CurrentException: return(context.CurrentException); case GlobalVariableId.CurrentExceptionBacktrace: return(context.GetCurrentExceptionBacktrace()); // input: case GlobalVariableId.InputContent: return(context.InputProvider.Singleton); case GlobalVariableId.InputFileName: return(context.InputProvider.CurrentFileName); case GlobalVariableId.LastInputLine: return((scope != null) ? scope.GetInnerMostClosureScope().LastInputLine : null); case GlobalVariableId.LastInputLineNumber: return(context.InputProvider.LastInputLineNumber); case GlobalVariableId.CommandLineArguments: return(context.InputProvider.CommandLineArguments); // output: case GlobalVariableId.OutputStream: return(context.StandardOutput); case GlobalVariableId.ErrorOutputStream: return(context.StandardErrorOutput); case GlobalVariableId.InputStream: return(context.StandardInput); // separators: case GlobalVariableId.InputSeparator: return(context.InputSeparator); case GlobalVariableId.OutputSeparator: return(context.OutputSeparator); case GlobalVariableId.StringSeparator: return(context.StringSeparator); case GlobalVariableId.ItemSeparator: return(context.ItemSeparator); // loader: case GlobalVariableId.LoadPath: return(context.Loader.LoadPaths); case GlobalVariableId.LoadedFiles: return(context.Loader.LoadedFiles); // misc: case GlobalVariableId.SafeLevel: return(context.CurrentSafeLevel); case GlobalVariableId.Verbose: return(context.Verbose); case GlobalVariableId.KCode: // TODO: Ruby 1.9 reports a warning: string name = context.GetKCodeName(); return((name != null) ? MutableString.Create(name) : null); case GlobalVariableId.ChildProcessExitStatus: return(context.ChildProcessExitStatus); default: throw Assert.Unreachable; } }
public override object GetValue(RubyContext /*!*/ context, RubyScope scope) { switch (_id) { // regular expressions: case GlobalVariableId.MatchData: return((scope != null) ? scope.GetInnerMostClosureScope().CurrentMatch : null); case GlobalVariableId.MatchLastGroup: return((scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchLastGroup() : null); case GlobalVariableId.PreMatch: return((scope != null) ? scope.GetInnerMostClosureScope().GetCurrentPreMatch() : null); case GlobalVariableId.PostMatch: return((scope != null) ? scope.GetInnerMostClosureScope().GetCurrentPostMatch() : null); case GlobalVariableId.EntireMatch: return((scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchGroup(0) : null); // exceptions: case GlobalVariableId.CurrentException: return(context.CurrentException); case GlobalVariableId.CurrentExceptionBacktrace: return(context.GetCurrentExceptionBacktrace()); // input: case GlobalVariableId.InputContent: return(context.InputProvider.Singleton); case GlobalVariableId.InputFileName: return(context.InputProvider.CurrentFileName); case GlobalVariableId.LastInputLine: return((scope != null) ? scope.GetInnerMostClosureScope().LastInputLine : null); case GlobalVariableId.LastInputLineNumber: return(context.InputProvider.LastInputLineNumber); case GlobalVariableId.CommandLineArguments: return(context.InputProvider.CommandLineArguments); // output: case GlobalVariableId.OutputStream: return(context.StandardOutput); case GlobalVariableId.ErrorOutputStream: return(context.StandardErrorOutput); case GlobalVariableId.InputStream: return(context.StandardInput); // separators: case GlobalVariableId.InputSeparator: return(context.InputSeparator); case GlobalVariableId.OutputSeparator: return(context.OutputSeparator); case GlobalVariableId.StringSeparator: return(context.StringSeparator); case GlobalVariableId.ItemSeparator: return(context.ItemSeparator); // loader: case GlobalVariableId.LoadPath: return(context.Loader.LoadPaths); case GlobalVariableId.LoadedFiles: return(context.Loader.LoadedFiles); // misc: case GlobalVariableId.SafeLevel: return(context.CurrentSafeLevel); case GlobalVariableId.Verbose: return(context.Verbose); case GlobalVariableId.KCode: if (context.RubyOptions.Compatibility < RubyCompatibility.Ruby19) { var kcode = KCoding.GetKCodeName(context.KCode); Utils.Log("KCODE set to " + kcode, "KCODE"); return(MutableString.CreateAscii(kcode)); } context.ReportWarning("variable $KCODE is no longer effective"); return(null); case GlobalVariableId.ChildProcessExitStatus: return(context.ChildProcessExitStatus); case GlobalVariableId.CommandLineProgramPath: return(context.CommandLineProgramPath); default: throw Assert.Unreachable; } }
public override object GetValue(RubyContext/*!*/ context, RubyScope scope) { switch (_id) { // regular expressions: case GlobalVariableId.MatchData: return (scope != null) ? scope.GetInnerMostClosureScope().CurrentMatch : null; case GlobalVariableId.MatchLastGroup: return (scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchLastGroup() : null; case GlobalVariableId.MatchPrefix: // TODO: throw new NotImplementedException(); case GlobalVariableId.MatchSuffix: // TODO: throw new NotImplementedException(); case GlobalVariableId.EntireMatch: return (scope != null) ? scope.GetInnerMostClosureScope().GetCurrentMatchGroup(0) : null; // exceptions: case GlobalVariableId.CurrentException: return context.CurrentException; case GlobalVariableId.CurrentExceptionBacktrace: return context.GetCurrentExceptionBacktrace(); // input: case GlobalVariableId.InputContent: return context.InputProvider.Singleton; case GlobalVariableId.InputFileName: return context.InputProvider.CurrentFileName; case GlobalVariableId.LastInputLine: return (scope != null) ? scope.GetInnerMostClosureScope().LastInputLine : null; case GlobalVariableId.LastInputLineNumber: return context.InputProvider.LastInputLineNumber; case GlobalVariableId.CommandLineArguments: return context.InputProvider.CommandLineArguments; // output: case GlobalVariableId.OutputStream: return context.StandardOutput; case GlobalVariableId.ErrorOutputStream: return context.StandardErrorOutput; case GlobalVariableId.InputStream: return context.StandardInput; // separators: case GlobalVariableId.InputSeparator: return context.InputSeparator; case GlobalVariableId.OutputSeparator: return context.OutputSeparator; case GlobalVariableId.StringSeparator: return context.StringSeparator; case GlobalVariableId.ItemSeparator: return context.ItemSeparator; // loader: case GlobalVariableId.LoadPath: return context.Loader.LoadPaths; case GlobalVariableId.LoadedFiles: return context.Loader.LoadedFiles; // misc: case GlobalVariableId.SafeLevel: return context.CurrentSafeLevel; case GlobalVariableId.Verbose: return context.Verbose; case GlobalVariableId.KCode: // TODO: Ruby 1.9 reports a warning: string name = context.GetKCodeName(); return (name != null) ? MutableString.Create(name) : null; case GlobalVariableId.ChildProcessExitStatus: return context.ChildProcessExitStatus; default: throw Assert.Unreachable; } }