Skip to content
This repository has been archived by the owner on Feb 13, 2019. It is now read-only.

Commit

Permalink
Update Cub and SavannaKit
Browse files Browse the repository at this point in the history
  • Loading branch information
louisdh committed May 10, 2018
1 parent 8384ac0 commit 3fa57da
Show file tree
Hide file tree
Showing 38 changed files with 1,616 additions and 1,280 deletions.
2 changes: 1 addition & 1 deletion OpenTerm/Assets/cub-docs.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -40,98 +40,71 @@ class CubDocumentationItemViewController: UIViewController {
attributedString.append(definitionAttrString)

switch item.type {
case .function:
case .function(let functionDocumentation):

let descr: String

if let functionDoc = item.functionDocumentation {
descr = functionDoc.description ?? "No description"
} else {
descr = "No description"
}
let descr = functionDocumentation.description ?? "No description"

let descrAttrString = NSAttributedString(string: descr + "\n", attributes: [.font: font])

attributedString.append(descrAttrString)

if let functionDoc = item.functionDocumentation {

for arg in functionDoc.arguments {

let argDescr: String

if let argDescription = functionDoc.argumentDescriptions[arg] {
argDescr = "\(arg): " + (argDescription ?? "No description")
} else {
argDescr = "\(arg): No description"
}

let argDescrAttrString = NSAttributedString(string: argDescr + "\n", attributes: [.font: font])

attributedString.append(argDescrAttrString)

}
for arg in functionDocumentation.arguments {

if let returnDescription = functionDoc.returnDescription {

let returnsDescr = "Returns: " + returnDescription

let returnsDescrAttrString = NSAttributedString(string: returnsDescr + "\n", attributes: [.font: font])

attributedString.append(returnsDescrAttrString)

let argDescr: String

if let argDescription = functionDocumentation.argumentDescriptions[arg] {
argDescr = "\(arg): " + argDescription
} else {
argDescr = "\(arg): No description"
}

let argDescrAttrString = NSAttributedString(string: argDescr + "\n", attributes: [.font: font])

attributedString.append(argDescrAttrString)

}

case .variable:

let descr: String

if let variableDoc = item.variableDocumentation {
descr = variableDoc.description ?? "No description"
} else {
descr = "No description"
if let returnDescription = functionDocumentation.returnDescription {

let returnsDescr = "Returns: " + returnDescription

let returnsDescrAttrString = NSAttributedString(string: returnsDescr + "\n", attributes: [.font: font])

attributedString.append(returnsDescrAttrString)

}

case .variable(let variableDocumentation):

let descr = variableDocumentation.description ?? "No description"

let descrAttrString = NSAttributedString(string: descr + "\n", attributes: [.font: font])

attributedString.append(descrAttrString)

case .struct:

let descr: String
case .struct(let structDocumentation):

if let structDoc = item.structDocumentation {
descr = structDoc.description ?? "No description"
} else {
descr = "No description"
}
let descr = structDocumentation.description ?? "No description"

let descrAttrString = NSAttributedString(string: descr + "\n", attributes: [.font: font])

attributedString.append(descrAttrString)

if let structDoc = item.structDocumentation {
for member in structDocumentation.members {

let memberDescr: String

for member in structDoc.members {

let memberDescr: String

if let memberDescription = structDoc.memberDescriptions[member] {
memberDescr = "\(member): " + (memberDescription ?? "No description")
} else {
memberDescr = "\(member): No description"
}

let memberDescrAttrString = NSAttributedString(string: memberDescr + "\n", attributes: [.font: font])

attributedString.append(memberDescrAttrString)

if let memberDescription = structDocumentation.memberDescriptions[member] {
memberDescr = "\(member): " + (memberDescription ?? "No description")
} else {
memberDescr = "\(member): No description"
}

let memberDescrAttrString = NSAttributedString(string: memberDescr + "\n", attributes: [.font: font])

attributedString.append(memberDescrAttrString)

}

}

return attributedString
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,19 +57,34 @@ class CubDocumentationViewController: UIViewController {
sortedItems = sortedItems.filter({ $0.title.lowercased().contains(searchText) })
}

let functionItemsToShow = sortedItems.filter({ $0.type == .function })
let functionItemsToShow = sortedItems.filter({
if case .function = $0.type {
return true
}
return false
})

if !functionItemsToShow.isEmpty {
sections.append(.functions(functionItemsToShow))
}

let variableItemsToShow = sortedItems.filter({ $0.type == .variable })
let variableItemsToShow = sortedItems.filter({
if case .variable = $0.type {
return true
}
return false
})

if !variableItemsToShow.isEmpty {
sections.append(.variables(variableItemsToShow))
}

let structItemsToShow = sortedItems.filter({ $0.type == .struct })
let structItemsToShow = sortedItems.filter({
if case .struct = $0.type {
return true
}
return false
})

if !structItemsToShow.isEmpty {
sections.append(.structs(structItemsToShow))
Expand Down
6 changes: 4 additions & 2 deletions OpenTerm/Controller/Scripting/ScriptEditViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class ScriptEditViewController: UIViewController {
let textView: SyntaxTextView
let autoCompleteManager: CubSyntaxAutoCompleteManager
let inputAssistantView: InputAssistantView
let autoCompletor = AutoCompleter()
var autoCompleter: AutoCompleter!

var cubManualPanelViewController: PanelViewController!
var cubDocsPanelViewController: PanelViewController!
Expand Down Expand Up @@ -52,6 +52,8 @@ class ScriptEditViewController: UIViewController {
cubDocsPanelViewController.panelNavigationController.view.backgroundColor = .panelBackgroundColor
cubDocsPanelViewController.view.backgroundColor = .clear

autoCompleter = AutoCompleter(documentation: cubDocsVC.docBundle.items)

}

private func setupViews() {
Expand Down Expand Up @@ -392,7 +394,7 @@ extension ScriptEditViewController: CubSyntaxAutoCompleteManagerDataSource {

let cursor = text.distance(from: text.startIndex, to: swiftRange.lowerBound)

let suggestions = autoCompletor.completionSuggestions(for: textView.text, cursor: cursor)
let suggestions = autoCompleter.completionSuggestions(for: textView.text, cursor: cursor)

return suggestions.map({ CubSyntaxAutoCompleteManager.Completion($0.content, data: $0) })
}
Expand Down
76 changes: 50 additions & 26 deletions OpenTerm/Util/Scripting/Cub+SavannaKit.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,65 +11,89 @@ import SavannaKit
import Cub

extension Cub.TokenType: SavannaKit.TokenType {

public var syntaxColorType: SyntaxColorType {

switch self {
case .booleanAnd, .booleanNot, .booleanOr:
return .plain

case .shortHandAdd, .shortHandDiv, .shortHandMul, .shortHandPow, .shortHandSub:
return .plain

case .equals, .notEqual, .dot, .ignoreableToken, .parensOpen, .parensClose, .curlyOpen, .curlyClose, .comma, .squareBracketOpen, .squareBracketClose:
case .equals, .notEqual, .dot, .ignoreableToken, .parensOpen, .parensClose, .curlyOpen, .curlyClose, .comma:
return .plain

case .comparatorEqual, .comparatorLessThan, .comparatorGreaterThan, .comparatorLessThanEqual, .comparatorGreaterThanEqual:
return .plain


case .string:
return .string

case .other:
return .plain

case .break, .continue, .function, .if, .else, .while, .for, .do, .times, .return, .returns, .repeat, .true, .false, .struct, .guard, .in, .nil:
return .keyword

case .string:
return .string


case .comment:
return .comment

case .number:
return .number

case .identifier:
return .identifier

case .editorPlaceholder:

case .squareBracketOpen:
return .plain

case .squareBracketClose:
return .plain

case .editorPlaceholder(_):
return .editorPlaceholder

}

}

}

extension Cub.Token: SavannaKit.Token {

public struct SavannaCubToken: SavannaKit.Token {

public let cubToken: Cub.Token
public let range: Range<String.Index>?

public init(cubToken: Cub.Token, in source: String) {
self.cubToken = cubToken

if let range = cubToken.range {
let lowerBound = source.index(source.startIndex, offsetBy: range.lowerBound)
let upperBound = source.index(source.startIndex, offsetBy: range.upperBound)

self.range = lowerBound..<upperBound

} else {
self.range = nil
}

}

public var savannaTokenType: SavannaKit.TokenType {
return self.type
return cubToken.type
}

}

extension Cub.Lexer: SavannaKit.Lexer {

public func lexerForInput(_ input: String) -> SavannaKit.Lexer {
return Cub.Lexer(input: input)
}

public func getSavannaTokens() -> [SavannaKit.Token] {
return self.tokenize()
return self.tokenize().map({ SavannaCubToken(cubToken: $0, in: input) })
}

}
12 changes: 6 additions & 6 deletions Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
PODS:
- BezierPathLength (1.1.0)
- Cub (0.9.0)
- Cub (0.9.2)
- HueKit (1.0.1)
- InputAssistant (1.0.2)
- PanelKit (2.0.1)
- SavannaKit (0.8.2)
- SavannaKit (0.8.3)
- SimulatorStatusMagic (2.1)
- SwiftLint (0.25.1)
- TabView (1.0.1)
Expand All @@ -21,7 +21,7 @@ DEPENDENCIES:
- TabView (~> 1.0)

SPEC REPOS:
https://github.com/CocoaPods/Specs.git:
https://github.com/cocoapods/specs.git:
- BezierPathLength
- Cub
- HueKit
Expand All @@ -34,15 +34,15 @@ SPEC REPOS:

SPEC CHECKSUMS:
BezierPathLength: 2f21f2860b0817df3cf631e9a3a9273c8e8c3814
Cub: 8a3c1f3609bf3af98043c95bb5e2054552920368
Cub: e986d6809e84c6d995be2c9c42d9d3990cf2439e
HueKit: a255770053f7028907db3e84d5cdecc7837197e4
InputAssistant: b0b70cd0d69ef7013ecb2a1fa350b7a2786e2e01
PanelKit: d05cecac1ab39af375b56ff21c7b5a9915a3eb5b
SavannaKit: 4a511f018ea2f0bf30746ea215619c9e94b74c7c
SavannaKit: d985d281aa8eca06bc5c0744875ef31e423192bb
SimulatorStatusMagic: 481558caf2b9ccb2ceba2cc193728d4db3dcac07
SwiftLint: ce933681be10c3266e82576dad676fa815a602e9
TabView: b8337b549e4b0f070a76cab141e258fa66e01fd1

PODFILE CHECKSUM: 8d1150ce05fa5e9edad9436f37d6df80173cfb24

COCOAPODS: 1.5.0
COCOAPODS: 1.5.2
2 changes: 1 addition & 1 deletion Pods/Cub/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Pods/Cub/Sources/Cub/AST/Nodes/AssignmentNode.swift

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions Pods/Cub/Sources/Cub/AST/Nodes/CallNode.swift

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 3fa57da

Please sign in to comment.