Skip to content

Instantly share code, notes, and snippets.

@macguru
Created February 13, 2014 16:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save macguru/8978991 to your computer and use it in GitHub Desktop.
Save macguru/8978991 to your computer and use it in GitHub Desktop.
+ (NSCharacterSet *)ignoredCharactersBeforeSmartInserts
{
static NSCharacterSet *characterSet;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
/*
Character set taken from AppKit's __getPreSmartSet
*/
NSMutableCharacterSet *mutableSet = [NSMutableCharacterSet characterSetWithCharactersInString:@"([\\\"'#$/-`{<"];
[mutableSet formUnionWithCharacterSet: NSCharacterSet.whitespaceAndNewlineCharacterSet];
[mutableSet addCharactersInRange: NSMakeRange(0xa1, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xa3, 0x3)];
[mutableSet addCharactersInRange: NSMakeRange(0xa7, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xa9, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xab, 0x4)];
[mutableSet addCharactersInRange: NSMakeRange(0xb1, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xb6, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xbb, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xbf, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0x2010, 0x6)];
[mutableSet addCharactersInRange: NSMakeRange(0x2018, 0x8)];
[mutableSet addCharactersInRange: NSMakeRange(0x2022, 0x6)];
[mutableSet addCharactersInRange: NSMakeRange(0x2039, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0x2043, 0x3)];
[mutableSet addCharactersInRange: NSMakeRange(0x20a0, 0x16)];
[mutableSet addCharactersInRange: NSMakeRange(0x1100, 0x100)];
[mutableSet addCharactersInRange: NSMakeRange(0x2e80, 0x160)];
[mutableSet addCharactersInRange: NSMakeRange(0x2ff0, 0x1d0)];
[mutableSet addCharactersInRange: NSMakeRange(0x3200, 0x72d0)];
[mutableSet addCharactersInRange: NSMakeRange(0xac00, 0x2baf)];
[mutableSet addCharactersInRange: NSMakeRange(0xf900, 0x160)];
[mutableSet addCharactersInRange: NSMakeRange(0xfe30, 0x20)];
[mutableSet addCharactersInRange: NSMakeRange(0xff00, 0xf0)];
[mutableSet addCharactersInRange: NSMakeRange(0x20000, 0xa6d7)];
[mutableSet addCharactersInRange: NSMakeRange(0x2f800, 0x21e)];
characterSet = mutableSet;
});
return characterSet;
}
+ (NSCharacterSet *)ignoredCharactersAfterSmartInserts
{
static NSCharacterSet *characterSet;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
/*
Character set taken from AppKit's __getPostSmartSet
*/
NSMutableCharacterSet *mutableSet = [NSMutableCharacterSet characterSetWithCharactersInString: @")].,;:?'!\\\"%*-/}>"];
[mutableSet formUnionWithCharacterSet: NSCharacterSet.whitespaceAndNewlineCharacterSet];
[mutableSet formUnionWithCharacterSet: [NSCharacterSet punctuationCharacterSet]];
[mutableSet addCharactersInRange: NSMakeRange(0xa2, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xaa, 0x2)];
[mutableSet addCharactersInRange: NSMakeRange(0xad, 0x2)];
[mutableSet addCharactersInRange: NSMakeRange(0xb0, 0x1)];
[mutableSet addCharactersInRange: NSMakeRange(0xb2, 0x3)];
[mutableSet addCharactersInRange: NSMakeRange(0xb9, 0x3)];
[mutableSet addCharactersInRange: NSMakeRange(0x2010, 0x6)];
[mutableSet addCharactersInRange: NSMakeRange(0x2018, 0x2)];
[mutableSet addCharactersInRange: NSMakeRange(0x201c, 0x2)];
[mutableSet addCharactersInRange: NSMakeRange(0x2020, 0x2)];
[mutableSet addCharactersInRange: NSMakeRange(0x2024, 0x4)];
[mutableSet addCharactersInRange: NSMakeRange(0x2030, 0x5)];
[mutableSet addCharactersInRange: NSMakeRange(0x203a, 0x4)];
[mutableSet addCharactersInRange: NSMakeRange(0x2046, 0x4)];
[mutableSet addCharactersInRange: NSMakeRange(0x2030, 0x5)];
[mutableSet addCharactersInRange: NSMakeRange(0x2070, 0x25)];
[mutableSet addCharactersInRange: NSMakeRange(0x1100, 0x100)];
[mutableSet addCharactersInRange: NSMakeRange(0x2e80, 0x160)];
[mutableSet addCharactersInRange: NSMakeRange(0x2ff0, 0x1d0)];
[mutableSet addCharactersInRange: NSMakeRange(0x3200, 0x72d0)];
[mutableSet addCharactersInRange: NSMakeRange(0xac00, 0x2baf)];
[mutableSet addCharactersInRange: NSMakeRange(0xf900, 0x160)];
[mutableSet addCharactersInRange: NSMakeRange(0xfe30, 0x20)];
[mutableSet addCharactersInRange: NSMakeRange(0xff00, 0xf0)];
[mutableSet addCharactersInRange: NSMakeRange(0x20000, 0xa6d7)];
[mutableSet addCharactersInRange: NSMakeRange(0x2f800, 0x21e)];
characterSet = mutableSet;
});
return characterSet;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment