-
Notifications
You must be signed in to change notification settings - Fork 2
/
ClassName.py
74 lines (62 loc) · 2.16 KB
/
ClassName.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import sublime
import sublime_plugin
import os
import os.path
class ClassNameCommand(sublime_plugin.WindowCommand):
def getFilePath(self, paths=None):
if paths:
file = '*'.join(paths)
else:
view = sublime.active_window().active_view()
file = view.file_name() if view else None
return file
class ClassnameCopyCommand(ClassNameCommand):
def run(self, paths=None):
file = self.getFilePath(paths)
fullname = self.getClassName(file) if file else None
if fullname:
settings = sublime.load_settings('ClassName.sublime-settings')
prefix = settings.get('classname_prefix')
suffix = settings.get('classname_suffix')
prefix = prefix if prefix else ''
suffix = suffix if suffix else ''
fullname = prefix + fullname + suffix
sublime.set_clipboard(fullname)
sublime.status_message("Copied class full name: " + fullname)
else:
sublime.status_message("Can not find class name")
def getClassName(self, file):
if not file:
return None
folders = sublime.active_window().folders()
(path, ext) = os.path.splitext(file)
extLen = len(ext)
for dir in folders:
if 0 == file.find(dir):
fullname = file[len(dir)+1:]
if extLen > 0:
fullname = fullname[0:-extLen]
fullname = fullname.replace(os.sep, sublime.load_settings('ClassName.sublime-settings').get('namespace_separator'))
return fullname
return None
def is_visible(self, paths=None):
file = self.getFilePath(paths)
return os.path.isfile(file) if file else False
class ClassnameCopyPackageCommand(ClassNameCommand):
def run(self, paths=None):
file = self.getFilePath(paths)
package = self.getPackage(file) if file else None
if package:
sublime.set_clipboard(package)
sublime.status_message("Copied class package path: " + package)
else:
sublime.status_message("Can not find package")
def getPackage(self, file):
file = file if os.path.isdir(file) else os.path.dirname(file)
folders = sublime.active_window().folders()
for dir in folders:
if 0 == file.find(dir):
package = file[len(dir)+1:]
package = package.replace(os.sep, sublime.load_settings('ClassName.sublime-settings').get('namespace_separator'))
return package
return None