Convert Fuse to kotlin
This commit is contained in:
		
							parent
							
								
									bff9981458
								
							
						
					
					
						commit
						84467388bb
					
				
							
								
								
									
										5
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										5
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							@ -1,5 +1,10 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<project version="4">
 | 
					<project version="4">
 | 
				
			||||||
 | 
					  <component name="EntryPointsManager">
 | 
				
			||||||
 | 
					    <list size="1">
 | 
				
			||||||
 | 
					      <item index="0" class="java.lang.String" itemvalue="function.FunctionNames" />
 | 
				
			||||||
 | 
					    </list>
 | 
				
			||||||
 | 
					  </component>
 | 
				
			||||||
  <component name="MavenProjectsManager">
 | 
					  <component name="MavenProjectsManager">
 | 
				
			||||||
    <option name="originalFiles">
 | 
					    <option name="originalFiles">
 | 
				
			||||||
      <list>
 | 
					      <list>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,35 +0,0 @@
 | 
				
			|||||||
package function.builtin;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import function.ArgumentValidator;
 | 
					 | 
				
			||||||
import function.FunctionNames;
 | 
					 | 
				
			||||||
import function.LispFunction;
 | 
					 | 
				
			||||||
import sexpression.Atom;
 | 
					 | 
				
			||||||
import sexpression.Cons;
 | 
					 | 
				
			||||||
import sexpression.LispString;
 | 
					 | 
				
			||||||
import sexpression.SExpression;
 | 
					 | 
				
			||||||
import sexpression.Symbol;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@FunctionNames({ "FUSE" })
 | 
					 | 
				
			||||||
public class FUSE extends LispFunction {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static final String SEPARATOR = "-";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private ArgumentValidator argumentValidator;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public FUSE(String name) {
 | 
					 | 
				
			||||||
        this.argumentValidator = new ArgumentValidator(name);
 | 
					 | 
				
			||||||
        this.argumentValidator.setExactNumberOfArguments(2);
 | 
					 | 
				
			||||||
        this.argumentValidator.setFirstArgumentExpectedType(Symbol.class);
 | 
					 | 
				
			||||||
        this.argumentValidator.setTrailingArgumentExpectedType(Atom.class);
 | 
					 | 
				
			||||||
        this.argumentValidator.setTrailingArgumentExcludedType(LispString.class);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public SExpression call(Cons argumentList) {
 | 
					 | 
				
			||||||
        argumentValidator.validate(argumentList);
 | 
					 | 
				
			||||||
        Symbol left = (Symbol) argumentList.getFirst();
 | 
					 | 
				
			||||||
        Atom right = (Atom) ((Cons) argumentList.getRest()).getFirst();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return new Symbol(left.toString() + SEPARATOR + right.toString());
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										34
									
								
								src/main/kotlin/function/builtin/Fuse.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/main/kotlin/function/builtin/Fuse.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					package function.builtin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import function.ArgumentValidator
 | 
				
			||||||
 | 
					import function.FunctionNames
 | 
				
			||||||
 | 
					import function.LispFunction
 | 
				
			||||||
 | 
					import sexpression.Atom
 | 
				
			||||||
 | 
					import sexpression.Cons
 | 
				
			||||||
 | 
					import sexpression.LispString
 | 
				
			||||||
 | 
					import sexpression.SExpression
 | 
				
			||||||
 | 
					import sexpression.Symbol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@FunctionNames("FUSE")
 | 
				
			||||||
 | 
					class Fuse(name: String) : LispFunction() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private val argumentValidator: ArgumentValidator = ArgumentValidator(name).apply {
 | 
				
			||||||
 | 
					        setExactNumberOfArguments(2)
 | 
				
			||||||
 | 
					        setFirstArgumentExpectedType(Symbol::class.java)
 | 
				
			||||||
 | 
					        setTrailingArgumentExpectedType(Atom::class.java)
 | 
				
			||||||
 | 
					        setTrailingArgumentExcludedType(LispString::class.java)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    override fun call(argumentList: Cons): SExpression {
 | 
				
			||||||
 | 
					        argumentValidator.validate(argumentList)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        val left = argumentList.first as Symbol
 | 
				
			||||||
 | 
					        val right = (argumentList.rest as Cons).first as Atom
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return Symbol("$left$SEPARATOR$right")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    companion object {
 | 
				
			||||||
 | 
					        private const val SEPARATOR = "-"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
package function.builtin.special;
 | 
					package function.builtin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import function.ArgumentValidator.BadArgumentTypeException;
 | 
					import function.ArgumentValidator.BadArgumentTypeException;
 | 
				
			||||||
import function.ArgumentValidator.TooFewArgumentsException;
 | 
					import function.ArgumentValidator.TooFewArgumentsException;
 | 
				
			||||||
@ -10,7 +10,7 @@ import testutil.SymbolAndFunctionCleaner;
 | 
				
			|||||||
import static testutil.TestUtilities.assertSExpressionsMatch;
 | 
					import static testutil.TestUtilities.assertSExpressionsMatch;
 | 
				
			||||||
import static testutil.TestUtilities.evaluateString;
 | 
					import static testutil.TestUtilities.evaluateString;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FUSETest extends SymbolAndFunctionCleaner {
 | 
					public class FuseTest extends SymbolAndFunctionCleaner {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void fuseSymbolAndNumber() {
 | 
					    public void fuseSymbolAndNumber() {
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user