Skip to content

Commit f08e10b

Browse files
committed
Added generator for Sublime Text 2 completion file.
1 parent c426220 commit f08e10b

File tree

5 files changed

+196
-3
lines changed

5 files changed

+196
-3
lines changed

utils/build.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
print("Please, update to a newer version: http://www.python.org/download/releases/")
88
exit()
99

10-
1110
import argparse
1211
import json
1312
import os
@@ -56,8 +55,8 @@ def main(argv=None):
5655
# save
5756

5857
if args.minify is False:
59-
shutil.copy(path, output)
60-
os.chmod(output, 0o664); # temp files would usually get 0600
58+
shutil.copy(path, output)
59+
os.chmod(output, 0o664); # temp files would usually get 0600
6160

6261
else:
6362

utils/editors/sublimetext2/README

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
zip threejs.sublime-package threejs.sublime-completions
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
{
2+
"scope": "source.js,source.js.embedded.html,source.coffee",
3+
"version": "r55",
4+
"completions":
5+
[
6+
{ "trigger": "THREE.extend", "contents": "THREE.extend( ${1:target}, ${2:other} )$0" },
7+
{ "trigger": "THREE.Color", "contents": "THREE.Color( ${1:value} )$0" },
8+
{ "trigger": "THREE.Vector2", "contents": "THREE.Vector2( ${1:x}, ${2:y} )$0" },
9+
{ "trigger": "THREE.Vector3", "contents": "THREE.Vector3( ${1:x}, ${2:y}, ${3:z} )$0" },
10+
{ "trigger": "THREE.Vector4", "contents": "THREE.Vector4( ${1:x}, ${2:y}, ${3:z}, ${4:w} )$0" },
11+
{ "trigger": "THREE.Box2", "contents": "THREE.Box2( ${1:min}, ${2:max} )$0" },
12+
{ "trigger": "THREE.Box3", "contents": "THREE.Box3( ${1:min}, ${2:max} )$0" },
13+
{ "trigger": "THREE.Matrix3", "contents": "THREE.Matrix3( ${1:n11}, ${2:n12}, ${3:n13}, ${4:n21}, ${5:n22}, ${6:n23}, ${7:n31}, ${8:n32}, ${9:n33} )$0" },
14+
{ "trigger": "THREE.Matrix4", "contents": "THREE.Matrix4( ${1:n11}, ${2:n12}, ${3:n13}, ${4:n14}, ${5:n21}, ${6:n22}, ${7:n23}, ${8:n24}, ${9:n31}, ${10:n32}, ${11:n33}, ${12:n34}, ${13:n41}, ${14:n42}, ${15:n43}, ${16:n44} )$0" },
15+
{ "trigger": "THREE.Ray", "contents": "THREE.Ray( ${1:origin}, ${2:direction} )$0" },
16+
{ "trigger": "THREE.Sphere", "contents": "THREE.Sphere( ${1:center}, ${2:radius} )$0" },
17+
{ "trigger": "THREE.Frustum", "contents": "THREE.Frustum( ${1:p0}, ${2:p1}, ${3:p2}, ${4:p3}, ${5:p4}, ${6:p5} )$0" },
18+
{ "trigger": "THREE.Plane", "contents": "THREE.Plane( ${1:normal}, ${2:constant} )$0" },
19+
{ "trigger": "THREE.Spline", "contents": "THREE.Spline( ${1:points} )$0" },
20+
{ "trigger": "THREE.Triangle", "contents": "THREE.Triangle( ${1:a}, ${2:b}, ${3:c} )$0" },
21+
{ "trigger": "THREE.Vertex", "contents": "THREE.Vertex( ${1:v} )$0" },
22+
{ "trigger": "THREE.UV", "contents": "THREE.UV( ${1:u}, ${2:v} )$0" },
23+
{ "trigger": "THREE.Clock", "contents": "THREE.Clock( ${1:autoStart} )$0" },
24+
{ "trigger": "THREE.EventDispatcher", "contents": "THREE.EventDispatcher()$0" },
25+
{ "trigger": "THREE.Raycaster", "contents": "THREE.Raycaster( ${1:origin}, ${2:direction}, ${3:near}, ${4:far} )$0" },
26+
{ "trigger": "THREE.Object3D", "contents": "THREE.Object3D()$0" },
27+
{ "trigger": "THREE.Projector", "contents": "THREE.Projector()$0" },
28+
{ "trigger": "THREE.Face3", "contents": "THREE.Face3( ${1:a}, ${2:b}, ${3:c}, ${4:normal}, ${5:color}, ${6:materialIndex} )$0" },
29+
{ "trigger": "THREE.Face4", "contents": "THREE.Face4( ${1:a}, ${2:b}, ${3:c}, ${4:d}, ${5:normal}, ${6:color}, ${7:materialIndex} )$0" },
30+
{ "trigger": "THREE.Geometry", "contents": "THREE.Geometry()$0" },
31+
{ "trigger": "THREE.BufferGeometry", "contents": "THREE.BufferGeometry()$0" },
32+
{ "trigger": "THREE.Camera", "contents": "THREE.Camera()$0" },
33+
{ "trigger": "THREE.OrthographicCamera", "contents": "THREE.OrthographicCamera( ${1:left}, ${2:right}, ${3:top}, ${4:bottom}, ${5:near}, ${6:far} )$0" },
34+
{ "trigger": "THREE.PerspectiveCamera", "contents": "THREE.PerspectiveCamera( ${1:fov}, ${2:aspect}, ${3:near}, ${4:far} )$0" },
35+
{ "trigger": "THREE.Light", "contents": "THREE.Light( ${1:hex} )$0" },
36+
{ "trigger": "THREE.AmbientLight", "contents": "THREE.AmbientLight( ${1:hex} )$0" },
37+
{ "trigger": "THREE.AreaLight", "contents": "THREE.AreaLight( ${1:hex}, ${2:intensity} )$0" },
38+
{ "trigger": "THREE.DirectionalLight", "contents": "THREE.DirectionalLight( ${1:hex}, ${2:intensity} )$0" },
39+
{ "trigger": "THREE.HemisphereLight", "contents": "THREE.HemisphereLight( ${1:skyColorHex}, ${2:groundColorHex}, ${3:intensity} )$0" },
40+
{ "trigger": "THREE.PointLight", "contents": "THREE.PointLight( ${1:hex}, ${2:intensity}, ${3:distance} )$0" },
41+
{ "trigger": "THREE.SpotLight", "contents": "THREE.SpotLight( ${1:hex}, ${2:intensity}, ${3:distance}, ${4:angle}, ${5:exponent} )$0" },
42+
{ "trigger": "THREE.Loader", "contents": "THREE.Loader( ${1:showStatus} )$0" },
43+
{ "trigger": "THREE.ImageLoader", "contents": "THREE.ImageLoader()$0" },
44+
{ "trigger": "THREE.JSONLoader", "contents": "THREE.JSONLoader( ${1:showStatus} )$0" },
45+
{ "trigger": "THREE.LoadingMonitor", "contents": "THREE.LoadingMonitor()$0" },
46+
{ "trigger": "THREE.SceneLoader", "contents": "THREE.SceneLoader()$0" },
47+
{ "trigger": "THREE.TextureLoader", "contents": "THREE.TextureLoader()$0" },
48+
{ "trigger": "THREE.Material", "contents": "THREE.Material()$0" },
49+
{ "trigger": "THREE.LineBasicMaterial", "contents": "THREE.LineBasicMaterial( ${1:parameters} )$0" },
50+
{ "trigger": "THREE.LineDashedMaterial", "contents": "THREE.LineDashedMaterial( ${1:parameters} )$0" },
51+
{ "trigger": "THREE.MeshBasicMaterial", "contents": "THREE.MeshBasicMaterial( ${1:parameters} )$0" },
52+
{ "trigger": "THREE.MeshLambertMaterial", "contents": "THREE.MeshLambertMaterial( ${1:parameters} )$0" },
53+
{ "trigger": "THREE.MeshPhongMaterial", "contents": "THREE.MeshPhongMaterial( ${1:parameters} )$0" },
54+
{ "trigger": "THREE.MeshDepthMaterial", "contents": "THREE.MeshDepthMaterial( ${1:parameters} )$0" },
55+
{ "trigger": "THREE.MeshNormalMaterial", "contents": "THREE.MeshNormalMaterial( ${1:parameters} )$0" },
56+
{ "trigger": "THREE.MeshFaceMaterial", "contents": "THREE.MeshFaceMaterial( ${1:materials} )$0" },
57+
{ "trigger": "THREE.ParticleBasicMaterial", "contents": "THREE.ParticleBasicMaterial( ${1:parameters} )$0" },
58+
{ "trigger": "THREE.ParticleCanvasMaterial", "contents": "THREE.ParticleCanvasMaterial( ${1:parameters} )$0" },
59+
{ "trigger": "THREE.ShaderMaterial", "contents": "THREE.ShaderMaterial( ${1:parameters} )$0" },
60+
{ "trigger": "THREE.SpriteMaterial", "contents": "THREE.SpriteMaterial( ${1:parameters} )$0" },
61+
{ "trigger": "THREE.Texture", "contents": "THREE.Texture( ${1:image}, ${2:mapping}, ${3:wrapS}, ${4:wrapT}, ${5:magFilter}, ${6:minFilter}, ${7:format}, ${8:type}, ${9:anisotropy} )$0" },
62+
{ "trigger": "THREE.CompressedTexture", "contents": "THREE.CompressedTexture( ${1:mipmaps}, ${2:width}, ${3:height}, ${4:format}, ${5:type}, ${6:mapping}, ${7:wrapS}, ${8:wrapT}, ${9:magFilter}, ${10:minFilter}, ${11:anisotropy} )$0" },
63+
{ "trigger": "THREE.DataTexture", "contents": "THREE.DataTexture( ${1:data}, ${2:width}, ${3:height}, ${4:format}, ${5:type}, ${6:mapping}, ${7:wrapS}, ${8:wrapT}, ${9:magFilter}, ${10:minFilter}, ${11:anisotropy} )$0" },
64+
{ "trigger": "THREE.Particle", "contents": "THREE.Particle( ${1:material} )$0" },
65+
{ "trigger": "THREE.ParticleSystem", "contents": "THREE.ParticleSystem( ${1:geometry}, ${2:material} )$0" },
66+
{ "trigger": "THREE.Line", "contents": "THREE.Line( ${1:geometry}, ${2:material}, ${3:type} )$0" },
67+
{ "trigger": "THREE.Mesh", "contents": "THREE.Mesh( ${1:geometry}, ${2:material} )$0" },
68+
{ "trigger": "THREE.SkinnedMesh", "contents": "THREE.SkinnedMesh( ${1:geometry}, ${2:material}, ${3:useVertexTexture} )$0" },
69+
{ "trigger": "THREE.MorphAnimMesh", "contents": "THREE.MorphAnimMesh( ${1:geometry}, ${2:material} )$0" },
70+
{ "trigger": "THREE.Ribbon", "contents": "THREE.Ribbon( ${1:geometry}, ${2:material} )$0" },
71+
{ "trigger": "THREE.LOD", "contents": "THREE.LOD()$0" },
72+
{ "trigger": "THREE.Sprite", "contents": "THREE.Sprite( ${1:material} )$0" },
73+
{ "trigger": "THREE.Scene", "contents": "THREE.Scene()$0" },
74+
{ "trigger": "THREE.Fog", "contents": "THREE.Fog( ${1:hex}, ${2:near}, ${3:far} )$0" },
75+
{ "trigger": "THREE.FogExp2", "contents": "THREE.FogExp2( ${1:hex}, ${2:density} )$0" },
76+
{ "trigger": "THREE.CanvasRenderer", "contents": "THREE.CanvasRenderer( ${1:parameters} )$0" },
77+
{ "trigger": "THREE.WebGLRenderer", "contents": "THREE.WebGLRenderer( ${1:parameters} )$0" },
78+
{ "trigger": "THREE.WebGLRenderTarget", "contents": "THREE.WebGLRenderTarget( ${1:width}, ${2:height}, ${3:options} )$0" },
79+
{ "trigger": "THREE.WebGLRenderTargetCube", "contents": "THREE.WebGLRenderTargetCube( ${1:width}, ${2:height}, ${3:options} )$0" },
80+
{ "trigger": "THREE.RenderableVertex", "contents": "THREE.RenderableVertex()$0" },
81+
{ "trigger": "THREE.RenderableFace3", "contents": "THREE.RenderableFace3()$0" },
82+
{ "trigger": "THREE.RenderableFace4", "contents": "THREE.RenderableFace4()$0" },
83+
{ "trigger": "THREE.RenderableObject", "contents": "THREE.RenderableObject()$0" },
84+
{ "trigger": "THREE.RenderableParticle", "contents": "THREE.RenderableParticle()$0" },
85+
{ "trigger": "THREE.RenderableLine", "contents": "THREE.RenderableLine()$0" },
86+
{ "trigger": "THREE.Curve", "contents": "THREE.Curve()$0" },
87+
{ "trigger": "THREE.CurvePath", "contents": "THREE.CurvePath()$0" },
88+
{ "trigger": "THREE.Gyroscope", "contents": "THREE.Gyroscope()$0" },
89+
{ "trigger": "THREE.Path", "contents": "THREE.Path( ${1:points} )$0" },
90+
{ "trigger": "THREE.Shape", "contents": "THREE.Shape()$0" },
91+
{ "trigger": "THREE.Animation", "contents": "THREE.Animation( ${1:root}, ${2:name}, ${3:interpolationType} )$0" },
92+
{ "trigger": "THREE.CubeCamera", "contents": "THREE.CubeCamera( ${1:near}, ${2:far}, ${3:cubeResolution} )$0" },
93+
{ "trigger": "THREE.CombinedCamera", "contents": "THREE.CombinedCamera( ${1:width}, ${2:height}, ${3:fov}, ${4:near}, ${5:far}, ${6:orthoNear}, ${7:orthoFar} )$0" },
94+
{ "trigger": "THREE.AsteriskGeometry", "contents": "THREE.AsteriskGeometry( ${1:innerRadius}, ${2:outerRadius} )$0" },
95+
{ "trigger": "THREE.CircleGeometry", "contents": "THREE.CircleGeometry( ${1:radius}, ${2:segments}, ${3:thetaStart}, ${4:thetaLength} )$0" },
96+
{ "trigger": "THREE.CubeGeometry", "contents": "THREE.CubeGeometry( ${1:width}, ${2:height}, ${3:depth}, ${4:widthSegments}, ${5:heightSegments}, ${6:depthSegments} )$0" },
97+
{ "trigger": "THREE.CylinderGeometry", "contents": "THREE.CylinderGeometry( ${1:radiusTop}, ${2:radiusBottom}, ${3:height}, ${4:radiusSegments}, ${5:heightSegments}, ${6:openEnded} )$0" },
98+
{ "trigger": "THREE.ExtrudeGeometry", "contents": "THREE.ExtrudeGeometry( ${1:shapes}, ${2:options} )$0" },
99+
{ "trigger": "THREE.ShapeGeometry", "contents": "THREE.ShapeGeometry( ${1:shapes}, ${2:options} )$0" },
100+
{ "trigger": "THREE.LatheGeometry", "contents": "THREE.LatheGeometry( ${1:points}, ${2:segments}, ${3:phiStart}, ${4:phiLength} )$0" },
101+
{ "trigger": "THREE.PlaneGeometry", "contents": "THREE.PlaneGeometry( ${1:width}, ${2:height}, ${3:widthSegments}, ${4:heightSegments} )$0" },
102+
{ "trigger": "THREE.SphereGeometry", "contents": "THREE.SphereGeometry( ${1:radius}, ${2:widthSegments}, ${3:heightSegments}, ${4:phiStart}, ${5:phiLength}, ${6:thetaStart}, ${7:thetaLength} )$0" },
103+
{ "trigger": "THREE.TextGeometry", "contents": "THREE.TextGeometry( ${1:text}, ${2:parameters} )$0" },
104+
{ "trigger": "THREE.TorusGeometry", "contents": "THREE.TorusGeometry( ${1:radius}, ${2:tube}, ${3:radialSegments}, ${4:tubularSegments}, ${5:arc} )$0" },
105+
{ "trigger": "THREE.TorusKnotGeometry", "contents": "THREE.TorusKnotGeometry( ${1:radius}, ${2:tube}, ${3:radialSegments}, ${4:tubularSegments}, ${5:p}, ${6:q}, ${7:heightScale} )$0" },
106+
{ "trigger": "THREE.PolyhedronGeometry", "contents": "THREE.PolyhedronGeometry( ${1:vertices}, ${2:faces}, ${3:radius}, ${4:detail} )$0" },
107+
{ "trigger": "THREE.IcosahedronGeometry", "contents": "THREE.IcosahedronGeometry( ${1:radius}, ${2:detail} )$0" },
108+
{ "trigger": "THREE.OctahedronGeometry", "contents": "THREE.OctahedronGeometry( ${1:radius}, ${2:detail} )$0" },
109+
{ "trigger": "THREE.TetrahedronGeometry", "contents": "THREE.TetrahedronGeometry( ${1:radius}, ${2:detail} )$0" },
110+
{ "trigger": "THREE.ParametricGeometry", "contents": "THREE.ParametricGeometry( ${1:func}, ${2:slices}, ${3:stacks}, ${4:useTris} )$0" },
111+
{ "trigger": "THREE.AxisHelper", "contents": "THREE.AxisHelper( ${1:size} )$0" },
112+
{ "trigger": "THREE.ArrowHelper", "contents": "THREE.ArrowHelper( ${1:dir}, ${2:origin}, ${3:length}, ${4:hex} )$0" },
113+
{ "trigger": "THREE.CameraHelper", "contents": "THREE.CameraHelper( ${1:camera} )$0" },
114+
{ "trigger": "THREE.DirectionalLightHelper", "contents": "THREE.DirectionalLightHelper( ${1:light}, ${2:sphereSize} )$0" },
115+
{ "trigger": "THREE.HemisphereLightHelper", "contents": "THREE.HemisphereLightHelper( ${1:light}, ${2:sphereSize}, ${3:arrowLength}, ${4:domeSize} )$0" },
116+
{ "trigger": "THREE.PointLightHelper", "contents": "THREE.PointLightHelper( ${1:light}, ${2:sphereSize} )$0" },
117+
{ "trigger": "THREE.SpotLightHelper", "contents": "THREE.SpotLightHelper( ${1:light}, ${2:sphereSize} )$0" },
118+
{ "trigger": "THREE.ImmediateRenderObject", "contents": "THREE.ImmediateRenderObject()$0" },
119+
{ "trigger": "THREE.LensFlare", "contents": "THREE.LensFlare( ${1:texture}, ${2:size}, ${3:distance}, ${4:blending}, ${5:color} )$0" },
120+
{ "trigger": "THREE.LensFlarePlugin", "contents": "THREE.LensFlarePlugin()$0" },
121+
{ "trigger": "THREE.ShadowMapPlugin", "contents": "THREE.ShadowMapPlugin()$0" },
122+
{ "trigger": "THREE.SpritePlugin", "contents": "THREE.SpritePlugin()$0" },
123+
{ "trigger": "THREE.DepthPassPlugin", "contents": "THREE.DepthPassPlugin()$0" },
124+
"THREE"
125+
]
126+
}

utils/sublime.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/env python
2+
3+
import sys
4+
5+
if sys.version_info < (2, 7):
6+
print("This script requires at least Python 2.7.")
7+
print("Please, update to a newer version: http://www.python.org/download/releases/")
8+
exit()
9+
10+
import argparse
11+
import json
12+
import os
13+
import re
14+
import shutil
15+
import tempfile
16+
17+
18+
def main(argv=None):
19+
20+
parser = argparse.ArgumentParser()
21+
parser.add_argument('--include', action='append', required=True)
22+
parser.add_argument('--output', default='editors/sublimetext2/threejs.sublime-completions')
23+
24+
args = parser.parse_args()
25+
26+
output = args.output
27+
28+
# parsing
29+
30+
print(' * Generating ' + output)
31+
32+
fd, path = tempfile.mkstemp()
33+
tmp = open(path, 'w')
34+
tmp.write('{\n\t"scope": "source.js,source.js.embedded.html,source.coffee",\n\t"version": "r55",\n\t"completions":\n\t[\n')
35+
36+
for include in args.include:
37+
with open('includes/' + include + '.json','r') as f: files = json.load(f)
38+
for filename in files:
39+
with open(filename, 'r') as f:
40+
string = f.read()
41+
match = re.search('THREE.(\w+)[\ ]+?=[\ ]+?function[\ ]+\(([\w\,\ ]+)?\)', string)
42+
if match:
43+
name = match.group(1)
44+
parameters = match.group(2)
45+
if parameters is None:
46+
parameters = ''
47+
else:
48+
array = parameters.split( ',' )
49+
for i in range(len(array)):
50+
array[i] = '${'+str(i+1)+':'+array[i].strip()+'}' # ${1:param}
51+
parameters = ' '+', '.join(array)+' '
52+
tmp.write('\t\t{ "trigger": "THREE.'+name+'", "contents": "THREE.'+name+'('+parameters+')$0" },\n' )
53+
54+
tmp.write("\t\t\"THREE\"\n\t]\n}")
55+
tmp.close()
56+
57+
# save
58+
59+
shutil.copy(path, output)
60+
os.chmod(output, 0o664); # temp files would usually get 0600
61+
62+
63+
if __name__ == "__main__":
64+
main()

utils/sublime.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
python sublime.py --include common --include extras --output editors/sublimetext2/threejs.sublime-completions

0 commit comments

Comments
 (0)