Browse Source

Support converting multiple variable assignments on a single line to Ruby.

4.0
Matt Ward 14 years ago
parent
commit
0dae208d54
  1. 15
      src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/NRefactoryToRubyConverter.cs
  2. 40
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs
  3. 1
      src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj

15
src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/NRefactoryToRubyConverter.cs

@ -594,15 +594,16 @@ namespace ICSharpCode.RubyBinding
/// </summary> /// </summary>
public override object TrackedVisitLocalVariableDeclaration(LocalVariableDeclaration localVariableDeclaration, object data) public override object TrackedVisitLocalVariableDeclaration(LocalVariableDeclaration localVariableDeclaration, object data)
{ {
VariableDeclaration variableDeclaration = localVariableDeclaration.Variables[0]; foreach (VariableDeclaration variableDeclaration in localVariableDeclaration.Variables) {
if (!variableDeclaration.Initializer.IsNull) { if (!variableDeclaration.Initializer.IsNull) {
// Create variable declaration. // Create variable declaration.
AppendIndented(variableDeclaration.Name + " = "); AppendIndented(variableDeclaration.Name + " = ");
// Generate the variable initializer. // Generate the variable initializer.
variableDeclaration.Initializer.AcceptVisitor(this, data); variableDeclaration.Initializer.AcceptVisitor(this, data);
AppendLine(); AppendLine();
}
} }
return null; return null;
} }

40
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/Converter/LocalVariableDefinitionsOnSameLineTests.cs

@ -0,0 +1,40 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory;
using ICSharpCode.RubyBinding;
using NUnit.Framework;
namespace RubyBinding.Tests.Converter
{
[TestFixture]
public class LocalVariableDefinitionsOnSameLineTests
{
string csharp =
"class Foo\r\n" +
"{\r\n" +
" public Foo()\r\n" +
" {\r\n" +
" int i = 0, i = 2\r\n" +
" }\r\n" +
"}";
[Test]
public void ConvertedRubyCode()
{
NRefactoryToRubyConverter converter = new NRefactoryToRubyConverter(SupportedLanguage.CSharp);
converter.IndentString = " ";
string Ruby = converter.Convert(csharp);
string expectedRuby =
"class Foo\r\n" +
" def initialize()\r\n" +
" i = 0\r\n" +
" i = 2\r\n" +
" end\r\n" +
"end";
Assert.AreEqual(expectedRuby, Ruby);
}
}
}

1
src/AddIns/BackendBindings/Ruby/RubyBinding/Test/RubyBinding.Tests.csproj

@ -115,6 +115,7 @@
<Compile Include="Converter\IntegerMethodParameterTestFixture.cs" /> <Compile Include="Converter\IntegerMethodParameterTestFixture.cs" />
<Compile Include="Converter\LocalVariableAssignedInConstructorTestFixture.cs" /> <Compile Include="Converter\LocalVariableAssignedInConstructorTestFixture.cs" />
<Compile Include="Converter\LocalVariableDeclarationInIfStatementTestFixture.cs" /> <Compile Include="Converter\LocalVariableDeclarationInIfStatementTestFixture.cs" />
<Compile Include="Converter\LocalVariableDefinitionsOnSameLineTests.cs" />
<Compile Include="Converter\LocalVariableNotInitializedTestFixture.cs" /> <Compile Include="Converter\LocalVariableNotInitializedTestFixture.cs" />
<Compile Include="Converter\MethodCallInConstructorTestFixture.cs" /> <Compile Include="Converter\MethodCallInConstructorTestFixture.cs" />
<Compile Include="Converter\MethodParameterConversionTestFixture.cs" /> <Compile Include="Converter\MethodParameterConversionTestFixture.cs" />

Loading…
Cancel
Save