sapphire-exp-env 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -3,17 +3,13 @@ class Sapphire
3
3
  require 'thor'
4
4
  require 'open-uri'
5
5
  class Command < Thor
6
-
7
- desc 'hello', 'Hello, World!'
8
- def hello
9
- puts 'Hello, Wolrd...'
10
- end
11
6
 
12
- desc 'generates NAME [VALUES]', 'Generates necessary files for Sapphire'
7
+ desc 'generates args1 [args2] ...', 'Generates necessary file(s) for Sapphire'
13
8
  long_desc <<-D
14
- Generates necessary files for Sapphire...
15
- rvm instructions
16
- rvm ...
9
+ This command enerates necessary file(s) for Sapphire.
10
+ Subcommands below:
11
+ rvm instructions ... genreates instruction.rb from insns.def
12
+ ...
17
13
  D
18
14
  def generates(*args)
19
15
  name = args.shift
@@ -22,16 +18,72 @@ class Sapphire
22
18
  object = args.shift
23
19
  case object
24
20
  when /instructions/
25
- url = 'https://raw.github.com/ruby/ruby/trunk/insns.def'
26
- filename = url.split(/\//).last
27
- open(url) do |source|
28
- open(filename, "w+b") do |output|
29
- output.print source.read
21
+ create_instruction_class
22
+ else
23
+ end
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def create_instruction_class
30
+ url = 'https://raw.github.com/ruby/ruby/trunk/insns.def'
31
+ file_name = url.split(/\//).last
32
+ begin
33
+ open(url) do |source|
34
+ open(file_name, "w+b") do |output|
35
+ output.print source.read
36
+ end
37
+ end
38
+ rescue
39
+ raise "retrieving error(insns.def)"
40
+ end
41
+ open("instructions.rb", "w+b") do |output|
42
+ output.print put_instruction_class_header
43
+ output.print put_instruction_class_insn file_name, output
44
+ output.print put_instruction_class_footer
45
+ end
46
+ end
47
+
48
+ def put_instruction_class_header
49
+ return <<-EOL2
50
+ class RubyVM
51
+ class InstructionSequence
52
+ class Instruction
53
+ InsnID2NO = {
54
+ EOL2
55
+ end
56
+
57
+ def put_instruction_class_insn(file_name, output)
58
+ open(file_name) {|file|
59
+ ino = -1 # initial instruction no
60
+ while line = file.gets
61
+ if /DEFINE_INSN/ =~ line
62
+ iname = file.gets.chop
63
+ if ino != -1
64
+ output.print <<-"EOL1"
65
+ :#{iname} => #{ino},
66
+ EOL1
30
67
  end
68
+ ino += 1
31
69
  end
32
- else
70
+ end
71
+ }
72
+ end
73
+
74
+ def put_instruction_class_footer
75
+ return <<-EOL3
76
+ }
77
+ def self.id2insn_no id
78
+ if InsnID2NO.has_key? id
79
+ InsnID2NO[id]
33
80
  end
34
81
  end
35
82
  end
36
83
  end
84
+ end
85
+ EOL3
86
+ end
87
+
88
+ end
37
89
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "sapphire-exp-env"
8
- s.version = "0.3.0"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ken ichi AKIMOTO"]
12
- s.date = "2011-09-15"
12
+ s.date = "2011-09-16"
13
13
  s.description = "An experiment environment for the prototype development of the programing language Sapphire."
14
14
  s.email = "matthew.szulik@gmail.com"
15
15
  s.executables = ["sapphire"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sapphire-exp-env
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-15 00:00:00.000000000Z
12
+ date: 2011-09-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &82631530 !ruby/object:Gem::Requirement
16
+ requirement: &75522040 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.3.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *82631530
24
+ version_requirements: *75522040
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &82631260 !ruby/object:Gem::Requirement
27
+ requirement: &75521740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *82631260
35
+ version_requirements: *75521740
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &82599960 !ruby/object:Gem::Requirement
38
+ requirement: &75521440 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.6.4
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *82599960
46
+ version_requirements: *75521440
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rcov
49
- requirement: &82599710 !ruby/object:Gem::Requirement
49
+ requirement: &75521150 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *82599710
57
+ version_requirements: *75521150
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: iseq
60
- requirement: &82599450 !ruby/object:Gem::Requirement
60
+ requirement: &75520850 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.0.3.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *82599450
68
+ version_requirements: *75520850
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: thor
71
- requirement: &82599190 !ruby/object:Gem::Requirement
71
+ requirement: &75520550 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 0.14.6
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *82599190
79
+ version_requirements: *75520550
80
80
  description: An experiment environment for the prototype development of the programing
81
81
  language Sapphire.
82
82
  email: matthew.szulik@gmail.com
@@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  segments:
117
117
  - 0
118
- hash: -223730403
118
+ hash: 925065057
119
119
  required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  none: false
121
121
  requirements: