Initial checkin
This commit is contained in:
parent
70477d2c47
commit
0b783c1173
BIN
Default-568h@2x.png
Normal file
BIN
Default-568h@2x.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@ -15,6 +15,12 @@
|
||||
B506EC7315EBF67500566A27 /* EspagramAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B506EC7215EBF67500566A27 /* EspagramAppDelegate.m */; };
|
||||
B506EC7615EBF67500566A27 /* MainStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B506EC7415EBF67500566A27 /* MainStoryboard.storyboard */; };
|
||||
B506EC7915EBF67500566A27 /* EspagramViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B506EC7815EBF67500566A27 /* EspagramViewController.m */; };
|
||||
B506EC8415EC005B00566A27 /* EspagramMainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B506EC8315EC005B00566A27 /* EspagramMainViewController.m */; };
|
||||
B506ECA515EE898700566A27 /* SpanishConjugator.m in Sources */ = {isa = PBXBuildFile; fileRef = B506ECA415EE898700566A27 /* SpanishConjugator.m */; };
|
||||
B512F63B164BEC6000DA031E /* EspagramTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B512F63A164BEC6000DA031E /* EspagramTestViewController.m */; };
|
||||
B512F63E164BEC8E00DA031E /* EspagramTestView.m in Sources */ = {isa = PBXBuildFile; fileRef = B512F63D164BEC8E00DA031E /* EspagramTestView.m */; };
|
||||
B5EFD38C162CA69F00C6E2EB /* GrammarTestViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EFD38B162CA69F00C6E2EB /* GrammarTestViewController.m */; };
|
||||
B5EFD392162CB18000C6E2EB /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = B5EFD391162CB18000C6E2EB /* Default-568h@2x.png */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@ -31,6 +37,19 @@
|
||||
B506EC7515EBF67500566A27 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard.storyboard; sourceTree = "<group>"; };
|
||||
B506EC7715EBF67500566A27 /* EspagramViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EspagramViewController.h; sourceTree = "<group>"; };
|
||||
B506EC7815EBF67500566A27 /* EspagramViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EspagramViewController.m; sourceTree = "<group>"; };
|
||||
B506EC8215EC005B00566A27 /* EspagramMainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EspagramMainViewController.h; sourceTree = "<group>"; };
|
||||
B506EC8315EC005B00566A27 /* EspagramMainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EspagramMainViewController.m; sourceTree = "<group>"; };
|
||||
B506ECA315EE898700566A27 /* SpanishConjugator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpanishConjugator.h; sourceTree = "<group>"; };
|
||||
B506ECA415EE898700566A27 /* SpanishConjugator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpanishConjugator.m; sourceTree = "<group>"; };
|
||||
B512F639164BEC6000DA031E /* EspagramTestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EspagramTestViewController.h; sourceTree = "<group>"; };
|
||||
B512F63A164BEC6000DA031E /* EspagramTestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EspagramTestViewController.m; sourceTree = "<group>"; };
|
||||
B512F63C164BEC8E00DA031E /* EspagramTestView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EspagramTestView.h; sourceTree = "<group>"; };
|
||||
B512F63D164BEC8E00DA031E /* EspagramTestView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EspagramTestView.m; sourceTree = "<group>"; };
|
||||
B58F57661635D27E00CED51B /* Conjugator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Conjugator.h; sourceTree = "<group>"; };
|
||||
B58F576D16387BE600CED51B /* NSMutableArray_Shuffling.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = NSMutableArray_Shuffling.h; path = Espagram/NSMutableArray_Shuffling.h; sourceTree = "<group>"; };
|
||||
B5EFD38A162CA69F00C6E2EB /* GrammarTestViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GrammarTestViewController.h; sourceTree = "<group>"; };
|
||||
B5EFD38B162CA69F00C6E2EB /* GrammarTestViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GrammarTestViewController.m; sourceTree = "<group>"; };
|
||||
B5EFD391162CB18000C6E2EB /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -50,6 +69,8 @@
|
||||
B506EC5315EBF67500566A27 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B5EFD391162CB18000C6E2EB /* Default-568h@2x.png */,
|
||||
B58F576D16387BE600CED51B /* NSMutableArray_Shuffling.h */,
|
||||
B506EC6815EBF67500566A27 /* Espagram */,
|
||||
B506EC6115EBF67500566A27 /* Frameworks */,
|
||||
B506EC5F15EBF67500566A27 /* Products */,
|
||||
@ -78,8 +99,19 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B506EC7115EBF67500566A27 /* EspagramAppDelegate.h */,
|
||||
B506EC7215EBF67500566A27 /* EspagramAppDelegate.m */,
|
||||
B506EC7415EBF67500566A27 /* MainStoryboard.storyboard */,
|
||||
B512F63C164BEC8E00DA031E /* EspagramTestView.h */,
|
||||
B512F63D164BEC8E00DA031E /* EspagramTestView.m */,
|
||||
B512F639164BEC6000DA031E /* EspagramTestViewController.h */,
|
||||
B512F63A164BEC6000DA031E /* EspagramTestViewController.m */,
|
||||
B506EC7215EBF67500566A27 /* EspagramAppDelegate.m */,
|
||||
B5EFD38A162CA69F00C6E2EB /* GrammarTestViewController.h */,
|
||||
B5EFD38B162CA69F00C6E2EB /* GrammarTestViewController.m */,
|
||||
B506ECA315EE898700566A27 /* SpanishConjugator.h */,
|
||||
B506ECA415EE898700566A27 /* SpanishConjugator.m */,
|
||||
B58F57661635D27E00CED51B /* Conjugator.h */,
|
||||
B506EC8215EC005B00566A27 /* EspagramMainViewController.h */,
|
||||
B506EC8315EC005B00566A27 /* EspagramMainViewController.m */,
|
||||
B506EC7715EBF67500566A27 /* EspagramViewController.h */,
|
||||
B506EC7815EBF67500566A27 /* EspagramViewController.m */,
|
||||
B506EC6915EBF67500566A27 /* Supporting Files */,
|
||||
@ -152,6 +184,7 @@
|
||||
files = (
|
||||
B506EC6D15EBF67500566A27 /* InfoPlist.strings in Resources */,
|
||||
B506EC7615EBF67500566A27 /* MainStoryboard.storyboard in Resources */,
|
||||
B5EFD392162CB18000C6E2EB /* Default-568h@2x.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -165,6 +198,11 @@
|
||||
B506EC6F15EBF67500566A27 /* main.m in Sources */,
|
||||
B506EC7315EBF67500566A27 /* EspagramAppDelegate.m in Sources */,
|
||||
B506EC7915EBF67500566A27 /* EspagramViewController.m in Sources */,
|
||||
B506EC8415EC005B00566A27 /* EspagramMainViewController.m in Sources */,
|
||||
B506ECA515EE898700566A27 /* SpanishConjugator.m in Sources */,
|
||||
B5EFD38C162CA69F00C6E2EB /* GrammarTestViewController.m in Sources */,
|
||||
B512F63B164BEC6000DA031E /* EspagramTestViewController.m in Sources */,
|
||||
B512F63E164BEC8E00DA031E /* EspagramTestView.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -245,7 +283,9 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Espagram/Espagram-Prefix.pch";
|
||||
INFOPLIST_FILE = "Espagram/Espagram-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
@ -256,7 +296,9 @@
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "Espagram/Espagram-Prefix.pch";
|
||||
INFOPLIST_FILE = "Espagram/Espagram-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = 1;
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
@ -280,6 +322,7 @@
|
||||
B506EC7E15EBF67500566A27 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
|
||||
7
Espagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
7
Espagram.xcodeproj/project.xcworkspace/contents.xcworkspacedata
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:Espagram.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
BIN
Espagram.xcodeproj/project.xcworkspace/xcuserdata/abel.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
BIN
Espagram.xcodeproj/project.xcworkspace/xcuserdata/abel.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
Binary file not shown.
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges</key>
|
||||
<true/>
|
||||
<key>SnapshotAutomaticallyBeforeSignificantChanges</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Bucket
|
||||
type = "1"
|
||||
version = "1.0">
|
||||
<FileBreakpoints>
|
||||
<FileBreakpoint
|
||||
shouldBeEnabled = "No"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
filePath = "Espagram/Conjugator.m"
|
||||
timestampString = "372367494.123156"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "111"
|
||||
endingLineNumber = "111"
|
||||
landmarkName = "-getSimplePresentStemVerb:inPerson:"
|
||||
landmarkType = "5">
|
||||
</FileBreakpoint>
|
||||
</FileBreakpoints>
|
||||
</Bucket>
|
||||
@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0440"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B506EC5D15EBF67500566A27"
|
||||
BuildableName = "Espagram.app"
|
||||
BlueprintName = "Espagram"
|
||||
ReferencedContainer = "container:Espagram.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B506EC5D15EBF67500566A27"
|
||||
BuildableName = "Espagram.app"
|
||||
BlueprintName = "Espagram"
|
||||
ReferencedContainer = "container:Espagram.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
ignoresPersistentStateOnLaunch = "NO"
|
||||
debugDocumentVersioning = "YES"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B506EC5D15EBF67500566A27"
|
||||
BuildableName = "Espagram.app"
|
||||
BlueprintName = "Espagram"
|
||||
ReferencedContainer = "container:Espagram.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "B506EC5D15EBF67500566A27"
|
||||
BuildableName = "Espagram.app"
|
||||
BlueprintName = "Espagram"
|
||||
ReferencedContainer = "container:Espagram.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Espagram.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>B506EC5D15EBF67500566A27</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
21
Espagram/ConjugatedTense.h
Normal file
21
Espagram/ConjugatedTense.h
Normal file
@ -0,0 +1,21 @@
|
||||
//
|
||||
// ConjugatedTense.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
@class Conjugations, Tenses, Verbs;
|
||||
|
||||
@interface ConjugatedTense : NSManagedObject
|
||||
|
||||
@property (nonatomic, retain) NSNumber * regularConjugation;
|
||||
@property (nonatomic, retain) Verbs *verb;
|
||||
@property (nonatomic, retain) Tenses *tense;
|
||||
@property (nonatomic, retain) Conjugations *irregularConjugation;
|
||||
|
||||
@end
|
||||
22
Espagram/ConjugatedTense.m
Normal file
22
Espagram/ConjugatedTense.m
Normal file
@ -0,0 +1,22 @@
|
||||
//
|
||||
// ConjugatedTense.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "ConjugatedTense.h"
|
||||
#import "Conjugations.h"
|
||||
#import "Tenses.h"
|
||||
#import "Verbs.h"
|
||||
|
||||
|
||||
@implementation ConjugatedTense
|
||||
|
||||
@dynamic regularConjugation;
|
||||
@dynamic verb;
|
||||
@dynamic tense;
|
||||
@dynamic irregularConjugation;
|
||||
|
||||
@end
|
||||
20
Espagram/Conjugations.h
Normal file
20
Espagram/Conjugations.h
Normal file
@ -0,0 +1,20 @@
|
||||
//
|
||||
// Conjugations.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
@class Persons;
|
||||
|
||||
@interface Conjugations : NSManagedObject
|
||||
|
||||
@property (nonatomic, retain) NSString * root;
|
||||
@property (nonatomic, retain) NSString * exit;
|
||||
@property (nonatomic, retain) Persons *conjugationPerson;
|
||||
|
||||
@end
|
||||
19
Espagram/Conjugations.m
Normal file
19
Espagram/Conjugations.m
Normal file
@ -0,0 +1,19 @@
|
||||
//
|
||||
// Conjugations.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Conjugations.h"
|
||||
#import "Persons.h"
|
||||
|
||||
|
||||
@implementation Conjugations
|
||||
|
||||
@dynamic root;
|
||||
@dynamic exit;
|
||||
@dynamic conjugationPerson;
|
||||
|
||||
@end
|
||||
15
Espagram/Conjugator.h
Normal file
15
Espagram/Conjugator.h
Normal file
@ -0,0 +1,15 @@
|
||||
//
|
||||
// Conjugator.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 10/22/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@protocol Conjugator
|
||||
|
||||
- (NSString *) conjugateVerb:(NSString *) verb inPerson:(NSString *) person andTense:(NSString *) tense;
|
||||
|
||||
@end
|
||||
@ -33,8 +33,6 @@
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
5
Espagram/EspagramData.xcdatamodeld/.xccurrentversion
Normal file
5
Espagram/EspagramData.xcdatamodeld/.xccurrentversion
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict/>
|
||||
</plist>
|
||||
15
Espagram/EspagramMainViewController.h
Normal file
15
Espagram/EspagramMainViewController.h
Normal file
@ -0,0 +1,15 @@
|
||||
//
|
||||
// EspagramMainViewController.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/27/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface EspagramMainViewController : UIViewController
|
||||
|
||||
- (IBAction)testTense:(UIButton *)sender;
|
||||
|
||||
@end
|
||||
83
Espagram/EspagramMainViewController.m
Normal file
83
Espagram/EspagramMainViewController.m
Normal file
@ -0,0 +1,83 @@
|
||||
//
|
||||
// EspagramMainViewController.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/27/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "EspagramMainViewController.h"
|
||||
#import "GrammarTestViewController.h"
|
||||
#import "SpanishConjugator.h"
|
||||
|
||||
@interface EspagramMainViewController ()
|
||||
@property (nonatomic, strong) NSString *language, *tense, *displayTitle;
|
||||
@end
|
||||
|
||||
@implementation EspagramMainViewController
|
||||
|
||||
@synthesize language = _language;
|
||||
@synthesize tense = _tense;
|
||||
@synthesize displayTitle = _displayTitle;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
|
||||
{
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
// Custom initialization
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id <Conjugator>) getLanguage {
|
||||
if ( [@"Spanish" isEqualToString:_language] ) {
|
||||
return [[SpanishConjugator alloc] init];
|
||||
} else return nil;
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void) testVerbsWithLanguage:(NSString *)language andTense:(NSString *)tense andTitle:(NSString *) title;
|
||||
{
|
||||
self.language = language;
|
||||
self.tense = tense;
|
||||
self.displayTitle = title;
|
||||
[self performSegueWithIdentifier:@"Testing" sender:self];
|
||||
}
|
||||
|
||||
- (IBAction)testTense:(UIButton *)sender
|
||||
{
|
||||
|
||||
if ( [sender.titleLabel.text isEqualToString:@"Presente"] ) {
|
||||
[self testVerbsWithLanguage: @"Spanish" andTense:@"SIMPLE_PRESENT" andTitle:sender.titleLabel.text];
|
||||
} else if ( [sender.titleLabel.text isEqualToString:@"Pretérito"] ) {
|
||||
[self testVerbsWithLanguage: @"Spanish" andTense:@"SIMPLE_PAST" andTitle:sender.titleLabel.text];
|
||||
} else if ( [sender.titleLabel.text isEqualToString:@"Imperfecto"] ) {
|
||||
[self testVerbsWithLanguage: @"Spanish" andTense:@"IMPERFECT" andTitle:sender.titleLabel.text];
|
||||
} else if ( [sender.titleLabel.text isEqualToString:@"Futuro"] ) {
|
||||
[self testVerbsWithLanguage: @"Spanish" andTense:@"FUTURE" andTitle:sender.titleLabel.text];
|
||||
} else if ( [sender.titleLabel.text isEqualToString:@"Perfecto"] ) {
|
||||
[self testVerbsWithLanguage: @"Spanish" andTense:@"PRESENT_PERFECT" andTitle:sender.titleLabel.text];
|
||||
} else if ( [sender.titleLabel.text isEqualToString:@"Pluscuamperfecto"] ) {
|
||||
[self testVerbsWithLanguage: @"Spanish" andTense:@"PAST_PERFECT" andTitle:sender.titleLabel.text];
|
||||
} else if ( [sender.titleLabel.text isEqualToString:@"Futuro Perfecto"] ) {
|
||||
[self testVerbsWithLanguage: @"Spanish" andTense:@"FUTURE_PERFECT" andTitle:sender.titleLabel.text];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
||||
|
||||
if ( [segue.identifier isEqualToString:@"Testing"]) {
|
||||
[segue.destinationViewController setTitle:self.displayTitle];
|
||||
[segue.destinationViewController setConjugator:[self getLanguage]];
|
||||
[segue.destinationViewController setTense:self.tense];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
13
Espagram/EspagramTestView.h
Normal file
13
Espagram/EspagramTestView.h
Normal file
@ -0,0 +1,13 @@
|
||||
//
|
||||
// EspagramTestView.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 11/8/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface EspagramTestView : UIView
|
||||
|
||||
@end
|
||||
31
Espagram/EspagramTestView.m
Normal file
31
Espagram/EspagramTestView.m
Normal file
@ -0,0 +1,31 @@
|
||||
//
|
||||
// EspagramTestView.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 11/8/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "EspagramTestView.h"
|
||||
|
||||
@implementation EspagramTestView
|
||||
|
||||
- (id)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
// Initialization code
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
/*
|
||||
// Only override drawRect: if you perform custom drawing.
|
||||
// An empty implementation adversely affects performance during animation.
|
||||
- (void)drawRect:(CGRect)rect
|
||||
{
|
||||
// Drawing code
|
||||
}
|
||||
*/
|
||||
|
||||
@end
|
||||
17
Espagram/EspagramTestViewController.h
Normal file
17
Espagram/EspagramTestViewController.h
Normal file
@ -0,0 +1,17 @@
|
||||
//
|
||||
// EspagramTestViewController.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 11/8/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "Conjugator.h"
|
||||
|
||||
@interface EspagramTestViewController : UIViewController
|
||||
|
||||
@property (nonatomic, strong) id <Conjugator> conjugator;
|
||||
@property (nonatomic, strong) NSString * tense;
|
||||
|
||||
@end
|
||||
50
Espagram/EspagramTestViewController.m
Normal file
50
Espagram/EspagramTestViewController.m
Normal file
@ -0,0 +1,50 @@
|
||||
//
|
||||
// EspagramTestViewController.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 11/8/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "EspagramTestViewController.h"
|
||||
#import "GrammarTestViewController.h"
|
||||
|
||||
@interface EspagramTestViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation EspagramTestViewController
|
||||
|
||||
@synthesize conjugator = _conjugator;
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
|
||||
{
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
// Custom initialization
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
{
|
||||
[super didReceiveMemoryWarning];
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
|
||||
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
||||
|
||||
if ( [segue.identifier isEqualToString:@"Conjugate"]) {
|
||||
[segue.destinationViewController setConjugator:self.conjugator];
|
||||
[segue.destinationViewController setTense:self.tense];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
23
Espagram/GrammarTestViewController.h
Normal file
23
Espagram/GrammarTestViewController.h
Normal file
@ -0,0 +1,23 @@
|
||||
//
|
||||
// GrammarTestViewController.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 10/15/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "Conjugator.h"
|
||||
|
||||
@class GrammarTestViewController;
|
||||
|
||||
@interface GrammarTestViewController : UIViewController
|
||||
|
||||
@property (weak, nonatomic) IBOutlet UITextField *verbInput;
|
||||
|
||||
@property (weak, nonatomic) IBOutlet id<Conjugator> conjugator;
|
||||
@property (weak, nonatomic) IBOutlet NSString *tense;
|
||||
|
||||
@property (weak, nonatomic) IBOutlet UILabel *tenseLabel;
|
||||
|
||||
@end
|
||||
63
Espagram/GrammarTestViewController.m
Normal file
63
Espagram/GrammarTestViewController.m
Normal file
@ -0,0 +1,63 @@
|
||||
//
|
||||
// GrammarTestViewController.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 10/15/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "GrammarTestViewController.h"
|
||||
#import "Conjugator.h"
|
||||
|
||||
|
||||
@implementation GrammarTestViewController
|
||||
|
||||
@synthesize conjugator = _conjugator;
|
||||
@synthesize verbInput = _verbInput;
|
||||
@synthesize tense = _tense;
|
||||
|
||||
|
||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
|
||||
{
|
||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||
if (self) {
|
||||
// Custom initialization
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (IBAction)verbEntered:(id *)sender {
|
||||
[self resignFirstResponder];
|
||||
}
|
||||
|
||||
- (void) setTense:(NSString *)tense {
|
||||
NSLog(@"New tense: %@",tense);
|
||||
if ( ![tense isEqualToString:_tense] ) {
|
||||
NSLog(@"Setting tense: %@",tense);
|
||||
_tense = tense;
|
||||
self.tenseLabel.text = tense;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (IBAction)conjugateButtonPressed {
|
||||
// self.conjugatedVerbDisplay.text = [self.conjugator conjugateVerb:self.verbInput.text inPerson:[self getSelectedPerson] andTense:[self getSelectedTense] ];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad
|
||||
{
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
|
||||
- (void)didReceiveMemoryWarning
|
||||
{
|
||||
[super didReceiveMemoryWarning];
|
||||
// Dispose of any resources that can be recreated.
|
||||
}
|
||||
;
|
||||
- (void)viewDidUnload {
|
||||
[self setVerbInput:nil];
|
||||
[super viewDidUnload];
|
||||
}
|
||||
@end
|
||||
33
Espagram/NSMutableArray_Shuffling.h
Normal file
33
Espagram/NSMutableArray_Shuffling.h
Normal file
@ -0,0 +1,33 @@
|
||||
// NSMutableArray_Shuffling.h
|
||||
|
||||
#if TARGET_OS_IPHONE
|
||||
#import <UIKit/UIKit.h>
|
||||
#else
|
||||
#include <Cocoa/Cocoa.h>
|
||||
#endif
|
||||
|
||||
// This category enhances NSMutableArray by providing
|
||||
// methods to randomly shuffle the elements.
|
||||
@interface NSMutableArray (Shuffling)
|
||||
- (void)shuffle;
|
||||
@end
|
||||
|
||||
|
||||
// NSMutableArray_Shuffling.m
|
||||
|
||||
#import "NSMutableArray_Shuffling.h"
|
||||
|
||||
@implementation NSMutableArray (Shuffling)
|
||||
|
||||
- (void)shuffle
|
||||
{
|
||||
NSUInteger count = [self count];
|
||||
for (NSUInteger i = 0; i < count; ++i) {
|
||||
// Select a random element between i and end of array to swap with.
|
||||
NSInteger nElements = count - i;
|
||||
NSInteger n = (arc4random() % nElements) + i;
|
||||
[self exchangeObjectAtIndex:i withObjectAtIndex:n];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
19
Espagram/Persons.h
Normal file
19
Espagram/Persons.h
Normal file
@ -0,0 +1,19 @@
|
||||
//
|
||||
// Persons.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
|
||||
@interface Persons : NSManagedObject
|
||||
|
||||
@property (nonatomic, retain) NSString * language;
|
||||
@property (nonatomic, retain) NSString * person;
|
||||
@property (nonatomic, retain) NSString * translation;
|
||||
|
||||
@end
|
||||
18
Espagram/Persons.m
Normal file
18
Espagram/Persons.m
Normal file
@ -0,0 +1,18 @@
|
||||
//
|
||||
// Persons.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Persons.h"
|
||||
|
||||
|
||||
@implementation Persons
|
||||
|
||||
@dynamic language;
|
||||
@dynamic person;
|
||||
@dynamic translation;
|
||||
|
||||
@end
|
||||
15
Espagram/SpanishConjugator.h
Normal file
15
Espagram/SpanishConjugator.h
Normal file
@ -0,0 +1,15 @@
|
||||
//
|
||||
// ConjugateRegularVerb.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "Conjugator.h"
|
||||
|
||||
@interface SpanishConjugator : NSObject <Conjugator>
|
||||
|
||||
|
||||
@end
|
||||
576
Espagram/SpanishConjugator.m
Normal file
576
Espagram/SpanishConjugator.m
Normal file
@ -0,0 +1,576 @@
|
||||
//
|
||||
// ConjugateRegularVerb.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "SpanishConjugator.h"
|
||||
|
||||
@interface SpanishConjugator()
|
||||
|
||||
@property (nonatomic, strong) NSArray *simplePresentEtoIEstemChangersArray,
|
||||
*simplePresentOtoUEstemChangersArray,
|
||||
*simplePresentEtoIstemChangersArray;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@implementation SpanishConjugator
|
||||
|
||||
@synthesize simplePresentEtoIEstemChangersArray = _simplePresentEtoIEstemChangersArray;
|
||||
@synthesize simplePresentOtoUEstemChangersArray = _simplePresentOtoUEstemChangersArray;
|
||||
@synthesize simplePresentEtoIstemChangersArray = _simplePresentEtoIstemChangersArray;
|
||||
|
||||
- (NSArray *) simplePresentEtoIEstemChangersArray{
|
||||
if (_simplePresentEtoIEstemChangersArray == nil)
|
||||
_simplePresentEtoIEstemChangersArray = [[NSArray alloc] initWithObjects:@"acertar", @"encender",@"advertir",@"entender",@"cerrar",@"fregar",@"comenzar",@"hervir",@"confesar",@"mentir",@"consentir",@"negar",@"convertir",@"pensar",@"defender",@"perder",@"empezar",@"preferir",@"querer",@"merendar",nil];
|
||||
|
||||
return _simplePresentEtoIEstemChangersArray;
|
||||
}
|
||||
|
||||
- (NSArray *) simplePresentOtoUEstemChangersArray{
|
||||
if (_simplePresentOtoUEstemChangersArray == nil)
|
||||
_simplePresentOtoUEstemChangersArray = [[NSArray alloc] initWithObjects:@"almorzar",@"morir",@"aprobar",@"mostrar",@"colgar",@"mover",@"contar",@"probar",@"costar",@"recordar",@"devolver",@"resolver",@"volver",@"rogar",@"dormir",@"sonar",@"encontrar",@"soñar",@"envolver",@"tostar",@"morder",@"volar",@"poder",nil];
|
||||
|
||||
return _simplePresentOtoUEstemChangersArray;
|
||||
}
|
||||
|
||||
- (NSArray *) simplePresentEtoIstemChangersArray{
|
||||
if (_simplePresentEtoIstemChangersArray == nil)
|
||||
_simplePresentEtoIstemChangersArray = [[NSArray alloc] initWithObjects:@"impedir",@"colegir",@"competir",@"medir",@"conseguir",@"pedir",@"corregir",@"perseguir",@"reír",@"despedir",@"repetir", @"seguir",@"freír",@"servir",@"gemir",@"sonreír",nil]; // not including elegir here as it also has an g to j change in first person singular
|
||||
|
||||
return _simplePresentEtoIstemChangersArray;
|
||||
}
|
||||
|
||||
|
||||
- (NSString *) getExit:(NSString *) verb {
|
||||
|
||||
NSLog(@"getExit start");
|
||||
|
||||
return [verb substringFromIndex:[verb length] - 2];
|
||||
|
||||
}
|
||||
|
||||
- (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];
|
||||
}
|
||||
|
||||
- (NSString *) getSimplePresentStemVerb:(NSString *) verb inPerson:(NSString *) person {
|
||||
NSString * verbStem = [self getStem: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";
|
||||
|
||||
|
||||
// conducir, conocer etc.
|
||||
if ( [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"cer"] ||
|
||||
[[verb substringFromIndex:[verb length] - 3] isEqualToString:@"cir"] )
|
||||
return [[verbStem substringToIndex:[verbStem length] - 1] stringByAppendingString:@"zc"];
|
||||
|
||||
if ( [verb isEqualToString:@"oír"] )
|
||||
return @"oí";
|
||||
|
||||
// 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"];
|
||||
|
||||
// other
|
||||
if ( [verb isEqualToString:@"ver"] ) return @"ve";
|
||||
|
||||
// g -> j
|
||||
if ( [verb isEqualToString:@"elegir"] ) return @"elij";
|
||||
|
||||
// g -> j
|
||||
if ( [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"gir"] )
|
||||
return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"j"];
|
||||
|
||||
// gu -> g
|
||||
if ( [[verb substringFromIndex:[verb length] - 4] isEqualToString:@"guir"] )
|
||||
return [[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
|
||||
if ( [verb isEqualToString:@"continuar"] ) return @"continú";
|
||||
if ( [verb isEqualToString:@"enviar"] ) return @"enví";
|
||||
if ( [verb isEqualToString:@"actuar"] ) return @"actú";
|
||||
if ( [verb isEqualToString:@"graduar"] ) return @"gradú";
|
||||
if ( [verb isEqualToString:@"confiar"] ) return @"confí";
|
||||
if ( [verb isEqualToString:@"criar"] ) return @"crí";
|
||||
if ( [verb isEqualToString:@"esquiar"] ) return @"esquí";
|
||||
if ( [verb isEqualToString:@"vaciar"] ) return @"vací";
|
||||
|
||||
|
||||
}
|
||||
|
||||
if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) {
|
||||
if ( [verb isEqualToString:@"oír"] )
|
||||
return @"oí";
|
||||
}
|
||||
|
||||
if ( [verb isEqualToString:@"elegir"] ) return @"elig";
|
||||
|
||||
|
||||
// Regular
|
||||
NSLog(@"getSimplePresentStemVerb start.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"] withString:@"ie"];
|
||||
}
|
||||
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) {
|
||||
// Verb changes stem from e to ie
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o"] withString:@"ue"];
|
||||
}
|
||||
if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
|
||||
// Verb changes stem from e to ie
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e"] withString:@"i"];
|
||||
}
|
||||
// u -> ue
|
||||
if ( [verb isEqualToString:@"jugar"]) return @"jueg";
|
||||
|
||||
|
||||
// huir, construir
|
||||
if ( [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"uir"] &&
|
||||
![[verb substringFromIndex:[verb length] - 3] isEqualToString:@"guir"])
|
||||
return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"uy"];
|
||||
}
|
||||
|
||||
NSLog(@"getSimplePresentStemVerb end");
|
||||
return verbStem;
|
||||
|
||||
}
|
||||
|
||||
|
||||
- (NSString *) conjugateSimplePresentVerb:(NSString *) verb inPerson:(NSString *) person {
|
||||
NSLog(@"conjugateRegularSimplePresentVerb Start");
|
||||
|
||||
NSString * verbStem = [self getSimplePresentStemVerb:verb inPerson:person];
|
||||
NSString * verbExit = [self getExit:verb];
|
||||
|
||||
// very irregular
|
||||
if ( [verb isEqualToString:@"haber"] ) return @"hay";
|
||||
|
||||
// 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 @"sé";
|
||||
}
|
||||
|
||||
// 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";
|
||||
|
||||
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 ( [@"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 ( [@"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 ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"amos"];
|
||||
if ( [@"er" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"emos"];
|
||||
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 ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"áis"];
|
||||
if ( [@"er" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"éis"];
|
||||
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 ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"an"];
|
||||
else return [verbStem stringByAppendingString:@"en"];
|
||||
}
|
||||
|
||||
return verb;
|
||||
}
|
||||
|
||||
|
||||
- (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 substringFromIndex:[verb length] - 3] isEqualToString:@"car"] )
|
||||
return [[verb substringFromIndex:[verb length] - 3] stringByAppendingString:@"qué"];
|
||||
|
||||
if ( [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"gar"] )
|
||||
return [[verb substringFromIndex:[verb length] - 3] stringByAppendingString:@"gué"];
|
||||
|
||||
if ( [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"zar"] )
|
||||
return [[verb substringFromIndex:[verb length] - 3] stringByAppendingString:@"cé"];
|
||||
|
||||
if ( [verbStem isEqualToString:[self getStem:verb]]) {
|
||||
// Regular
|
||||
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"é"];
|
||||
else return [verbStem stringByAppendingString:@"í"];
|
||||
} else {
|
||||
// Irregular
|
||||
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"e"];
|
||||
else return [verbStem stringByAppendingString:@"i"];
|
||||
}
|
||||
|
||||
}
|
||||
if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) {
|
||||
|
||||
// Irregular
|
||||
if ( [verb isEqualToString:@"dar"]) return @"diste";
|
||||
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuiste";
|
||||
|
||||
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aste"];
|
||||
else [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 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:@"yó"];
|
||||
|
||||
if ( ![@"ar" isEqualToString:verbExit] ) {
|
||||
// Irregular, stem changed
|
||||
|
||||
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"o"];
|
||||
else return [verbStem stringByAppendingString:@"io"];
|
||||
}
|
||||
|
||||
if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ) {
|
||||
// Verb changes stem from e to i
|
||||
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e"] withString:@"i"];
|
||||
}
|
||||
if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) {
|
||||
// Verb changes stem from o to u
|
||||
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o"] withString:@"u"];
|
||||
}
|
||||
if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) {
|
||||
// Verb changes stem from e to i
|
||||
verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e"] withString:@"i"];
|
||||
}
|
||||
|
||||
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ó"];
|
||||
else if ([[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"o"];
|
||||
else return [verbStem stringByAppendingString:@"ió"];
|
||||
}
|
||||
if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) {
|
||||
// Irregular
|
||||
if ( [verb isEqualToString:@"dar"]) return @"dimos";
|
||||
if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuimos";
|
||||
|
||||
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"amos"];
|
||||
else 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 ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"asteis"];
|
||||
else 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 ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aron"];
|
||||
else if ([[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"j"]) return [verbStem stringByAppendingString:@"eron"];
|
||||
else return [verbStem stringByAppendingString:@"ieron"];
|
||||
}
|
||||
|
||||
return verb;
|
||||
}
|
||||
|
||||
|
||||
- (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;
|
||||
|
||||
}
|
||||
|
||||
// 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 *) conjugatePerfectVerb:(NSString *) verb {
|
||||
NSString * verbStem = [self getStem:verb];
|
||||
NSString * verbExit = [self getExit:verb];
|
||||
|
||||
if ( [verb rangeOfString:@"abrir"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"abrir"] withString:@"abierto"];
|
||||
if ( [verb rangeOfString:@"cubrir"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"cubrir"] withString:@"cubierto"];
|
||||
if ( [verb rangeOfString:@"decir"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"decir"] withString:@"dicho"];
|
||||
if ( [verb rangeOfString:@"escribir"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"escribir"] withString:@"escrito"];
|
||||
if ( [verb rangeOfString:@"hacer"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"hacer"] withString:@"hecho"];
|
||||
if ( [verb rangeOfString:@"morir"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"morir"] withString:@"muerto"];
|
||||
if ( [verb rangeOfString:@"poner"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"poner"] withString:@"puesto"];
|
||||
if ( [verb rangeOfString:@"romper"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"romper"] withString:@"roto"];
|
||||
if ( [verb rangeOfString:@"volver"].location != NSNotFound)
|
||||
return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"volver"] withString:@"vuelto"];
|
||||
if ( [verb isEqualToString:@"ver"]) return @"visto";
|
||||
|
||||
if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ado"];
|
||||
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 pluscuamperfecto
|
||||
- (NSString *) conjugatePastPerfectVerb:(NSString *) verb inPerson:(NSString *) person {
|
||||
|
||||
// Past of haber + Perfect tense
|
||||
return [[[self conjugateSimplePastVerb:@"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]];
|
||||
|
||||
}
|
||||
|
||||
- (NSString *) conjugateVerb:(NSString *) verb inPerson:(NSString *) person andTense:(NSString *) tense {
|
||||
|
||||
if ( [tense isEqualToString:@"SIMPLE_PRESENT"])
|
||||
return [self conjugateSimplePresentVerb:verb inPerson:person];
|
||||
else if ( [tense isEqualToString:@"SIMPLE_PAST"])
|
||||
return [self conjugateSimplePastVerb:verb inPerson:person];
|
||||
else if ( [tense isEqualToString:@"IMPERFECT"])
|
||||
return [self conjugateImperfectVerb:verb inPerson:person];
|
||||
else if ( [tense isEqualToString:@"FUTURE"])
|
||||
return [self conjugateFutureVerb:verb inPerson:person];
|
||||
else if ( [tense isEqualToString:@"PERFECT"])
|
||||
return [self conjugatePerfectVerb:verb];
|
||||
else if ( [tense isEqualToString:@"PRESENT_PERFECT"])
|
||||
return [self conjugatePresentPerfectVerb:verb inPerson:person];
|
||||
else if ( [tense isEqualToString:@"PAST_PERFECT"]) // Pluscuamperfecto
|
||||
return [self conjugatePastPerfectVerb:verb inPerson:person];
|
||||
else if ( [tense isEqualToString:@"FUTURE_PERFECT"])
|
||||
return [self conjugateFuturePerfectVerb:verb inPerson:person];
|
||||
else
|
||||
return @"Invalid tense";
|
||||
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
19
Espagram/Tenses.h
Normal file
19
Espagram/Tenses.h
Normal file
@ -0,0 +1,19 @@
|
||||
//
|
||||
// Tenses.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
|
||||
@interface Tenses : NSManagedObject
|
||||
|
||||
@property (nonatomic, retain) NSString * tense;
|
||||
@property (nonatomic, retain) NSString * language;
|
||||
@property (nonatomic, retain) NSString * translation;
|
||||
|
||||
@end
|
||||
18
Espagram/Tenses.m
Normal file
18
Espagram/Tenses.m
Normal file
@ -0,0 +1,18 @@
|
||||
//
|
||||
// Tenses.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Tenses.h"
|
||||
|
||||
|
||||
@implementation Tenses
|
||||
|
||||
@dynamic tense;
|
||||
@dynamic language;
|
||||
@dynamic translation;
|
||||
|
||||
@end
|
||||
22
Espagram/TestBrain.h
Normal file
22
Espagram/TestBrain.h
Normal file
@ -0,0 +1,22 @@
|
||||
//
|
||||
// TestBrain.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 10/20/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "TestableConjugation.h"
|
||||
|
||||
@interface TestBrain : NSObject
|
||||
|
||||
@property (readonly) NSArray *testVerb;
|
||||
|
||||
|
||||
- (NSArray *) testConjugation:(TestableConjugation *) conjugation;
|
||||
|
||||
- (Boolean *) checkAnswer:(NSString *)answer forConjugation:(TestableConjugation *) conjugation;
|
||||
|
||||
|
||||
@end
|
||||
34
Espagram/TestBrain.m
Normal file
34
Espagram/TestBrain.m
Normal file
@ -0,0 +1,34 @@
|
||||
//
|
||||
// TestBrain.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 10/20/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "TestBrain.h"
|
||||
|
||||
@interface TestBrain()
|
||||
|
||||
@property (nonatomic, strong) NSDictionary *testSet;
|
||||
|
||||
@end
|
||||
|
||||
@implementation TestBrain
|
||||
|
||||
@synthesize testSet = _testSet;
|
||||
|
||||
|
||||
- (NSArray *) testConjugation:(TestableConjugation *) conjugation {
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (int) checkAnswer:(NSString *)answer forConjugation:(TestableConjugation *) conjugation {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
22
Espagram/Verbs.h
Normal file
22
Espagram/Verbs.h
Normal file
@ -0,0 +1,22 @@
|
||||
//
|
||||
// Verbs.h
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
@class ConjugatedTense;
|
||||
|
||||
@interface Verbs : NSManagedObject
|
||||
|
||||
@property (nonatomic, retain) NSString * verb;
|
||||
@property (nonatomic, retain) NSString * language;
|
||||
@property (nonatomic, retain) NSString * translation;
|
||||
@property (nonatomic, retain) NSString * root;
|
||||
@property (nonatomic, retain) ConjugatedTense *conjugatedTenses;
|
||||
|
||||
@end
|
||||
21
Espagram/Verbs.m
Normal file
21
Espagram/Verbs.m
Normal file
@ -0,0 +1,21 @@
|
||||
//
|
||||
// Verbs.m
|
||||
// Espagram
|
||||
//
|
||||
// Created by Abel Fokkinga on 8/29/12.
|
||||
// Copyright (c) 2012 Abel Fokkinga. All rights reserved.
|
||||
//
|
||||
|
||||
#import "Verbs.h"
|
||||
#import "ConjugatedTense.h"
|
||||
|
||||
|
||||
@implementation Verbs
|
||||
|
||||
@dynamic verb;
|
||||
@dynamic language;
|
||||
@dynamic translation;
|
||||
@dynamic root;
|
||||
@dynamic conjugatedTenses;
|
||||
|
||||
@end
|
||||
@ -1,22 +1,305 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="1.0" toolsVersion="1906" systemVersion="11A511" targetRuntime="iOS.CocoaTouch" nextObjectID="6" propertyAccessControl="none" initialViewController="2">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="2844" systemVersion="12C60" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="oPi-YX-voa">
|
||||
<dependencies>
|
||||
<development defaultVersion="4200" identifier="xcode"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="902"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1930"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<scene sceneID="5">
|
||||
<!--Grammar Test View Controller - Conjugar-->
|
||||
<scene sceneID="uhc-Cz-B6l">
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="4" sceneMemberID="firstResponder"/>
|
||||
<viewController id="2" customClass="EspagramViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="3">
|
||||
<rect key="frame" x="0.0" y="20" width="320" height="460"/>
|
||||
<viewController id="dia-tp-TaM" customClass="GrammarTestViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="3m2-gZ-RjZ">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews/>
|
||||
<subviews>
|
||||
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="hablar" borderStyle="roundedRect" clearsOnBeginEditing="YES" minimumFontSize="17" id="jor-ng-KbD">
|
||||
<rect key="frame" x="22" y="37" width="277" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocorrectionType="no" returnKeyType="done" enablesReturnKeyAutomatically="YES"/>
|
||||
<connections>
|
||||
<action selector="verbEntered:" destination="dia-tp-TaM" eventType="editingDidEndOnExit" id="S5t-oa-yBf"/>
|
||||
<action selector="verbEntered:" destination="dia-tp-TaM" eventType="editingDidEnd" id="ozR-Y7-phc"/>
|
||||
</connections>
|
||||
</textField>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="nuI-6L-F6l">
|
||||
<rect key="frame" x="23" y="365" width="274" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Conjugar">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="verbEntered:" destination="dia-tp-TaM" eventType="touchUpInside" id="5S8-MG-awf"/>
|
||||
</connections>
|
||||
</button>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="cOa-Tj-00B">
|
||||
<rect key="frame" x="23" y="80" width="277" height="271"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<prototypes>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ConjugatedVerbInTense" textLabel="5fj-E2-f88" detailTextLabel="x84-6k-vHk" style="IBUITableViewCellStyleValue2" id="qf4-ht-1Ae">
|
||||
<rect key="frame" x="0.0" y="22" width="277" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="277" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="5fj-E2-f88">
|
||||
<rect key="frame" x="10" y="15" width="91" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
|
||||
<color key="textColor" red="0.32156862745098042" green="0.40000000000000002" blue="0.56862745098039214" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Detail" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="x84-6k-vHk">
|
||||
<rect key="frame" x="107" y="12" width="41" height="19"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<color key="highlightedColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
</tableViewCell>
|
||||
</prototypes>
|
||||
</tableView>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" text="Tense" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Sqh-ED-2so">
|
||||
<rect key="frame" x="22" y="8" width="275" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" title="Conjugar" id="B1B-LG-GWr"/>
|
||||
<connections>
|
||||
<outlet property="tenseLabel" destination="Sqh-ED-2so" id="Kf0-0V-6zb"/>
|
||||
<outlet property="verbInput" destination="jor-ng-KbD" id="orV-fs-rNf"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="Anh-ro-d0k" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1629" y="-15"/>
|
||||
</scene>
|
||||
<!--Espagram Main View Controller - Espagram-->
|
||||
<scene sceneID="5">
|
||||
<objects>
|
||||
<viewController id="2" customClass="EspagramMainViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="3">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="1iz-i9-xxF">
|
||||
<rect key="frame" x="47" y="15" width="226" height="27"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Presente">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="xt1-zD-usB"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Q2a-f0-wVr">
|
||||
<rect key="frame" x="47" y="49" width="226" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Pretérito">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="UXf-MS-Lim"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="FF1-s5-Nsw">
|
||||
<rect key="frame" x="47" y="81" width="226" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Imperfecto">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="l2x-vf-Vge"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="bTv-Fp-Hrt">
|
||||
<rect key="frame" x="47" y="286" width="226" height="27"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Imperfecto de subjuntivo">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="K0y-OZ-RW0"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="TuL-Jh-4Gu">
|
||||
<rect key="frame" x="47" y="325" width="226" height="27"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Condicional">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="lat-TV-jnf"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="nNN-aa-v5R">
|
||||
<rect key="frame" x="47" y="114" width="226" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Futuro">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="HLC-xw-lXs"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="kUz-13-qcM">
|
||||
<rect key="frame" x="47" y="147" width="226" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Perfecto">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="LhI-Qb-1ia"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="4fh-Su-vGL">
|
||||
<rect key="frame" x="47" y="185" width="226" height="25"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Pluscuamperfecto">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="jlM-wK-GyG"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Sjr-s5-fuk">
|
||||
<rect key="frame" x="47" y="217" width="226" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Futuro Perfecto">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="0VI-DP-LX9"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="K17-5x-bf4">
|
||||
<rect key="frame" x="47" y="250" width="226" height="29"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="15"/>
|
||||
<state key="normal" title="Presente de subjuntivo">
|
||||
<color key="titleColor" red="0.19607843459999999" green="0.30980393290000002" blue="0.52156865600000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="testTense:" destination="2" eventType="touchUpInside" id="Mgx-V2-2uJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.80000001192092896" green="1" blue="0.40000000596046448" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" title="Espagram" id="C60-pb-13m"/>
|
||||
<connections>
|
||||
<segue destination="o8A-Pj-xMi" kind="push" identifier="Testing" id="KJU-hK-zW0"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="4" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="756" y="-15"/>
|
||||
</scene>
|
||||
<!--Espagram Test View Controller - Conjugate-->
|
||||
<scene sceneID="lbJ-Av-XmM">
|
||||
<objects>
|
||||
<viewController title="Conjugate" id="o8A-Pj-xMi" customClass="EspagramTestViewController" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="ee2-Vd-mbR" customClass="EspagramTestView">
|
||||
<rect key="frame" x="0.0" y="64" width="320" height="416"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
|
||||
</view>
|
||||
<navigationItem key="navigationItem" id="VAd-Jw-eoG">
|
||||
<barButtonItem key="rightBarButtonItem" title="Conjugar" id="EIF-L4-CbQ">
|
||||
<connections>
|
||||
<segue destination="dia-tp-TaM" kind="push" identifier="Conjugate" id="aA3-Tn-u0e"/>
|
||||
</connections>
|
||||
</barButtonItem>
|
||||
</navigationItem>
|
||||
<connections>
|
||||
<outlet property="view" destination="ee2-Vd-mbR" id="PJO-JT-dJE"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="3Kf-gx-xfq" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1220" y="-15"/>
|
||||
</scene>
|
||||
<!--Navigation Controller-->
|
||||
<scene sceneID="mnv-kd-DFc">
|
||||
<objects>
|
||||
<navigationController id="oPi-YX-voa" sceneMemberID="viewController">
|
||||
<toolbarItems/>
|
||||
<navigationBar key="navigationBar" contentMode="scaleToFill" id="IZj-m4-hMI">
|
||||
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</navigationBar>
|
||||
<nil name="viewControllers"/>
|
||||
<connections>
|
||||
<segue destination="2" kind="relationship" relationship="rootViewController" id="lMt-DE-K9K"/>
|
||||
</connections>
|
||||
</navigationController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="11N-1H-dwy" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="306" y="20"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<simulatedMetricsContainer key="defaultSimulatedMetrics">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user