kang 0.1.0alpha.2 → 0.1.0alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/bin/kang +1 -1
- data/lib/kang/cli.rb +1 -1
- data/lib/kang/colors.rb +67 -0
- data/lib/kang/controller.rb +1 -1
- data/lib/kang/data.rb +5 -5
- data/lib/kang/offset_data.rb +11 -3
- data/lib/kang/tags.rb +29 -0
- data/lib/kang/version.rb +2 -2
- data/lib/kang/view.rb +23 -10
- data/lib/kang.rb +3 -1
- metadata +81 -13
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MjdhMTUzMzVlOTVkYTdlYTkyOWZmNmNhYzZiYThjOWM0ZGVjZDk0MQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Y2Y2Y2YyNTc4ODhhZmEwNmQzM2NiOWQzYWFlZDg1NWNiYzVmOWMxNA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MzgzYWU3NTBmYTFhMzU3Yjk5ODFjMWViMmU4NDQ5MWNhYTAxMGRiNDBlMDVm
|
10
|
+
MzVlM2Q5NDE5ZTJiZWNmYzEzNDc2MjRkYTRhNTNiNDkxN2JjYTEzOTVkNjlk
|
11
|
+
YWI4OGE2NzVkNDQ1OThmOWUwMDQ0OTMxZjAyMDFkOTQ3YmRhYjk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZjZkZTQ5OTI5Yjk4Njc4NDY1NTIzZTViNTA1MTAxNzZlY2JkMjU3MDY5N2Mw
|
14
|
+
NmFhNTFmYWViNTBmNWFmZWQyYjE5YWNlMjRkMzliNTNhMzMxZTI5OTg4MTA5
|
15
|
+
YjQ0ZWRjYmMwNDczMGZiNTQ4MWE5ZTFkNmRiNDEwMjJhODRkMmU=
|
data/bin/kang
CHANGED
data/lib/kang/cli.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# cli.rb - Main executable for GUI interface
|
3
3
|
#
|
4
4
|
# ====================================================================
|
5
|
-
# Copyright (c)
|
5
|
+
# Copyright (c) 2013 Tony Doan <tdoan@tdoan.com>. All rights reserved.
|
6
6
|
#
|
7
7
|
# This software is licensed as described in the file COPYING, which
|
8
8
|
# you should have received as part of this distribution. The terms
|
data/lib/kang/colors.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
class Colors
|
2
|
+
def initialize(initial_size=nil, options={})
|
3
|
+
valid_options = [:saturation,:value,:starting_hue,:range]
|
4
|
+
default_options = {saturation:0.3, value:0.8, :starting_hue=>rand, :range=>256}
|
5
|
+
options.keys.each do |k|
|
6
|
+
raise ArgumentError, "Unknown option: #{k}" unless valid_options.include? k
|
7
|
+
end
|
8
|
+
default_options.merge!(options)
|
9
|
+
[:saturation, :value, :starting_hue].each do |k|
|
10
|
+
raise ArgumentError, "The option \"#{k.to_s}\" must be between 0 and 1" if((default_options[k] > 1) or (default_options[k] < 0))
|
11
|
+
end
|
12
|
+
@golden_ratio_conjugate = 0.618033988749895
|
13
|
+
@h = default_options[:starting_hue]
|
14
|
+
@saturation = default_options[:saturation]
|
15
|
+
@value = default_options[:value]
|
16
|
+
@colors = []
|
17
|
+
@range = default_options[:range]
|
18
|
+
unless initial_size.nil?
|
19
|
+
initial_size.times do
|
20
|
+
self.next
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.to_hex(rgb)
|
26
|
+
rgb.collect{|n| n.to_s(16).upcase}.join
|
27
|
+
end
|
28
|
+
|
29
|
+
def hsv_to_rgb(h, s, v)
|
30
|
+
h_i = (h*6).to_i
|
31
|
+
f = h*6 - h_i
|
32
|
+
p = v * (1 - s)
|
33
|
+
q = v * (1 - f*s)
|
34
|
+
t = v * (1 - (1 - f) * s)
|
35
|
+
r, g, b = v, t, p if h_i==0
|
36
|
+
r, g, b = q, v, p if h_i==1
|
37
|
+
r, g, b = p, v, t if h_i==2
|
38
|
+
r, g, b = p, q, v if h_i==3
|
39
|
+
r, g, b = t, p, v if h_i==4
|
40
|
+
r, g, b = v, p, q if h_i==5
|
41
|
+
[(r*@range).to_i, (g*@range).to_i, (b*@range).to_i]
|
42
|
+
end
|
43
|
+
|
44
|
+
def each(&block)
|
45
|
+
@colors.each(&block)
|
46
|
+
end
|
47
|
+
|
48
|
+
def [](i)
|
49
|
+
if @colors.size-1 < i
|
50
|
+
diff = i - @colors.size + 1
|
51
|
+
puts "growing #{diff}"
|
52
|
+
(diff).times do
|
53
|
+
puts "."
|
54
|
+
self.next
|
55
|
+
end
|
56
|
+
end
|
57
|
+
@colors[i]
|
58
|
+
end
|
59
|
+
|
60
|
+
def next
|
61
|
+
@h += @golden_ratio_conjugate
|
62
|
+
@h %= 1
|
63
|
+
c = hsv_to_rgb(@h, @saturation, @value)
|
64
|
+
@colors << c
|
65
|
+
c
|
66
|
+
end
|
67
|
+
end
|
data/lib/kang/controller.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# controller.rb - Main executable for GUI interface
|
3
3
|
#
|
4
4
|
# ====================================================================
|
5
|
-
# Copyright (c)
|
5
|
+
# Copyright (c) 2013 Tony Doan <tdoan@tdoan.com>. All rights reserved.
|
6
6
|
#
|
7
7
|
# This software is licensed as described in the file COPYING, which
|
8
8
|
# you should have received as part of this distribution. The terms
|
data/lib/kang/data.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# data.rb - Main executable for GUI interface
|
3
3
|
#
|
4
4
|
# ====================================================================
|
5
|
-
# Copyright (c)
|
5
|
+
# Copyright (c) 2013 Tony Doan <tdoan@tdoan.com>. All rights reserved.
|
6
6
|
#
|
7
7
|
# This software is licensed as described in the file COPYING, which
|
8
8
|
# you should have received as part of this distribution. The terms
|
@@ -86,17 +86,17 @@ module Kang
|
|
86
86
|
@match ? true : false
|
87
87
|
end
|
88
88
|
|
89
|
-
def match_begin
|
89
|
+
def match_begin(group=0)
|
90
90
|
if @match
|
91
|
-
@match.begin(
|
91
|
+
@match.begin(group)
|
92
92
|
else
|
93
93
|
nil
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
-
def match_end
|
97
|
+
def match_end(group=0)
|
98
98
|
if @match
|
99
|
-
@match.end(
|
99
|
+
@match.end(group)
|
100
100
|
else
|
101
101
|
nil
|
102
102
|
end
|
data/lib/kang/offset_data.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# offset_data.rb - Main executable for GUI interface
|
3
3
|
#
|
4
4
|
# ====================================================================
|
5
|
-
# Copyright (c)
|
5
|
+
# Copyright (c) 2013 Tony Doan <tdoan@tdoan.com>. All rights reserved.
|
6
6
|
#
|
7
7
|
# This software is licensed as described in the file COPYING, which
|
8
8
|
# you should have received as part of this distribution. The terms
|
@@ -20,11 +20,19 @@ module Kang
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def begin(i)
|
23
|
-
@match_data.begin(i)
|
23
|
+
if @match_data.begin(i)
|
24
|
+
@match_data.begin(i) + @offset
|
25
|
+
else
|
26
|
+
@offset
|
27
|
+
end
|
24
28
|
end
|
25
29
|
|
26
30
|
def end(i)
|
27
|
-
@match_data.end(i)
|
31
|
+
if @match_data.end(i)
|
32
|
+
@match_data.end(i) + @offset
|
33
|
+
else
|
34
|
+
@offset
|
35
|
+
end
|
28
36
|
end
|
29
37
|
|
30
38
|
def length
|
data/lib/kang/tags.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
module Kang
|
2
|
+
class Tags
|
3
|
+
def initialize(view)
|
4
|
+
@view=view
|
5
|
+
@colors = Colors.new(5,range: 65545)
|
6
|
+
@tags = {}
|
7
|
+
end
|
8
|
+
|
9
|
+
def[](i)
|
10
|
+
tag = nil
|
11
|
+
begin
|
12
|
+
tag_name = "color#{i}"
|
13
|
+
tag = @tags.fetch(tag_name)
|
14
|
+
rescue KeyError
|
15
|
+
c = @colors[i]
|
16
|
+
puts c.inspect
|
17
|
+
color = Gdk::Color.new(*c)
|
18
|
+
puts color.to_s
|
19
|
+
tag = Gtk::TextTag.new(tag_name)
|
20
|
+
tag.foreground='black'
|
21
|
+
tag.background_gdk=color
|
22
|
+
@tags[tag_name] = tag
|
23
|
+
@view.buffer.tag_table.add(tag)
|
24
|
+
end
|
25
|
+
#@view.buffer.create_tag("colors",{ "foreground" => "green", "background" => "gray" })
|
26
|
+
tag
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/kang/version.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# version.rb - Main executable for GUI interface
|
3
3
|
#
|
4
4
|
# ====================================================================
|
5
|
-
# Copyright (c)
|
5
|
+
# Copyright (c) 2013 Tony Doan <tdoan@tdoan.com>. All rights reserved.
|
6
6
|
#
|
7
7
|
# This software is licensed as described in the file COPYING, which
|
8
8
|
# you should have received as part of this distribution. The terms
|
@@ -13,5 +13,5 @@
|
|
13
13
|
#
|
14
14
|
|
15
15
|
module Kang
|
16
|
-
VERSION = "0.1.0alpha.
|
16
|
+
VERSION = "0.1.0alpha.3"
|
17
17
|
end
|
data/lib/kang/view.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# view.rb - Main executable for GUI interface
|
3
3
|
#
|
4
4
|
# ====================================================================
|
5
|
-
# Copyright (c)
|
5
|
+
# Copyright (c) 2013 Tony Doan <tdoan@tdoan.com>. All rights reserved.
|
6
6
|
#
|
7
7
|
# This software is licensed as described in the file COPYING, which
|
8
8
|
# you should have received as part of this distribution. The terms
|
@@ -42,8 +42,7 @@ module Kang
|
|
42
42
|
|
43
43
|
@matchview = Gtk::TextView.new
|
44
44
|
@matchview.buffer.text = match_text
|
45
|
-
|
46
|
-
@matchview.buffer.create_tag("colors",{ "foreground" => "green", "background" => "gray" })
|
45
|
+
@tags = Tags.new(@matchview)
|
47
46
|
|
48
47
|
wintop.add(@regview)
|
49
48
|
wintop.set_size_request(400,100)
|
@@ -52,8 +51,12 @@ module Kang
|
|
52
51
|
|
53
52
|
@list_store = Gtk::ListStore.new(String, String)
|
54
53
|
treeview = Gtk::TreeView.new(@list_store)
|
55
|
-
|
56
|
-
|
54
|
+
renderer = Gtk::CellRendererText.new
|
55
|
+
column0 = Gtk::TreeViewColumn.new("#",renderer, {:text => 0})
|
56
|
+
column1 = Gtk::TreeViewColumn.new("Match",renderer, {:text => 1})
|
57
|
+
column1.set_cell_data_func(renderer) do |tvc,cell,model,iter|
|
58
|
+
cell.background_gdk = @tags[iter.path.to_str.to_i].background_gdk
|
59
|
+
end
|
57
60
|
treeview.append_column(column0)
|
58
61
|
treeview.append_column(column1)
|
59
62
|
treeview.selection.mode = Gtk::SELECTION_NONE
|
@@ -104,12 +107,22 @@ module Kang
|
|
104
107
|
private
|
105
108
|
def update_tag
|
106
109
|
remove_tag
|
107
|
-
if @data.
|
108
|
-
|
109
|
-
|
110
|
+
if @data.match_group_count
|
111
|
+
@data.match_group_count.times do |i|
|
112
|
+
paint_tag(i)
|
113
|
+
end
|
114
|
+
else
|
115
|
+
paint_tag
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def paint_tag(group=0)
|
120
|
+
if @data.regex_valid? and @data.match? and @data.match_begin(group)
|
121
|
+
tag_begin = @data.match_begin(group)
|
122
|
+
tag_end = @data.match_end(group)
|
110
123
|
b = @matchview.buffer.get_iter_at_offset(tag_begin)
|
111
124
|
e = @matchview.buffer.get_iter_at_offset(tag_end)
|
112
|
-
@matchview.buffer.apply_tag(
|
125
|
+
@matchview.buffer.apply_tag(@tags[group],b,e)
|
113
126
|
end
|
114
127
|
end
|
115
128
|
|
@@ -143,7 +156,7 @@ module Kang
|
|
143
156
|
buffer = @matchview.buffer
|
144
157
|
bstart = buffer.get_iter_at_offset(0)
|
145
158
|
bend = buffer.get_iter_at_offset(buffer.text.size)
|
146
|
-
@matchview.buffer.
|
159
|
+
@matchview.buffer.remove_all_tags(bstart,bend)
|
147
160
|
end
|
148
161
|
|
149
162
|
def update_spin_count
|
data/lib/kang.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
# kang.rb - Main executable for GUI interface
|
5
5
|
#
|
6
6
|
# ====================================================================
|
7
|
-
# Copyright (c)
|
7
|
+
# Copyright (c) 2013 Tony Doan <tdoan@tdoan.com>. All rights reserved.
|
8
8
|
#
|
9
9
|
# This software is licensed as described in the file COPYING, which
|
10
10
|
# you should have received as part of this distribution. The terms
|
@@ -18,6 +18,8 @@ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname
|
|
18
18
|
require "kang/controller"
|
19
19
|
require "kang/view"
|
20
20
|
require "kang/data"
|
21
|
+
require "kang/colors"
|
22
|
+
require "kang/tags"
|
21
23
|
require "rubygems"
|
22
24
|
begin
|
23
25
|
require 'gtk2'
|
metadata
CHANGED
@@ -1,32 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0alpha.
|
5
|
-
prerelease: 5
|
4
|
+
version: 0.1.0alpha.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tony Doan
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-04-26 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: glib2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.2.5
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.2.5
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: atk
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.5
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.2.5
|
14
41
|
- !ruby/object:Gem::Dependency
|
15
42
|
name: gtk2
|
16
43
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
44
|
requirements:
|
19
|
-
- -
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.2.5
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.2.5
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pango
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.2.5
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.2.5
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: cairo
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.12.4
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.12.4
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: gdk_pixbuf2
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
20
88
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
89
|
+
version: 1.2.5
|
22
90
|
type: :runtime
|
23
91
|
prerelease: false
|
24
92
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
93
|
requirements:
|
27
|
-
- -
|
94
|
+
- - ~>
|
28
95
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
96
|
+
version: 1.2.5
|
30
97
|
description: The Ruby Regex Debugger. Put your regex in the top pane, and your match
|
31
98
|
text in the bottom pane. Kang will highlight the match text that matches and show
|
32
99
|
you any match groups you have created down the right hand side.
|
@@ -38,9 +105,11 @@ extra_rdoc_files: []
|
|
38
105
|
files:
|
39
106
|
- lib/kang.rb
|
40
107
|
- lib/kang/cli.rb
|
108
|
+
- lib/kang/colors.rb
|
41
109
|
- lib/kang/controller.rb
|
42
110
|
- lib/kang/data.rb
|
43
111
|
- lib/kang/offset_data.rb
|
112
|
+
- lib/kang/tags.rb
|
44
113
|
- lib/kang/version.rb
|
45
114
|
- lib/kang/view.rb
|
46
115
|
- COPYING
|
@@ -48,26 +117,25 @@ files:
|
|
48
117
|
- bin/kang
|
49
118
|
homepage: http://github.com/tdoan/kang
|
50
119
|
licenses: []
|
120
|
+
metadata: {}
|
51
121
|
post_install_message:
|
52
122
|
rdoc_options: []
|
53
123
|
require_paths:
|
54
124
|
- lib
|
55
125
|
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
126
|
requirements:
|
58
127
|
- - ! '>='
|
59
128
|
- !ruby/object:Gem::Version
|
60
129
|
version: '0'
|
61
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
131
|
requirements:
|
64
132
|
- - ! '>'
|
65
133
|
- !ruby/object:Gem::Version
|
66
134
|
version: 1.3.1
|
67
135
|
requirements: []
|
68
136
|
rubyforge_project:
|
69
|
-
rubygems_version:
|
137
|
+
rubygems_version: 2.0.3
|
70
138
|
signing_key:
|
71
|
-
specification_version:
|
139
|
+
specification_version: 4
|
72
140
|
summary: A visual regex debugger
|
73
141
|
test_files: []
|