scaruby 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,46 +1,46 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- module Scaruby
4
-
5
- class Future
6
-
7
- attr_accessor :result, :mutex
8
-
9
- def initialize(mutex)
10
- assert_type(mutex, Mutex)
11
- @mutex = mutex
12
- @result = nil
13
- end
14
-
15
- def get
16
- @mutex.synchronize {
17
- @result
18
- }
19
- end
20
-
21
- end
22
-
23
- module ConcurrentOps
24
-
25
- def spawn(&block)
26
- Thread.new do
27
- yield
28
- end
29
- end
30
-
31
- def future(&block)
32
- f = Future.new(Mutex.new)
33
- Thread.new do
34
- f.mutex.synchronize do
35
- f.result = yield
36
- end
37
- end
38
- f
39
- end
40
-
41
- end
42
-
43
- end
44
-
45
- include Scaruby::ConcurrentOps
46
-
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module Scaruby
4
+
5
+ class Future
6
+
7
+ attr_accessor :result, :mutex
8
+
9
+ def initialize(mutex)
10
+ assert_type(mutex, Mutex)
11
+ @mutex = mutex
12
+ @result = nil
13
+ end
14
+
15
+ def get
16
+ @mutex.synchronize {
17
+ @result
18
+ }
19
+ end
20
+
21
+ end
22
+
23
+ module ConcurrentOps
24
+
25
+ def spawn(&block)
26
+ Thread.new do
27
+ yield
28
+ end
29
+ end
30
+
31
+ def future(&block)
32
+ f = Future.new(Mutex.new)
33
+ Thread.new do
34
+ f.mutex.synchronize do
35
+ f.result = yield
36
+ end
37
+ end
38
+ f
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+
45
+ include Scaruby::ConcurrentOps
46
+
@@ -5,7 +5,7 @@ require 'scaruby/seq'
5
5
  module Enumerable
6
6
  def method_missing(name, *args, &block)
7
7
  result = Scaruby::Seq.new(self).send(name, *args, &block)
8
- if result.is_a?(Scaruby::Seq) then
8
+ if result.is_a?(Scaruby::Seq)
9
9
  result.to_a
10
10
  else
11
11
  result
@@ -5,7 +5,7 @@ require 'scaruby/map'
5
5
  class Hash
6
6
  def method_missing(name, *args, &block)
7
7
  result = Scaruby::Map.new(self).send(name, *args, &block)
8
- if result.is_a?(Scaruby::Map) then
8
+ if result.is_a?(Scaruby::Map)
9
9
  result.to_hash
10
10
  else
11
11
  result
data/lib/scaruby/io.rb CHANGED
@@ -1,62 +1,62 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'net/http'
4
- require 'uri'
5
-
6
- module Scaruby
7
- module IO
8
- class Source
9
-
10
- attr :string_io
11
-
12
- def initialize(string_io)
13
- assert_type(string_io, StringIO)
14
- @string_io = string_io
15
- end
16
-
17
- def self.from_bytes(bytes, encoding='UTF-8')
18
- content = bytes.to_a.pack('c*').force_encoding(encoding)
19
- Source.new(StringIO.new(content))
20
- end
21
-
22
- def self.from_file(file, encoding='UTF-8')
23
- content = ''
24
- File::open(file, "r:#{encoding}") do |file|
25
- while line = file.gets
26
- content += line
27
- end
28
- end
29
- Source.new(StringIO.new(content))
30
- end
31
-
32
- def self.from_url(url, encoding='UTF-8')
33
- uri = URI.parse(url)
34
- http = Net::HTTP.new(uri.host, uri.port)
35
- http.use_ssl = uri.is_a?(URI::HTTPS)
36
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
37
-
38
- http.start {|http|
39
- req = Net::HTTP::Get.new(uri.request_uri)
40
- res = http.request(req)
41
- Source.new(StringIO.new(res.body))
42
- }
43
- end
44
-
45
- def get_lines
46
- Seq.new(@string_io.map {|line| line })
47
- end
48
-
49
- def to_seq
50
- chars = []
51
- while @string_io.eof? do
52
- chars.push(@string_io.getc)
53
- end
54
- Seq.new(chars)
55
- end
56
-
57
- end
58
- end
59
- end
60
-
61
- include Scaruby::IO
62
-
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'net/http'
4
+ require 'uri'
5
+
6
+ module Scaruby
7
+ module IO
8
+ class Source
9
+
10
+ attr :string_io
11
+
12
+ def initialize(string_io)
13
+ assert_type(string_io, StringIO)
14
+ @string_io = string_io
15
+ end
16
+
17
+ def self.from_bytes(bytes, encoding='UTF-8')
18
+ content = bytes.to_a.pack('c*').force_encoding(encoding)
19
+ Source.new(StringIO.new(content))
20
+ end
21
+
22
+ def self.from_file(file, encoding='UTF-8')
23
+ content = ''
24
+ File::open(file, "r:#{encoding}") do |file|
25
+ while line = file.gets
26
+ content += line
27
+ end
28
+ end
29
+ Source.new(StringIO.new(content))
30
+ end
31
+
32
+ def self.from_url(url, encoding='UTF-8')
33
+ uri = URI.parse(url)
34
+ http = Net::HTTP.new(uri.host, uri.port)
35
+ http.use_ssl = uri.is_a?(URI::HTTPS)
36
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
37
+
38
+ http.start { |http|
39
+ req = Net::HTTP::Get.new(uri.request_uri)
40
+ res = http.request(req)
41
+ Source.new(StringIO.new(res.body))
42
+ }
43
+ end
44
+
45
+ def get_lines
46
+ Seq.new(@string_io.map { |line| line })
47
+ end
48
+
49
+ def to_seq
50
+ chars = []
51
+ while @string_io.eof? do
52
+ chars.push(@string_io.getc)
53
+ end
54
+ Seq.new(chars)
55
+ end
56
+
57
+ end
58
+ end
59
+ end
60
+
61
+ include Scaruby::IO
62
+
data/lib/scaruby/map.rb CHANGED
@@ -1,141 +1,141 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- module Scaruby
4
- class Map < Hash
5
-
6
- attr :hash
7
-
8
- def each(&block)
9
- @hash.each do |k,v|
10
- yield k, v
11
- end
12
- nil
13
- end
14
-
15
- def self.empty
16
- {}
17
- end
18
-
19
- def initialize(hash)
20
- assert_type(hash, Hash)
21
- @hash = hash
22
- end
23
-
24
- def to_hash
25
- @hash
26
- end
27
-
28
- def to_a
29
- @hash.to_a
30
- end
31
-
32
- def contains(key)
33
- @hash.include?(key)
34
- end
35
-
36
- def count(&predicate)
37
- @hash.count(&predicate)
38
- end
39
-
40
- def exists(&predicate)
41
- @hash.any?(&predicate)
42
- end
43
-
44
- def filter(&predicate)
45
- Map.new(@hash.reject {|k,v| ! yield k, v })
46
- end
47
-
48
- def filter_keys(&predicate)
49
- Map.new(@hash.reject {|k,v| ! yield k })
50
- end
51
-
52
- def filter_not(&predicate)
53
- Map.new(@hash.reject {|k,v| yield k, v })
54
- end
55
-
56
- def find(&predicate)
57
- Option.new(@hash.find(&predicate))
58
- end
59
-
60
- def forall(&predicate)
61
- @hash.all?(&predicate)
62
- end
63
-
64
- def foreach(&block)
65
- @hash.each do |k,v|
66
- yield k, v
67
- end
68
- nil
69
- end
70
-
71
- def get_or_else(key, default_value)
72
- value = @hash[key]
73
- value.nil? ? default_value : value
74
- end
75
-
76
- def is_empty
77
- @hash.nil? || @hash.empty?
78
- end
79
-
80
- def key_set
81
- @hash.keys
82
- end
83
-
84
- def lift
85
- AppliableProc.new {|k| Option.new(@hash[k]) }
86
- end
87
-
88
- def map(&block)
89
- #Map.new(Hash[*@hash.to_a.collect {|k,v| yield k, v }.flatten])
90
- Map.new(Hash[*@hash.to_a.map {|k,v| yield k, v }.flatten])
91
- end
92
-
93
- def minus(*keys)
94
- copied = @hash.dup
95
- keys.each do |key|
96
- copied.delete(key)
97
- end
98
- Map.new(copied)
99
- end
100
-
101
- def plus(elems)
102
- copied = @hash.dup
103
- elems.each do |elm|
104
- k,v = elm[0], elm[1]
105
- copied[k] = v
106
- end
107
- Map.new(copied)
108
- end
109
-
110
- def mk_string(*args)
111
- case args.size
112
- when 0
113
- start_part, sep, end_part = '{', ', ', '}'
114
- when 1
115
- start_part, sep, end_part = '', args[0], ''
116
- when 2
117
- raise 'Illegal number of arguments (2)'
118
- else
119
- start_part, sep, end_part = args[0], args[1], args[2]
120
- end
121
- #start_part + @hash.to_a.collect {|k,v| k.to_s + '=>' + v.to_s }.join(sep) + end_part
122
- start_part + @hash.to_a.map {|k,v| k.to_s + '=>' + v.to_s }.join(sep) + end_part
123
- end
124
-
125
- def non_empty
126
- ! is_empty
127
- end
128
-
129
- def updated(k, v)
130
- copied = @hash.dup
131
- copied[k] = v
132
- Map.new(copied)
133
- end
134
-
135
- def unzip
136
- Seq.new([@hash.keys,@hash.values])
137
- end
138
-
139
- end
140
- end
141
-
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module Scaruby
4
+ class Map < Hash
5
+
6
+ attr :hash
7
+
8
+ def each(&block)
9
+ @hash.each do |k, v|
10
+ yield k, v
11
+ end
12
+ nil
13
+ end
14
+
15
+ def self.empty
16
+ {}
17
+ end
18
+
19
+ def initialize(hash)
20
+ assert_type(hash, Hash)
21
+ @hash = hash
22
+ end
23
+
24
+ def to_hash
25
+ @hash
26
+ end
27
+
28
+ def to_a
29
+ @hash.to_a
30
+ end
31
+
32
+ def contains(key)
33
+ @hash.include?(key)
34
+ end
35
+
36
+ def count(&predicate)
37
+ @hash.count(&predicate)
38
+ end
39
+
40
+ def exists(&predicate)
41
+ @hash.any?(&predicate)
42
+ end
43
+
44
+ def filter(&predicate)
45
+ Map.new(@hash.reject { |k, v| !yield k, v })
46
+ end
47
+
48
+ def filter_keys(&predicate)
49
+ Map.new(@hash.reject { |k, v| !yield k })
50
+ end
51
+
52
+ def filter_not(&predicate)
53
+ Map.new(@hash.reject { |k, v| yield k, v })
54
+ end
55
+
56
+ def find(&predicate)
57
+ Option.new(@hash.find(&predicate))
58
+ end
59
+
60
+ def forall(&predicate)
61
+ @hash.all?(&predicate)
62
+ end
63
+
64
+ def foreach(&block)
65
+ @hash.each do |k, v|
66
+ yield k, v
67
+ end
68
+ nil
69
+ end
70
+
71
+ def get_or_else(key, default_value)
72
+ value = @hash[key]
73
+ value.nil? ? default_value : value
74
+ end
75
+
76
+ def is_empty
77
+ @hash.nil? || @hash.empty?
78
+ end
79
+
80
+ def key_set
81
+ @hash.keys
82
+ end
83
+
84
+ def lift
85
+ AppliableProc.new { |k| Option.new(@hash[k]) }
86
+ end
87
+
88
+ def map(&block)
89
+ #Map.new(Hash[*@hash.to_a.collect {|k,v| yield k, v }.flatten])
90
+ Map.new(Hash[*@hash.to_a.map { |k, v| yield k, v }.flatten])
91
+ end
92
+
93
+ def minus(*keys)
94
+ copied = @hash.dup
95
+ keys.each do |key|
96
+ copied.delete(key)
97
+ end
98
+ Map.new(copied)
99
+ end
100
+
101
+ def plus(elems)
102
+ copied = @hash.dup
103
+ elems.each do |elm|
104
+ k, v = elm[0], elm[1]
105
+ copied[k] = v
106
+ end
107
+ Map.new(copied)
108
+ end
109
+
110
+ def mk_string(*args)
111
+ case args.size
112
+ when 0
113
+ start_part, sep, end_part = '{', ', ', '}'
114
+ when 1
115
+ start_part, sep, end_part = '', args[0], ''
116
+ when 2
117
+ raise 'Illegal number of arguments (2)'
118
+ else
119
+ start_part, sep, end_part = args[0], args[1], args[2]
120
+ end
121
+ #start_part + @hash.to_a.collect {|k,v| k.to_s + '=>' + v.to_s }.join(sep) + end_part
122
+ start_part + @hash.to_a.map { |k, v| k.to_s + '=>' + v.to_s }.join(sep) + end_part
123
+ end
124
+
125
+ def non_empty
126
+ !is_empty
127
+ end
128
+
129
+ def updated(k, v)
130
+ copied = @hash.dup
131
+ copied[k] = v
132
+ Map.new(copied)
133
+ end
134
+
135
+ def unzip
136
+ Seq.new([@hash.keys, @hash.values])
137
+ end
138
+
139
+ end
140
+ end
141
+
@@ -1,38 +1,46 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- module Scaruby
4
- class Option
5
-
6
- attr :value
7
-
8
- def self.apply(value)
9
- Option.new(value)
10
- end
11
-
12
- def initialize(value)
13
- @value = value
14
- end
15
-
16
- def is_defined
17
- @value != nil
18
- end
19
-
20
- def get
21
- if is_defined then
22
- @value
23
- else
24
- raise NoSuchElementException
25
- end
26
- end
27
-
28
- def get_or_else(default_value)
29
- is_defined ? get : default_value
30
- end
31
-
32
- def map(&block)
33
- is_defined ? Option.new(yield @value) : self
34
- end
35
-
36
- end
37
- end
38
-
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module Scaruby
4
+ class Option
5
+
6
+ attr :value
7
+
8
+ def self.apply(value)
9
+ Option.new(value)
10
+ end
11
+
12
+ def initialize(value)
13
+ @value = value
14
+ end
15
+
16
+ def is_empty
17
+ @value == nil
18
+ end
19
+
20
+ def is_defined
21
+ @value != nil
22
+ end
23
+
24
+ def get
25
+ if is_defined
26
+ @value
27
+ else
28
+ raise NoSuchElementException
29
+ end
30
+ end
31
+
32
+ def get_or_else(default_value)
33
+ is_defined ? get : default_value
34
+ end
35
+
36
+ def map(&block)
37
+ is_defined ? Option.new(yield @value) : self
38
+ end
39
+
40
+ def fold(if_empty, &block)
41
+ is_empty ? if_empty : yield(@value)
42
+ end
43
+
44
+ end
45
+ end
46
+