From b4f62f6be1b426bc3e7cafef8c9e8370f53c4b48 Mon Sep 17 00:00:00 2001 From: ad Date: Sun, 22 Apr 2018 12:15:04 +0300 Subject: [PATCH] + strip comments in config file --- MTMR/ItemsParsing.swift | 4 +-- MTMR/SupportHelpers.swift | 61 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) diff --git a/MTMR/ItemsParsing.swift b/MTMR/ItemsParsing.swift index fce3b8d..dedc5af 100644 --- a/MTMR/ItemsParsing.swift +++ b/MTMR/ItemsParsing.swift @@ -2,11 +2,9 @@ import Foundation import AppKit extension Data { - func barItemDefinitions() -> [BarItemDefinition]? { - return try? JSONDecoder().decode([BarItemDefinition].self, from: self) + return try? JSONDecoder().decode([BarItemDefinition].self, from: self.utf8string!.stripComments().data(using: .utf8)!) } - } struct BarItemDefinition: Decodable { diff --git a/MTMR/SupportHelpers.swift b/MTMR/SupportHelpers.swift index 610165b..d18e9ca 100644 --- a/MTMR/SupportHelpers.swift +++ b/MTMR/SupportHelpers.swift @@ -12,6 +12,67 @@ extension String { func trim() -> String { return self.trimmingCharacters(in: NSCharacterSet.whitespaces) } + + func substring(from: Int, to: Int) -> String { + let start = index(startIndex, offsetBy: from) + let end = index(start, offsetBy: to - from) + return String(self[start ..< end]) + } + + func substring(range: NSRange) -> String { + return substring(from: range.lowerBound, to: range.upperBound) + } + + func stripComments() -> String { + let str = self + let singleComment = 1; + let multiComment = 2; + var insideString = false + var insideComment = 0 + var offset = 0 + var ret = "" + + for var i in 0..