tagen 1.1.7 → 2.0.0
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.
- 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
|
-
|