inline-ook 1.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/.document ADDED
@@ -0,0 +1,2 @@
1
+ README.txt
2
+ lib/**/*.rb
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ ## MAC OS
2
+ .DS_Store
3
+
4
+ ## TEXTMATE
5
+ *.tmproj
6
+ tmtags
7
+
8
+ ## EMACS
9
+ *~
10
+ \#*
11
+ .\#*
12
+
13
+ ## VIM
14
+ *.swp
15
+
16
+ ## PROJECT::GENERAL
17
+ coverage
18
+ rdoc
19
+ pkg
20
+
21
+ ## PROJECT::SPECIFIC
data/README.txt ADDED
@@ -0,0 +1,68 @@
1
+ = inline-ook
2
+
3
+ * http://github.com/mame/inline-ook
4
+
5
+ == DESCRIPTION:
6
+
7
+ inline-ook allows you to embed Ook! program in Ruby script.
8
+ You want to use this if you are not familier with Ruby but Ook!
9
+
10
+ == FEATURES/PROBLEMS:
11
+
12
+ * You can write Ook! program in Ruby script just by surrounding Ook! program
13
+ with "ook begin" and "ook end":
14
+
15
+ # ... Ruby script ...
16
+
17
+ ook begin
18
+ # ... Ook! program ...
19
+ ook end
20
+
21
+ # ... Ruby scirpt again ...
22
+
23
+ == SYNOPSIS:
24
+
25
+ * The following script with embedded Ook! program outputs "Hello, Ruby!",
26
+ "Hello, Ook!", and "Hello, Ruby again!".
27
+
28
+ require "inline-ook"
29
+
30
+ puts "Hello, Ruby!" #=> Hello, Ruby!
31
+
32
+ ook begin
33
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
34
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook.
35
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
36
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
37
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
38
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
39
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
40
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook.
41
+ Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook?
42
+ Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook.
43
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
44
+ Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
45
+ Ook. Ook? Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook!
46
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
47
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook! Ook!
48
+ Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook! Ook!
49
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook.
50
+ Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook.
51
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
52
+ Ook. Ook. Ook. Ook. Ook! Ook.
53
+ ook end #=> Hello, Ook!
54
+
55
+ puts "Hello, Ruby again!" #=> Hello, Ruby again!
56
+
57
+ == REQUIREMENTS:
58
+
59
+ None
60
+
61
+ == INSTALL:
62
+
63
+ * gem install inline-ook
64
+
65
+ == LICENSE:
66
+
67
+ Copyright:: Yusuke Endoh <mame@tsg.ne.jp>
68
+ License:: Ruby's
data/Rakefile ADDED
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "inline-ook"
8
+ gem.summary = %Q{inline-ook allows you to embed Ook! program in Ruby script}
9
+ gem.description = %Q{inline-ook allows you to embed Ook! program in Ruby script}
10
+ gem.email = "mame@tsg.ne.jp"
11
+ gem.homepage = "http://github.com/mame/inline-ook"
12
+ gem.authors = ["Yusuke Endoh"]
13
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
+ end
15
+ Jeweler::GemcutterTasks.new
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
18
+ end
19
+
20
+ require 'rake/testtask'
21
+ Rake::TestTask.new(:test) do |test|
22
+ test.libs << 'lib' << 'test'
23
+ test.pattern = 'test/**/test_*.rb'
24
+ test.verbose = true
25
+ end
26
+
27
+ begin
28
+ require 'rcov/rcovtask'
29
+ Rcov::RcovTask.new do |test|
30
+ test.libs << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+ rescue LoadError
35
+ task :rcov do
36
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
+ end
38
+ end
39
+
40
+ task :test => :check_dependencies
41
+
42
+ task :default => :test
43
+
44
+ require 'rake/rdoctask'
45
+ Rake::RDocTask.new do |rdoc|
46
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
47
+
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = "inline-ook #{version}"
50
+ rdoc.rdoc_files.include('README*')
51
+ rdoc.rdoc_files.include('lib/**/*.rb')
52
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "inline-ook"
4
+
5
+ puts "Hello, Ruby!" #=> Hello, Ruby!
6
+
7
+ ook begin
8
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
9
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook.
10
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
11
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
12
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
13
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
14
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
15
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook.
16
+ Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook?
17
+ Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook.
18
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
19
+ Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
20
+ Ook. Ook? Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook!
21
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
22
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook! Ook!
23
+ Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook! Ook!
24
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook.
25
+ Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook.
26
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
27
+ Ook. Ook. Ook. Ook. Ook! Ook.
28
+ ook end #=> Hello, Ook!
29
+
30
+ puts "Hello, Ruby again!" #=> Hello, Ruby again!
data/lib/inline-ook.rb ADDED
@@ -0,0 +1,58 @@
1
+ class Ook
2
+ Stacks = {}
3
+ def ook
4
+ :ook
5
+ end
6
+ def self.ook
7
+ stack << "."
8
+ :ook
9
+ end
10
+ def self.stack
11
+ Stacks[Thread.current] ||= []
12
+ end
13
+ def self.class_ook(s, a)
14
+ if a
15
+ stack << "." + s + stack.pop
16
+ else
17
+ stack << "."
18
+ new.__send__("Ook" + s, a)
19
+ end
20
+ end
21
+ def instance_ook(s, a)
22
+ l = a ? Ook.stack.pop : ""
23
+ Ook.stack.last << s + l
24
+ self
25
+ end
26
+ def self.global_ook(s, a)
27
+ stack << s + (a ? stack.pop : "")
28
+ end
29
+ def self.Ook (a = nil); Ook.class_ook("", a); end
30
+ def self.Ook!(a = nil); Ook.class_ook("!", a); end
31
+ def self.Ook?(a = nil); Ook.class_ook("?", a); end
32
+ def Ook (a = nil); instance_ook(".", a); end
33
+ def Ook!(a = nil); instance_ook("!", a); end
34
+ def Ook?(a = nil); instance_ook("?", a); end
35
+ end
36
+ def Ook!(a = nil); Ook.global_ook("!", a); end
37
+ def Ook?(a = nil); Ook.global_ook("?", a); end
38
+ def ook(a = nil)
39
+ if a
40
+ s = (Ook.stack || []).join
41
+ raise "Ook? Ook? Ook?" unless s.size.even?
42
+ h = {
43
+ ".?" => "a[i+=1]||=0;",
44
+ "?." => "a[i-=1]||=0;",
45
+ ".." => "a[i]+=1;",
46
+ "!!" => "a[i]-=1;",
47
+ ".!" => "a[i]=$stdin.getc;",
48
+ "!." => "putc(a[i]);",
49
+ "!?" => "while(a[i]>0);",
50
+ "?!" => "end;",
51
+ }
52
+ c = "a=[i=0];"
53
+ s.scan(/../) { c << (h[$&] || raise("Ook? Ook?")) }
54
+ eval c
55
+ Ook::Stacks.delete(Thread.current)
56
+ end
57
+ :ook
58
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,9 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+
4
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ require 'inline-ook'
7
+
8
+ class Test::Unit::TestCase
9
+ end
@@ -0,0 +1,38 @@
1
+ require 'helper'
2
+ require "stringio"
3
+
4
+ class TestInlineOok < Test::Unit::TestCase
5
+ def setup
6
+ @stdout_back = $stdout
7
+ $stdout = StringIO.new("")
8
+ end
9
+ def teardown
10
+ $stdout = @stdout_back
11
+ end
12
+
13
+ def test_hello_ook
14
+ ook begin
15
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
16
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook. Ook? Ook. Ook.
17
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
18
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
19
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
20
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
21
+ Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
22
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook.
23
+ Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook?
24
+ Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook.
25
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
26
+ Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook.
27
+ Ook. Ook? Ook! Ook! Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook!
28
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
29
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook! Ook!
30
+ Ook! Ook! Ook! Ook. Ook? Ook. Ook? Ook. Ook! Ook. Ook! Ook!
31
+ Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook. Ook? Ook. Ook.
32
+ Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook.
33
+ Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
34
+ Ook. Ook. Ook. Ook. Ook! Ook.
35
+ ook end #=> Hello, Ook!
36
+ assert_equal("Hello, Ook!\n", $stdout.string)
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: inline-ook
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
10
+ platform: ruby
11
+ authors:
12
+ - Yusuke Endoh
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-09-07 00:00:00 +09:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: inline-ook allows you to embed Ook! program in Ruby script
22
+ email: mame@tsg.ne.jp
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README.txt
29
+ files:
30
+ - .document
31
+ - .gitignore
32
+ - README.txt
33
+ - Rakefile
34
+ - VERSION
35
+ - example/hello.ook.rb
36
+ - lib/inline-ook.rb
37
+ - test/helper.rb
38
+ - test/test_inline-ook.rb
39
+ has_rdoc: true
40
+ homepage: http://github.com/mame/inline-ook
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options:
45
+ - --charset=UTF-8
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
55
+ version: "0"
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ requirements: []
65
+
66
+ rubyforge_project:
67
+ rubygems_version: 1.3.7
68
+ signing_key:
69
+ specification_version: 3
70
+ summary: inline-ook allows you to embed Ook! program in Ruby script
71
+ test_files:
72
+ - test/test_inline-ook.rb
73
+ - test/helper.rb