scaruby 0.0.5 → 0.0.6

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.
@@ -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
+