jsctags
Version:
jsctags generator
605 lines (599 loc) • 15.7 kB
Markdown
```js
class Point2 {
constructor(x, y) { this.x = x; this.y = y }
plus(pt) {
this //: Point2
pt //: Point2
return new Point2(this.x + pt.x, this.y + pt.y)
}
get xx() { return this.x }
quux() { return 1 }
static origin() { return new Point2(0, 0) }
}
class Point4 extends Point3 {
constructor(x, y, z, u) { super(x, y, z); this.u = u }
argh() { return 2 }
}
var Point3 = class extends Point2 {
constructor(x, y, z) { super(x, y); this.z = z }
foobar() { return true }
}
var p1 = new Point2(1, 2)
p1.x //: number
p1 //: Point2
var p2 = Point2.origin()
p2 //: Point2
p1.plus(p2) //: Point2
p1.foobar() //: ?
p1.xx //: number
var p3 = new Point3(0, 0, 5)
p3 //: Point3
p3.quux() //: number
p3.foobar() //: bool
var p4 = new Point4(1, 2, 3, 4)
p4 //: Point4
p4.argh() //: number
p4.foobar() //: bool
p4.quux() //: number
```
```json
[
{
"id": "e55a14f0-7aee-11e6-87ea-6121cd12970c",
"name": "Point2",
"addr": "/Point2/",
"kind": "f",
"type": "void function(number, number)",
"lineno": 1,
"origin": {
"!span": "6[0:6]-12[0:12]",
"!type": "fn(x: number, y: number)",
"!data": {
"isConstructor": true,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55d9760-7aee-11e6-87ea-6121cd12970c",
"name": "prototype",
"addr": "/class Point2 \{/",
"kind": "v",
"lineno": 1,
"namespace": "Point2",
"parent": "e55a14f0-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "0[0:0]-267[10:1]",
"!data": {
"isConstructor": false,
"type": "Object.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de589-7aee-11e6-87ea-6121cd12970c",
"name": "x",
"addr": "/x/",
"kind": "v",
"type": "number",
"lineno": 2,
"namespace": "Point4",
"parent": "e55de584-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "42[1:27]-43[1:28]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55dbe72-7aee-11e6-87ea-6121cd12970c",
"name": "x",
"addr": "/x/",
"kind": "v",
"type": "number",
"lineno": 2,
"namespace": "Point2.prototype.plus.pt",
"parent": "e55dbe71-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "42[1:27]-43[1:28]",
"!type": "number",
"!data": {
"isConstructor": false,
"scoped": false,
"isArg": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55dbe73-7aee-11e6-87ea-6121cd12970c",
"name": "y",
"addr": "/y/",
"kind": "v",
"type": "number",
"lineno": 2,
"namespace": "Point2.prototype.plus.pt",
"parent": "e55dbe71-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "54[1:39]-55[1:40]",
"!type": "number",
"!data": {
"isConstructor": false,
"scoped": false,
"isArg": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de58a-7aee-11e6-87ea-6121cd12970c",
"name": "y",
"addr": "/y/",
"kind": "v",
"type": "number",
"lineno": 2,
"namespace": "Point4",
"parent": "e55de584-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "54[1:39]-55[1:40]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de583-7aee-11e6-87ea-6121cd12970c",
"name": "y",
"addr": "/y/",
"kind": "v",
"type": "number",
"lineno": 2,
"namespace": "Point2",
"parent": "e55a14f0-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "54[1:39]-55[1:40]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de582-7aee-11e6-87ea-6121cd12970c",
"name": "x",
"addr": "/x/",
"kind": "v",
"type": "number",
"lineno": 2,
"namespace": "Point2",
"parent": "e55a14f0-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "42[1:27]-43[1:28]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55dbe70-7aee-11e6-87ea-6121cd12970c",
"name": "plus",
"addr": "/plus/",
"kind": "f",
"type": "Point2 function(+Point2)",
"lineno": 3,
"namespace": "Point2.prototype",
"parent": "e55d9760-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "64[2:2]-68[2:6]",
"!type": "fn(pt: +Point2) -> +Point2",
"!data": {
"isConstructor": false,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55dbe71-7aee-11e6-87ea-6121cd12970c",
"name": "pt",
"addr": "/pt/",
"kind": "v",
"type": "Point2",
"lineno": 3,
"namespace": "Point2.prototype.plus",
"parent": "e55dbe70-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "69[2:7]-71[2:9]",
"!type": "+Point2",
"!data": {
"isConstructor": false,
"scoped": true,
"isArg": true,
"type": "Point2.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55dbe74-7aee-11e6-87ea-6121cd12970c",
"name": "xx",
"addr": "/xx/",
"kind": "v",
"type": "number",
"lineno": 8,
"namespace": "Point2.prototype",
"parent": "e55d9760-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "175[7:6]-177[7:8]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de580-7aee-11e6-87ea-6121cd12970c",
"name": "quux",
"addr": "/quux/",
"kind": "f",
"type": "number function()",
"lineno": 9,
"namespace": "Point2.prototype",
"parent": "e55d9760-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "200[8:2]-204[8:6]",
"!type": "fn() -> number",
"!data": {
"isConstructor": false,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de581-7aee-11e6-87ea-6121cd12970c",
"name": "origin",
"addr": "/origin/",
"kind": "f",
"type": "Point2 function()",
"lineno": 10,
"namespace": "Point2",
"parent": "e55a14f0-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "229[9:9]-235[9:15]",
"!type": "fn() -> +Point2",
"!data": {
"isConstructor": false,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de584-7aee-11e6-87ea-6121cd12970c",
"name": "Point4",
"addr": "/Point4/",
"kind": "f",
"type": "void function(number, number, number, number)",
"lineno": 13,
"origin": {
"!span": "275[12:6]-281[12:12]",
"!type": "fn(x: number, y: number, z: number, u: number)",
"!data": {
"isConstructor": true,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de585-7aee-11e6-87ea-6121cd12970c",
"name": "prototype",
"addr": "/class Point4 extends Point3 \{/",
"kind": "v",
"lineno": 13,
"namespace": "Point4",
"parent": "e55de584-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "269[12:0]-379[15:1]",
"!data": {
"isConstructor": false,
"type": "Point3.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de587-7aee-11e6-87ea-6121cd12970c",
"name": "u",
"addr": "/u/",
"kind": "v",
"type": "number",
"lineno": 14,
"namespace": "Point4",
"parent": "e55de584-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "348[13:49]-349[13:50]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de586-7aee-11e6-87ea-6121cd12970c",
"name": "argh",
"addr": "/argh/",
"kind": "f",
"type": "number function()",
"lineno": 15,
"namespace": "Point4.prototype",
"parent": "e55de585-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "358[14:2]-362[14:6]",
"!type": "fn() -> number",
"!data": {
"isConstructor": false,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de58b-7aee-11e6-87ea-6121cd12970c",
"name": "Point3",
"addr": "/Point3/",
"kind": "f",
"type": "void function(number, number, number)",
"lineno": 18,
"origin": {
"!span": "385[17:4]-391[17:10]",
"!type": "fn(x: number, y: number, z: number)",
"!data": {
"isConstructor": true,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de58c-7aee-11e6-87ea-6121cd12970c",
"name": "prototype",
"addr": "/class extends Point2 \{/",
"kind": "v",
"lineno": 18,
"namespace": "Point3",
"parent": "e55de58b-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "394[17:13]-496[20:1]",
"!data": {
"isConstructor": false,
"type": "Point2.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de58f-7aee-11e6-87ea-6121cd12970c",
"name": "x",
"addr": "/x/",
"kind": "v",
"type": "number",
"lineno": 19,
"namespace": "Point3",
"parent": "e55de58b-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "431[18:14]-432[18:15]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype",
"scoped": true,
"isArg": true
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de590-7aee-11e6-87ea-6121cd12970c",
"name": "y",
"addr": "/y/",
"kind": "v",
"type": "number",
"lineno": 19,
"namespace": "Point3",
"parent": "e55de58b-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "434[18:17]-435[18:18]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype",
"scoped": true,
"isArg": true
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de58e-7aee-11e6-87ea-6121cd12970c",
"name": "z",
"addr": "/z/",
"kind": "v",
"type": "number",
"lineno": 19,
"namespace": "Point3",
"parent": "e55de58b-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "437[18:20]-438[18:21]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype",
"scoped": true,
"isArg": true
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de588-7aee-11e6-87ea-6121cd12970c",
"name": "z",
"addr": "/z/",
"kind": "v",
"type": "number",
"lineno": 19,
"namespace": "Point4",
"parent": "e55de584-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "460[18:43]-461[18:44]",
"!type": "number",
"!data": {
"isConstructor": false,
"type": "Number.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de58d-7aee-11e6-87ea-6121cd12970c",
"name": "foobar",
"addr": "/foobar/",
"kind": "f",
"type": "boolean function()",
"lineno": 20,
"namespace": "Point3.prototype",
"parent": "e55de58c-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "470[19:2]-476[19:8]",
"!type": "fn() -> bool",
"!data": {
"isConstructor": false,
"type": "Function.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55de591-7aee-11e6-87ea-6121cd12970c",
"name": "p1",
"addr": "/p1/",
"kind": "v",
"type": "Point2",
"lineno": 23,
"origin": {
"!span": "502[22:4]-504[22:6]",
"!type": "+Point2",
"!data": {
"isConstructor": false,
"type": "Point2.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55e33a1-7aee-11e6-87ea-6121cd12970c",
"name": "p2",
"addr": "/p2/",
"kind": "v",
"type": "Point2",
"lineno": 26,
"parent": "e55e33a0-7aee-11e6-87ea-6121cd12970c",
"origin": {
"!span": "558[25:4]-560[25:6]",
"!type": "+Point2",
"!data": {
"isConstructor": false,
"scoped": false,
"isArg": false,
"type": "Point2.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55e0c90-7aee-11e6-87ea-6121cd12970c",
"name": "p3",
"addr": "/p3/",
"kind": "v",
"type": "Point3",
"lineno": 32,
"origin": {
"!span": "656[31:4]-658[31:6]",
"!type": "+Point3",
"!data": {
"isConstructor": false,
"type": "Point3.prototype"
}
},
"tagfile": "__DIR__/class.js"
},
{
"id": "e55e0c91-7aee-11e6-87ea-6121cd12970c",
"name": "p4",
"addr": "/p4/",
"kind": "v",
"type": "Point4",
"lineno": 37,
"origin": {
"!span": "742[36:4]-744[36:6]",
"!type": "+Point4",
"!data": {
"isConstructor": false,
"type": "Point4.prototype"
}
},
"tagfile": "__DIR__/class.js"
}
]
```
```ctags
Point2 __DIR__/class.js /Point2/;" f lineno:1 type:void function(number, number)
prototype __DIR__/class.js /class Point2 \{/;" v lineno:1 namespace:Point2
x __DIR__/class.js /x/;" v lineno:2 namespace:Point4 type:number
x __DIR__/class.js /x/;" v lineno:2 namespace:Point2.prototype.plus.pt type:number
y __DIR__/class.js /y/;" v lineno:2 namespace:Point2.prototype.plus.pt type:number
y __DIR__/class.js /y/;" v lineno:2 namespace:Point4 type:number
y __DIR__/class.js /y/;" v lineno:2 namespace:Point2 type:number
x __DIR__/class.js /x/;" v lineno:2 namespace:Point2 type:number
plus __DIR__/class.js /plus/;" f lineno:3 namespace:Point2.prototype type:Point2 function(+Point2)
pt __DIR__/class.js /pt/;" v lineno:3 namespace:Point2.prototype.plus type:Point2
xx __DIR__/class.js /xx/;" v lineno:8 namespace:Point2.prototype type:number
quux __DIR__/class.js /quux/;" f lineno:9 namespace:Point2.prototype type:number function()
origin __DIR__/class.js /origin/;" f lineno:10 namespace:Point2 type:Point2 function()
Point4 __DIR__/class.js /Point4/;" f lineno:13 type:void function(number, number, number, number)
prototype __DIR__/class.js /class Point4 extends Point3 \{/;" v lineno:13 namespace:Point4
u __DIR__/class.js /u/;" v lineno:14 namespace:Point4 type:number
argh __DIR__/class.js /argh/;" f lineno:15 namespace:Point4.prototype type:number function()
Point3 __DIR__/class.js /Point3/;" f lineno:18 type:void function(number, number, number)
prototype __DIR__/class.js /class extends Point2 \{/;" v lineno:18 namespace:Point3
x __DIR__/class.js /x/;" v lineno:19 namespace:Point3 type:number
y __DIR__/class.js /y/;" v lineno:19 namespace:Point3 type:number
z __DIR__/class.js /z/;" v lineno:19 namespace:Point3 type:number
z __DIR__/class.js /z/;" v lineno:19 namespace:Point4 type:number
foobar __DIR__/class.js /foobar/;" f lineno:20 namespace:Point3.prototype type:boolean function()
p1 __DIR__/class.js /p1/;" v lineno:23 type:Point2
p2 __DIR__/class.js /p2/;" v lineno:26 type:Point2
p3 __DIR__/class.js /p3/;" v lineno:32 type:Point3
p4 __DIR__/class.js /p4/;" v lineno:37 type:Point4
```