From 6586b429b76d85922130b50bca6cfd33e109c616 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Tue, 15 Sep 2020 20:18:08 -0700 Subject: [PATCH] Adds HTMLHelper to convert from HTML in an NSString to a properly attributed NSAttributedString. --- iOS/MonsterCards.xcodeproj/project.pbxproj | 6 ++++++ iOS/MonsterCards/Helpers/HTMLHelper.h | 19 +++++++++++++++++++ iOS/MonsterCards/Helpers/HTMLHelper.m | 22 ++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 iOS/MonsterCards/Helpers/HTMLHelper.h create mode 100644 iOS/MonsterCards/Helpers/HTMLHelper.m diff --git a/iOS/MonsterCards.xcodeproj/project.pbxproj b/iOS/MonsterCards.xcodeproj/project.pbxproj index 3e50f57..fbcff00 100644 --- a/iOS/MonsterCards.xcodeproj/project.pbxproj +++ b/iOS/MonsterCards.xcodeproj/project.pbxproj @@ -24,6 +24,7 @@ E25BD60125036BF8007B04EF /* Language.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60025036BF8007B04EF /* Language.m */; }; E25BD60425036CF0007B04EF /* Ability.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60325036CF0007B04EF /* Ability.m */; }; E25BD60725036CFA007B04EF /* Action.m in Sources */ = {isa = PBXBuildFile; fileRef = E25BD60625036CFA007B04EF /* Action.m */; }; + E26A73572511BA1900C5677E /* HTMLHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E26A73562511BA1900C5677E /* HTMLHelper.m */; }; E2D3E3B0250827110052A8EC /* EditMonsterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E2D3E3AF250827110052A8EC /* EditMonsterViewController.m */; }; E2D3E3B42508C3360052A8EC /* EditableShortStringTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E2D3E3B32508C3360052A8EC /* EditableShortStringTableViewCell.m */; }; E2E25805250CC3A7002E7308 /* MonsterCards.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = E2F7248225005E89007D87ED /* MonsterCards.xcdatamodeld */; }; @@ -99,6 +100,8 @@ E25BD60525036CFA007B04EF /* Action.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Action.h; sourceTree = ""; }; E25BD60625036CFA007B04EF /* Action.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Action.m; sourceTree = ""; }; E265EE24B2C8E81E1B559306 /* Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig"; path = "Target Support Files/Pods-MonsterCards-MonsterCardsUITests/Pods-MonsterCards-MonsterCardsUITests.debug.xcconfig"; sourceTree = ""; }; + E26A73552511BA1900C5677E /* HTMLHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLHelper.h; sourceTree = ""; }; + E26A73562511BA1900C5677E /* HTMLHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HTMLHelper.m; sourceTree = ""; }; E2D3E3AE250827110052A8EC /* EditMonsterViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EditMonsterViewController.h; sourceTree = ""; }; E2D3E3AF250827110052A8EC /* EditMonsterViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EditMonsterViewController.m; sourceTree = ""; }; E2D3E3B22508C3360052A8EC /* EditableShortStringTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EditableShortStringTableViewCell.h; sourceTree = ""; }; @@ -227,6 +230,8 @@ children = ( E2532E8725038DE100CA4CBA /* StringHelper.h */, E2532E8825038DE100CA4CBA /* StringHelper.m */, + E26A73552511BA1900C5677E /* HTMLHelper.h */, + E26A73562511BA1900C5677E /* HTMLHelper.m */, ); path = Helpers; sourceTree = ""; @@ -575,6 +580,7 @@ E2F7248425005E89007D87ED /* MonsterCards.xcdatamodeld in Sources */, E25BD60425036CF0007B04EF /* Ability.m in Sources */, E20D032E25031BEF00FB6E43 /* CollectionsViewController.m in Sources */, + E26A73572511BA1900C5677E /* HTMLHelper.m in Sources */, E25BD5F5250352C4007B04EF /* Monster.m in Sources */, E25BD5F8250368A8007B04EF /* SavingThrow.m in Sources */, E2F7248C25005E8A007D87ED /* main.m in Sources */, diff --git a/iOS/MonsterCards/Helpers/HTMLHelper.h b/iOS/MonsterCards/Helpers/HTMLHelper.h new file mode 100644 index 0000000..48f309d --- /dev/null +++ b/iOS/MonsterCards/Helpers/HTMLHelper.h @@ -0,0 +1,19 @@ +// +// HtmlHelper.h +// MonsterCards +// +// Created by Tom Hicks on 9/12/20. +// Copyright © 2020 Tom Hicks. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HTMLHelper : NSObject + ++(NSAttributedString*)attributedStringFromHTML:(NSString*)html; + +@end + +NS_ASSUME_NONNULL_END diff --git a/iOS/MonsterCards/Helpers/HTMLHelper.m b/iOS/MonsterCards/Helpers/HTMLHelper.m new file mode 100644 index 0000000..9755d3c --- /dev/null +++ b/iOS/MonsterCards/Helpers/HTMLHelper.m @@ -0,0 +1,22 @@ +// +// HtmlHelper.m +// MonsterCards +// +// Created by Tom Hicks on 9/12/20. +// Copyright © 2020 Tom Hicks. All rights reserved. +// + +#import "HTMLHelper.h" +@import UIKit; + +@implementation HTMLHelper + ++ (NSAttributedString*)attributedStringFromHTML:(NSString *)htmlString { + + return [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] + options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, + NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} + documentAttributes:nil error:nil]; +} + +@end