Skip to content
19 changes: 16 additions & 3 deletions plantuml.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ let isSwiftStruct = 'source.lang.swift.decl.struct'
let isSwiftEnum = 'source.lang.swift.decl.enum'
let isSwiftExtension = 'source.lang.swift.decl.extension'
let isSwiftProtocol = 'source.lang.swift.decl.protocol'
let isPublic = 'source.lang.swift.accessibility.internal'
let isPublic = 'source.lang.swift.accessibility.public'
let isPrivate = 'source.lang.swift.accessibility.private'
let isInternal = 'source.lang.swift.accessibility.internal'
let isStaticMethod = 'source.lang.swift.decl.function.method.static'
let isStaticVariable = 'source.lang.swift.decl.var.static'
let isNull = null


let linkTypeInheritance = '--|>'
Expand Down Expand Up @@ -124,8 +128,17 @@ srcjs.forEach(function (item){

item.members.forEach(function (method) {
var msig = ' '
msig += (method.scope == isPublic)? '+': '-'
msig += method.name + '\n'
msig += (method.kind == isStaticMethod || method.kind == isStaticVariable)? '{static} ': ''
msig += (method.scope == isPublic)? '+': (method.scope == isInternal)? '~': '-'
msig += method.name

if (method.type == isNull) {
msig += '\n'
}
else {
msig += ': ' + method.type + '\n'
}

methods += msig
})

Expand Down
4 changes: 2 additions & 2 deletions plantuml.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@

FILE=$1

JQ='[."key.substructure"[]? | select(."key.kind" == "source.lang.swift.decl.class")?, select(."key.kind" == "source.lang.swift.decl.struct")? , select(."key.kind" == "source.lang.swift.decl.enum")?, select(."key.kind" == "source.lang.swift.decl.extension")? , select(."key.kind" == "source.lang.swift.decl.protocol")? | {kind: ."key.kind" , name: ."key.name", inherits: ."key.inheritedtypes", members: [ (."key.substructure"[] | select(."key.kind" == "source.lang.swift.decl.function.method.instance") | {name: ."key.name", scope: ."key.accessibility"})]} ]'
JQ='[."key.substructure"[]? | select(."key.kind" == "source.lang.swift.decl.class")?, select(."key.kind" == "source.lang.swift.decl.struct")? , select(."key.kind" == "source.lang.swift.decl.enum")?, select(."key.kind" == "source.lang.swift.decl.extension")? , select(."key.kind" == "source.lang.swift.decl.protocol")? | {kind: ."key.kind" , name: ."key.name", inherits: ."key.inheritedtypes", members: [ (."key.substructure"[] | select(."key.kind" == "source.lang.swift.decl.function.method.instance"), select(."key.kind" == "source.lang.swift.decl.function.method.static"), select(."key.kind" == "source.lang.swift.decl.var.static" and ."key.accessibility" == "source.lang.swift.accessibility.public"), select(."key.kind" == "source.lang.swift.decl.var.instance" and ."key.accessibility" == "source.lang.swift.accessibility.public"), select(."key.kind" == "source.lang.swift.decl.function.method.class" and ."key.accessibility" == "source.lang.swift.accessibility.public") | {name: ."key.name", scope: ."key.accessibility", kind: ."key.kind", type: ."key.typename"})]} ]'

sourcekitten structure --file "$FILE" | jq "$JQ" > out.json

node plantuml.js
node plantuml.js