• Stars
    star
    660
  • Rank 68,297 (Top 2 %)
  • Language
    Swift
  • License
    MIT License
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Cross-Platform String and Regular Expression Library written in Swift.

Guitar 🎸

A Cross-Platform String and Regular Expression Library written in Swift.

Build Status Platform

Swift Support CocoaPods SwiftPM Compatible

About

This library seeks to add common string manipulation functions, including common regular expression capabilities, that are needed in both mobile and server-side development, but are missing in Swift's Standard Library.

The full documentation can be found at http://www.sabintsev.com/Guitar/.

Guitar is also part of Swift's Source Compatibility Suite.

Features

  • Boolean Functions (isAlpha, isNumeric, isUppercase, etc.)
  • Case Functions (camelCased, pascalCased, kebabCased, etc.)
  • Latinization Functions (.latinized(), .withoutAccents())
  • Padding Functions (padLeft, padRight, pad)
  • Regular Expressions (with Common Patterns Built-in)

Sherlocked

A small set of functions offered by Guitar were removed in v0.3.0 of the library as Apple added many of these features to the Swift 4 language (aka, Sherlocking). The functions that were removed were: first, last, length, prefixed, suffixed, trimLeft, trimRight, truncated. The reversed function was renamed to reversedString as it acts slightly differently than Swift's built-in reversed function.

Installation Instructions

Swift Version Branch Name Will Continue to Receive Updates?
5.1+ master Yes
5.0 swift5.0 No
4.2 swift4.2 No
4.1 swift4.1 No
3.2 swift3.2 No
3.1 swift3.1 No

CocoaPods

pod 'Guitar' # Swift 5.1+
pod 'Guitar', :git => 'https://github.com/ArtSabintsev/Guitar.git', :branch => 'swift5.0' # Swift 5.0
pod 'Guitar', :git => 'https://github.com/ArtSabintsev/Guitar.git', :branch => 'swift4.2' # Swift 4.2
pod 'Guitar', :git => 'https://github.com/ArtSabintsev/Guitar.git', :branch => 'swift4.1' # Swift 4.1
pod 'Guitar', :git => 'https://github.com/ArtSabintsev/Guitar.git', :branch => 'swift3.2' # Swift 3.2
pod 'Guitar', :git => 'https://github.com/ArtSabintsev/Guitar.git', :branch => 'swift3.1' # Swift 3.1

Swift Package Manager

.Package(url: "https://github.com/ArtSabintsev/Guitar.git", majorVersion: 1)

Usage Examples

Regular Expression

  • Guitar makes it easier to use Regular Expressions to test and evaluate String objects.
  • Guitar.Chord enumerates common regular expressions and they are located in GuitarChord.swift.
  • GuitarCommon.swift contains a list of convenience methods for common regular expression evaluations and tests, such as checking the string to determine if it's a valid email address.

Initialization

Guitar(pattern: String) // A custom regular expression with which to initialize Guitar.

Guitar(chord: Guitar.Chord) // A common regular expression with which to initialize Guitar.

Methods

evaluateForRanges(::) returns an array of ranges, [Range<String.Index>], that match a specific regular expression.

Guitar(chord: .firstCharacter).evaluateForRanges(from: "Hello world") // [Range(Swift.String.CharacterView.Index(_base: Swift.String.UnicodeScalarView.Index(_position: 0), _countUTF16: 1)..<Swift.String.CharacterView.Index(_base: Swift.String.UnicodeScalarView.Index(_position: 1), _countUTF16: 1)), Range(Swift.String.CharacterView.Index(_base: Swift.String.UnicodeScalarView.Index(_position: 6), _countUTF16: 1)..<Swift.String.CharacterView.Index(_base: Swift.String.UnicodeScalarView.Index(_position: 7), _countUTF16: 1))]

evaluateForStrings(::) returns an array of strings, [String], that match a specific regular expression.

Guitar(chord: .firstCharacter).evaluateForStrings(from: "Hello world") // ["H", "w"]

test(::) evaluates a string with a specific regular expression. true is returned if matches are found in the string. Otherwise, false is returned.

Guitar(chord: .email).test(string: "[email protected]") // `true`

String Extension

This library also adds dozens of methods via String extensions that are missing in the Swift Standard Library or not easily accessible on the String class. Check GuitarBoolean.swift and GuitarPadding.swift to see these examples.

More specific examples can be found in the tests folder.

Inspiration

Created and maintained by

Arthur Ariel Sabintsev

More Repositories

1

Siren

Notify users when a new version of your app is available and prompt them to upgrade.
Swift
4,140
star
2

Harpy

Notify users when a new version of your app is available and prompt them to upgrade.
Objective-C
2,600
star
3

FontBlaster

Programmatically load custom fonts into your iOS, macOS and tvOS app.
Swift
1,135
star
4

Zephyr

Effortlessly synchronize UserDefaults over iCloud.
Swift
899
star
5

Solarized-Dark-for-Xcode

Solarized Dark Theme for Xcode. Compatible with all modern versions of Xcode since 2013!
Shell
366
star
6

UIFloatLabelTextField

A subclassed UITextField that follows the Float Label UI design pattern.
Objective-C
323
star
7

Magic

A Swift alternative for Objective-C's DLog macro.
Ruby
283
star
8

UIFloatLabelTextView

A subclassed UITextView that follows the Float Label UI design pattern.
Objective-C
174
star
9

Freedom

The Freedom to Open URLs in Third-Party Browsers on iOS with Custom UIActivity Subclasses.
Swift
86
star
10

Asynchronous-Freeloader

Multithreaded Asynchronous Image Downloader
Objective-C
22
star
11

Cognac

An Alluring, Dark, and Muted Theme For Your Favorite Text Editor.
16
star
12

Cognac-Xcode

An Alluring, Dark, and Muted Theme For Xcode.
Shell
14
star
13

GitFame

A Swift CLI script that logs your GitHub Stars and Forks.
Makefile
13
star
14

MaterialSwitch

A Material Design inspired switch for iOS
Swift
12
star
15

UIDevice-SupportedDevices

An Objective-C category on UIDevice that returns devices based on the supportedDevices key in the JSON results returned in an iTunes Lookup API call.
Objective-C
12
star
16

UIView-AutoLayoutView

A small Objective-C category on UIView that creates a UIView object that is ready to be used in programmatic AutoLayout.
Objective-C
9
star
17

UIColor-ColorWithHexAndAlpha

A category on UIColor that enables you to use hex values to create UIColor objects.
Objective-C
8
star
18

iOSDevCampDC-2018

My talk on Scaling iOS Architecture for iOSDevCampDC 2018.
5
star
19

Panhandler

Remind your active users to rate and review your iOS app
Objective-C
5
star
20

Cognac-iTerm

An Alluring, Dark, and Muted Syntax Theme For iTerm2.
3
star
21

Cognac-VSCode

An Alluring, Dark, and Muted Syntax Theme For Visual Studio Code.
3
star
22

artsabintsev.github.io

My Homepage.
CSS
2
star
23

NSDate-DateFromBSONObjectID

Convert MongoDB's BSON ObjectID to NSDate
Objective-C
2
star
24

Swift-3-CocoaHeads-DC-Talk

My talk on Swift 3 at CocoaHeads DC on July 7, 2016.
Swift
2
star
25

iOSDevCampDC-2017

My Talk on Open Source Software Development for iOSDevCampDC 2017.
2
star
26

cocoaheads-ukraine-2017

My Talk on Open Source Software Development for CocoaHeads Ukraine #13 in 2017
1
star
27

Apple-Watch-WatchKit-CocoaHeads-DC-Talk-

Keynote, PDF, and Sample Project for my WatchKit Talk.
Swift
1
star
28

Cognac-Terminal

An Alluring, Dark, and Muted Theme For The macOS Terminal.
1
star
29

Simple-Class-Portraits

A simple addon for World of Warcraft.
Lua
1
star