xot 0.1.6 → 0.1.7
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 +7 -0
- data/{ChangeLog → README.md} +0 -0
- data/Rakefile +7 -6
- data/VERSION +1 -1
- data/ext/xot/extconf.rb +10 -49
- data/ext/xot/tester.cpp +93 -0
- data/include/xot.h +4 -1
- data/include/xot/exception.h +70 -0
- data/include/xot/ref.h +171 -41
- data/include/xot/string.h +35 -16
- data/include/xot/time.h +17 -0
- data/include/xot/util.h +26 -0
- data/lib/xot.rb +3 -2
- data/lib/xot/bit_flag.rb +52 -0
- data/lib/xot/extconf.rb +59 -0
- data/lib/xot/invoker.rb +48 -0
- data/lib/xot/module.rb +11 -7
- data/lib/xot/rake.rb +99 -14
- data/lib/xot/setter.rb +5 -6
- data/lib/xot/test.rb +20 -0
- data/src/debug.cpp +5 -1
- data/src/exception.cpp +89 -0
- data/src/string.cpp +39 -0
- data/src/time.cpp +24 -0
- data/task/ext.rake +13 -27
- data/task/lib.rake +20 -36
- data/task/mac.rake +45 -0
- data/test/helper.rb +6 -3
- data/test/test_bit_flag.rb +66 -0
- data/test/test_invoker.rb +41 -0
- data/test/test_setter.rb +3 -2
- data/xot.gemspec +3 -4
- metadata +26 -26
- data/.gitignore +0 -14
- data/README +0 -0
- data/lib/xot/load_path.rb +0 -28
- data/src/defs.cpp +0 -6
- data/task/git.rake +0 -32
- data/task/submodule.rake +0 -51
@@ -0,0 +1,66 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
|
4
|
+
require_relative 'helper'
|
5
|
+
|
6
|
+
|
7
|
+
class TestBitFlag < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def bit (*args)
|
10
|
+
Xot::BitFlag.bit *args
|
11
|
+
end
|
12
|
+
|
13
|
+
def flag (*args, &block)
|
14
|
+
bf = Xot::BitFlag.new *args, &block
|
15
|
+
bf.flag :bit1, bit(1)
|
16
|
+
bf.flag :bit2, bit(2)
|
17
|
+
bf.flag :bit3, bit(3)
|
18
|
+
bf.flag :bit5, bit(5)
|
19
|
+
bf.flag :all, bit(1, 2, 3, 5)
|
20
|
+
bf
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_bit ()
|
24
|
+
assert_equal 0b1, bit(0)
|
25
|
+
assert_equal 0b10, bit(1)
|
26
|
+
assert_equal 0b1000, bit(3)
|
27
|
+
assert_equal 0b1010, bit(1, 3)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_bits2symbols ()
|
31
|
+
assert_equal [], flag.bits2symbols(0)
|
32
|
+
assert_equal [:bit1], flag.bits2symbols(bit 1)
|
33
|
+
assert_equal [:bit2], flag.bits2symbols(bit 2)
|
34
|
+
assert_equal [:bit5], flag.bits2symbols(bit 5)
|
35
|
+
assert_equal [:bit1, :bit2], flag.bits2symbols(bit 1, 2)
|
36
|
+
assert_equal [:bit1, :bit5], flag.bits2symbols(bit 1, 5)
|
37
|
+
assert_equal [:bit3, :bit5], flag.bits2symbols(bit 3, 5)
|
38
|
+
assert_equal [:bit1, :bit2, :bit3, :bit5], flag.bits2symbols(bit 1, 2, 3, 5)
|
39
|
+
|
40
|
+
assert_raise(RuntimeError) {flag.bits2symbols(bit 0)}
|
41
|
+
assert_raise(RuntimeError) {flag.bits2symbols(bit 4)}
|
42
|
+
assert_raise(RuntimeError) {flag.bits2symbols(bit 6)}
|
43
|
+
assert_raise(RuntimeError) {flag.bits2symbols(bit 0, 1)}
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_symbols2bits ()
|
47
|
+
assert_equal bit(1), flag.symbols2bits(:bit1)
|
48
|
+
assert_equal bit(2), flag.symbols2bits(:bit2)
|
49
|
+
assert_equal bit(5), flag.symbols2bits(:bit5)
|
50
|
+
assert_equal bit(1, 2), flag.symbols2bits(:bit1, :bit2)
|
51
|
+
assert_equal bit(1, 5), flag.symbols2bits(:bit1, :bit5)
|
52
|
+
assert_equal bit(3, 5), flag.symbols2bits(:bit3, :bit5)
|
53
|
+
assert_equal bit(1, 2, 3, 5), flag.symbols2bits(:bit1, :bit2, :bit3, :bit5)
|
54
|
+
|
55
|
+
assert_equal 0, flag.symbols2bits(:none)
|
56
|
+
assert_equal 0, flag.symbols2bits(:no)
|
57
|
+
assert_equal 0, flag.symbols2bits(:none, :no)
|
58
|
+
|
59
|
+
assert_raise(RuntimeError) {flag.symbols2bits(:bit0)}
|
60
|
+
assert_raise(RuntimeError) {flag.symbols2bits(:bit4)}
|
61
|
+
assert_raise(RuntimeError) {flag.symbols2bits(:bit6)}
|
62
|
+
assert_raise(RuntimeError) {flag.symbols2bits(:bit0, :bit1)}
|
63
|
+
assert_raise(RuntimeError) {flag.symbols2bits(nil)}
|
64
|
+
end
|
65
|
+
|
66
|
+
end# TestBitFlag
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
|
4
|
+
require_relative 'helper'
|
5
|
+
|
6
|
+
|
7
|
+
class TestInvoker < Test::Unit::TestCase
|
8
|
+
|
9
|
+
class Invoker
|
10
|
+
include Xot::Invoker
|
11
|
+
end
|
12
|
+
|
13
|
+
def invoker (*args, &block)
|
14
|
+
Invoker.new *args, &block
|
15
|
+
end
|
16
|
+
|
17
|
+
def handler (method, &block)
|
18
|
+
o = Object.new
|
19
|
+
o.define_singleton_method method, &block
|
20
|
+
o
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_add_handler ()
|
24
|
+
inv, var = invoker, nil
|
25
|
+
|
26
|
+
assert_equal nil, var
|
27
|
+
|
28
|
+
h = handler(:test) {|e| var = e.var}
|
29
|
+
inv.add_handler h
|
30
|
+
inv.invoke :test, var: 1
|
31
|
+
assert_equal 1, var
|
32
|
+
|
33
|
+
inv.invoke :test, var: 2
|
34
|
+
assert_equal 2, var
|
35
|
+
|
36
|
+
inv.remove_handler h
|
37
|
+
inv.invoke :test, var: 3
|
38
|
+
assert_equal 2, var
|
39
|
+
end
|
40
|
+
|
41
|
+
end# TestInvoker
|
data/test/test_setter.rb
CHANGED
@@ -20,8 +20,9 @@ class TestSetter < Test::Unit::TestCase
|
|
20
20
|
|
21
21
|
def test_set ()
|
22
22
|
o = temp
|
23
|
+
assert_equal nil, o.x
|
23
24
|
o.set :x, 1
|
24
|
-
assert_equal 1,
|
25
|
+
assert_equal 1, o.x
|
25
26
|
end
|
26
27
|
|
27
28
|
def test_set_by_hash ()
|
@@ -32,7 +33,7 @@ class TestSetter < Test::Unit::TestCase
|
|
32
33
|
|
33
34
|
def test_invalid_name ()
|
34
35
|
assert_raise(NoMethodError) {temp.set :badname, 1}
|
35
|
-
assert_raise(
|
36
|
+
assert_raise(ArgumentError) {temp.set :badname}
|
36
37
|
end
|
37
38
|
|
38
39
|
def test_invalid_value ()
|
data/xot.gemspec
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
# -*- mode: ruby; coding: utf-8 -*-
|
2
2
|
|
3
3
|
|
4
|
-
File.expand_path('../lib', __FILE__)
|
5
|
-
$:.unshift
|
6
|
-
end
|
4
|
+
File.expand_path('../lib', __FILE__)
|
5
|
+
.tap {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
|
7
6
|
|
8
7
|
require 'xot/module'
|
9
8
|
|
@@ -13,7 +12,7 @@ Gem::Specification.new do |s|
|
|
13
12
|
patterns.map {|pat| Dir.glob(pat).to_a}.flatten
|
14
13
|
end
|
15
14
|
|
16
|
-
mod = Xot
|
15
|
+
mod = Xot::Module
|
17
16
|
name = mod.name.downcase
|
18
17
|
rdocs = glob.call *%w[README]
|
19
18
|
|
metadata
CHANGED
@@ -1,46 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.7
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- snori
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-08-07 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: gemcutter
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
description: This library include some useful utility classes and functions for development
|
@@ -49,12 +44,9 @@ email: snori@xord.org
|
|
49
44
|
executables: []
|
50
45
|
extensions:
|
51
46
|
- Rakefile
|
52
|
-
extra_rdoc_files:
|
53
|
-
- README
|
47
|
+
extra_rdoc_files: []
|
54
48
|
files:
|
55
|
-
- .
|
56
|
-
- ChangeLog
|
57
|
-
- README
|
49
|
+
- README.md
|
58
50
|
- Rakefile
|
59
51
|
- VERSION
|
60
52
|
- ext/xot/extconf.rb
|
@@ -62,62 +54,70 @@ files:
|
|
62
54
|
- include/xot.h
|
63
55
|
- include/xot/debug.h
|
64
56
|
- include/xot/defs.h
|
57
|
+
- include/xot/exception.h
|
65
58
|
- include/xot/pimpl.h
|
66
59
|
- include/xot/ref.h
|
67
60
|
- include/xot/string.h
|
61
|
+
- include/xot/time.h
|
68
62
|
- include/xot/util.h
|
69
63
|
- lib/xot.rb
|
64
|
+
- lib/xot/bit_flag.rb
|
70
65
|
- lib/xot/block_util.rb
|
66
|
+
- lib/xot/extconf.rb
|
71
67
|
- lib/xot/hookable.rb
|
72
|
-
- lib/xot/
|
68
|
+
- lib/xot/invoker.rb
|
73
69
|
- lib/xot/module.rb
|
74
70
|
- lib/xot/rake.rb
|
75
71
|
- lib/xot/setter.rb
|
72
|
+
- lib/xot/test.rb
|
76
73
|
- src/debug.cpp
|
77
|
-
- src/
|
74
|
+
- src/exception.cpp
|
78
75
|
- src/string.cpp
|
76
|
+
- src/time.cpp
|
79
77
|
- src/util.cpp
|
80
78
|
- task/ext.rake
|
81
79
|
- task/gem.rake
|
82
|
-
- task/git.rake
|
83
80
|
- task/lib.rake
|
84
|
-
- task/
|
81
|
+
- task/mac.rake
|
85
82
|
- task/test.rake
|
86
83
|
- test/helper.rb
|
84
|
+
- test/test_bit_flag.rb
|
87
85
|
- test/test_block_util.rb
|
88
86
|
- test/test_hookable.rb
|
87
|
+
- test/test_invoker.rb
|
89
88
|
- test/test_rake.rb
|
90
89
|
- test/test_setter.rb
|
91
90
|
- test/test_tester.rb
|
92
91
|
- xot.gemspec
|
93
92
|
homepage: http://github.com/xord/xot/wiki
|
94
93
|
licenses: []
|
94
|
+
metadata: {}
|
95
95
|
post_install_message:
|
96
96
|
rdoc_options: []
|
97
97
|
require_paths:
|
98
98
|
- lib
|
99
99
|
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
-
none: false
|
101
100
|
requirements:
|
102
|
-
- -
|
101
|
+
- - ">="
|
103
102
|
- !ruby/object:Gem::Version
|
104
103
|
version: 1.9.0
|
105
104
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
105
|
requirements:
|
108
|
-
- -
|
106
|
+
- - ">="
|
109
107
|
- !ruby/object:Gem::Version
|
110
108
|
version: '0'
|
111
109
|
requirements: []
|
112
110
|
rubyforge_project:
|
113
|
-
rubygems_version:
|
111
|
+
rubygems_version: 2.0.3
|
114
112
|
signing_key:
|
115
|
-
specification_version:
|
113
|
+
specification_version: 4
|
116
114
|
summary: A Utility library for C++ developemt.
|
117
115
|
test_files:
|
118
116
|
- test/helper.rb
|
117
|
+
- test/test_bit_flag.rb
|
119
118
|
- test/test_block_util.rb
|
120
119
|
- test/test_hookable.rb
|
120
|
+
- test/test_invoker.rb
|
121
121
|
- test/test_rake.rb
|
122
122
|
- test/test_setter.rb
|
123
123
|
- test/test_tester.rb
|
data/.gitignore
DELETED
data/README
DELETED
File without changes
|
data/lib/xot/load_path.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
|
-
module Xot
|
5
|
-
|
6
|
-
|
7
|
-
module LoadPath
|
8
|
-
|
9
|
-
def unshift (dir)
|
10
|
-
$LOAD_PATH.unshift dir if check_dir dir
|
11
|
-
end
|
12
|
-
|
13
|
-
def push (dir)
|
14
|
-
$LOAD_PATH.push dir if check_dir dir
|
15
|
-
end
|
16
|
-
|
17
|
-
extend self
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def check_dir (dir)
|
22
|
-
!$LOAD_PATH.include?(dir) && File.directory?(dir)
|
23
|
-
end
|
24
|
-
|
25
|
-
end# LoadPath
|
26
|
-
|
27
|
-
|
28
|
-
end# Xot
|
data/src/defs.cpp
DELETED
data/task/git.rake
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# -*- mode: ruby; coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
|
-
%w[status diff push pull].each do |t|
|
5
|
-
task t.intern => "git:#{t}"
|
6
|
-
end
|
7
|
-
|
8
|
-
|
9
|
-
namespace :git do
|
10
|
-
|
11
|
-
|
12
|
-
git = env :GIT, 'git'
|
13
|
-
|
14
|
-
|
15
|
-
task :status do
|
16
|
-
sh %( #{git} status )
|
17
|
-
end
|
18
|
-
|
19
|
-
task :diff do
|
20
|
-
sh %( #{git} diff | cat )
|
21
|
-
end
|
22
|
-
|
23
|
-
task :push do
|
24
|
-
sh %( #{git} push )
|
25
|
-
end
|
26
|
-
|
27
|
-
task :pull do
|
28
|
-
sh %( #{git} pull )
|
29
|
-
end
|
30
|
-
|
31
|
-
|
32
|
-
end# :git
|
data/task/submodule.rake
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
# -*- mode: ruby; coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
|
-
SUBMODULE_TASKS = %w[
|
5
|
-
build clean lib ext doc test gem
|
6
|
-
status diff push pull
|
7
|
-
install uninstall upload
|
8
|
-
]
|
9
|
-
|
10
|
-
|
11
|
-
SUBMODULE_TASKS.each do |name|
|
12
|
-
t = task "#{name}-all".intern
|
13
|
-
t.prerequisites.unshift "submodule:#{name}", :header
|
14
|
-
t.prerequisites.push name.intern
|
15
|
-
end if File.exist? '.gitmodules'
|
16
|
-
|
17
|
-
task :submodule => "submodule:init"
|
18
|
-
|
19
|
-
task :header do
|
20
|
-
header MODULE
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
namespace :submodule do
|
25
|
-
|
26
|
-
|
27
|
-
mods = env :SUBMODULES, []
|
28
|
-
git = env :GIT, 'git'
|
29
|
-
|
30
|
-
|
31
|
-
(SUBMODULE_TASKS + [:init]).each do |t|
|
32
|
-
task t.intern => mods.map {|m| "submodule:#{m}:#{t}"}
|
33
|
-
end
|
34
|
-
|
35
|
-
mods.each do |mod|
|
36
|
-
namespace mod.intern do
|
37
|
-
|
38
|
-
empty_task :init
|
39
|
-
|
40
|
-
SUBMODULE_TASKS.each do |t|
|
41
|
-
task t.intern => "submodule:#{mod}:init" do
|
42
|
-
header mod
|
43
|
-
sh %( cd #{mod} && rake #{t} )
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
end# mod.intern
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
end# submodule
|