Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A lightweight and flexible Swift syntax highlighter for multiple programming languages

License

Notifications You must be signed in to change notification settings

iamnijat/CodeArtSyntax

Repository files navigation

SwiftPM compatible GitHub version License Issues GitHub forks GitHub stars GitHub watchers GitHub contributors GitHub last commit GitHub top language

Swift CodeArtSyntax Package

Welcome to CodeArtSyntax - lightweight and flexible Swift syntax highlighter. It can be used to generate Swift code for your project (in the future it will support multiple programming languages), to turn a string of Swift code into a fully syntax highlighted image, or to build custom developer tools.

Usage

CodeArtSyntax can be used either as a library in your own Swift Package Manager-powered tool or script

πŸ“¦ As a package

To include CodeArtSyntax in your own script or Swift package, add it as a dependency and use the CodeArtSyntaxView class combined with your output format of choice to highlight a string of code:

import UIKit
protocol SyntaxBase {
 var syntaxTheme: SyntaxTheme { get set }
 var syntax: Syntax { get }
 func format(text: String, fontSize: CGFloat) -> NSMutableAttributedString
}
// Supported Public Syntaxes Enum
public enum Syntax {
 case SWIFT
}
// Highlight Types
enum HighlightType {
 case number
 case comment
 case keyword
 case string
 case punctuation
 case klass // or struct
 case constant
}
class HighlightSpan {
 private static func textStyle(syntaxTheme: SyntaxTheme, type: HighlightType) -> TextStyle {
 switch type {
 case .number:
 return syntaxTheme.numberStyle
 case .comment:
 return syntaxTheme.commentStyle
 case .keyword:
 return syntaxTheme.keywordStyle
 case .string:
 return syntaxTheme.stringStyle
 case .punctuation:
 return syntaxTheme.punctuationStyle
 case .klass:
 return syntaxTheme.classStyle
 case .constant:
 return syntaxTheme.constantStyle
 }
 }
 
 static func getSyntax(syntax: Syntax, theme: SyntaxTheme) -> SyntaxBase {
 switch syntax {
 case .SWIFT:
 return SwiftSyntaxHighlighter(syntaxTheme: theme)
 }
 }
}

CodeArtSyntax ships with one built-in output format - NSAttributedString

Installation

CodeArtSyntax is distributed as a Swift package, making it easy to install for use in scripts, developer tools, server-side applications

CodeArtSyntax required minimum IOS 16 version which can be compatible for the project going on

Before you begin, make sure that you have a Swift 5.2-compatible toolchain installed (for example Xcode 11.5 or later if you're on a Mac).

πŸ“¦ As a package

To install CodeArtSyntax for use in a Swift Package Manager-powered tool or server-side application, add CodeArtSyntax as a dependency to your Package.swift file. For more information, please see the Swift Package Manager documentation.

.package(url: "https://github.com/iamnijat/CodeArtSyntax", from: "0.1.0")

πŸ“¦ As a configuration

To configure CodeArtSyntax in your project you can easily copy-paste this code block to your workspace:

 CodeArtSyntaxView(code: code, syntax: .SWIFT, withLinesCount: true, syntaxTheme: SyntaxTheme.vsCodeDark(), fontSize: 13)

Contributions and support

CodeArtSyntax is developed completely in the open, and your contributions are more than welcome. It's still a very new project, so I'm sure there are bugs to be found and improvements to be made - and hopefully we can work on those together as a community.

This project does not come with GitHub Issues-based support, and users are instead encouraged to become active participants in its continued development β€” by fixing any bugs that they encounter, or by improving the documentation wherever it's found to be lacking.

Hope you enjoy using CodeArtSyntax!

I had a lot of fun building CodeArtSyntax, and I'm looking forward to continue working on it in the open together with you! I hope you'll like it and that you'll find it useful. Let me know what you think on Twitter 😊

About

A lightweight and flexible Swift syntax highlighter for multiple programming languages

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /