More exception words to the ui dico... :/
[blender.git] / release / scripts / modules / bl_i18n_utils / spell_check_utils.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 # <pep8 compliant>
20
21 import re
22
23
24 _valid_before = "(?<=[\\s*'\"`])|(?<=[a-zA-Z][/-])|(?<=^)"
25 _valid_after = "(?=[\\s'\"`.!?,;:])|(?=[/-]\\s*[a-zA-Z])|(?=$)"
26 _valid_words = "(?:{})(?:(?:[A-Z]+[a-z]*)|[A-Z]*|[a-z]*)(?:{})".format(_valid_before, _valid_after)
27 _reg = re.compile(_valid_words)
28
29
30 def split_words(text):
31     return [w for w in _reg.findall(text) if w]
32
33
34 # These must be all lower case for comparisons
35 dict_uimsgs = {
36     # OK words
37     "aren",  # aren't
38     "betweens",  # yuck! in-betweens!
39     "boolean", "booleans",
40     "decrement",
41     "doesn",  # doesn't
42     "fader",
43     "hoc",  # ad-hoc
44     "indices",
45     "iridas",
46     "isn",  # isn't
47     "iterable",
48     "kyrgyz",
49     "latin",
50     "merchantability",
51     "mplayer",
52     "vertices",
53
54     # Merged words
55     "addon", "addons",
56     "antialiasing",
57     "arcsine", "arccosine", "arctangent",
58     "autoclip",
59     "autocomplete",
60     "autoname",
61     "autosave",
62     "autoscale",
63     "autosmooth",
64     "autosplit",
65     "backface", "backfacing",
66     "backimage",
67     "backscattered",
68     "bandnoise",
69     "bindcode",
70     "bitrate",
71     "blendin",
72     "bonesize",
73     "boundbox",
74     "boxpack",
75     "buffersize",
76     "builtin", "builtins",
77     "chunksize",
78     "de",
79     "defocus",
80     "denoise",
81     "despill", "despilling",
82     "filebrowser",
83     "filelist",
84     "filename", "filenames",
85     "filepath", "filepaths",
86     "forcefield", "forcefields",
87     "fulldome", "fulldomes",
88     "fullscreen",
89     "gridline",
90     "hemi",
91     "inscatter",
92     "lightless",
93     "lookup", "lookups",
94     "mathutils",
95     "midlevel",
96     "midground",
97     "mixdown",
98     "multi",
99     "multifractal",
100     "multires", "multiresolution",
101     "multisampling",
102     "multitexture",
103     "namespace",
104     "keyconfig",
105     "playhead",
106     "polyline",
107     "popup", "popups",
108     "pre",
109     "precalculate",
110     "prefetch",
111     "premultiply", "premultiplied",
112     "prepass",
113     "prepend",
114     "preprocess", "preprocessing",
115     "preseek",
116     "readonly",
117     "realtime",
118     "rekey",
119     "remesh",
120     "reprojection",
121     "resize",
122     "restpose",
123     "retarget", "retargets", "retargeting", "retargeted",
124     "ringnoise",
125     "rolloff",
126     "screencast", "screenshot", "screenshots",
127     "selfcollision",
128     "singletexture",
129     "startup",
130     "stateful",
131     "starfield",
132     "subflare", "subflares",
133     "subframe", "subframes",
134     "subclass", "subclasses", "subclassing",
135     "subdirectory", "subdirectories", "subdir", "subdirs",
136     "submodule", "submodules",
137     "subpath",
138     "subsize",
139     "substep", "substeps",
140     "targetless",
141     "textbox", "textboxes",
142     "tilemode",
143     "timestamp", "timestamps",
144     "timestep", "timesteps",
145     "un",
146     "unbake",
147     "uncomment",
148     "undeformed",
149     "undistort", "undistortion",
150     "ungroup",
151     "unhide",
152     "unindent",
153     "unkeyed",
154     "unpremultiply",
155     "unprojected",
156     "unreacted",
157     "unregister",
158     "unselected",
159     "unsubdivided",
160     "unshadowed",
161     "unspill",
162     "unstitchable",
163     "vectorscope",
164     "worldspace",
165     "workflow",
166
167     # Neologisms, slangs
168     "automagic", "automagically",
169     "blobby",
170     "blockiness", "blocky",
171     "collider", "colliders",
172     "deformer", "deformers",
173     "determinator",
174     "editability",
175     "keyer",
176     "lacunarity",
177     "numerics",
178     "occluder",
179     "passepartout",
180     "perspectively",
181     "polygonization",
182     "selectability",
183     "slurph",
184     "trackability",
185     "transmissivity",
186     "rasterized", "rasterization",
187     "renderer", "renderable", "renderability",
188
189     # Abbreviations
190     "aero",
191     "amb",
192     "anim",
193     "bool",
194     "calc",
195     "config", "configs",
196     "const",
197     "coord", "coords",
198     "degr",
199     "dof",
200     "dupli", "duplis",
201     "eg",
202     "esc",
203     "expr",
204     "fac",
205     "fra",
206     "frs",
207     "grless",
208     "http",
209     "init",
210     "kbit",
211     "lensdist",
212     "loc", "rot", "pos",
213     "lorem",
214     "luma",
215     "multicam",
216     "num",
217     "ok",
218     "orco",
219     "ortho",
220     "persp",
221     "pref", "prefs",
222     "prev",
223     "param",
224     "premul",
225     "quad", "quads",
226     "quat", "quats",
227     "recalc", "recalcs",
228     "refl",
229     "spec",
230     "struct", "structs",
231     "tex",
232     "tri", "tris",
233     "uv", "uvs", "uvw", "uw", "uvmap",
234     "vec",
235     "vert", "verts",
236     "vis",
237     "xyz", "xzy", "yxz", "yzx", "zxy", "zyx",
238     "xy", "xz", "yx", "yz", "zx", "zy",
239
240     # General computer/science terms
241     "boid", "boids",
242     "equisolid",
243     "euler", "eulers",
244     "hashable",
245     "intrinsics",
246     "isosurface",
247     "jitter", "jittering", "jittered",
248     "keymap", "keymaps",
249     "lambertian",
250     "laplacian",
251     "metadata",
252     "nand", "xnor",
253     "normals",
254     "numpad",
255     "octree",
256     "opengl",
257     "pulldown", "pulldowns",
258     "quantized",
259     "samplerate",
260     "scrollback",
261     "scrollbar",
262     "scroller",
263     "searchable",
264     "spacebar",
265     "tooltip", "tooltips",
266     "trackpad",
267     "unicode",
268     "viewport", "viewports",
269     "viscoelastic",
270     "wildcard", "wildcards",
271
272     # General computer graphics terms
273     "anaglyph",
274     "bezier", "beziers",
275     "bicubic",
276     "bilinear",
277     "blackpoint", "whitepoint",
278     "blinn",
279     "bokeh",
280     "catadioptric",
281     "centroid",
282     "chrominance",
283     "codec", "codecs",
284     "collada",
285     "compositing",
286     "crossfade",
287     "deinterlace",
288     "dropoff",
289     "eigenvectors",
290     "equirectangular",
291     "fisheye",
292     "framerate",
293     "gimbal",
294     "grayscale",
295     "icosphere",
296     "lightmap",
297     "lossless", "lossy",
298     "midtones",
299     "mipmap", "mipmaps", "mip",
300     "ngon", "ngons",
301     "nurb", "nurbs",
302     "perlin",
303     "phong",
304     "radiosity",
305     "raytrace", "raytracing", "raytraced",
306     "renderfarm",
307     "shader", "shaders",
308     "specular", "specularity",
309     "spillmap",
310     "sobel",
311     "tonemap",
312     "toon",
313     "timecode",
314     "voronoi",
315     "voxel", "voxels",
316     "wireframe",
317     "zmask",
318     "ztransp",
319
320     # Blender terms
321     "bbone",
322     "breakdowner",
323     "bspline",
324     "bweight",
325     "colorband",
326     "datablock", "datablocks",
327     "dopesheet",
328     "dupliface", "duplifaces",
329     "dupliframe", "dupliframes",
330     "dupliobject", "dupliob",
331     "dupligroup",
332     "duplivert",
333     "fcurve", "fcurves",
334     "fluidsim",
335     "frameserver",
336     "enum",
337     "keyframe", "keyframes", "keyframing", "keyframed",
338     "metaball", "metaballs",
339     "metaelement", "metaelements",
340     "metastrip", "metastrips",
341     "movieclip",
342     "nabla",
343     "navmesh",
344     "outliner",
345     "paintmap", "paintmaps",
346     "polygroup", "polygroups",
347     "poselib",
348     "pushpull",
349     "pyconstraint", "pyconstraints",
350     "shapekey", "shapekeys",
351     "shrinkfatten",
352     "shrinkwrap",
353     "softbody",
354     "stucci",
355     "sunsky",
356     "subsurf",
357     "texface",
358     "timeline", "timelines",
359     "tosphere",
360     "vcol", "vcols",
361     "vgroup", "vgroups",
362     "vinterlace",
363     "wetmap", "wetmaps",
364     "wpaint",
365
366     # Algorithm names
367     "beckmann",
368     "catmull",
369     "catrom",
370     "chebychev",
371     "kutta",
372     "lennard",
373     "minkowsky",
374     "minnaert",
375     "musgrave",
376     "nayar",
377     "netravali",
378     "oren",
379     "prewitt",
380     "runge",
381     "verlet",
382     "worley",
383
384     # Acronyms
385     "aa", "msaa",
386     "api",
387     "asc", "cdl",
388     "ascii",
389     "atrac",
390     "bw",
391     "ccd",
392     "cmd",
393     "cpus",
394     "ctrl",
395     "cw", "ccw",
396     "dev",
397     "djv",
398     "dpi",
399     "dvar",
400     "dx",
401     "fh",
402     "fov",
403     "fft",
404     "gfx",
405     "gl",
406     "glsl",
407     "gpl",
408     "gpu", "gpus",
409     "hc",
410     "hdr",
411     "hh", "mm", "ss", "ff", # hh:mm:ss:ff timecode
412     "hsv", "hsva",
413     "id",
414     "itu",
415     "lhs",
416     "lmb", "mmb", "rmb",
417     "mux",
418     "ndof",
419     "ppc",
420     "px",
421     "qmc",
422     "rgb", "rgba",
423     "rhs",
424     "rv",
425     "sdl",
426     "sl",
427     "smpte",
428     "svn",
429     "ui",
430     "unix",
431     "vbo", "vbos",
432     "ycc", "ycca",
433     "yuv", "yuva",
434
435     # Blender acronyms
436     "bge",
437     "bli",
438     "bvh",
439     "dbvt",
440     "dop",  # BLI K-Dop BVH
441     "ik",
442     "nla",
443     "qbvh",
444     "rna",
445     "rvo",
446     "simd",
447     "sph",
448     "svbvh",
449
450     # CG acronyms
451     "ao",
452     "bsdf",
453     "ior",
454     "mocap",
455
456     # Files types/formats
457     "avi",
458     "attrac",
459     "autodesk",
460     "bmp",
461     "btx",
462     "cineon",
463     "dpx",
464     "dxf",
465     "eps",
466     "exr",
467     "fbx",
468     "ffmpeg",
469     "flac",
470     "gzip",
471     "ico",
472     "jpg", "jpeg",
473     "matroska",
474     "mdd",
475     "mkv",
476     "mpeg", "mjpeg",
477     "mtl",
478     "ogg",
479     "openjpeg",
480     "piz",
481     "png",
482     "po",
483     "quicktime",
484     "rle",
485     "sgi",
486     "stl",
487     "svg",
488     "targa", "tga",
489     "tiff",
490     "theora",
491     "vorbis",
492     "wav",
493     "xiph",
494     "xml",
495     "xna",
496     "xvid",
497 }