
com.inamik.text.tables.cell.base.FunctionWithChar Maven / Gradle / Ivy
The newest version!
/*
* iNamik Text Tables for Java
*
* Copyright (C) 2016 David Farrell ([email protected])
*
* Licensed under The MIT License (MIT), see LICENSE.txt
*/
package com.inamik.text.tables.cell.base;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public abstract class FunctionWithChar
{
public abstract Collection apply(Character character, Collection cell);
public static final FunctionWithChar IDENTITY = new FunctionWithChar() {
@Override
public Function withChar(char _1) {
return Function.IDENTITY;
}
@Override
public Collection apply(Character _1, Collection cell) {
return cell;
}
};
/*
* From line.FunctionWithChar
*/
public static FunctionWithChar from(final com.inamik.text.tables.line.base.FunctionWithChar f) {
return new FunctionWithChar() {
@Override
public Function withChar(char character) {
// lift(curry(f, character))
//
return Function.from(f.withChar(character));
}
@Override
public Collection apply(Character character, Collection cell) {
// map(cell, curry(f, character))
//
final List r = new ArrayList(cell.size());
for (String line: cell) { r.add(f.apply(character, line)); }
return Collections.unmodifiableCollection(r);
}
};
}
public Function withChar(final char character) {
// curry(this, character)
//
final FunctionWithChar f = this;
return new Function() {
@Override
public Collection apply(Collection cell) {
return f.apply(character, cell);
}
};
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy