tagen 1.1.7 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -1
- data/.travis.yml +5 -0
- data/CHANGELOG +6 -0
- data/Gemfile +2 -3
- data/Gemfile.lock +13 -15
- data/README.md +20 -39
- data/Rakefile +2 -1
- data/benchmark/a.rb +14 -0
- data/lib/tagen/core.rb +17 -22
- data/lib/tagen/core/array.rb +5 -109
- data/lib/tagen/core/array/append.rb +3 -0
- data/lib/tagen/core/array/delete_values.rb +43 -0
- data/lib/tagen/core/array/extract_options.rb +35 -94
- data/lib/tagen/core/class.rb +1 -0
- data/lib/tagen/core/enumerable.rb +15 -18
- data/lib/tagen/core/enumerator.rb +22 -12
- data/lib/tagen/core/exception.rb +5 -3
- data/lib/tagen/core/file.rb +1 -0
- data/lib/tagen/core/hash.rb +4 -39
- data/lib/tagen/core/integer.rb +2 -0
- data/lib/tagen/core/io.rb +59 -26
- data/lib/tagen/core/kernel.rb +5 -64
- data/lib/tagen/core/kernel/deprecate.rb +5 -0
- data/lib/tagen/core/kernel/platform.rb +46 -0
- data/lib/tagen/core/kernel/shell.rb +45 -0
- data/lib/tagen/core/module.rb +9 -11
- data/lib/tagen/core/numeric.rb +4 -2
- data/lib/tagen/core/object.rb +6 -21
- data/lib/tagen/core/process.rb +6 -4
- data/lib/tagen/core/re.rb +2 -2
- data/lib/tagen/core/string.rb +12 -47
- data/lib/tagen/core/time.rb +30 -38
- data/lib/tagen/erb.rb +10 -8
- data/lib/tagen/net/http.rb +33 -29
- data/lib/tagen/pathname.rb +1 -5
- data/lib/tagen/rbconfig.rb +8 -0
- data/lib/tagen/socket.rb +8 -2
- data/lib/tagen/uri.rb +9 -0
- data/lib/tagen/version.rb +1 -1
- data/lib/tagen/vim.rb +8 -8
- data/lib/tagen/xmpp4r.rb +23 -23
- data/spec/spec_helper.rb +23 -17
- data/spec/tagen/core/array/delete_values_spec.rb +19 -0
- data/spec/tagen/core/array/extract_options_spec.rb +9 -29
- data/spec/tagen/core/enumerable_spec.rb +9 -0
- data/spec/tagen/core/enumerator_spec.rb +10 -12
- data/spec/tagen/core/exception_spec.rb +14 -9
- data/spec/tagen/core/io_spec.rb +20 -0
- data/spec/tagen/core/kernel/platform_spec.rb +92 -0
- data/spec/tagen/core/kernel/shell_spec.rb +27 -0
- data/spec/tagen/core/numeric_spec.rb +10 -0
- data/spec/tagen/core/process_spec.rb +14 -0
- data/spec/tagen/core/re_spec.rb +9 -0
- data/spec/tagen/core/string_spec.rb +9 -0
- data/spec/tagen/core/time_spec.rb +6 -51
- data/spec/tagen/erb_spec.rb +3 -10
- data/spec/tagen/pathname_spec.rb +11 -0
- data/spec/tagen/rbconfig_spec.rb +11 -0
- data/spec/tagen/socket_spec.rb +7 -5
- data/spec/tagen/uri_spec.rb +13 -0
- data/tagen.gemspec +3 -4
- metadata +45 -51
- data/TODO +0 -1
- data/docs/Architecture.md +0 -17
- data/docs/CoreExtensions.md +0 -40
- data/docs/ExtraExtensions.md +0 -20
- data/lib/tagen/RMagick.rb +0 -12
- data/lib/tagen/audioinfo.rb +0 -22
- data/lib/tagen/cairo.rb +0 -811
- data/lib/tagen/core/extend_hash.rb +0 -46
- data/lib/tagen/core/marshal.rb +0 -34
- data/lib/tagen/core/open_option.rb +0 -161
- data/lib/tagen/core/string/pyformat.rb +0 -336
- data/lib/tagen/core/symbol.rb +0 -8
- data/lib/tagen/date.rb +0 -80
- data/lib/tagen/gdk_pixbuf2.rb +0 -26
- data/lib/tagen/gtk2.rb +0 -122
- data/lib/tagen/ncurses.rb +0 -246
- data/lib/tagen/poppler.rb +0 -48
- data/lib/tagen/tree.rb +0 -77
- data/lib/tagen/xmpp4r/roster.rb +0 -20
- data/lib/tagen/yaml.rb +0 -38
- data/spec/tagen/cairo_spec.rb +0 -137
- data/spec/tagen/core/array_spec.rb +0 -42
- data/spec/tagen/core/extend_hash_spec.rb +0 -54
- data/spec/tagen/core/hash_spec.rb +0 -10
- data/spec/tagen/core/module_spec.rb +0 -14
- data/spec/tagen/core/open_option_spec.rb +0 -83
- data/spec/tagen/core/string/pyformat_spec.rb +0 -98
- data/spec/tagen/core/symbol_spec.rb +0 -15
- data/spec/tagen/core_spec.rb +0 -6
- data/spec/tagen/date_spec.rb +0 -146
data/lib/tagen/poppler.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
require "poppler"
|
2
|
-
=begin
|
3
|
-
* **Install**: Ruby-Gnome
|
4
|
-
=end
|
5
|
-
module Poppler
|
6
|
-
|
7
|
-
=begin
|
8
|
-
Additional Method List
|
9
|
-
---------------------
|
10
|
-
* \#npages: _alias from size_
|
11
|
-
=end
|
12
|
-
class Document
|
13
|
-
alias npages size
|
14
|
-
# get width height
|
15
|
-
def wh; self[0].size end
|
16
|
-
# get width
|
17
|
-
def w; wh[0] end
|
18
|
-
# get height
|
19
|
-
def h; wh[1] end
|
20
|
-
end # class Document
|
21
|
-
|
22
|
-
=begin
|
23
|
-
Additional Method List
|
24
|
-
----------------------
|
25
|
-
* \#wh: _alias from size_
|
26
|
-
=end
|
27
|
-
class Page
|
28
|
-
alias wh size
|
29
|
-
# get width
|
30
|
-
def w; size[0] end
|
31
|
-
# get height
|
32
|
-
def h; size[1] end
|
33
|
-
|
34
|
-
# used when 'cairo' is installed
|
35
|
-
#
|
36
|
-
# @return [Cairo::Context]
|
37
|
-
def cairo_context
|
38
|
-
require "cairo"
|
39
|
-
require_relative "cairo"
|
40
|
-
surface = Cairo::ImageSurface.new(*self.wh)
|
41
|
-
ctx = Cairo::Context.new(surface)
|
42
|
-
render(ctx)
|
43
|
-
ctx
|
44
|
-
end # def cairo_context
|
45
|
-
|
46
|
-
end # class Page
|
47
|
-
|
48
|
-
end # module Poppler
|
data/lib/tagen/tree.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
require "tree"
|
2
|
-
|
3
|
-
=begin
|
4
|
-
* **Install**: gem(rubytree)
|
5
|
-
=end
|
6
|
-
module Tree
|
7
|
-
Fatal = Class.new Exception
|
8
|
-
Error = Class.new Exception
|
9
|
-
ENoNode = Class.new Error
|
10
|
-
|
11
|
-
class TreeNode
|
12
|
-
|
13
|
-
# get a Node name
|
14
|
-
def get name
|
15
|
-
return name if self.class===name
|
16
|
-
treetage = Array===name ? name : name.split(/ +/)
|
17
|
-
|
18
|
-
treetage.gach self.root do |n,i,m|
|
19
|
-
if m[n]
|
20
|
-
m[n]
|
21
|
-
else
|
22
|
-
raise ENoNode, "'#{n}` node doesn't exists for root `#{root.name}'"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# set a Node name
|
28
|
-
def name= name
|
29
|
-
old = @name
|
30
|
-
@name = name
|
31
|
-
children_hash = parent.instance_variable.get :@children_hash
|
32
|
-
children_hash.delete old
|
33
|
-
children_hash[@name] = self
|
34
|
-
end
|
35
|
-
|
36
|
-
alias original_parentage parentage
|
37
|
-
# * default return nil for root
|
38
|
-
# * now return [] for root
|
39
|
-
def parentage
|
40
|
-
is_root? ? [] : original_parentage
|
41
|
-
end
|
42
|
-
|
43
|
-
# parentage in reverse
|
44
|
-
# @see parentage
|
45
|
-
def treetage
|
46
|
-
([self.name] + self.parentage.map{|v| v.name}).reverse[1..-1]
|
47
|
-
end
|
48
|
-
|
49
|
-
# return "a b c"
|
50
|
-
def treename
|
51
|
-
self.treetage.join(" ")
|
52
|
-
end
|
53
|
-
|
54
|
-
def __compare other
|
55
|
-
raise ArgumentError, "comparison '{self}` with '{other}` failed"
|
56
|
-
.format(self.class, other) unless self.class === other
|
57
|
-
|
58
|
-
a = self.treetage
|
59
|
-
b = other.treetage
|
60
|
-
|
61
|
-
if a.length==b.length
|
62
|
-
return 0 if a==b
|
63
|
-
elsif a.length < b.length
|
64
|
-
return 1 if a==b[0...a.length]
|
65
|
-
elsif a.length>b.length
|
66
|
-
return -1 if a[0...b.length]==b
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
# is same node ?
|
71
|
-
def same?(other) __compare(other)==0 ? true : false end
|
72
|
-
def ancestor_of?(other) __compare(other)==1 ? true : false end
|
73
|
-
def descendant_of?(other) __compare(other)==-1 ? true : false end
|
74
|
-
def ancestor_in?(other) [0, 1].include?(__compare(other)) ? true : false end
|
75
|
-
def descendant_in?(other) [0,-1].include?(__compare(other)) ? true : false end
|
76
|
-
end
|
77
|
-
end
|
data/lib/tagen/xmpp4r/roster.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
* **Install**: gem(xmpp4r)
|
3
|
-
added:
|
4
|
-
#unsubscribe
|
5
|
-
=end
|
6
|
-
|
7
|
-
module Jabber
|
8
|
-
module Roster
|
9
|
-
class Helper
|
10
|
-
class RosterItem
|
11
|
-
|
12
|
-
# unsubscribe an item
|
13
|
-
def unsubscribe
|
14
|
-
pres = Presence.new.set_type(:unsubscribe).set_to(jid.strip)
|
15
|
-
@stream.send(pres)
|
16
|
-
end
|
17
|
-
end # class RosterItem
|
18
|
-
end # Helper
|
19
|
-
end # module Roster
|
20
|
-
end # module Jabber
|
data/lib/tagen/yaml.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require "yaml"
|
2
|
-
|
3
|
-
=begin
|
4
|
-
support #respond_to?(:path). e.g. Pa
|
5
|
-
|
6
|
-
YAML.load(Pa('/tmp/a'))
|
7
|
-
YAML.dump("x", Pa('/tmp/a'))
|
8
|
-
=end
|
9
|
-
module YAML
|
10
|
-
class << self
|
11
|
-
alias original_load load
|
12
|
-
alias original_dump dump
|
13
|
-
|
14
|
-
# add #path support
|
15
|
-
# @param [String,IO,#path] path
|
16
|
-
def load path
|
17
|
-
if path.respond_to?(:path)
|
18
|
-
path = path.path
|
19
|
-
open(path){|f| original_load(f)}
|
20
|
-
|
21
|
-
else
|
22
|
-
original_load path
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# add String, #path support
|
27
|
-
# @param [String,IO,#path] path
|
28
|
-
def dump obj, path
|
29
|
-
if path.respond_to?(:path)
|
30
|
-
path = path.path
|
31
|
-
open(path, "w+"){|f| original_dump(obj, f)}
|
32
|
-
else
|
33
|
-
original_dump obj, path
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
data/spec/tagen/cairo_spec.rb
DELETED
@@ -1,137 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
require "tagen/cairo"
|
3
|
-
|
4
|
-
include Cairo
|
5
|
-
|
6
|
-
tmpdir = Gile.dirname(__FILE__)+"/tmp"
|
7
|
-
Gile.rmdir!(tmpdir)
|
8
|
-
Gile.mkdir(tmpdir)
|
9
|
-
Gile.chdir(tmpdir)
|
10
|
-
#}}}1
|
11
|
-
DEBUG[0] = true
|
12
|
-
|
13
|
-
Test.skip do
|
14
|
-
skip :table
|
15
|
-
end
|
16
|
-
|
17
|
-
class Test_Context < Test
|
18
|
-
def test_du #{{{1
|
19
|
-
# (x_str,nil) (nil,y_str) (x_str, y_str), (x,y)
|
20
|
-
cr = Context.new(ImageSurface.new(200,200))
|
21
|
-
cr.scale(2,4)
|
22
|
-
cr.translate(10,10)
|
23
|
-
|
24
|
-
assert_equal 1, cr.tdu(2)
|
25
|
-
assert_equal 1, cr.tdu(nil, 4)
|
26
|
-
assert_equal [1,1], cr.tdu(2,4)
|
27
|
-
assert_equal [0,0], cr.du(20, 40)
|
28
|
-
end # test_du
|
29
|
-
#}}}1
|
30
|
-
def test___pos #< du #{{{1
|
31
|
-
cr = Context.new(ImageSurface.new(200,200))
|
32
|
-
cr.translate(2,4)
|
33
|
-
cr.scale(2,4)
|
34
|
-
__pos = cr.method(:__pos)
|
35
|
-
|
36
|
-
cr.xy 10,10
|
37
|
-
assert_equal [0, 10], __pos.call(0, 10)
|
38
|
-
assert_equal __pos.call(0, cr.du(nil,0)), __pos.call(0, :d0)
|
39
|
-
|
40
|
-
cr.xy 10,10
|
41
|
-
assert_equal [0, 20], __pos.call(0, "10")
|
42
|
-
assert_equal [0, 10+cr.tdu(nil,10)], __pos.call(0, :r10)
|
43
|
-
end
|
44
|
-
#}}}1
|
45
|
-
def test__angle #{{{1
|
46
|
-
cr = Context.new(ImageSurface.new(200,200))
|
47
|
-
__angle = cr.method(:__angle)
|
48
|
-
|
49
|
-
assert_equal 10 , __angle.call("10")
|
50
|
-
assert_equal [10, 10], __angle.call("10", "10")
|
51
|
-
assert_equal [10*Math::PI/180.0, 10], __angle.call(10, "10")
|
52
|
-
end
|
53
|
-
#}}}1
|
54
|
-
def test_bak #{{{1
|
55
|
-
cr = Context.new(ImageSurface.new(200,200))
|
56
|
-
# xy
|
57
|
-
cr.xy 0,0
|
58
|
-
cr.bak(:xy) do
|
59
|
-
cr.xy 10,10
|
60
|
-
end
|
61
|
-
assert_equal [0,0], cr.xy
|
62
|
-
|
63
|
-
# translate
|
64
|
-
cr.translate(3,3)
|
65
|
-
cr.bak(:translate) do
|
66
|
-
cr.translate(10,10)
|
67
|
-
end
|
68
|
-
assert_equal [0,0], cr.du(3,3)
|
69
|
-
cr.btranslate
|
70
|
-
|
71
|
-
# scale
|
72
|
-
cr.scale(2,4)
|
73
|
-
cr.bak(:scale) do
|
74
|
-
cr.scale(2,4)
|
75
|
-
end
|
76
|
-
assert_equal [1,1], cr.tdu(2, 4)
|
77
|
-
cr.dscale 1,1
|
78
|
-
|
79
|
-
# matrix
|
80
|
-
cr.scale(2,4)
|
81
|
-
cr.translate(10,10)
|
82
|
-
cr.bak(:matrix) do
|
83
|
-
cr.scale(2,4)
|
84
|
-
cr.translate(10,10)
|
85
|
-
end
|
86
|
-
assert_equal [0,0], cr.du(20,40)
|
87
|
-
assert_equal [1,1], cr.tdu(2,4)
|
88
|
-
cr.dscale 1,1
|
89
|
-
cr.btranslate
|
90
|
-
|
91
|
-
# size
|
92
|
-
cr.size=10
|
93
|
-
cr.bak(:size) do
|
94
|
-
cr.size=12
|
95
|
-
end
|
96
|
-
assert_equal 10, cr.size
|
97
|
-
|
98
|
-
# all
|
99
|
-
cr.size=10
|
100
|
-
cr.xy 0,0
|
101
|
-
cr.translate(3,3)
|
102
|
-
cr.bak(:all) do
|
103
|
-
cr.xy 10,10
|
104
|
-
cr.translate(10,10)
|
105
|
-
cr.size=12
|
106
|
-
end
|
107
|
-
assert_equal [0,0], cr.xy
|
108
|
-
assert_equal [0,0], cr.du(3,3)
|
109
|
-
assert_equal 10, cr.size
|
110
|
-
end # def test_bak
|
111
|
-
#}}}1
|
112
|
-
def test_table #{{{1
|
113
|
-
wh=[400,400]
|
114
|
-
img = Cairo::ImageSurface.new(*wh)
|
115
|
-
cr = Cairo::Context.new(img)
|
116
|
-
cr.scale(*wh)
|
117
|
-
cr.rectangle(0,0,1,1); cr.stroke
|
118
|
-
cr.font= "iYahei"
|
119
|
-
#============
|
120
|
-
|
121
|
-
datas = [
|
122
|
-
["你好","tag"],
|
123
|
-
["你好","tag"],
|
124
|
-
]
|
125
|
-
|
126
|
-
cr.dxy 20,20
|
127
|
-
cr.table(datas[0], border:1)
|
128
|
-
cr.dry 20
|
129
|
-
cr.table(datas, border:1)
|
130
|
-
#============
|
131
|
-
img.write("a.png")
|
132
|
-
`pic a.png`
|
133
|
-
end
|
134
|
-
#}}}1
|
135
|
-
end
|
136
|
-
|
137
|
-
=end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Array do
|
4
|
-
describe "#first!" do
|
5
|
-
it "runs ok" do
|
6
|
-
a = [0, 1, 2]
|
7
|
-
a.first!(2).should == [0, 1]
|
8
|
-
a.should == [2]
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "#last!" do
|
13
|
-
it "runs ok" do
|
14
|
-
a = [0, 1, 2]
|
15
|
-
a.last!(2).should == [1, 2]
|
16
|
-
a.should == [0]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "#find!" do
|
21
|
-
it "runs ok" do
|
22
|
-
a = [0, 1, 2]
|
23
|
-
a.find!{|v| v==1}.should == 1
|
24
|
-
a.should == [0,2]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "#find_all!" do
|
29
|
-
it "runs ok" do
|
30
|
-
a = [0, 1, 2]
|
31
|
-
a.find_all!{|v| v==0 or v ==2}.should == [0,2]
|
32
|
-
a.should == [1]
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
#describe "#grep" do
|
37
|
-
#it "supports array as an argument" do
|
38
|
-
#a = [:a, :b, :c]
|
39
|
-
#a.grep([:a, :b]).should == [:a, :b]
|
40
|
-
#end
|
41
|
-
#end
|
42
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require "tagen/core/extend_hash"
|
3
|
-
|
4
|
-
class ExtendHash
|
5
|
-
class << self
|
6
|
-
public :deep_convert
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe ExtendHash do
|
11
|
-
describe ".deep_convert" do
|
12
|
-
it "convert string key to symbol key" do
|
13
|
-
ExtendHash.deep_convert({"a" => 1, "b" => {"c" => 2}}).should == {a: 1, b: {c: 2}}
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe ".[]" do
|
18
|
-
it "convert Hash to ExtendHash with string key" do
|
19
|
-
ret = ExtendHash[a: 1, "b" => 2]
|
20
|
-
ret.should == {a: 1, b: 2}
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "#[]" do
|
25
|
-
it "convert string-key to symbol-key" do
|
26
|
-
h = ExtendHash.new
|
27
|
-
h.store(:ok, 1)
|
28
|
-
h["ok"].should == 1
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe "#[]=" do
|
33
|
-
it "convert string-key to symbol-key" do
|
34
|
-
h = ExtendHash.new
|
35
|
-
h["ok"] = 1
|
36
|
-
h[:ok] = 1
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe "#method_missing" do
|
41
|
-
it "#key" do
|
42
|
-
h = ExtendHash.new
|
43
|
-
h[:ok] = 1
|
44
|
-
h.ok.should == 1
|
45
|
-
end
|
46
|
-
|
47
|
-
it "#key=" do
|
48
|
-
h = ExtendHash.new
|
49
|
-
h.ok = 1
|
50
|
-
h.ok.should == 1
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|