sapphire-exp-env 0.3.0 → 0.4.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/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: