abstract editor core, ruby