SweetTea 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -1
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +45 -0
- data/LICENSE +7 -0
- data/README.md +134 -0
- data/SweetTea.gemspec +2 -0
- data/bin/tea +26 -0
- data/lib/SweetTea/parser.rb +31 -15
- data/lib/SweetTea/version.rb +1 -1
- data/spec/expected_js/class_empty.js +6 -0
- data/spec/expected_js/class_init.js +12 -0
- data/spec/expected_js/class_init_args.js +8 -0
- data/spec/expected_js/func_args.js +4 -0
- data/spec/expected_js/func_class.js +11 -0
- data/spec/expected_js/func_empty.js +4 -0
- data/spec/expected_js/func_gen_correct_type.js +14 -0
- data/spec/expected_js/var_class.js +9 -0
- data/spec/expected_js/var_empty.js +3 -0
- data/spec/expected_js/var_gen_correct_type.js +13 -0
- data/spec/expected_js/var_w_value.js +3 -0
- data/spec/grammar_spec.rb +4 -0
- data/spec/parser_spec.rb +64 -0
- metadata +56 -14
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
### Release 0.0.6 - 6th April 2012
|
4
|
+
* 1 Major Feature
|
5
|
+
* Added executable to compile javascript
|
6
|
+
* 2 Minor Features
|
7
|
+
* Classes can now be initialised, with arguments
|
8
|
+
* Now developed using TDD
|
9
|
+
* 1 Bug Fix
|
10
|
+
* Empty variable would equal 'nil' instead of the correct 'null'
|
11
|
+
|
12
|
+
### Release 0.0.5 - 2nd April 2012
|
13
|
+
* Initial Public Release
|
14
|
+
* 4 Major Features
|
15
|
+
* Classes
|
16
|
+
* Functions
|
17
|
+
* Variables
|
18
|
+
* Strings
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
SweetTea (0.0.5.dev)
|
5
|
+
clamp (~> 0.3.1)
|
6
|
+
treetop
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: http://rubygems.org/
|
10
|
+
specs:
|
11
|
+
ZenTest (4.7.0)
|
12
|
+
autotest (4.4.6)
|
13
|
+
ZenTest (>= 4.4.1)
|
14
|
+
autotest-fsevent (0.2.8)
|
15
|
+
sys-uname
|
16
|
+
clamp (0.3.1)
|
17
|
+
diff-lcs (1.1.3)
|
18
|
+
ffi (1.0.11)
|
19
|
+
notifier (0.1.4)
|
20
|
+
polyglot (0.3.3)
|
21
|
+
rspec (2.9.0)
|
22
|
+
rspec-core (~> 2.9.0)
|
23
|
+
rspec-expectations (~> 2.9.0)
|
24
|
+
rspec-mocks (~> 2.9.0)
|
25
|
+
rspec-core (2.9.0)
|
26
|
+
rspec-expectations (2.9.0)
|
27
|
+
diff-lcs (~> 1.1.3)
|
28
|
+
rspec-mocks (2.9.0)
|
29
|
+
sys-uname (0.9.0)
|
30
|
+
ffi (>= 1.0.0)
|
31
|
+
test_notifier (1.0.0)
|
32
|
+
notifier
|
33
|
+
treetop (1.4.10)
|
34
|
+
polyglot
|
35
|
+
polyglot (>= 0.3.1)
|
36
|
+
|
37
|
+
PLATFORMS
|
38
|
+
ruby
|
39
|
+
|
40
|
+
DEPENDENCIES
|
41
|
+
SweetTea!
|
42
|
+
autotest
|
43
|
+
autotest-fsevent
|
44
|
+
rspec
|
45
|
+
test_notifier
|
data/LICENSE
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
Copyright (c) 2012 James Birtles
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
4
|
+
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
6
|
+
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,134 @@
|
|
1
|
+
# SweetTea
|
2
|
+
SweetTea is a language that compiles down to javascript, similar to coffeescript.
|
3
|
+
|
4
|
+
## Syntax
|
5
|
+
### Classes
|
6
|
+
##### Empty Class
|
7
|
+
```javascript
|
8
|
+
// SweetTea
|
9
|
+
class-> MyClass
|
10
|
+
<-class
|
11
|
+
|
12
|
+
// JavaScript
|
13
|
+
var MyClass = (function() {
|
14
|
+
function MyClass() {}
|
15
|
+
return MyClass;
|
16
|
+
})();
|
17
|
+
```
|
18
|
+
|
19
|
+
##### Class Init
|
20
|
+
```javascript
|
21
|
+
// SweetTea
|
22
|
+
class-> MyClass
|
23
|
+
function-> init arg1 arg2
|
24
|
+
var-> someVar = "value"
|
25
|
+
<-function
|
26
|
+
<-class
|
27
|
+
|
28
|
+
// JavaScript
|
29
|
+
var MyClass = (function() {
|
30
|
+
function MyClass(arg1, arg2) {
|
31
|
+
var someVar = "value";
|
32
|
+
}
|
33
|
+
return MyClass;
|
34
|
+
})();
|
35
|
+
```
|
36
|
+
|
37
|
+
##### Class Variables
|
38
|
+
```javascript
|
39
|
+
// SweeTea
|
40
|
+
class-> MyClass
|
41
|
+
variable-> myVar = "Hello World"
|
42
|
+
<-class
|
43
|
+
|
44
|
+
// JavaScript
|
45
|
+
var MyClass = (function() {
|
46
|
+
function MyClass() {}
|
47
|
+
MyClass.prototype.myVar = "Hello World";
|
48
|
+
return MyClass;
|
49
|
+
})();
|
50
|
+
|
51
|
+
```
|
52
|
+
|
53
|
+
##### Class Functions
|
54
|
+
```javascript
|
55
|
+
// SweetTea
|
56
|
+
class-> MyClass
|
57
|
+
function-> myFunction <-function
|
58
|
+
<-class
|
59
|
+
|
60
|
+
// JavaScript
|
61
|
+
var MyClass = (function() {
|
62
|
+
function MyClass() {}
|
63
|
+
MyClass.prototype.myFunction = function() {
|
64
|
+
};
|
65
|
+
return MyClass;
|
66
|
+
})();
|
67
|
+
```
|
68
|
+
|
69
|
+
### Functions
|
70
|
+
##### Empty Function
|
71
|
+
```javascript
|
72
|
+
// SweetTea
|
73
|
+
function-> myFunc <-function
|
74
|
+
|
75
|
+
// JavaScript
|
76
|
+
var myFunc = function() {
|
77
|
+
};
|
78
|
+
```
|
79
|
+
|
80
|
+
##### Function with arguments
|
81
|
+
```javascript
|
82
|
+
// SweetTea
|
83
|
+
function-> myFunc arg1 arg2 arg3 <-function
|
84
|
+
|
85
|
+
// JavaScript
|
86
|
+
var myFunc = function(arg1, arg2, arg3) {
|
87
|
+
};
|
88
|
+
```
|
89
|
+
|
90
|
+
### Variables
|
91
|
+
##### Empty Variable
|
92
|
+
```javascript
|
93
|
+
// SweetTea
|
94
|
+
var-> myVar
|
95
|
+
|
96
|
+
// JavasScript
|
97
|
+
var myVar = null;
|
98
|
+
```
|
99
|
+
|
100
|
+
##### Variable with value
|
101
|
+
```javascript
|
102
|
+
// SweetTea
|
103
|
+
var-> myVar = "Hello"
|
104
|
+
|
105
|
+
// JavaScript
|
106
|
+
var myVar = "Hello";
|
107
|
+
```
|
108
|
+
|
109
|
+
### Data Types
|
110
|
+
```javascript
|
111
|
+
// Strings
|
112
|
+
"I am a String"
|
113
|
+
```
|
114
|
+
_**Note**: Strings are currently the only data type_
|
115
|
+
|
116
|
+
## Aliases
|
117
|
+
```javascript
|
118
|
+
// Classes
|
119
|
+
class->
|
120
|
+
c->
|
121
|
+
|
122
|
+
// Functions
|
123
|
+
function->
|
124
|
+
func->
|
125
|
+
f->
|
126
|
+
|
127
|
+
// Variables
|
128
|
+
variable->
|
129
|
+
var->
|
130
|
+
v->
|
131
|
+
```
|
132
|
+
|
133
|
+
## License
|
134
|
+
All code in this project is licensed under MIT which can be found in the LICENSE file or at this url http://www.opensource.org/licenses/MIT
|
data/SweetTea.gemspec
CHANGED
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = "http://jamesbirtles.org/sweettea"
|
11
11
|
s.summary = %q{A language that compiles down to pure javascript}
|
12
12
|
s.description = %q{SweetTea is a new language that can be compiled into javascript.}
|
13
|
+
s.license = "MIT"
|
13
14
|
|
14
15
|
s.rubyforge_project = "SweetTea"
|
15
16
|
|
@@ -23,4 +24,5 @@ Gem::Specification.new do |s|
|
|
23
24
|
s.add_development_dependency "autotest-fsevent"
|
24
25
|
s.add_development_dependency "test_notifier"
|
25
26
|
s.add_runtime_dependency "treetop"
|
27
|
+
s.add_runtime_dependency "clamp", "~> 0.3.1"
|
26
28
|
end
|
data/bin/tea
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH.unshift(File.expand_path("#{File.dirname(__FILE__)}/../lib"))
|
3
|
+
|
4
|
+
require "clamp"
|
5
|
+
|
6
|
+
class CompileCommand < Clamp::Command
|
7
|
+
option ["-o", "--output"], "OUTPUT", "What to call the file with the compiled javascript"
|
8
|
+
|
9
|
+
parameter "INPUT", "SweetTea file to compile to javascript", :attribute_name => :filepath
|
10
|
+
|
11
|
+
def default_output
|
12
|
+
dir = File.expand_path(File.dirname(filepath))
|
13
|
+
name = File.basename(filepath).split(".")
|
14
|
+
name[name.count-1] = "js"
|
15
|
+
"#{dir}/#{name.join(".")}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def execute
|
19
|
+
require "SweetTea/parser"
|
20
|
+
parser = SweetTea::Parser.new
|
21
|
+
js = parser.parse File.read(File.expand_path(filepath))
|
22
|
+
File.open(output, 'w') {|f| f.write js }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
CompileCommand.run
|
data/lib/SweetTea/parser.rb
CHANGED
@@ -8,8 +8,14 @@ module SweetTea
|
|
8
8
|
def parse code
|
9
9
|
parser = SweetTeaParser.new
|
10
10
|
results = parser.parse code
|
11
|
-
@
|
12
|
-
|
11
|
+
@options = {
|
12
|
+
:indent => 0,
|
13
|
+
:current_class => nil,
|
14
|
+
:init => {
|
15
|
+
:args => nil,
|
16
|
+
:content => nil
|
17
|
+
}
|
18
|
+
}
|
13
19
|
to_js(results)
|
14
20
|
end
|
15
21
|
|
@@ -21,8 +27,8 @@ module SweetTea
|
|
21
27
|
return all.join
|
22
28
|
when "SweetTea::ClassNode"
|
23
29
|
className = node.elements[2].text_value
|
24
|
-
@
|
25
|
-
@indent += 1
|
30
|
+
@options[:current_class] = className
|
31
|
+
@options[:indent] += 1
|
26
32
|
lines = ""
|
27
33
|
node.elements[3].elements.each do |n|
|
28
34
|
val = to_js(n, true)
|
@@ -30,10 +36,14 @@ module SweetTea
|
|
30
36
|
lines << "#{val}"
|
31
37
|
end
|
32
38
|
end
|
33
|
-
@indent -= 1
|
34
|
-
@
|
39
|
+
@options[:indent] -= 1
|
40
|
+
@options[:current_class] = nil
|
41
|
+
init = @options[:init][:content]
|
42
|
+
init_args = @options[:init][:args]
|
43
|
+
@options[:init][:content] = nil
|
44
|
+
@options[:init][:args] = nil
|
35
45
|
return "#{ind}var #{className} = (function() {\n" +
|
36
|
-
"#{ind} function #{className}() {}\n" +
|
46
|
+
"#{ind} function #{className}(#{init_args}) {#{init}}\n" +
|
37
47
|
"#{lines}" +
|
38
48
|
"#{ind} return #{className};\n" +
|
39
49
|
"#{ind}})();\n"
|
@@ -51,18 +61,24 @@ module SweetTea
|
|
51
61
|
end
|
52
62
|
end
|
53
63
|
lines = ""
|
54
|
-
@indent += 1
|
64
|
+
@options[:indent] += 1
|
55
65
|
node.elements[4].elements.each do |n|
|
56
66
|
val = to_js(n)
|
57
67
|
if val != ""
|
58
68
|
lines << val
|
59
69
|
end
|
60
70
|
end
|
61
|
-
@indent -= 1
|
71
|
+
@options[:indent] -= 1
|
62
72
|
if inClass
|
63
|
-
|
64
|
-
|
65
|
-
|
73
|
+
if funcName == "init"
|
74
|
+
@options[:init][:content] = "\n#{lines}#{ind}" if lines != ""
|
75
|
+
@options[:init][:args] = args
|
76
|
+
return ""
|
77
|
+
else
|
78
|
+
return "#{ind}#{@options[:current_class]}.prototype.#{funcName} = function(#{args}) {\n" +
|
79
|
+
"#{lines}" +
|
80
|
+
"#{ind}};\n"
|
81
|
+
end
|
66
82
|
else
|
67
83
|
return "#{ind}var #{funcName} = function(#{args}) {\n" +
|
68
84
|
"#{lines}" +
|
@@ -71,12 +87,12 @@ module SweetTea
|
|
71
87
|
when "SweetTea::VariableNode"
|
72
88
|
varName = node.elements[2].text_value
|
73
89
|
if node.elements[4].elements.nil?
|
74
|
-
varValue = "
|
90
|
+
varValue = "null"
|
75
91
|
else
|
76
92
|
varValue = to_js(node.elements[4].elements[2])
|
77
93
|
end
|
78
94
|
if inClass
|
79
|
-
return "#{ind}#{@
|
95
|
+
return "#{ind}#{@options[:current_class]}.prototype.#{varName} = #{varValue};\n"
|
80
96
|
else
|
81
97
|
return "#{ind}var #{varName} = #{varValue};\n"
|
82
98
|
end
|
@@ -89,7 +105,7 @@ module SweetTea
|
|
89
105
|
end
|
90
106
|
|
91
107
|
def ind
|
92
|
-
" " * @indent
|
108
|
+
" " * @options[:indent]
|
93
109
|
end
|
94
110
|
end
|
95
111
|
end
|
data/lib/SweetTea/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
class-> MyClass
|
2
|
+
function-> myFunction
|
3
|
+
function-> doSomething <-function
|
4
|
+
<-function
|
5
|
+
<-class
|
6
|
+
----
|
7
|
+
var MyClass = (function() {
|
8
|
+
function MyClass() {}
|
9
|
+
MyClass.prototype.myFunction = function() {
|
10
|
+
var doSomething = function() {
|
11
|
+
};
|
12
|
+
};
|
13
|
+
return MyClass;
|
14
|
+
})();
|
data/spec/grammar_spec.rb
CHANGED
@@ -30,6 +30,10 @@ describe "SweetTea grammer" do
|
|
30
30
|
subject.parse("f-> functionName <-f").should_not be_nil
|
31
31
|
end
|
32
32
|
|
33
|
+
it "should allow arguments" do
|
34
|
+
subject.parse("f-> functionName arg1 arg2 arg3 <-function").should_not be_nil
|
35
|
+
end
|
36
|
+
|
33
37
|
it "should allow content" do
|
34
38
|
subject.parse(
|
35
39
|
<<-CODE
|
data/spec/parser_spec.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require "spec_helper.rb"
|
2
|
+
require "SweetTea/parser"
|
3
|
+
base_path = File.expand_path(File.dirname(__FILE__))
|
4
|
+
|
5
|
+
code = { stea: {}, js: {} }
|
6
|
+
Dir["#{base_path}/expected_js/*.js"].each do |path|
|
7
|
+
contents = File.read(path).split("\n----\n")
|
8
|
+
refName = File.basename(path, ".js").to_sym
|
9
|
+
code[:stea][refName] = contents[0]
|
10
|
+
code[:js][refName] = contents[1]
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "SweetTea parser" do
|
14
|
+
subject { SweetTea::Parser.new }
|
15
|
+
context "class" do
|
16
|
+
it "should generate the correct javascript for an empty class" do
|
17
|
+
subject.parse(code[:stea][:class_empty]).should == code[:js][:class_empty]
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should transfer content of 'init' function to class constructor" do
|
21
|
+
subject.parse(code[:stea][:class_init]).should == code[:js][:class_init]
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should transfer the args of 'init' function to class constructor" do
|
25
|
+
subject.parse(code[:stea][:class_init_args]).should == code[:js][:class_init_args]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context "function" do
|
30
|
+
it "should generate the correct javascript for an empty function" do
|
31
|
+
subject.parse(code[:stea][:func_empty]).should == code[:js][:func_empty]
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should generate the correct javascript for a function with args" do
|
35
|
+
subject.parse(code[:stea][:func_args]).should == code[:js][:func_args]
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should generate the correct type of function for a class method" do
|
39
|
+
subject.parse(code[:stea][:func_class]).should == code[:js][:func_class]
|
40
|
+
end
|
41
|
+
|
42
|
+
it "doesn't generate class function within class function" do
|
43
|
+
subject.parse(code[:stea][:func_gen_correct_type]).should == code[:js][:func_gen_correct_type]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context "variable" do
|
48
|
+
it "should generate the correct javascript for a initialised variable" do
|
49
|
+
subject.parse(code[:stea][:var_w_value]).should == code[:js][:var_w_value]
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should generate the correct javascript for an empty variable" do
|
53
|
+
subject.parse(code[:stea][:var_empty]).should == code[:js][:var_empty]
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should generate the correct type of variable for a class method" do
|
57
|
+
subject.parse(code[:stea][:var_class]).should == code[:js][:var_class]
|
58
|
+
end
|
59
|
+
|
60
|
+
it "doesn't generate class variable within class function" do
|
61
|
+
subject.parse(code[:stea][:var_gen_correct_type]).should == code[:js][:var_gen_correct_type]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: SweetTea
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
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: 2012-04-
|
12
|
+
date: 2012-04-06 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70333014446300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70333014446300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: autotest
|
27
|
-
requirement: &
|
27
|
+
requirement: &70333014445660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70333014445660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: autotest-fsevent
|
38
|
-
requirement: &
|
38
|
+
requirement: &70333014445020 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70333014445020
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: test_notifier
|
49
|
-
requirement: &
|
49
|
+
requirement: &70333014444400 !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: *
|
57
|
+
version_requirements: *70333014444400
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: treetop
|
60
|
-
requirement: &
|
60
|
+
requirement: &70333014443760 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,28 +65,58 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70333014443760
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: clamp
|
71
|
+
requirement: &70333014443020 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.3.1
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70333014443020
|
69
80
|
description: SweetTea is a new language that can be compiled into javascript.
|
70
81
|
email:
|
71
82
|
- itsme@jamesbirtles.com
|
72
|
-
executables:
|
83
|
+
executables:
|
84
|
+
- tea
|
73
85
|
extensions: []
|
74
86
|
extra_rdoc_files: []
|
75
87
|
files:
|
76
88
|
- .gitignore
|
77
89
|
- .rspec
|
90
|
+
- CHANGELOG.md
|
78
91
|
- Gemfile
|
92
|
+
- Gemfile.lock
|
93
|
+
- LICENSE
|
94
|
+
- README.md
|
79
95
|
- Rakefile
|
80
96
|
- SweetTea.gemspec
|
97
|
+
- bin/tea
|
81
98
|
- lib/SweetTea.rb
|
82
99
|
- lib/SweetTea/grammar.treetop
|
83
100
|
- lib/SweetTea/nodes.rb
|
84
101
|
- lib/SweetTea/parser.rb
|
85
102
|
- lib/SweetTea/version.rb
|
103
|
+
- spec/expected_js/class_empty.js
|
104
|
+
- spec/expected_js/class_init.js
|
105
|
+
- spec/expected_js/class_init_args.js
|
106
|
+
- spec/expected_js/func_args.js
|
107
|
+
- spec/expected_js/func_class.js
|
108
|
+
- spec/expected_js/func_empty.js
|
109
|
+
- spec/expected_js/func_gen_correct_type.js
|
110
|
+
- spec/expected_js/var_class.js
|
111
|
+
- spec/expected_js/var_empty.js
|
112
|
+
- spec/expected_js/var_gen_correct_type.js
|
113
|
+
- spec/expected_js/var_w_value.js
|
86
114
|
- spec/grammar_spec.rb
|
115
|
+
- spec/parser_spec.rb
|
87
116
|
- spec/spec_helper.rb
|
88
117
|
homepage: http://jamesbirtles.org/sweettea
|
89
|
-
licenses:
|
118
|
+
licenses:
|
119
|
+
- MIT
|
90
120
|
post_install_message:
|
91
121
|
rdoc_options: []
|
92
122
|
require_paths:
|
@@ -110,6 +140,18 @@ signing_key:
|
|
110
140
|
specification_version: 3
|
111
141
|
summary: A language that compiles down to pure javascript
|
112
142
|
test_files:
|
143
|
+
- spec/expected_js/class_empty.js
|
144
|
+
- spec/expected_js/class_init.js
|
145
|
+
- spec/expected_js/class_init_args.js
|
146
|
+
- spec/expected_js/func_args.js
|
147
|
+
- spec/expected_js/func_class.js
|
148
|
+
- spec/expected_js/func_empty.js
|
149
|
+
- spec/expected_js/func_gen_correct_type.js
|
150
|
+
- spec/expected_js/var_class.js
|
151
|
+
- spec/expected_js/var_empty.js
|
152
|
+
- spec/expected_js/var_gen_correct_type.js
|
153
|
+
- spec/expected_js/var_w_value.js
|
113
154
|
- spec/grammar_spec.rb
|
155
|
+
- spec/parser_spec.rb
|
114
156
|
- spec/spec_helper.rb
|
115
157
|
has_rdoc:
|