Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #311 from casademora/develop
[NEW] Swift: strip uncompilable period prefix from +[NSEntityDescription managedObjectClassName] when an entity is specified to load from the current module. (Saul Mora)
  • Loading branch information
rentzsch committed Nov 4, 2015
2 parents 6f293ff + 14b1462 commit 01378b6
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 20 deletions.
17 changes: 17 additions & 0 deletions mogenerator.m
Expand Up @@ -36,6 +36,22 @@ - (NSDictionary*)fetchedPropertiesByName {
}
@end

@interface NSEntityDescription (swiftAdditions)
- (NSString *)sanitizedManagedObjectClassName;
@end

@implementation NSEntityDescription (swiftAdditions)

- (NSString *)sanitizedManagedObjectClassName {
NSString *className = [self managedObjectClassName];
if ([className hasPrefix:@"."]) {
return [className stringByReplacingOccurrencesOfString:@"." withString:@""];
}
return className;
}

@end

@interface NSEntityDescription (userInfoAdditions)
- (BOOL)hasUserInfoKeys;
- (NSDictionary *)userInfoByKeys;
Expand Down Expand Up @@ -1101,6 +1117,7 @@ - (int)application:(DDCliApplication*)app runWithArguments:(NSArray*)arguments {
generatedHumanM = [generatedHumanM stringByReplacingOccurrencesOfRegex:searchPattern withString:replacementString];

NSString *entityClassName = [entity managedObjectClassName];
entityClassName = [entityClassName stringByReplacingOccurrencesOfString:@"." withString:@"_"];
BOOL machineDirtied = NO;

// Machine header files.
Expand Down
40 changes: 20 additions & 20 deletions templates/machine.swift.motemplate
@@ -1,36 +1,36 @@
// DO NOT EDIT. This file is machine-generated and constantly overwritten.
// Make changes to <$managedObjectClassName$>.swift instead.
// Make changes to <$sanitizedManagedObjectClassName$>.swift instead.

import CoreData
<$if hasAdditionalHeaderFile$>import <$additionalHeaderFileName$><$endif$>
<$if hasCustomBaseCaseImport$>import <$baseClassImport$><$endif$>

<$if noninheritedAttributes.@count > 0$>
public enum <$managedObjectClassName$>Attributes: String {<$foreach Attribute noninheritedAttributes do$>
public enum <$sanitizedManagedObjectClassName$>Attributes: String {<$foreach Attribute noninheritedAttributes do$>
case <$Attribute.name$> = "<$Attribute.name$>"<$endforeach do$>
}
<$endif$>

<$if noninheritedRelationships.@count > 0$>
public enum <$managedObjectClassName$>Relationships: String {<$foreach Relationship noninheritedRelationships do$>
public enum <$sanitizedManagedObjectClassName$>Relationships: String {<$foreach Relationship noninheritedRelationships do$>
case <$Relationship.name$> = "<$Relationship.name$>"<$endforeach do$>
}
<$endif$>

<$if noninheritedFetchedProperties.@count > 0$>
public enum <$managedObjectClassName$>FetchedProperties: String {<$foreach FetchedProperty noninheritedFetchedProperties do$>
public enum <$sanitizedManagedObjectClassName$>FetchedProperties: String {<$foreach FetchedProperty noninheritedFetchedProperties do$>
case <$FetchedProperty.name$> = "<$FetchedProperty.name$>"<$endforeach do$>
}
<$endif$>

<$if hasUserInfoKeys$>
public enum <$managedObjectClassName$>UserInfo: String {<$foreach UserInfo userInfoKeyValues do$>
public enum <$sanitizedManagedObjectClassName$>UserInfo: String {<$foreach UserInfo userInfoKeyValues do$>
case <$UserInfo.key$> = "<$UserInfo.key$>"<$endforeach do$>
}
<$endif$>

@objc public
class _<$managedObjectClassName$>: <$customSuperentity$> {
class _<$sanitizedManagedObjectClassName$>: <$customSuperentity$> {

// MARK: - Class methods

Expand All @@ -49,7 +49,7 @@ class _<$managedObjectClassName$>: <$customSuperentity$> {
}

public convenience init(managedObjectContext: NSManagedObjectContext!) {
let entity = _<$managedObjectClassName$>.entity(managedObjectContext)
let entity = _<$sanitizedManagedObjectClassName$>.entity(managedObjectContext)
self.init(entity: entity, insertIntoManagedObjectContext: managedObjectContext)
}

Expand All @@ -60,9 +60,9 @@ class _<$managedObjectClassName$>: <$customSuperentity$> {
<$if Attribute.isReadonly$>
public var <$Attribute.name$>: NSNumber?
{
self.willAccessValueForKey(<$managedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
let <$Attribute.name$> = self.primitiveValueForKey(<$managedObjectClassName$>Attributes.<$Attribute.name$>.rawValue) as? NSNumber
self.didAccessValueForKey(<$managedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
self.willAccessValueForKey(<$sanitizedManagedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
let <$Attribute.name$> = self.primitiveValueForKey(<$sanitizedManagedObjectClassName$>Attributes.<$Attribute.name$>.rawValue) as? NSNumber
self.didAccessValueForKey(<$sanitizedManagedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
return <$Attribute.name$>
}
<$else$>
Expand All @@ -73,9 +73,9 @@ class _<$managedObjectClassName$>: <$customSuperentity$> {
<$if Attribute.isReadonly$>
public var <$Attribute.name$>: <$Attribute.objectAttributeType$><$if Attribute.isOptional$>?<$endif$>
{
self.willAccessValueForKey(<$managedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
let <$Attribute.name$> = self.primitiveValueForKey(<$managedObjectClassName$>Attributes.<$Attribute.name$>.rawValue) as? <$Attribute.objectAttributeType$>
self.didAccessValueForKey(<$managedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
self.willAccessValueForKey(<$sanitizedManagedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
let <$Attribute.name$> = self.primitiveValueForKey(<$sanitizedManagedObjectClassName$>Attributes.<$Attribute.name$>.rawValue) as? <$Attribute.objectAttributeType$>
self.didAccessValueForKey(<$sanitizedManagedObjectClassName$>Attributes.<$Attribute.name$>.rawValue)
return <$Attribute.name$>
}
<$else$>
Expand All @@ -95,7 +95,7 @@ class _<$managedObjectClassName$>: <$customSuperentity$> {

<$else$>
@NSManaged public
var <$Relationship.name$>: <$Relationship.destinationEntity.managedObjectClassName$><$if Relationship.isOptional$>?<$endif$>
var <$Relationship.name$>: <$Relationship.destinationEntity.sanitizedManagedObjectClassName$><$if Relationship.isOptional$>?<$endif$>

// func validate<$Relationship.name.initialCapitalString$>(value: AutoreleasingUnsafeMutablePointer<AnyObject>, error: NSErrorPointer) -> Bool {}
<$endif$>
Expand Down Expand Up @@ -167,32 +167,32 @@ class _<$managedObjectClassName$>: <$customSuperentity$> {

<$foreach FetchedProperty noninheritedFetchedProperties do$>
@NSManaged public
let <$FetchedProperty.name$>: [<$FetchedProperty.entity.managedObjectClassName$>]
let <$FetchedProperty.name$>: [<$FetchedProperty.entity.sanitizedManagedObjectClassName$>]
<$endforeach do$>
}

<$foreach Relationship noninheritedRelationships do$><$if Relationship.isToMany$>
extension _<$managedObjectClassName$> {
extension _<$sanitizedManagedObjectClassName$> {

func add<$Relationship.name.initialCapitalString$>(objects: <$Relationship.immutableCollectionClassName$>) {
let mutable = self.<$Relationship.name$>.mutableCopy() as! NSMutable<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
mutable.union<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set(objects<$if !Relationship.jr_isOrdered$> as! Set<NSObject><$endif$>)
mutable.union<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set(objects<$if !Relationship.jr_isOrdered$> as Set<NSObject><$endif$>)
self.<$Relationship.name$> = mutable.copy() as! NS<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
}

func remove<$Relationship.name.initialCapitalString$>(objects: <$Relationship.immutableCollectionClassName$>) {
let mutable = self.<$Relationship.name$>.mutableCopy() as! NSMutable<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
mutable.minus<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set(objects<$if !Relationship.jr_isOrdered$> as! Set<NSObject><$endif$>)
mutable.minus<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set(objects<$if !Relationship.jr_isOrdered$> as Set<NSObject><$endif$>)
self.<$Relationship.name$> = mutable.copy() as! NS<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
}

func add<$Relationship.name.initialCapitalString$>Object(value: <$Relationship.destinationEntity.managedObjectClassName$>!) {
func add<$Relationship.name.initialCapitalString$>Object(value: <$Relationship.destinationEntity.sanitizedManagedObjectClassName$>!) {
let mutable = self.<$Relationship.name$>.mutableCopy() as! NSMutable<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
mutable.addObject(value)
self.<$Relationship.name$> = mutable.copy() as! NS<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
}

func remove<$Relationship.name.initialCapitalString$>Object(value: <$Relationship.destinationEntity.managedObjectClassName$>!) {
func remove<$Relationship.name.initialCapitalString$>Object(value: <$Relationship.destinationEntity.sanitizedManagedObjectClassName$>!) {
let mutable = self.<$Relationship.name$>.mutableCopy() as! NSMutable<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
mutable.removeObject(value)
self.<$Relationship.name$> = mutable.copy() as! NS<$if Relationship.jr_isOrdered$>Ordered<$endif$>Set
Expand Down

0 comments on commit 01378b6

Please sign in to comment.