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