Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 38920d2e09 | |||
| cce77d50ce | |||
| 23a756f23e | |||
| 27741a1128 | |||
| a57899227d | |||
| 0de132c464 | |||
| f3d1cc33d0 | |||
| 6023b1e959 | |||
| 3a108fe096 |
@@ -11,7 +11,6 @@ Text string
|
||||
|
||||
URL
|
||||
|
||||
|
||||
if let url = NSBundle.mainBundle().URLForResource("file", withExtension: "md"), md = SwiftyMarkdown(url: url ) {
|
||||
md.attributedString()
|
||||
}
|
||||
@@ -27,4 +26,4 @@ URL
|
||||
|
||||
## Screenshot
|
||||
|
||||

|
||||

|
||||
@@ -1,6 +1,6 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = "SwiftyMarkdown"
|
||||
s.version = "0.2.0"
|
||||
s.version = "0.2.2"
|
||||
s.summary = "Converts Markdown to NSAttributed String"
|
||||
s.homepage = "https://github.com/SimonFairbairn/Stormcloud"
|
||||
s.license = 'MIT'
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
F4CE98911C8A921300D735C1 /* SwiftyMarkdownTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4CE98901C8A921300D735C1 /* SwiftyMarkdownTests.swift */; };
|
||||
F4CE989C1C8A922E00D735C1 /* SwiftyMarkdown.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4CE989B1C8A922E00D735C1 /* SwiftyMarkdown.swift */; };
|
||||
F4CE98E91C8AF01300D735C1 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = F4CE98E61C8AF01300D735C1 /* LICENSE */; };
|
||||
F4CE98EA1C8AF01300D735C1 /* README.md in Sources */ = {isa = PBXBuildFile; fileRef = F4CE98E71C8AF01300D735C1 /* README.md */; };
|
||||
F4CE98EB1C8AF01300D735C1 /* SwiftyMarkdown.podspec in Resources */ = {isa = PBXBuildFile; fileRef = F4CE98E81C8AF01300D735C1 /* SwiftyMarkdown.podspec */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@@ -208,7 +207,6 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
F4CE98EA1C8AF01300D735C1 /* README.md in Sources */,
|
||||
F4CE989C1C8A922E00D735C1 /* SwiftyMarkdown.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
@@ -251,7 +249,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 8;
|
||||
CURRENT_PROJECT_VERSION = 12;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
@@ -299,7 +297,7 @@
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 8;
|
||||
CURRENT_PROJECT_VERSION = 12;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
@@ -327,7 +325,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 8;
|
||||
DYLIB_CURRENT_VERSION = 12;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = SwiftyMarkdown/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
@@ -346,7 +344,7 @@
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
DEFINES_MODULE = YES;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 8;
|
||||
DYLIB_CURRENT_VERSION = 12;
|
||||
DYLIB_INSTALL_NAME_BASE = "@rpath";
|
||||
INFOPLIST_FILE = SwiftyMarkdown/Info.plist;
|
||||
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.2</string>
|
||||
<string>0.2.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>8</string>
|
||||
<string>12</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
|
||||
@@ -92,7 +92,7 @@ public class SwiftyMarkdown {
|
||||
|
||||
|
||||
let string : String
|
||||
let instructionSet = NSCharacterSet(charactersInString: "\\*_`[")
|
||||
let instructionSet = NSCharacterSet(charactersInString: "[\\*_`")
|
||||
|
||||
/**
|
||||
|
||||
@@ -207,13 +207,16 @@ public class SwiftyMarkdown {
|
||||
|
||||
let set = NSMutableCharacterSet.whitespaceCharacterSet()
|
||||
set.formUnionWithCharacterSet(NSCharacterSet.punctuationCharacterSet())
|
||||
if !scanner.scanUpToCharactersFromSet(set, intoString: nil) {
|
||||
if scanner.scanUpToCharactersFromSet(set, intoString: nil) {
|
||||
scanner.scanLocation = location
|
||||
attributedString.appendAttributedString(self.attributedStringFromScanner(scanner))
|
||||
|
||||
} else if matchedCharacters == "[" {
|
||||
scanner.scanLocation = location
|
||||
attributedString.appendAttributedString(self.attributedStringFromScanner(scanner))
|
||||
} else {
|
||||
let charAtts = attributedStringFromString(matchedCharacters, withStyle: .None)
|
||||
attributedString.appendAttributedString(charAtts)
|
||||
} else {
|
||||
scanner.scanLocation = location
|
||||
|
||||
attributedString.appendAttributedString(self.attributedStringFromScanner(scanner))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -237,32 +240,33 @@ public class SwiftyMarkdown {
|
||||
|
||||
var style = LineStyle.styleFromString(results.foundCharacters)
|
||||
|
||||
let location = scanner.scanLocation
|
||||
let attributedString = attributedStringFromString(results.escapedCharacters, withStyle: style).mutableCopy() as! NSMutableAttributedString
|
||||
scanner.scanUpToCharactersFromSet(instructionSet, intoString: &followingString)
|
||||
|
||||
if var hasString = followingString as? String {
|
||||
var attributes = [String : AnyObject]()
|
||||
if style == .Link {
|
||||
|
||||
var attributes = [String : AnyObject]()
|
||||
if style == .Link {
|
||||
scanner.scanLocation = location
|
||||
|
||||
var linkText : NSString?
|
||||
var linkURL : NSString?
|
||||
let linkCharacters = NSCharacterSet(charactersInString: "]()")
|
||||
|
||||
scanner.scanUpToCharactersFromSet(linkCharacters, intoString: &linkText)
|
||||
scanner.scanCharactersFromSet(linkCharacters, intoString: nil)
|
||||
scanner.scanUpToCharactersFromSet(linkCharacters, intoString: &linkURL)
|
||||
scanner.scanCharactersFromSet(linkCharacters, intoString: nil)
|
||||
|
||||
if let hasLink = linkText, hasURL = linkURL {
|
||||
hasString = hasLink as String
|
||||
attributes[NSLinkAttributeName] = hasURL as String
|
||||
} else {
|
||||
style = .None
|
||||
}
|
||||
var linkText : NSString?
|
||||
var linkURL : NSString?
|
||||
let linkCharacters = NSCharacterSet(charactersInString: "]()")
|
||||
|
||||
scanner.scanUpToCharactersFromSet(linkCharacters, intoString: &linkText)
|
||||
scanner.scanCharactersFromSet(linkCharacters, intoString: nil)
|
||||
scanner.scanUpToCharactersFromSet(linkCharacters, intoString: &linkURL)
|
||||
scanner.scanCharactersFromSet(linkCharacters, intoString: nil)
|
||||
|
||||
|
||||
if let hasLink = linkText, hasURL = linkURL {
|
||||
followingString = hasLink as String
|
||||
attributes[NSLinkAttributeName] = hasURL as String
|
||||
} else {
|
||||
style = .None
|
||||
}
|
||||
} else {
|
||||
scanner.scanUpToCharactersFromSet(instructionSet, intoString: &followingString)
|
||||
}
|
||||
|
||||
let attributedString = attributedStringFromString(results.escapedCharacters, withStyle: style).mutableCopy() as! NSMutableAttributedString
|
||||
if let hasString = followingString as? String {
|
||||
|
||||
|
||||
|
||||
let prefix = ( style == .Code && start ) ? "\t" : ""
|
||||
let attString = attributedStringFromString(prefix + hasString, withStyle: style, attributes: attributes)
|
||||
|
||||
@@ -15,10 +15,10 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>BNDL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.2</string>
|
||||
<string>0.2.1</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>8</string>
|
||||
<string>12</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -233,6 +233,8 @@ class SwiftyMarkdownTests: XCTestCase {
|
||||
|
||||
let multipleLinks = "[Link 1](http://voyagetravelapps.com/), [Link 2](http://voyagetravelapps.com/)"
|
||||
|
||||
let mailtoAndTwitterLinks = "Email us at [simon@voyagetravelapps.com](mailto:simon@voyagetravelapps.com) Twitter [@VoyageTravelApp](twitter://user?screen_name=VoyageTravelApp)"
|
||||
|
||||
let syntaxErrorSquareBracketAtStart = "[Link with missing square(http://voyagetravelapps.com/)"
|
||||
let syntaxErrorSquareBracketWithin = "A [Link(http://voyagetravelapps.com/)"
|
||||
|
||||
@@ -263,7 +265,14 @@ class SwiftyMarkdownTests: XCTestCase {
|
||||
md = SwiftyMarkdown(string: syntaxErrorParenthesisWithin)
|
||||
XCTAssertEqual(md.attributedString().string, "A Link\n")
|
||||
|
||||
md = SwiftyMarkdown(string: mailtoAndTwitterLinks)
|
||||
XCTAssertEqual(md.attributedString().string, "Email us at simon@voyagetravelapps.com Twitter @VoyageTravelApp\n")
|
||||
|
||||
|
||||
|
||||
// let mailtoAndTwitterLinks = "Twitter [@VoyageTravelApp](twitter://user?screen_name=VoyageTravelApp)"
|
||||
// let md = SwiftyMarkdown(string: mailtoAndTwitterLinks)
|
||||
// XCTAssertEqual(md.attributedString().string, "Twitter @VoyageTravelApp\n")
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user