From b35970ebea8e4aa8631564be9d8e3c6c0b4a4e5e Mon Sep 17 00:00:00 2001 From: mgacy Date: Fri, 1 Nov 2019 11:02:05 -0700 Subject: [PATCH 1/5] Make styling option initializers public --- .../Styling/Options/CodeBlockOptions.swift | 6 +++++- .../AST/Styling/Options/ListItemOptions.swift | 19 +++++++++++++++---- .../Styling/Options/QuoteStripeOptions.swift | 9 +++++++-- .../Options/ThematicBreakOptions.swift | 9 +++++++-- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/Source/AST/Styling/Options/CodeBlockOptions.swift b/Source/AST/Styling/Options/CodeBlockOptions.swift index 9b19142b..b0a25bd2 100644 --- a/Source/AST/Styling/Options/CodeBlockOptions.swift +++ b/Source/AST/Styling/Options/CodeBlockOptions.swift @@ -20,7 +20,11 @@ import AppKit public struct CodeBlockOptions { - public var containerInset: CGFloat = 8 + public var containerInset: CGFloat + + public init(containerInset: CGFloat = 8) { + self.containerInset = containerInset + } } #endif diff --git a/Source/AST/Styling/Options/ListItemOptions.swift b/Source/AST/Styling/Options/ListItemOptions.swift index 765f18ff..d34c1b94 100644 --- a/Source/AST/Styling/Options/ListItemOptions.swift +++ b/Source/AST/Styling/Options/ListItemOptions.swift @@ -20,10 +20,21 @@ import AppKit public struct ListItemOptions { - public var maxPrefixDigits: UInt = 2 - public var spacingAfterPrefix: CGFloat = 8 - public var spacingAbove: CGFloat = 4 - public var spacingBelow: CGFloat = 8 + public var maxPrefixDigits: UInt + public var spacingAfterPrefix: CGFloat + public var spacingAbove: CGFloat + public var spacingBelow: CGFloat + + public init(maxPrefixDigits: UInt = 2, + spacingAfterPrefix: CGFloat = 8, + spacingAbove: CGFloat = 4, + spacingBelow: CGFloat = 8 + ) { + self.maxPrefixDigits = maxPrefixDigits + self.spacingAfterPrefix = spacingAfterPrefix + self.spacingAbove = spacingAbove + self.spacingBelow = spacingBelow + } } #endif diff --git a/Source/AST/Styling/Options/QuoteStripeOptions.swift b/Source/AST/Styling/Options/QuoteStripeOptions.swift index f70525e8..9dd70a92 100644 --- a/Source/AST/Styling/Options/QuoteStripeOptions.swift +++ b/Source/AST/Styling/Options/QuoteStripeOptions.swift @@ -20,8 +20,13 @@ import AppKit public struct QuoteStripeOptions { - public var thickness: CGFloat = 2 - public var spacingAfter: CGFloat = 8 + public var thickness: CGFloat + public var spacingAfter: CGFloat + + public init(thickness: CGFloat = 2, spacingAfter: CGFloat = 8) { + self.thickness = thickness + self.spacingAfter = spacingAfter + } } #endif diff --git a/Source/AST/Styling/Options/ThematicBreakOptions.swift b/Source/AST/Styling/Options/ThematicBreakOptions.swift index 873f72ef..4e901b55 100644 --- a/Source/AST/Styling/Options/ThematicBreakOptions.swift +++ b/Source/AST/Styling/Options/ThematicBreakOptions.swift @@ -20,8 +20,13 @@ import AppKit public struct ThematicBreakOptions { - public var thickness: CGFloat = 1 - public var indentation: CGFloat = 0 + public var thickness: CGFloat + public var indentation: CGFloat + + public init(thickness: CGFloat = 1, indentation: CGFloat = 0) { + self.thickness = thickness + self.indentation = indentation + } } #endif From a13d3489497fd361eba967dc4503d63578f55693 Mon Sep 17 00:00:00 2001 From: mgacy Date: Fri, 1 Nov 2019 11:06:00 -0700 Subject: [PATCH 2/5] Add public memberwise initializer --- .../Stylers/DownStylerConfiguration.swift | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/Source/AST/Styling/Stylers/DownStylerConfiguration.swift b/Source/AST/Styling/Stylers/DownStylerConfiguration.swift index ebb73554..3208e9dc 100644 --- a/Source/AST/Styling/Stylers/DownStylerConfiguration.swift +++ b/Source/AST/Styling/Stylers/DownStylerConfiguration.swift @@ -11,16 +11,31 @@ /// A configuration object used to initialze the `DownStyler`. public struct DownStylerConfiguration { - public var fonts: FontCollection = StaticFontCollection() - public var colors: ColorCollection = StaticColorCollection() - public var paragraphStyles = ParagraphStyleCollection() + public var fonts: FontCollection + public var colors: ColorCollection + public var paragraphStyles: ParagraphStyleCollection - public var listItemOptions = ListItemOptions() - public var quoteStripeOptions = QuoteStripeOptions() - public var thematicBreakOptions = ThematicBreakOptions() - public var codeBlockOptions = CodeBlockOptions() + public var listItemOptions: ListItemOptions + public var quoteStripeOptions: QuoteStripeOptions + public var thematicBreakOptions: ThematicBreakOptions + public var codeBlockOptions: CodeBlockOptions - public init() {} + public init(fonts: FontCollection = StaticFontCollection(), + colors: ColorCollection = StaticColorCollection(), + paragraphStyles: ParagraphStyleCollection = ParagraphStyleCollection(), + listItemOptions: ListItemOptions = ListItemOptions(), + quoteStripeOptions: QuoteStripeOptions = QuoteStripeOptions(), + thematicBreakOptions: ThematicBreakOptions = ThematicBreakOptions(), + codeBlockOptions: CodeBlockOptions = CodeBlockOptions() + ) { + self.fonts = fonts + self.colors = colors + self.paragraphStyles = paragraphStyles + self.listItemOptions = listItemOptions + self.quoteStripeOptions = quoteStripeOptions + self.thematicBreakOptions = thematicBreakOptions + self.codeBlockOptions = codeBlockOptions + } } #endif From 3e7219459305809281839d47d5871a5655a94b4a Mon Sep 17 00:00:00 2001 From: mgacy Date: Fri, 1 Nov 2019 11:08:58 -0700 Subject: [PATCH 3/5] Make ParagraphStyleCollection a protocol Make ParagraphStyleCollection a protocol and add StaticParagraphStyleCollection struct conforming to protocol. --- .../ParagraphStyleCollection.swift | 11 ++++++++++- .../AST/Styling/Stylers/DownStylerConfiguration.swift | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/AST/Styling/Attribute Collections/ParagraphStyleCollection.swift b/Source/AST/Styling/Attribute Collections/ParagraphStyleCollection.swift index fb4b989e..6b6d9566 100644 --- a/Source/AST/Styling/Attribute Collections/ParagraphStyleCollection.swift +++ b/Source/AST/Styling/Attribute Collections/ParagraphStyleCollection.swift @@ -18,7 +18,16 @@ import AppKit #endif -public struct ParagraphStyleCollection { +public protocol ParagraphStyleCollection { + + var heading1: NSParagraphStyle { get } + var heading2: NSParagraphStyle { get } + var heading3: NSParagraphStyle { get } + var body: NSParagraphStyle { get } + var code: NSParagraphStyle { get } +} + +public struct StaticParagraphStyleCollection: ParagraphStyleCollection { public var heading1: NSParagraphStyle public var heading2: NSParagraphStyle diff --git a/Source/AST/Styling/Stylers/DownStylerConfiguration.swift b/Source/AST/Styling/Stylers/DownStylerConfiguration.swift index 3208e9dc..8f42491e 100644 --- a/Source/AST/Styling/Stylers/DownStylerConfiguration.swift +++ b/Source/AST/Styling/Stylers/DownStylerConfiguration.swift @@ -22,7 +22,7 @@ public struct DownStylerConfiguration { public init(fonts: FontCollection = StaticFontCollection(), colors: ColorCollection = StaticColorCollection(), - paragraphStyles: ParagraphStyleCollection = ParagraphStyleCollection(), + paragraphStyles: ParagraphStyleCollection = StaticParagraphStyleCollection(), listItemOptions: ListItemOptions = ListItemOptions(), quoteStripeOptions: QuoteStripeOptions = QuoteStripeOptions(), thematicBreakOptions: ThematicBreakOptions = ThematicBreakOptions(), From 3bccd0573ec065a1a846e54401e297ca8c789126 Mon Sep 17 00:00:00 2001 From: mgacy Date: Fri, 1 Nov 2019 13:20:55 -0700 Subject: [PATCH 4/5] Make relevant properties and methods public --- Source/AST/Styling/Helpers/ListItemParagraphStyler.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/AST/Styling/Helpers/ListItemParagraphStyler.swift b/Source/AST/Styling/Helpers/ListItemParagraphStyler.swift index f0107755..1dd37c21 100644 --- a/Source/AST/Styling/Helpers/ListItemParagraphStyler.swift +++ b/Source/AST/Styling/Helpers/ListItemParagraphStyler.swift @@ -22,12 +22,12 @@ import AppKit /// are right aligned and list item content left aligns. public class ListItemParagraphStyler { - var indentation: CGFloat { + public var indentation: CGFloat { return largestPrefixWidth + options.spacingAfterPrefix } /// The paragraph style intended for all paragraphs excluding the first. - var trailingParagraphStyle: NSParagraphStyle { + public var trailingParagraphStyle: NSParagraphStyle { let contentIndentation = indentation let style = baseStyle style.firstLineHeadIndent = contentIndentation @@ -54,7 +54,7 @@ public class ListItemParagraphStyler { /// The paragraph style intended for the first paragraph of the list item. /// /// - Parameter prefixWidth: the width (in points) of the list item prefix. - func leadingParagraphStyle(prefixWidth: CGFloat) -> NSParagraphStyle { + public func leadingParagraphStyle(prefixWidth: CGFloat) -> NSParagraphStyle { let contentIndentation = indentation let prefixIndentation: CGFloat = contentIndentation - options.spacingAfterPrefix - prefixWidth let prefixSpill = max(0, prefixWidth - largestPrefixWidth) From 90341e23c49097297af4674f8b413deeb16bd17b Mon Sep 17 00:00:00 2001 From: mgacy Date: Fri, 8 Nov 2019 10:38:34 -0700 Subject: [PATCH 5/5] Fix paragraph style instantiation --- Tests/Styler/StylerTestSuite.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Styler/StylerTestSuite.swift b/Tests/Styler/StylerTestSuite.swift index 03e11a6a..f36054bb 100644 --- a/Tests/Styler/StylerTestSuite.swift +++ b/Tests/Styler/StylerTestSuite.swift @@ -114,7 +114,7 @@ private extension DownStylerConfiguration { colors.thematicBreak = #colorLiteral(red: 0.3647058904, green: 0.06666667014, blue: 0.9686274529, alpha: 1) colors.listItemPrefix = .gray - var paragraphStyles = ParagraphStyleCollection() + var paragraphStyles = StaticParagraphStyleCollection() let headingParagraphStyle = NSMutableParagraphStyle() headingParagraphStyle.paragraphSpacing = 8