An alternative to UBB.threads
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
FLocal/FLocal.Common/actions/IncrementFieldValue.cs

66 lines
1.6 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Web.Core;
namespace FLocal.Common.actions {
class IncrementFieldValue : AbstractFieldValue {
public static Func<string, string> INCREMENTOR_CUSTOM(int i) {
return s => {
int old = String.IsNullOrEmpty(s) ? 0 : int.Parse(s);
return (old+i).ToString();
};
}
public static Func<string, string> DECREMENTOR_CUSTOM(int i) {
return s => (int.Parse(s)-i).ToString();
}
public static string INCREMENTOR(string s) {
return INCREMENTOR_CUSTOM(1)(s);
}
public static string DECREMENTOR(string s) {
return DECREMENTOR_CUSTOM(1)(s);
}
public static Func<string, string> GREATEST(int val) {
return s => {
if(s == null || s == "") {
return val.ToString();
} else {
return Math.Max(int.Parse(s), val).ToString();
}
};
}
private readonly Func<string, string> processor;
private readonly Box<string> resultBox;
public IncrementFieldValue(Func<string, string> processor) {
this.processor = processor;
}
public IncrementFieldValue(Func<string, string> processor, Box<string> resultBox) : this(processor) {
this.resultBox = resultBox;
}
public IncrementFieldValue() : this(INCREMENTOR) {
}
public override string getStringRepresentation() {
throw new NotSupportedException();
}
public override string getStringRepresentation(string oldInfo) {
var result = this.processor(oldInfo);
if(this.resultBox != null) {
this.resultBox.value = result;
}
return result;
}
}
}