UI/UX: refactor smartlist
Change-Id: Ibfd5154757908ebd85f4b0060da00a7c608a0e56
Reviewed-by: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
diff --git a/src/NSString+Extensions.mm b/src/NSString+Extensions.mm
new file mode 100644
index 0000000..d843ee2
--- /dev/null
+++ b/src/NSString+Extensions.mm
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2018 Savoir-faire Linux Inc.
+ * Author: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#import "NSString+Extensions.h"
+
+@implementation NSString (Extensions)
+
+- (NSString *) removeAllNewLinesAtTheEnd {
+ NSString *result = self;
+ while ([result endedByEmptyLine]) {
+ result = [result removeLastWhiteSpaceAndNewLineCharacter];
+ }
+ return result;
+}
+
+- (NSString *) removeAllNewLinesAtBegining {
+ NSString *result = self;
+ while ([result startByEmptyLine]) {
+ result = [result removeFirstWhiteSpaceAndNewLineCharacter];
+ }
+ return result;
+}
+
+- (NSString *) removeEmptyLinesAtBorders {
+ NSString *result = self;
+ result = [result removeAllNewLinesAtBegining];
+ result = [result removeAllNewLinesAtTheEnd];
+ return result;
+}
+
+-(bool)endedByEmptyLine {
+ if ([self length] < 1) {
+ return false;
+ }
+ unichar last = [self characterAtIndex:[self length] - 1];
+ return [[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:last];
+}
+
+- (bool)startByEmptyLine {
+ if ([self length] < 1) {
+ return false;
+ }
+ unichar first = [self characterAtIndex:0];
+ return [[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:first];
+}
+
+- (NSString *) removeLastWhiteSpaceAndNewLineCharacter {
+ if ([self endedByEmptyLine]) {
+ return [self substringToIndex:[self length]-1];
+ }
+ return self;
+}
+
+- (NSString *) removeFirstWhiteSpaceAndNewLineCharacter {
+ if ([self startByEmptyLine]) {
+ return [self substringFromIndex:1];
+ }
+ return self;
+}
+
+@end