<file_sep>HalfImageSize
=============

## HalfImageSizeについて

Sublime Text2用のプラグインです。  
img要素のwidth, heightの値を半分にします。  
スマホサイトを作る場合に便利な痒いところに手が届くプラグインとなっています。

## 使い方

以下の様なimg要素に対して
```html
		<img src="hoge.jpg" width="100" height="100" />
```

img要素を選択した後、<kbd>ctrl</kbd>+<kbd>alt</kbd>+<kbd>h</kbd>を押すことで	
```html
		<img src="hoge.jpg" width="50" height="50" />
```
とwidth, heightの値が半分になります。

因みに要素を選択しなくても<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>h</kbd>を押すことで  
現在の**行**に対してwidth, heightの値を半分にすることができます。

また、<kbd>ctrl</kbd>+<kbd>alt</kbd>+<kbd>shift</kbd>+<kbd>h</kbd>を押すことで
現在の**ファイル**に対してwidth, heightの値を半分にします。
<file_sep>import sublime, sublime_plugin, re, math

wh_matcher = re.compile(r'(width|height)=\"(\d*)\"');

def halveWidthHeightNum(matchobj):
	halved_num = math.ceil(int(matchobj.group(2), 10) / 2)
	halved_string = '%s="%d"' % (matchobj.group(1), halved_num)
	return halved_string

def moveCaretPosition(self, point):
	self.view.sel().clear()
	self.view.sel().add(sublime.Region(point))

class HalfImageSizeCommand(sublime_plugin.TextCommand):
	def run(self, edit):

		selected_region = self.view.sel()[0]
		selected_string = self.view.substr(selected_region)

		halved_string = wh_matcher.sub(halveWidthHeightNum, selected_string)

		self.view.replace(edit, selected_region, halved_string)

class HalfImageSizeLineCommand(sublime_plugin.TextCommand):
	def run(self, edit):

		# get current caret position
		current_caret_position = self.view.sel()[0].begin()
		current_line_begin_point = self.view.line(current_caret_position).begin()
		current_line_end_point = self.view.line(current_caret_position).end()

		# selected current line charactors
		current_line_region = sublime.Region(current_line_begin_point, current_line_end_point)
		current_line_string = self.view.substr(current_line_region)

		halved_string = wh_matcher.sub(halveWidthHeightNum, current_line_string)

		self.view.replace(edit, current_line_region, halved_string)
		moveCaretPosition(self, current_caret_position)


class HalfImageSizeAllCommand(sublime_plugin.TextCommand):
	def run(self, edit):

		# get current caret position

		# selected all charactors
		all_region = sublime.Region(0, self.view.size())
		selected_string = self.view.substr(all_region)
		current_caret_position = self.view.sel()[0].begin()

		halved_string = wh_matcher.sub(halveWidthHeightNum, selected_string)

		self.view.replace(edit, all_region, halved_string)
		moveCaretPosition(self, current_caret_position)
