ClassnameCopyPackageCommand.getPackage()   A
last analyzed

Complexity

Conditions 4

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

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