babascript 0.1.1 → 0.2.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.
- checksums.yaml +4 -4
- data/History.txt +4 -0
- data/babascript.gemspec +1 -1
- data/bin/baba +1 -1
- data/bin/baba-vm +46 -0
- data/lib/babascript/baba.rb +28 -8
- data/lib/babascript/version.rb +1 -1
- data/lib/babascript.rb +2 -1
- data/samples/sample.bb +12 -5
- data/samples/sample.rb +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1219669ef1f3883b038f307e2672c55f038e3e1d
|
4
|
+
data.tar.gz: 753b26e3e34eb229404aa9d178a5a682f621d282
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8edcfde5f3db9fe504092c2257e3db3440e7be49d920420664ede6c1b0ad77e8d8c8b91e3bfee8313bfb9c7994c9f05cf61c6a1c647fef7d44b8f68a19314e1
|
7
|
+
data.tar.gz: 03c5474907ee1ea3a69df6234cfe72b3f08c6f0f3e70dcaad80c70622b35e8be73b85aed69fe447ff630b32742a8724a4350025fb40bfb9278500b150edcfcf3
|
data/History.txt
CHANGED
data/babascript.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "
|
21
|
+
spec.add_dependency "em-rocketio-linda-client"
|
22
22
|
spec.add_dependency "json"
|
23
23
|
spec.add_dependency "args_parser"
|
24
24
|
|
data/bin/baba
CHANGED
data/bin/baba-vm
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
require 'rubygems'
|
4
|
+
require 'args_parser'
|
5
|
+
$:.unshift File.expand_path '../lib', File.dirname(__FILE__)
|
6
|
+
require 'em-rocketio-linda-client'
|
7
|
+
|
8
|
+
args = ArgsParser.parse ARGV do
|
9
|
+
arg :version, "show version", :alias => :v
|
10
|
+
arg :help, "show help", :alias => :h
|
11
|
+
end
|
12
|
+
|
13
|
+
binname = File.basename(__FILE__)
|
14
|
+
if args.has_option? :help
|
15
|
+
STDERR.puts "BabaScript VM v#{BabaScript::VERSION}"
|
16
|
+
STDERR.puts args.help
|
17
|
+
exit 1
|
18
|
+
end
|
19
|
+
|
20
|
+
if args.has_option? :version
|
21
|
+
STDERR.puts "BabaScript v#{BabaScript::VERSION} - ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
|
25
|
+
EM::run do
|
26
|
+
linda = EM::RocketIO::Linda::Client.new ENV["LINDA_BASE"]
|
27
|
+
ts = linda.tuplespace[ENV["BABA"]]
|
28
|
+
|
29
|
+
def take_task_and_run(ts)
|
30
|
+
ts.take [:babascript, :eval] do |tuple|
|
31
|
+
loop do
|
32
|
+
print %Q{"#{tuple[2]}" #{tuple[3]} >}
|
33
|
+
line = STDIN.gets.strip
|
34
|
+
next if line.empty?
|
35
|
+
ts.write [:babascript, :return, tuple[4]["callback"], line]
|
36
|
+
break
|
37
|
+
end
|
38
|
+
take_task_and_run(ts)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
linda.io.on :connect do
|
43
|
+
puts "connect (#{linda.io.type}). You are now BABA."
|
44
|
+
take_task_and_run(ts)
|
45
|
+
end
|
46
|
+
end
|
data/lib/babascript/baba.rb
CHANGED
@@ -1,19 +1,39 @@
|
|
1
1
|
module BabaScript
|
2
2
|
def self.baba(&block)
|
3
|
-
self::Baba.run
|
3
|
+
self::Baba.run &block if block_given?
|
4
4
|
end
|
5
5
|
|
6
6
|
class Baba
|
7
|
-
|
8
|
-
|
7
|
+
|
8
|
+
def self.linda
|
9
|
+
@@linda ||= EM::RocketIO::Linda::Client.new BabaScript.LINDA_BASE
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.run(code=nil, &block)
|
13
|
+
raise ArgumentError "block or code require" unless block_given? or code.kind_of? String
|
14
|
+
EM::run do
|
15
|
+
linda.io.once :connect do
|
16
|
+
EM::defer do
|
17
|
+
if block_given?
|
18
|
+
::BabaScript::Baba.instance_eval &block
|
19
|
+
else
|
20
|
+
::BabaScript::Baba.instance_eval code
|
21
|
+
end
|
22
|
+
EM::add_timer 1 do
|
23
|
+
EM::stop
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
9
28
|
end
|
10
29
|
|
11
30
|
def self.method_missing(name, *args)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
31
|
+
cid = __create_callback_id
|
32
|
+
tuple = [:babascript, :eval, name, args, {:callback => cid}]
|
33
|
+
ts = linda.tuplespace[BabaScript.LINDA_SPACE]
|
34
|
+
ts.write tuple
|
35
|
+
result = ts.take [:babascript, :return, cid]
|
36
|
+
return result[3]
|
17
37
|
end
|
18
38
|
|
19
39
|
private
|
data/lib/babascript/version.rb
CHANGED
data/lib/babascript.rb
CHANGED
data/samples/sample.bb
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
#!/usr/bin/env baba
|
2
|
+
# -*- coding: utf-8 -*-
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
res = かず助に行きたい人の出欠取ってください
|
5
|
+
puts res # => "6人です"
|
6
|
+
loop do
|
7
|
+
num = res.to_i
|
8
|
+
if num > 0
|
9
|
+
puts では予約してください("#{num}人")
|
10
|
+
exit
|
11
|
+
else
|
12
|
+
res = 残念・・その次の週はどうですか?
|
13
|
+
puts res
|
14
|
+
end
|
7
15
|
end
|
8
|
-
|
data/samples/sample.rb
CHANGED
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: babascript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sho Hashimoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: em-rocketio-linda-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
@@ -85,6 +85,7 @@ email:
|
|
85
85
|
- hashimoto@shokai.org
|
86
86
|
executables:
|
87
87
|
- baba
|
88
|
+
- baba-vm
|
88
89
|
extensions: []
|
89
90
|
extra_rdoc_files: []
|
90
91
|
files:
|
@@ -96,6 +97,7 @@ files:
|
|
96
97
|
- Rakefile
|
97
98
|
- babascript.gemspec
|
98
99
|
- bin/baba
|
100
|
+
- bin/baba-vm
|
99
101
|
- lib/babascript.rb
|
100
102
|
- lib/babascript/baba.rb
|
101
103
|
- lib/babascript/version.rb
|
@@ -127,4 +129,3 @@ signing_key:
|
|
127
129
|
specification_version: 4
|
128
130
|
summary: BabaScript is a script launguage which runs on @takumibaba
|
129
131
|
test_files: []
|
130
|
-
has_rdoc:
|