espagram/Espagram/SpanishConjugator.m
2012-12-20 18:09:11 +01:00

3585 lines
243 KiB
Objective-C

//
// ConjugateRegularVerb.m
// Espagram
//
// Created by Abel Fokkinga on 8/29/12.
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
//
#import "SpanishConjugator.h"
#import "NSMutableArray_Shuffling.h"
@interface SpanishConjugator()
@property (nonatomic, strong) NSArray *simplePresentEtoIEstemChangersArray,
*simplePresentOtoUEstemChangersArray,
*simplePresentEtoIstemChangersArray,
*simplePresentIARtoAccentedIArray,
*simplePresentUARtoAccentedUArray;
@property (nonatomic,strong) NSDictionary *persons;
@property (nonatomic,strong) NSDictionary *reflexivePersons;
@end
@implementation SpanishConjugator
#pragma mark - variables
@synthesize simplePresentEtoIEstemChangersArray = _simplePresentEtoIEstemChangersArray;
@synthesize simplePresentOtoUEstemChangersArray = _simplePresentOtoUEstemChangersArray;
@synthesize simplePresentEtoIstemChangersArray = _simplePresentEtoIstemChangersArray;
@synthesize simplePresentIARtoAccentedIArray = _simplePresentIARtoAccentedIArray;
@synthesize simplePresentUARtoAccentedUArray = _simplePresentUARtoAccentedUArray;
@synthesize persons = _persons;
@synthesize reflexivePersons = _reflexivePersons;
- (NSString *) description
{
return @"Spanish";
}
- (NSArray *) personsKeys{
return [[NSArray alloc] initWithObjects:@"FIRST_PERSON_SINGULAR",@"SECOND_PERSON_SINGULAR",@"THIRD_PERSON_SINGULAR", @"FIRST_PERSON_PLURAL",@"SECOND_PERSON_PLURAL",@"THIRD_PERSON_PLURAL", nil];
}
- (NSDictionary *) persons {
if (_persons == nil) {
_persons = [[NSDictionary alloc] initWithObjects:[[NSArray alloc]
initWithObjects:@"yo",@"",@"él",@"nosotros", @"vosotros", @"ellos", nil] forKeys:[[NSArray alloc] initWithArray:self.personsKeys]];
}
return [_persons copy];
}
- (NSDictionary *) reflexivePersons {
if (_reflexivePersons == nil) {
_reflexivePersons = [[NSDictionary alloc] initWithObjects:[[NSArray alloc]
initWithObjects:@"me",@"te",@"se",@"nos", @"os", @"se", nil] forKeys:[[NSArray alloc] initWithArray:self.personsKeys]];
}
return [_reflexivePersons copy];
}
- (NSArray *) simplePresentEtoIEstemChangersArray{
if (_simplePresentEtoIEstemChangersArray == nil)
_simplePresentEtoIEstemChangersArray = [[NSArray alloc] initWithObjects:
@"abstener",
@"acertar",
@"adherir",
@"adquirir",
@"advertir",
@"apretar",
@"arrepentir",
@"ascender",
@"asentir",
@"atender",
@"atravesar",
@"calentar",
@"cerrar",
@"circunvenir",
@"comenzar",
@"conferir",
@"confesar",
@"consentir",
@"consentir",
@"convenir",
@"convertir",
@"defender",
@"descender",
@"desmembrar",
@"desmentir",
@"despertar",
@"desplegar",
@"detener",
@"diferir",
@"digerir",
@"discernir",
@"disentir",
@"divertir",
@"empezar",
@"encender",
@"encerrar",
@"encomendar",
@"enmendar",
@"ensangrentar",
@"entender",
@"enterrar",
@"entretener",
@"entrevenir",
@"extender",
@"fregar",
@"gobernar",
@"heder",
@"helar",
@"herir",
@"hervir",
@"inferir",
@"ingerir",
@"intervenir",
@"invernar",
@"invertir",
@"malherir",
@"manifestar",
@"mantener",
@"mentar",
@"mentir",
@"merendar",
@"negar",
@"nevar",
@"obtener",
@"ofender",
@"pensar",
@"perder",
@"pervertir",
@"preferir",
@"presentir",
@"prevenir",
@"querer",
@"regar",
@"remendar",
@"renegar",
@"replegar",
@"requerir",
@"restregar",
@"retener",
@"reventar",
@"segar",
@"sembrar",
@"sentar",
@"sentir",
@"serrar",
@"sosegar",
@"sostener",
@"soterrar",
@"sugerir",
@"subarrendar",
@"tender",
@"temblar",
@"tener",
@"tentar",
@"transferir",
@"tropezar",
@"venir",
@"verter",
nil];
return _simplePresentEtoIEstemChangersArray;
}
- (NSArray *) simplePresentOtoUEstemChangersArray{
if (_simplePresentOtoUEstemChangersArray == nil)
_simplePresentOtoUEstemChangersArray = [[NSArray alloc] initWithObjects:
@"absolvar",
@"acordar",
@"acostar",
@"almorzar",
@"alongar",
@"amoblar",
@"apostar",
@"aprobar",
@"asolar",
@"avergonzar",
@"cocer",
@"colar",
@"colgar",
@"concordar",
@"conmover",
@"consolar",
@"contar",
@"costar",
@"degollar",
@"demoler",
@"demostrar",
@"desaprobar",
@"descolgar",
@"descontar",
@"desosar",
@"destorcer",
@"devolver",
@"disolver",
@"doler",
@"dormir",
@"encontrar",
@"engrosar",
@"envolver",
@"forzar",
@"holgar",
@"hollar",
@"llover",
@"moler",
@"morder",
@"morir",
@"mostrar",
@"mover",
@"oler",
@"poblar",
@"poder",
@"probar",
@"promover",
@"recordar",
@"reforzar",
@"remorder",
@"remover",
@"repoblar",
@"resolver",
@"resollar",
@"resonar",
@"retorcer",
@"revolcar",
@"revolver",
@"rodar",
@"rogar",
@"solar",
@"soldar",
@"soler",
@"soltar",
@"sonar",
@"soñar",
@"torcer",
@"tostar",
@"tronar",
@"volar",
@"volcar",
@"volver",
@"oler"
,nil];
return _simplePresentOtoUEstemChangersArray;
}
- (NSArray *) simplePresentEtoIstemChangersArray{
if (_simplePresentEtoIstemChangersArray == nil)
_simplePresentEtoIstemChangersArray = [[NSArray alloc] initWithObjects:
@"ceñir",
@"comedir",
@"colegir",
@"competir",
@"concebir",
@"conseguir",
@"contradecir",
@"corregir",
@"decir",
@"derretir",
@"despedir",
@"desteñir",
@"desvestir",
@"elegir",
@"embestir",
@"engreir",
@"estreñir",
@"expedir",
@"freír",
@"gemir",
@"impedir",
@"investir",
@"maldecir",
@"medir",
@"pedir",
@"perseguir",
@"proseguir",
@"predecir",
@"reelegir",
@"reexpedir",
@"regir",
@"reír",
@"rendir",
@"reñir",
@"repetir",
@"revestir",
@"seguir",
@"servir",
@"sonreír",
@"subseguir",
@"teñir",
@"trasgredir",
@"vestir"
,nil];
return _simplePresentEtoIstemChangersArray;
}
- (NSArray *) simplePresentIARtoAccentedIArray{
if (_simplePresentIARtoAccentedIArray == nil)
_simplePresentIARtoAccentedIArray = [[NSArray alloc] initWithObjects:
@"agraviar",
@"agriar",
@"aliar",
@"amnistiar",
@"amplifiar",
@"arriar",
@"cariar",
@"confiar",
@"contrariar",
@"criar",
@"chirriar",
@"desafiar",
@"descarriar",
@"desconfiar",
@"desviar",
@"enfriar",
@"enviar",
@"espiar",
@"esquiar",
@"expatriar",
@"fiar",
@"fotografiar",
@"guiar",
@"historiar",
@"inventariar",
@"liar",
@"obviar",
@"paliar",
@"piar",
@"porfiar",
@"repatriar",
@"resfriar",
@"rociar",
@"telegrafiar",
@"vaciar",
@"variar",
@"zurriar",
nil];
return _simplePresentIARtoAccentedIArray;
}
- (NSArray *) simplePresentUARtoAccentedUArray{
if (_simplePresentUARtoAccentedUArray == nil)
_simplePresentUARtoAccentedUArray = [[NSArray alloc] initWithObjects:
@"acentuar", // to emphasize, accentuate
@"actuar", // to act
@"atenuar", // to attenuate
@"conceptuar", // to deem
@"continuar", // to continue
@"desvirtuar", // to spoil
@"efectuar", // to carry out, effect
@"evaluar", // to assess, evaluate
@"exeptuar", // to except
@"extenuar", // to emaciate
@"fluctuar", // to fluctuate
@"graduar", // to grade
@"habituar", // to habituate
@"individuar", // to individualize
@"infatuar", // to infatuate
@"insinuar", // to hint, insinuate
@"menstruar", // to menstruate
@"perpetuar", // to perpetuate
@"preceptuar", // to establish, lay down
@"puntuar", // to punctuate, to assess
@"redituar", // to yield (a profit)
@"situar", // to situate
@"tatuar", // to tattoo
@"valuar", // to value
nil];
return _simplePresentUARtoAccentedUArray;
}
- (NSString *) getExit:(NSString *) verb {
NSLog(@"getExit start");
if ( verb.length > 2 )
return [verb substringFromIndex:[verb length] - 2];
else
return @"";
}
- (NSString *) getStem:(NSString *) verb {
NSLog(@"getStem start");
// if ( [[self getExit:verb] isEqualToString:@"ír"] )
// return [[verb substringToIndex:[verb length] -2] stringByAppendingString:@"i"];
NSLog(@"getStem end");
return [verb substringToIndex:[verb length] -2];
}
# pragma mark - Simple Present
- (NSString *) getSimplePresentStemVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getStem:verb];
NSString * verbExit = [self getExit:verb];
NSLog(@"getSimplePresentStemVerb start.irregular");
// Bit irregular
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] ) {
if ( [verb rangeOfString:@"coger"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"cog"] withString:@"coj"];
if ( [verb rangeOfString:@"poner"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"pon"] withString:@"pong"];
if ( [verb isEqualToString:@"oír"] )
return @"oig";
if ( [verb isEqualToString:@"oír"] )
return @"";
// appearance of g in the first person
if ( [verb isEqualToString:@"caer"] ) return @"caig";
if ( [verb isEqualToString:@"traer"] ) return @"traig";
if ( [verb rangeOfString:@"decir"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"dec"] withString:@"dig"];
if ( [verb rangeOfString:@"hacer"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"hac"] withString:@"hag"];
if ( [verb rangeOfString:@"poner"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"pon"] withString:@"pong"];
if ( [verb isEqualToString:@"salir"] ) return @"salg";
if ( [verb rangeOfString:@"tener"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verb rangeOfString:@"ten"] withString:@"teng"];
if ( [verb isEqualToString:@"valer"] ) return @"valg";
if ( [verb rangeOfString:@"venir"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ven"] withString:@"veng"];
// conducir, conocer etc.
if ( verb.length > 3 && ([[verb substringFromIndex:[verb length] - 3] isEqualToString:@"cer"] ||
[[verb substringFromIndex:[verb length] - 3] isEqualToString:@"cir"]) )
verbStem = [[verbStem substringToIndex:[verbStem length] - 1] stringByAppendingString:@"zc"];
// other
if ( [verb isEqualToString:@"ver"] ) return @"ve";
// g -> j
if ( [verb isEqualToString:@"elegir"] ) return @"elij";
// g -> j
if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"gir"] )
verbStem = [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"j"];
// gu -> g
if ( verb.length > 4 && [[verb substringFromIndex:[verb length] - 4] isEqualToString:@"guir"] )
verbStem = [[verb substringToIndex:[verb length] - 4] stringByAppendingString:@"g"];
}
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] ||
[person isEqualToString:@"SECOND_PERSON_SINGULAR"] ||
[person isEqualToString:@"THIRD_PERSON_SINGULAR"] ||
[person isEqualToString:@"THIRD_PERSON_PLURAL"]
) {
if ( [verb rangeOfString:@"decir"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"dec"] withString:@"dic"];
if ( [verb isEqualToString:@"oír"] )
return @"oy";
if ( [verb rangeOfString:@"tener"].location != NSNotFound)
return [verbStem stringByReplacingCharactersInRange:[verb rangeOfString:@"ten"] withString:@"tien"];
// Verbs adding an accent
// uar to í
if ( [[self simplePresentUARtoAccentedUArray] containsObject:verb] ){
verbStem = [[verb substringToIndex:verb.length - 3] stringByAppendingString:@"ú"];
}
// iar to í
if ( [[self simplePresentIARtoAccentedIArray] containsObject:verb] ){
verbStem = [[verb substringToIndex:verb.length - 3] stringByAppendingString:@"í"];
}
}
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"oír"] )
return @"";
}
if ( [verb isEqualToString:@"elegir"] ) return @"elig";
// Regular
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] ||
[person isEqualToString:@"SECOND_PERSON_SINGULAR"] ||
[person isEqualToString:@"THIRD_PERSON_SINGULAR"] ||
[person isEqualToString:@"THIRD_PERSON_PLURAL"]
) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ) {
// Verb changes stem from e to ie
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) {
// Verb changes stem from o to ue
if ( [verbStem rangeOfString:@"gon"].location != NSNotFound )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"gon" options:NSBackwardsSearch] withString:@"güen"];
else
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"];
}
if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
// Verb changes stem from e to i
if ( [[verbExit substringToIndex:verbExit.length-1] isEqualToString:@"í"] )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"í"];
else
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"];
}
// u -> ue
if ( [verb isEqualToString:@"jugar"]) return @"jueg";
// huir, construir
if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"uir"] &&
![[verb substringFromIndex:[verb length] - 3] isEqualToString:@"guir"])
return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"uy"];
}
return verbStem;
}
- (NSString *) conjugateSimplePresentVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getSimplePresentStemVerb:verb inPerson:person];
NSString * verbExit = [self getExit:verb];
// other types of first person changes
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"caber"] ) return @"quepo";
if ( [verb isEqualToString:@"dar"] ) return @"doy";
if ( [verb isEqualToString:@"saber"] ) return @"";
}
// regular
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"estar"] ) return @"estoy";
if ( [verb isEqualToString:@"ser"] ) return @"soy";
if ( [verb isEqualToString:@"ir"] ) return @"voy";
if ( [verb isEqualToString:@"oler"] ) return @"huelo";
if ( [verb isEqualToString:@"haber"] ) return @"he";
return [verbStem stringByAppendingString:@"o"];
}
if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"estar"] ) return @"estás";
if ( [verb isEqualToString:@"ser"] ) return @"eres";
if ( [verb isEqualToString:@"ir"] ) return @"vas";
if ( [verb isEqualToString:@"oler"] ) return @"hueles";
if ( [verb isEqualToString:@"haber"] ) return @"has";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"as"];
else return [verbStem stringByAppendingString:@"es"];
}
if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"estar"] ) return @"está";
if ( [verb isEqualToString:@"ser"] ) return @"es";
if ( [verb isEqualToString:@"ir"] ) return @"va";
if ( [verb isEqualToString:@"oler"] ) return @"huele";
if ( [verb isEqualToString:@"haber"] ) return @"ha";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"a"];
else return [verbStem stringByAppendingString:@"e"];
}
if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"estar"] ) return @"estamos";
if ( [verb isEqualToString:@"ser"] ) return @"somos";
if ( [verb isEqualToString:@"ir"] ) return @"vamos";
if ( [verb isEqualToString:@"haber"] ) return @"hemos";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"amos"];
if ( [@"er" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"emos"];
if ( [@"ír" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ímos"];
if ( [@"ir" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"imos"];
}
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"estar"] ) return @"estáis";
if ( [verb isEqualToString:@"ser"] ) return @"sois";
if ( [verb isEqualToString:@"ir"] ) return @"vais";
if ( [verb isEqualToString:@"haber"] ) return @"habéis";
if ( [verb isEqualToString:@"dar"] ) return @"dais";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"áis"];
if ( [@"er" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"éis"];
if ( [@"ír" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ís"];
if ( [@"ir" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ís"];
}
if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"estar"] ) return @"están";
if ( [verb isEqualToString:@"ser"] ) return @"son";
if ( [verb isEqualToString:@"ir"] ) return @"van";
if ( [verb isEqualToString:@"oler"] ) return @"huelen";
if ( [verb isEqualToString:@"haber"] ) return @"han";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"an"];
else return [verbStem stringByAppendingString:@"en"];
}
return verb;
}
# pragma mark - Present subjuntivo
- (NSString *) conjugatePresentSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getStem:verb];
NSString * verbExit = [self getExit:verb];
NSString * simplePresentYo = [self conjugateSimplePresentVerb:verb inPerson:@"FIRST_PERSON_SINGULAR"];
NSString * simplePresentYoStem = [simplePresentYo substringToIndex:simplePresentYo.length -1];
NSLog(@"person %@", person);
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] ||
[person isEqualToString:@"THIRD_PERSON_SINGULAR"] ) {
// 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive
if ( [verb isEqualToString:@"ser"])
return @"sea";
if ( [verb isEqualToString:@"estar"])
return @"esté";
if ( [verb isEqualToString:@"ir"])
return @"vaya";
if ( [verb isEqualToString:@"dar"])
return @"";
if ( [verb isEqualToString:@"saber"])
return @"sepa";
if ( [verb isEqualToString:@"haber"])
return @"haya";
// 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular
// Orthographic changes
if ( simplePresentYoStem.length > 2 &&
[[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] )
return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"a"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"que"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gue"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"ce"];
if ( verb.length > 4 &&
[[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"ga"];
} else {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"ga"];
}
}
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"ja"];
} else {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"ja"];
}
}
if ( [verbStem isEqualToString:simplePresentYoStem]) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"e"];
else
return [verbStem stringByAppendingString:@"a"];
}
// 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive,
// and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative
if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ||
[[self simplePresentOtoUEstemChangersArray] containsObject:verb] ||
[[self simplePresentEtoIstemChangersArray] containsObject:verb] ||
[verb isEqualToString:@"jugar"] ) {
if ( [verb isEqualToString:@"jugar"] ) return @"juegue";
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"e"];
else
return [simplePresentYoStem stringByAppendingString:@"a"];
}
}
// 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all
// forms of the present subjunctive will have stem changes
if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ||
[[self simplePresentOtoUEstemChangersArray] containsObject:verb] ||
[[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
return [simplePresentYoStem stringByAppendingString:@"a"];
}
}
// 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of
// present subjuntive
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"e"];
else
return [simplePresentYoStem stringByAppendingString:@"a"];
} else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) {
// 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive
if ( [verb isEqualToString:@"ser"])
return @"seas";
if ( [verb isEqualToString:@"estar"])
return @"estés";
if ( [verb isEqualToString:@"ir"])
return @"vayas";
if ( [verb isEqualToString:@"dar"])
return @"des";
if ( [verb isEqualToString:@"saber"])
return @"sepas";
if ( [verb isEqualToString:@"haber"])
return @"hayas";
// 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular
// Orthographic changes
if ( simplePresentYoStem.length > 2 &&
[[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] )
return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"as"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"ques"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gues"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"ces"];
if ( verb.length > 4 &&
[[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gas"];
} else {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gas"];
}
}
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jas"];
} else {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jas"];
}
}
if ( [verbStem isEqualToString:simplePresentYoStem] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"es"];
else
return [verbStem stringByAppendingString:@"as"];
}
// 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive,
// and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative
if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ||
[[self simplePresentOtoUEstemChangersArray] containsObject:verb] ||
[[self simplePresentEtoIstemChangersArray] containsObject:verb] ||
[verb isEqualToString:@"jugar"] ) {
if ( [verb isEqualToString:@"jugar"] ) return @"juegues";
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"es"];
else
return [simplePresentYoStem stringByAppendingString:@"as"];
}
}
// 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all
// forms of the present subjunctive will have stem changes and special changes in nosotros and vosotros
if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ||
[[self simplePresentOtoUEstemChangersArray] containsObject:verb] ||
[[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
return [simplePresentYoStem stringByAppendingString:@"as"];
}
}
// 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of
// present subjuntive
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"es"];
else
return [simplePresentYoStem stringByAppendingString:@"as"];
} else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
// Remove any accented characters, if any from stem
if ( [verbStem rangeOfString:@"í"].location != NSNotFound ) {
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"í"] withString:@"i"];
}
if ( [verbStem rangeOfString:@"é"].location != NSNotFound ) {
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"é"] withString:@"e"];
}
if ( [simplePresentYoStem rangeOfString:@"ú"].location != NSNotFound ) {
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ú"] withString:@"u"];
}
// 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive
if ( [verb isEqualToString:@"ser"])
return @"seamos";
if ( [verb isEqualToString:@"estar"])
return @"estemos";
if ( [verb isEqualToString:@"ir"])
return @"vayamos";
if ( [verb isEqualToString:@"dar"])
return @"demos";
if ( [verb isEqualToString:@"saber"])
return @"sepamos";
if ( [verb isEqualToString:@"haber"])
return @"hayamos";
// 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular
// Orthographic changes
if ( simplePresentYoStem.length > 2 &&
[[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] )
return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"gamos"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"quemos"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"guemos"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"cemos"];
if ( verb.length > 4 &&
[[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gamos"];
} else {
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gamos"];
}
}
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jamos"];
} else {
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jamos"];
}
}
if ( [verbStem isEqualToString:simplePresentYoStem] ||
[self.simplePresentUARtoAccentedUArray containsObject:verb] ||
[self.simplePresentIARtoAccentedIArray containsObject:verb] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"emos"];
else
return [verbStem stringByAppendingString:@"amos"];
}
// 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive,
// and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative
if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) {
if ( [verb isEqualToString:@"jugar"] ) return @"jueguemos";
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"emos"];
else
return [verbStem stringByAppendingString:@"amos"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"emos"];
else
return [verbStem stringByAppendingString:@"amos"];
}
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"emos"];
else
return [verbStem stringByAppendingString:@"amos"];
}
}
// 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all
// forms of the present subjunctive will have stem changes and special changes in nosotros and vosotros
if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) {
return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) {
return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"] stringByAppendingString:@"amos"];
}
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) {
return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"];
}
}
// 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of
// present subjuntive
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"emos"];
else
return [simplePresentYoStem stringByAppendingString:@"amos"];
} else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) {
// Remove any accented characters, if any from stem
if ( [verbStem rangeOfString:@"í"].location != NSNotFound ) {
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"í"] withString:@"i"];
}
if ( [verbStem rangeOfString:@"é"].location != NSNotFound ) {
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"é"] withString:@"e"];
}
if ( [simplePresentYoStem rangeOfString:@"ú"].location != NSNotFound ) {
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ú"] withString:@"u"];
}
// 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive
if ( [verb isEqualToString:@"ser"])
return @"seáis";
if ( [verb isEqualToString:@"estar"])
return @"estéis";
if ( [verb isEqualToString:@"ir"])
return @"vayáis";
if ( [verb isEqualToString:@"dar"])
return @"deis";
if ( [verb isEqualToString:@"saber"])
return @"sepáis";
if ( [verb isEqualToString:@"haber"])
return @"hayáis";
// 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular
// Orthographic changes
if ( simplePresentYoStem.length > 2 &&
[[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] )
return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"áis"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"quéis"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"guéis"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] )
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"céis"];
if ( verb.length > 4 &&
[[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gáis"];
} else {
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gáis"];
}
}
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jáis"];
} else {
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jáis"];
}
}
if ( [verbStem isEqualToString:simplePresentYoStem] ||
[self.simplePresentUARtoAccentedUArray containsObject:verb] ||
[self.simplePresentIARtoAccentedIArray containsObject:verb] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"éis"];
else
return [verbStem stringByAppendingString:@"áis"];
}
// 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive,
// and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative
if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) {
if ( [verb isEqualToString:@"jugar"] ) return @"jueguemos";
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"éis"];
else
return [verbStem stringByAppendingString:@"áis"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"éis"];
else
return [verbStem stringByAppendingString:@"áis"];
}
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"éis"];
else
return [verbStem stringByAppendingString:@"áis"];
}
}
// 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all
// forms of the present subjunctive will have stem changes and special changes in nosotros and vosotros
if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) {
return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"áis"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) {
return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"] stringByAppendingString:@"áis"];
}
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] &&
[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) {
return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"áis"];
}
}
// 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of
// present subjuntive
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"éis"];
else
return [simplePresentYoStem stringByAppendingString:@"áis"];
} else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
// 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive
if ( [verb isEqualToString:@"ser"])
return @"sean";
if ( [verb isEqualToString:@"estar"])
return @"estén";
if ( [verb isEqualToString:@"ir"])
return @"vayan";
if ( [verb isEqualToString:@"dar"])
return @"den";
if ( [verb isEqualToString:@"saber"])
return @"sepan";
if ( [verb isEqualToString:@"haber"])
return @"hayan";
// 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular
// Orthographic changes
if ( simplePresentYoStem.length > 2 &&
[[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] )
return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"an"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"quen"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"guen"];
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] )
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"cen"];
if ( verb.length > 4 &&
[[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gan"];
} else {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gan"];
}
}
if ( verb.length > 3 &&
[[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) {
if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jan"];
} else {
return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jan"];
}
}
if ( [verbStem isEqualToString:simplePresentYoStem]) {
if ( [verbExit isEqualToString:@"ar"] )
return [verbStem stringByAppendingString:@"en"];
else
return [verbStem stringByAppendingString:@"an"];
}
// 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive,
// and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative
if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ||
[[self simplePresentOtoUEstemChangersArray] containsObject:verb] ||
[[self simplePresentEtoIstemChangersArray] containsObject:verb] ||
[verb isEqualToString:@"jugar"] ) {
if ( [verb isEqualToString:@"jugar"] ) return @"jueguen";
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"en"];
else
return [simplePresentYoStem stringByAppendingString:@"an"];
}
}
// 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all
// forms of the present subjunctive will have stem changes
if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ||
[[self simplePresentOtoUEstemChangersArray] containsObject:verb] ||
[[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
return [simplePresentYoStem stringByAppendingString:@"an"];
}
}
// 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of
// present subjuntive
if ( [verbExit isEqualToString:@"ar"] )
return [simplePresentYoStem stringByAppendingString:@"en"];
else
return [simplePresentYoStem stringByAppendingString:@"an"];
}
return verb;
}
# pragma mark - Simple Past
- (NSString *) conjugateSimplePastVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getStem:verb];
NSString * verbExit = [self getExit:verb];
if ( [verb isEqualToString:@"andar"]) verbStem = @"anduv";
if ( [verb isEqualToString:@"conducir"]) verbStem = @"conduj";
if ( [verb isEqualToString:@"decir"]) verbStem = @"dij";
if ( [verb isEqualToString:@"estar"]) verbStem = @"estuv";
if ( [verb isEqualToString:@"haber"]) verbStem = @"hub";
if ( [verb isEqualToString:@"hacer"]) {
if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) verbStem = @"hiz";
else verbStem = @"hic";
}
if ( [verb isEqualToString:@"poder"]) verbStem = @"pud";
if ( [verb isEqualToString:@"poner"]) verbStem = @"pus";
if ( [verb isEqualToString:@"querer"]) verbStem = @"quis";
if ( [verb isEqualToString:@"saber"]) verbStem = @"sup";
if ( [verb isEqualToString:@"tener"]) verbStem = @"tuv";
if ( [verb isEqualToString:@"traducir"]) verbStem = @"traduj";
if ( [verb isEqualToString:@"traer"]) verbStem = @"traj";
if ( [verb isEqualToString:@"venir"]) verbStem = @"vin";
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
// Irregular
if ( [verb isEqualToString:@"dar"]) return @"di";
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fui";
if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"car"] )
return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"qué"];
if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"gar"] )
return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"gué"];
if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"zar"] )
return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@""];
if ( [verbStem isEqualToString:[self getStem:verb]]) {
// Regular
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"é"];
else return [verbStem stringByAppendingString:@"í"];
} else {
// Irregular
return [verbStem stringByAppendingString:@"e"];
}
}
if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) {
// Irregular
if ( [verb isEqualToString:@"dar"]) return @"diste";
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuiste";
if ( [verbStem isEqualToString:[self getStem:verb]]) {
// Regular
if ( [@"ar" isEqualToString:verbExit] ) {
return [verbStem stringByAppendingString:@"aste"];
} else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"e"] ) {
return [verbStem stringByAppendingString:@"íste"];
} else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"o"] ) {
return [verbStem stringByAppendingString:@"íste"];
} else {
return [verbStem stringByAppendingString:@"iste"];
}
} else {
// Irregular
return [verbStem stringByAppendingString:@"iste"];
}
}
if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
// Irregular
if ( [verb isEqualToString:@"dar"]) return @"dio";
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fue";
if ( ![verbStem isEqualToString:[self getStem:verb]]) {
// Irregular, stem changed
if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"ó"];
else
return [verbStem stringByAppendingString:@"o"];
}
if ( verb.length > 3 &&
![[verb substringFromIndex:verb.length-3] isEqualToString:@"car"] &&
![[verb substringFromIndex:verb.length-3] isEqualToString:@"gar"] &&
![[verb substringFromIndex:verb.length-3] isEqualToString:@"zar"]
) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [verbStem rangeOfString:@"e"].location != NSNotFound) {
// Verb changes stem from e to i
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] && [verbStem rangeOfString:@"o"].location != NSNotFound) {
// Verb changes stem from o to u
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"];
}
if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] && [verbStem rangeOfString:@"e"].location != NSNotFound) {
// Verb changes stem from e to i
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"];
}
}
if ( verb.length > 0 &&
[verbStem isEqualToString:[self getStem:verb]] && // No stem change
([[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"e"] ||
[[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"u"] ||
[[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"o"])
) {
// If the stem of an -er or -ir ends in a vowel, the -i of the 3rd person changes to y
return [verbStem stringByAppendingString:@""];
}
// Regular
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ó"];
else if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"ó"];
else if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"e"]) return [verbStem stringByAppendingString:@"yo"];
else return [verbStem stringByAppendingString:@""];
}
if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
// Irregular
if ( [verb isEqualToString:@"dar"]) return @"dimos";
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuimos";
if ( [verbStem isEqualToString:[self getStem:verb]]) {
// Regular
if ( [@"ar" isEqualToString:verbExit] ) {
return [verbStem stringByAppendingString:@"amos"];
} else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"e"] ) {
return [verbStem stringByAppendingString:@"ímos"];
} else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"o"] ) {
return [verbStem stringByAppendingString:@"ímos"];
} else {
return [verbStem stringByAppendingString:@"imos"];
}
} else {
// Irregular
return [verbStem stringByAppendingString:@"imos"];
}
}
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) {
// Irregular
if ( [verb isEqualToString:@"dar"]) return @"disteis";
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuisteis";
if ( [verbStem isEqualToString:[self getStem:verb]]) {
// Regular
if ( [@"ar" isEqualToString:verbExit] ) {
return [verbStem stringByAppendingString:@"asteis"];
} else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"e"] ) {
return [verbStem stringByAppendingString:@"ísteis"];
} else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"o"] ) {
return [verbStem stringByAppendingString:@"ísteis"];
} else {
return [verbStem stringByAppendingString:@"isteis"];
}
} else {
// Irregular
return [verbStem stringByAppendingString:@"isteis"];
}
}
if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
// Irregular
if ( [verb isEqualToString:@"dar"]) return @"dieron";
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fueron";
if ( [verbStem isEqualToString:[self getStem:verb]] &&
verb.length > 3 &&
![[verb substringFromIndex:verb.length-3] isEqualToString:@"car"] &&
![[verb substringFromIndex:verb.length-3] isEqualToString:@"gar"] &&
![[verb substringFromIndex:verb.length-3] isEqualToString:@"zar"]
) {
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ) {
// Verb changes stem from e to i
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) {
// Verb changes stem from o to u
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"];
}
if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
// Verb changes stem from e to i
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"];
}
}
if ( [verbStem isEqualToString:[self getStem:verb]]) {
// Regular
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aron"];
else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"j"]) return [verbStem stringByAppendingString:@"eron"];
else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"yeron"];
else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"e"]) return [verbStem stringByAppendingString:@"yeron"];
else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"u"]) return [verbStem stringByAppendingString:@"yeron"];
else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"o"]) return [verbStem stringByAppendingString:@"yeron"];
else return [verbStem stringByAppendingString:@"ieron"];
} else {
if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"j"]) return [verbStem stringByAppendingString:@"eron"];
else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"eron"];
else return [verbStem stringByAppendingString:@"ieron"];
}
}
return verb;
}
# pragma mark - Imperfect
- (NSString *) conjugateImperfectVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getStem:verb];
NSString * verbExit = [self getExit:verb];
// regular
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"ser"] ) return @"era";
if ( [verb isEqualToString:@"ir"] ) return @"iba";
if ( [verb isEqualToString:@"ver"] ) return @"veía";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aba"];
else return [verbStem stringByAppendingString:@"ía"];
}
if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"ser"] ) return @"eras";
if ( [verb isEqualToString:@"ir"] ) return @"ibas";
if ( [verb isEqualToString:@"ver"] ) return @"veías";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"abas"];
else return [verbStem stringByAppendingString:@"ías"];
}
if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"ser"] ) return @"era";
if ( [verb isEqualToString:@"ir"] ) return @"iba";
if ( [verb isEqualToString:@"ver"] ) return @"veía";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aba"];
else return [verbStem stringByAppendingString:@"ía"];
}
if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"ser"] ) return @"éramos";
if ( [verb isEqualToString:@"ir"] ) return @"íbamos";
if ( [verb isEqualToString:@"ver"] ) return @"veíamos";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ábamos"];
else return [verbStem stringByAppendingString:@"íamos"];
}
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"ser"] ) return @"erais";
if ( [verb isEqualToString:@"ir"] ) return @"ibais";
if ( [verb isEqualToString:@"ver"] ) return @"veíais";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"abais"];
else return [verbStem stringByAppendingString:@"íais"];
}
if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"ser"] ) return @"eran";
if ( [verb isEqualToString:@"ir"] ) return @"iban";
if ( [verb isEqualToString:@"ver"] ) return @"veían";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aban"];
else return [verbStem stringByAppendingString:@"ían"];
}
return verb;
}
- (NSString *) conjugateImperfectSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbExit = [self getExit:verb];
NSString * verbStem = nil;
NSString * imperfect = [self conjugateSimplePastVerb:verb inPerson:@"THIRD_PERSON_PLURAL"];
if ( imperfect.length > 2 )
verbStem = [imperfect substringToIndex:imperfect.length-2];
// regular
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
return [verbStem stringByAppendingString:@"a"];
}
if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) {
return [verbStem stringByAppendingString:@"as"]; }
if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
return [verbStem stringByAppendingString:@"a"]; }
if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
if ([[verbStem substringFromIndex:verbStem.length-2] isEqualToString:@"ar"])
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ar" options:NSBackwardsSearch] withString:@"ár"];
else
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"er" options:NSBackwardsSearch] withString:@"ér"];
return [verbStem stringByAppendingString:@"amos"];;
}
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) {
return [verbStem stringByAppendingString:@"ais"]; }
if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
return [verbStem stringByAppendingString:@"an"];
}
return verb;
}
# pragma mark - Future / Condicional
// Get stem for Future and Condicional
- (NSString *) getFutureStem:(NSString *) verb {
// Irregular stem
if ( [verb isEqualToString:@"decir"]) return @"dir";
if ( [verb isEqualToString:@"haber"]) return @"habr";
if ( [verb isEqualToString:@"hacer"]) return @"har";
if ( [verb isEqualToString:@"poder"]) return @"podr";
if ( [verb isEqualToString:@"poner"]) return @"pondr";
if ( [verb isEqualToString:@"querer"]) return @"querr";
if ( [verb isEqualToString:@"saber"]) return @"sabr";
if ( [verb isEqualToString:@"salir"]) return @"saldr";
if ( [verb isEqualToString:@"tener"]) return @"tendr";
if ( [verb isEqualToString:@"valer"]) return @"valdr";
if ( [verb isEqualToString:@"venir"]) return @"vendr";
// Regular stem = infinitive
return verb;
}
- (NSString *) conjugateFutureVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getFutureStem:verb];
// regular
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"])
return [verbStem stringByAppendingString:@"é"];
if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"])
return [verbStem stringByAppendingString:@"ás"];
if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"])
return [verbStem stringByAppendingString:@"á"];
if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"])
return [verbStem stringByAppendingString:@"emos"];
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"])
return [verbStem stringByAppendingString:@"éis"];
if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"])
return [verbStem stringByAppendingString:@"án"];
return verb;
}
- (NSString *) conjugateConditionalVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getFutureStem:verb];
// regular
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"])
return [verbStem stringByAppendingString:@"ía"];
if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"])
return [verbStem stringByAppendingString:@"ías"];
if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"])
return [verbStem stringByAppendingString:@"ía"];
if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"])
return [verbStem stringByAppendingString:@"íamos"];
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"])
return [verbStem stringByAppendingString:@"íais"];
if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"])
return [verbStem stringByAppendingString:@"ían"];
return verb;
}
# pragma mark - Perfect
- (NSString *) conjugatePerfectVerb:(NSString *) verb {
NSString * verbStem = [self getStem:verb];
NSString * verbExit = [self getExit:verb];
if ( [verb rangeOfString:@"abrir"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"abrir"] withString:@"abierto"];
if ( [verb rangeOfString:@"cubrir"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"cubrir"] withString:@"cubierto"];
if ( [verb rangeOfString:@"decir"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"decir"] withString:@"dicho"];
if ( [verb rangeOfString:@"escribir"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"escribir"] withString:@"escrito"];
if ( [verb rangeOfString:@"hacer"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"hacer"] withString:@"hecho"];
if ( [verb rangeOfString:@"morir"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"morir"] withString:@"muerto"];
if ( [verb rangeOfString:@"poner"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"poner"] withString:@"puesto"];
if ( [verb rangeOfString:@"romper"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"romper"] withString:@"roto"];
if ( [verb rangeOfString:@"volver"].location != NSNotFound)
return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"volver"] withString:@"vuelto"];
if ( [verb isEqualToString:@"ver"]) return @"visto";
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ado"];
else if ( [@"ír" isEqualToString:verbExit] )
return [verbStem stringByAppendingString:@"ído"];
else return [verbStem stringByAppendingString:@"ido"];
return verb;
}
// El perfecto
- (NSString *) conjugatePresentPerfectVerb:(NSString *) verb inPerson:(NSString *) person {
// Present of haber + Perfect tense
return [[[self conjugateSimplePresentVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]];
}
// El perfecto de subjuntivo
- (NSString *) conjugatePerfectSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person {
// Present of haber + Perfect tense
return [[[self conjugatePresentSubjunctiveVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]];
}
// el pluscuamperfecto
- (NSString *) conjugatePastPerfectVerb:(NSString *) verb inPerson:(NSString *) person {
// Past of haber + Perfect tense
return [[[self conjugateImperfectVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]];
}
// el pluscuamperfecto de subjuntivo
- (NSString *) conjugatePastPerfectSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person {
// Past of haber + Perfect tense
return [[[self conjugateImperfectSubjunctiveVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]];
}
// el futuro perfecto
- (NSString *) conjugateFuturePerfectVerb:(NSString *) verb inPerson:(NSString *) person {
// Future of haber + Perfect tense
return [[[self conjugateFutureVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]];
}
// el condicional perfecto
- (NSString *) conjugateConditionalPerfectVerb:(NSString *) verb inPerson:(NSString *) person {
// Future of haber + Perfect tense
return [[[self conjugateConditionalVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]];
}
# pragma mark - Gerund
- (NSString *) conjugateGerundVerb:(NSString *) verb inPerson:(NSString *) person {
NSString * verbStem = [self getStem:verb];
NSString * verbExit = [self getExit:verb];
// Irregular
if ( [verb isEqualToString:@"ir"]) return @"yendo";
if ( verbStem.length > 1 && (
[[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"a"] ||
[[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"e"] ||
[[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"i"]))
// If the stem of an -er or -ir ends in a vowel, the -i of the 3rd person changes to y
return [verbStem stringByAppendingString:@"yendo"];
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ) {
// Verb changes stem from e to i
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"];
}
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) {
// Verb changes stem from o to u
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"];
}
if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
// Verb changes stem from e to i
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"];
}
// Regular
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ando"];
else return [verbStem stringByAppendingString:@"iendo"];
return verb;
}
# pragma mark - Conjugate Verb
- (NSString *) conjugateVerb:(NSString *) verb inPerson:(NSString *) person andTense:(Tense *) tense {
BOOL reflexive = FALSE;
NSString * conjugated = nil;
if ( [[self getExit:verb] isEqualToString:@"se"] ) {
reflexive = TRUE;
// Getting the stem will remove the last 2 characters
verb = [self getStem:verb];
}
if ( [tense.tense isEqualToString:@"SIMPLE_PRESENT"])
conjugated = [self conjugateSimplePresentVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"PRESENT_SUBJUNCTIVE"])
conjugated = [self conjugatePresentSubjunctiveVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"SIMPLE_PAST"])
conjugated = [self conjugateSimplePastVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"IMPERFECT"])
conjugated = [self conjugateImperfectVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"IMPERFECT_SUBJUNCTIVE"])
conjugated = [self conjugateImperfectSubjunctiveVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"FUTURE"])
conjugated = [self conjugateFutureVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"PERFECT"])
conjugated = [self conjugatePerfectVerb:verb];
else if ( [tense.tense isEqualToString:@"PRESENT_PERFECT"])
conjugated = [self conjugatePresentPerfectVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"PERFECT_SUBJUNCTIVE"])
conjugated = [self conjugatePerfectSubjunctiveVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"PAST_PERFECT"]) // Pluscuamperfecto
conjugated = [self conjugatePastPerfectVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"PAST_PERFECT_SUBJUNCTIVE"]) // Pluscuamperfecto de subjuntivo
conjugated = [self conjugatePastPerfectSubjunctiveVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"FUTURE_PERFECT"])
conjugated = [self conjugateFuturePerfectVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"CONDITIONAL_PERFECT"])
conjugated = [self conjugateConditionalPerfectVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"CONDITIONAL"])
conjugated = [self conjugateConditionalVerb:verb inPerson:person];
else if ( [tense.tense isEqualToString:@"GERUND"])
conjugated = [self conjugateGerundVerb:verb inPerson:person];
else
return @"Invalid tense";
if ( reflexive ) {
NSLog(@"%@",[[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:conjugated]);
return [[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:conjugated];
}
else {
return conjugated;
}
}
#pragma mark - Generate test answers
- (NSMutableArray *)addToAnswers:(NSMutableArray *)answers withCorrectAnswer:(NSString *) correct conjugation:(NSString *) conjugation
{
if ( [conjugation isEqualToString:correct])
return answers;
else
// Check if answer already exists in array
for ( NSString * a in answers) {
if ( [a isEqualToString:conjugation]) return answers;
}
[answers addObject:conjugation];
return answers;
}
- (id) popLastFromArray:(NSMutableArray *)a
{
id lastObject = nil;
if ( a && a.count > 0 ) {
lastObject = [a lastObject];
NSLog(@"Popping: %@", lastObject);
[a removeLastObject];
}
return lastObject;
}
- (NSMutableArray *)generateFalseConjugationsSimplePresentVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct
{
NSMutableArray *answers = [[NSMutableArray alloc] init];
NSString *verbExit = [self getExit:verb];
NSString *verbStem = [self getStem:verb];
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaya"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ido"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayo"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ido"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ide"];
}
if ( ![verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ó"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"o"]];
if ( [verbExit isEqualToString:@"er"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"e"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"e"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"e"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"e"]];
}
if ( [verbExit isEqualToString:@"ir"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"i"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"i"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"i"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"i"]];
}
} else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayas"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idas"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayes"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"as"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"es"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]];
if ( [verbExit isEqualToString:@"ar"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aste"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iste"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"s"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"as"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"as"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"as"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"es"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"es"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"es"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"es"]];
if ( [verbExit isEqualToString:@"ir"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"is"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"is"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"is"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"is"]];
}
} else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaya"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idas"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayo"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ido"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ide"];
}
if ( ![verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"á"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"o"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aba"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"e"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"e"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"e"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"e"]];
} else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayamos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idamos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idemos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayemos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idemos"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"amos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"emos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"imos"]];
if ( [verbExit isEqualToString:@"ar"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abamos"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"emos"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayáis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idáis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idáis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayéis"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"áis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"éis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ís"]];
if ( [verbExit isEqualToString:@"ar"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
}
if ( [verbExit isEqualToString:@"ar"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"áis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"áis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"áis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"áis"]];
}
if ( [verbExit isEqualToString:@"er"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"éis"]];
}
if ( [verbExit isEqualToString:@"ir"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ís"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ís"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ís"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ís"]];
}
} else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayan"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iden"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idan"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayen"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"an"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"en"]];
if ( [verbExit isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"in"]];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ieron"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aban"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"en"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"en"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"en"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"en"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"an"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"an"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"an"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"an"]];
} else {
answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil];
}
[answers shuffle];
return [answers mutableCopy];
}
- (NSMutableArray *)generateFalseConjugationsSimplePastVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct
{
NSMutableArray *answers = [[NSMutableArray alloc] init];
NSString *verbExit = [self getExit:verb];
NSString *verbStem = [self getStem:verb];
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fue"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayó"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@""];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iba"];
}
if ( ![verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ó"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"í"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"í"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"í"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"í"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) {
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fueste"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayaste"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayeste"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiësta"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibaste"];
}
if ( [verbExit isEqualToString:@"ar"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"as"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"es"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aste"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iste"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aste"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aste"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aste"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aste"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"iste"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"iste"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"iste"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"iste"]];
} else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fui"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayó"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiëstó"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iba"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iró"];
}
if ( ![verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"á"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"o"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aba"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"o"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ío"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ío"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ío"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ío"]];
} else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fuemos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayemos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayamos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiëstamos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibamos"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iramos"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"amos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"emos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"imos"]];
if ( [verbExit isEqualToString:@"ar"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abamos"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"amos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"emos"]];
if ( ![verbExit isEqualToString:@"ar"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"imos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"imos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"imos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"imos"]];
}
} else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) {
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fuesteis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayesteis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayasteis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiëstasteis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibeis"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ireis"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"astáis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"asteis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"astais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"esteis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"estéis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"isteis"]];
if ( [verbExit isEqualToString:@"ar"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"áis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aís"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"éis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ís"]];
}
if ( [verbExit isEqualToString:@"ar"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"astáis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"astáis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"astáis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"astáis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"astais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"astais"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"astais"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"astais"]];
}
if ( [verbExit isEqualToString:@"er"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"esteis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"esteis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"esteis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"esteis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"estéis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"estéis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"estéis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"estéis"]];
}
if ( ![verbExit isEqualToString:@"ar"] ) {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ísteis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ísteis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ísteis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ísteis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"isteis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"isteis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"isteis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"isteis"]];
}
} else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fuiron"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayaron"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayeron"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fieron"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibaron"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"an"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"en"]];
if ( [verbExit isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"in"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iron"]];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ieron"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eron"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aron"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aban"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aron"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aron"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aron"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aron"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"eron"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"eron"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"eron"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"eron"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ieron"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ieron"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ieron"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ieron"]];
} else {
answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil];
}
[answers shuffle];
return [answers mutableCopy];
}
- (NSMutableArray *)generateFalseConjugationsImperfectVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct
{
NSMutableArray *answers = [[NSMutableArray alloc] init];
NSString *verbExit = [self getExit:verb];
NSString *verbStem = [self getStem:verb];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugateImperfectSubjunctiveVerb:verb inPerson:person]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugateImperfectVerb:verb inPerson:person]];
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] ||
[person isEqualToString:@"THIRD_PERSON_SINGULAR"] ) {
if ( [verb isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fue"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayó"];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@""];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iba"];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aba"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ia"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aba"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aba"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aba"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aba"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ía"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) {
if ( [verbExit isEqualToString:@"ar"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"as"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"es"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ias"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ías"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iás"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"abas"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"abas"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"abas"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"abas"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ías"]];
} else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"amos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"emos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"imos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ábamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ábamos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ábamos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ábamos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ábamos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"íamos"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"asteis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"astais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ábais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abaís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iaís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"isteis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"áis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"abais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"abais"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"abais"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"abais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"íais"]];
} else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"an"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"en"]];
if ( [verbExit isEqualToString:@"ir"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"in"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iron"]];
}
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ieron"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eron"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aron"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aban"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ían"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ián"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ian"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aban"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aban"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aban"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aban"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ían"]];
} else {
answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil];
}
[answers shuffle];
return [answers mutableCopy];
}
- (NSMutableArray *)generateFalseConjugationsFutureVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct
{
NSMutableArray *answers = [[NSMutableArray alloc] init];
NSString *verbExit = [self getExit:verb];
NSString *verbStem = [self getStem:verb];
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"e"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ó"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"á"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"e"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ó"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dré"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drá"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@""]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@""]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
}
if ( [verbExit isEqualToString:@"ir"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"í"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"as"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"es"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"és"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ás"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"es"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"és"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drés"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drás"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rés"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rás"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rés"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rás"]];
}
if ( [verbExit isEqualToString:@"ir"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ís"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]];
} else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ó"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ó"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dré"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drá"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@""]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@""]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@""]];
}
if ( [verbExit isEqualToString:@"ir"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"í"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]];
} else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"amos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"imos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"abamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"amos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"imos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"abamos"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dremos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dramos"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"remos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ramos"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"remos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ramos"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"eís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"áis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"aís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"abáis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"áis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"éis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"abáis"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dréis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dráis"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"réis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"réis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"réis"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"réis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ráis"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]];
} else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"én"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"an"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"en"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"én"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"án"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"en"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drán"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dran"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dren"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rán"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ran"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ren"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rán"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ran"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ren"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]];
} else {
answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil];
}
[answers shuffle];
return [answers mutableCopy];
}
- (NSMutableArray *)generateFalseConjugationsConditionalVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct
{
NSMutableArray *answers = [[NSMutableArray alloc] init];
NSString *verbExit = [self getExit:verb];
NSString *verbStem = [self getStem:verb];
if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ia"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"á"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ía"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dría"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ría"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ría"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"és"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ias"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"as"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ías"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"as"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ias"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drías"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rías"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rías"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]];
} else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ia"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"a"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"á"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ía"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dría"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ría"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ría"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]];
} else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"émos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"iamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"amas"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ámos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"íamos"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"émos"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dríamos"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ríamos"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ríamos"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]];
} else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"eís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"áis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"aís"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"abáis"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ás"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"íais"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"íeis"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dríais"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ríais"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ríais"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]];
} else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"én"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ian"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"an"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"án"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ían"]];
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"én"]];
if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] ||
[[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"]
))
{
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drían"]];
} else if ( verbStem.length > 1 &&
([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"])
) {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rían"]];
} else {
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rían"]];
}
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]];
} else {
answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil];
}
[answers shuffle];
return [answers mutableCopy];
}
- (NSMutableArray *)generateFalseConjugationsPerfectVerb:(NSString *) verb withHaberConjugation:(NSString *)haberConj withCorrectAnswer:(NSString *)correct inPerson:(NSString *)person
{
NSMutableArray *answers = [[NSMutableArray alloc] init];
NSString *verbExit = [self getExit:verb];
NSString *verbStem = [self getStem:verb];
if ((arc4random() % 2) == 0 ) {
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[self conjugateFuturePerfectVerb:verb inPerson:person]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[self conjugatePastPerfectVerb:verb inPerson:person]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[self conjugatePresentPerfectVerb:verb inPerson:person]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[self conjugatePastPerfectSubjunctiveVerb:verb inPerson:person]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[self conjugatePerfectSubjunctiveVerb:verb inPerson:person]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[self conjugateConditionalPerfectVerb:verb inPerson:person]];
} else {
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"ado"]]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"ido"]]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"endo"]]];
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"iendo"]]];
if ( [verbExit isEqualToString:@"ir"]){
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"ierto"]]];
}
if ( [verbExit isEqualToString:@"ar"]){
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ado"]]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ado"]]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ado"]]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ado"]]];
} else {
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ido"]]];
if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ido"]]];
if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ido"]]];
if ( [verbStem rangeOfString:@"u"].location != NSNotFound)
[self addToAnswers:answers
withCorrectAnswer:correct
conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ido"]]];
}
}
[answers shuffle];
return [answers mutableCopy];
}
- (NSMutableArray *) getTestConjugationsForVerb:(NSString *) verb inPerson:(NSString *) person andTense:(Tense *) tense {
BOOL reflexive = FALSE;
NSLog(@"Getting test conjugation for %@ in person %@ and %@",verb,person,tense);
if ( [[self getExit:verb] isEqualToString:@"se"] ) {
reflexive = TRUE;
// Getting the stem will remove the last 2 characters
verb = [self getStem:verb];
}
NSString * correctAnswer = nil;
NSMutableArray * wrongAnswers = nil;
NSMutableArray * answers = [[NSMutableArray alloc] init];
if ( reflexive) {
correctAnswer = [[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugateVerb:verb inPerson:person andTense:tense]];
} else {
correctAnswer = [self conjugateVerb:verb inPerson:person andTense:tense];
}
NSLog(@"Correct answer: %@", correctAnswer);
if ( [tense.tense isEqualToString:@"SIMPLE_PRESENT"])
wrongAnswers = [self generateFalseConjugationsSimplePresentVerb:verb inPerson:person withCorrectAnswer:correctAnswer];
else if ( [tense.tense isEqualToString:@"PRESENT_SUBJUNCTIVE"])
wrongAnswers = [self generateFalseConjugationsSimplePresentVerb:verb inPerson:person withCorrectAnswer:correctAnswer];
else if ( [tense.tense isEqualToString:@"SIMPLE_PAST"])
wrongAnswers = [self generateFalseConjugationsSimplePastVerb:verb inPerson:person withCorrectAnswer:correctAnswer];
else if ( [tense.tense isEqualToString:@"IMPERFECT"])
wrongAnswers = [self generateFalseConjugationsImperfectVerb:verb inPerson:person withCorrectAnswer:correctAnswer];
else if ( [tense.tense isEqualToString:@"IMPERFECT_SUBJUNCTIVE"])
wrongAnswers = [self generateFalseConjugationsImperfectVerb:verb inPerson:person withCorrectAnswer:correctAnswer];
else if ( [tense.tense isEqualToString:@"PRESENT_PERFECT"])
wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateSimplePresentVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person];
else if ( [tense.tense isEqualToString:@"PERFECT_SUBJUNCTIVE"])
wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugatePresentSubjunctiveVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person];
else if ( [tense.tense isEqualToString:@"PAST_PERFECT"])
wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateImperfectVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person];
else if ( [tense.tense isEqualToString:@"PAST_PERFECT_SUBJUNCTIVE"])
wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateImperfectSubjunctiveVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person];
else if ( [tense.tense isEqualToString:@"FUTURE"])
wrongAnswers = [self generateFalseConjugationsFutureVerb:verb inPerson:person withCorrectAnswer:correctAnswer];
else if ( [tense.tense isEqualToString:@"FUTURE_PERFECT"])
wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateFutureVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person];
else if ( [tense.tense isEqualToString:@"CONDITIONAL"])
wrongAnswers = [self generateFalseConjugationsConditionalVerb:verb inPerson:person withCorrectAnswer:correctAnswer];
else if ( [tense.tense isEqualToString:@"CONDITIONAL_PERFECT"])
wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateConditionalVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person];
else
wrongAnswers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", nil];
if ( reflexive) {
// Need to correct the wrong answers
NSMutableArray *rAnswers = [[NSMutableArray alloc] init];
for ( NSString * v in wrongAnswers){
[rAnswers addObject:[[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:v]];
}
wrongAnswers = rAnswers;
}
// Add the correct answer
[answers addObject:correctAnswer];
// add 3 wrong answers
[answers addObject:[self popLastFromArray:wrongAnswers]];
[answers addObject:[self popLastFromArray:wrongAnswers]];
[answers addObject:[self popLastFromArray:wrongAnswers]];
[answers shuffle];
return [answers mutableCopy];
}
@end