golf 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/golf/compiler.rb +50 -11
- data/lib/golf/version.rb +1 -1
- data/test/test_compiler.rb +10 -4
- data/test/twitter_compiled/404.txt +1 -0
- data/test/twitter_compiled/Gemfile +6 -0
- data/test/twitter_compiled/components/golf/twitter/Search/Search.html +29 -0
- data/test/twitter_compiled/components/golf/twitter/Tweet/Tweet.html +16 -0
- data/test/twitter_compiled/components.js +1 -0
- data/test/twitter_compiled/config.ru +7 -0
- data/test/twitter_compiled/controller.js +9 -0
- data/test/{data → twitter_compiled}/index.html +0 -3
- data/test/{data → twitter_compiled}/jquery.golf.js +0 -1
- data/test/twitter_compiled/plugins/twitter.js +14 -0
- data/test/twitter_compiled/scripts/00-myscript.js +0 -0
- data/test/twitter_compiled/styles/main.css +0 -0
- metadata +18 -11
- data/test/data/components/HelloWorld/HelloWorld.html +0 -13
- data/test/data/components.js +0 -1
- data/test/data/controller.js +0 -7
- /data/test/{data → twitter_compiled}/app_error.html +0 -0
- /data/test/{data → twitter_compiled}/jquery.address.js +0 -0
- /data/test/{data → twitter_compiled}/jquery.js +0 -0
- /data/test/{data → twitter_compiled}/welcome2golf.html +0 -0
data/lib/golf/compiler.rb
CHANGED
@@ -1,23 +1,62 @@
|
|
1
1
|
module Golf
|
2
2
|
class Compiler
|
3
3
|
|
4
|
-
def initialize(golfpath = "
|
4
|
+
def initialize(golfpath = ".")
|
5
|
+
puts "starting up in #{golfpath}"
|
5
6
|
@golfpath = golfpath
|
6
7
|
end
|
7
8
|
|
8
9
|
def generate_componentsjs
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
10
|
+
"jQuery.golf.components=#{component_json};jQuery.golf.res=#{res_json};jQuery.golf.plugins=#{plugin_json};jQuery.golf.scripts=#{script_json};jQuery.golf.styles=#{style_json};jQuery.golf.setupComponents();"
|
11
|
+
end
|
12
|
+
|
13
|
+
def component_json
|
14
|
+
traverse("#{@golfpath}/components", "html")
|
15
|
+
end
|
16
|
+
|
17
|
+
def res_json
|
18
|
+
results = { "Gemfile" => "Gemfile", "plugins" => {},"config.ru" => "config.ru", "404.txt" => "404.txt" }
|
19
|
+
Dir["#{@golfpath}/plugins/*.js"].each do |path|
|
20
|
+
results["plugins"] = results["plugins"].merge({ File.basename(path) => "plugins/#{File.basename(path)}"})
|
18
21
|
end
|
19
|
-
|
22
|
+
JSON.dump(results)
|
20
23
|
end
|
21
24
|
|
25
|
+
def plugin_json
|
26
|
+
traverse("#{@golfpath}/plugins", "js")
|
27
|
+
end
|
28
|
+
|
29
|
+
def script_json
|
30
|
+
traverse("#{@golfpath}/scripts", "js")
|
31
|
+
end
|
32
|
+
|
33
|
+
def style_json
|
34
|
+
traverse("#{@golfpath}/styles", "css")
|
35
|
+
end
|
36
|
+
|
37
|
+
def traverse(dir, type)
|
38
|
+
results = {}
|
39
|
+
if File.exists?(dir) and File.directory?(dir)
|
40
|
+
Dir["#{dir}/**/*.#{type}"].each do |path|
|
41
|
+
if type == "html"
|
42
|
+
name = package_name(path)
|
43
|
+
else
|
44
|
+
name = path.split('/').last.gsub(".#{type}",'')
|
45
|
+
end
|
46
|
+
data = File.read(path)
|
47
|
+
results = results.merge({ name => { "name" => name, "#{type}" => data }})
|
48
|
+
end
|
49
|
+
end
|
50
|
+
JSON.dump(results)
|
51
|
+
end
|
52
|
+
|
53
|
+
def package_name(path)
|
54
|
+
path_arr = path.split('/')
|
55
|
+
i = path_arr.index('components')
|
56
|
+
name_segment = (path_arr.length - 1) - i
|
57
|
+
path_arr.slice(i + 1, name_segment - 1).join('.')
|
58
|
+
end
|
59
|
+
|
60
|
+
|
22
61
|
end
|
23
62
|
end
|
data/lib/golf/version.rb
CHANGED
data/test/test_compiler.rb
CHANGED
@@ -3,16 +3,22 @@ require 'test_helper'
|
|
3
3
|
class CompilerTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
-
@compiler = Golf::Compiler.new(File.expand_path("../
|
6
|
+
@compiler = Golf::Compiler.new(File.expand_path("../twitter_compiled", __FILE__))
|
7
7
|
end
|
8
8
|
|
9
9
|
|
10
10
|
def test_componentsjs_generation
|
11
11
|
componentjs = @compiler.generate_componentsjs
|
12
|
-
known_good =
|
12
|
+
known_good = File.read(File.expand_path("../twitter_compiled/components.js", __FILE__))
|
13
|
+
assert_equal componentjs.gsub(' ','').gsub('\n','').gsub('\\',''), known_good.gsub(' ','').gsub('\n','').gsub('\\','')
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def test_package_name_resolution
|
18
|
+
result = @compiler.package_name '/asd/asdasd/components/golf/twitter/Tweet/Tweet.html'
|
19
|
+
assert_equal 'golf.twitter.Tweet', result
|
13
20
|
|
14
|
-
assert_equal componentjs.gsub(' ','').gsub('\n',''), known_good.gsub(' ','').gsub('\n','')
|
15
|
-
|
16
21
|
end
|
17
22
|
|
23
|
+
|
18
24
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
not found
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<div>
|
2
|
+
<style type="text/golf">
|
3
|
+
</style>
|
4
|
+
|
5
|
+
<script type="text/golf">
|
6
|
+
function(query) {
|
7
|
+
var search = $.require("twitter").search;
|
8
|
+
|
9
|
+
search(query, function(i, tweet) {
|
10
|
+
$(".results").append(new Component.golf.twitter.Tweet(tweet));
|
11
|
+
$(".numresults").text(i+1);
|
12
|
+
});
|
13
|
+
|
14
|
+
$("form").submit(function() {
|
15
|
+
$.golf.location("/"+$("input[name='query']").val()+"/");
|
16
|
+
});
|
17
|
+
}
|
18
|
+
</script>
|
19
|
+
|
20
|
+
<div class="content">
|
21
|
+
<h1>Twitter Search</h1>
|
22
|
+
<form>
|
23
|
+
<input type="text" name="query"/>
|
24
|
+
<input type="submit"/>
|
25
|
+
</form>
|
26
|
+
<p><span class="numresults">0</span> results:</p>
|
27
|
+
<ul class="results"/>
|
28
|
+
</div>
|
29
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<li>
|
2
|
+
<style type="text/golf">
|
3
|
+
span.user {
|
4
|
+
color: green;
|
5
|
+
}
|
6
|
+
</style>
|
7
|
+
|
8
|
+
<script type="text/golf">
|
9
|
+
function(tweet) {
|
10
|
+
$(".user").text(tweet.from_user);
|
11
|
+
$(".text").text(tweet.text);
|
12
|
+
}
|
13
|
+
</script>
|
14
|
+
|
15
|
+
<span class="user">A user</span> says: <span class="text">Some things.</span>
|
16
|
+
</li>
|
@@ -0,0 +1 @@
|
|
1
|
+
jQuery.golf.components={"golf.twitter.Tweet":{"name":"golf.twitter.Tweet","html":"<li>\n <style type=\"text/golf\">\n span.user {\n color: green;\n }\n <\/style>\n\n <script type=\"text/golf\">\n\n function(tweet) {\n $(\".user\").text(tweet.from_user);\n $(\".text\").text(tweet.text);\n }\n \n<\/script>\n\n <span class=\"user\">A user<\/span> says: <span class=\"text\">Some things.<\/span>\n<\/li>\n"},"golf.twitter.Search":{"name":"golf.twitter.Search","html":"<div>\n <style type=\"text/golf\">\n <\/style>\n\n <script type=\"text/golf\">\n\n function(query) {\n var search = $.require(\"twitter\").search;\n\n search(query, function(i, tweet) {\n $(\".results\").append(new Component.golf.twitter.Tweet(tweet));\n $(\".numresults\").text(i+1);\n });\n\n $(\"form\").submit(function() {\n $.golf.location(\"/\"+$(\"input[name='query']\").val()+\"/\");\n });\n }\n \n<\/script>\n\n <div class=\"content\">\n <h1>Twitter Search<\/h1>\n <form>\n <input type=\"text\" name=\"query\"/>\n <input type=\"submit\"/>\n <\/form>\n <p><span class=\"numresults\">0<\/span> results:<\/p>\n <ul class=\"results\"/>\n <\/div>\n<\/div>\n"}};jQuery.golf.res={"Gemfile":"Gemfile","plugins":{"twitter.js":"plugins/twitter.js"},"config.ru":"config.ru","404.txt":"404.txt"};jQuery.golf.plugins={"twitter":{"name":"twitter","js":"(function() {\n\n exports.search = function(query, callback) {\n $.getJSON(\n \"http://search.twitter.com/search.json?q=\"+escape(query)+\"&callback=?\",\n function(data) {\n $.each(data.results, function(i, tweet) {\n callback(i, tweet);\n });\n }\n );\n };\n\n})();\n"}};jQuery.golf.scripts={"00-myscript":{"name":"00-myscript","js":""}};jQuery.golf.styles={"main":{"name":"main","css":""}};jQuery.golf.setupComponents();
|
@@ -19,9 +19,6 @@
|
|
19
19
|
servletUrl.substring(0, servletUrl.length - "index.html".length));
|
20
20
|
</script>
|
21
21
|
<script type="text/javascript" src="jquery.js"></script>
|
22
|
-
<script type="text/javascript">
|
23
|
-
jQuery.golf = {};
|
24
|
-
</script>
|
25
22
|
<script type="text/javascript" src="jquery.address.js"></script>
|
26
23
|
<script type="text/javascript" src="jquery.golf.js"></script>
|
27
24
|
<script type="text/javascript" src="components.js"></script>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
(function() {
|
2
|
+
|
3
|
+
exports.search = function(query, callback) {
|
4
|
+
$.getJSON(
|
5
|
+
"http://search.twitter.com/search.json?q="+escape(query)+"&callback=?",
|
6
|
+
function(data) {
|
7
|
+
$.each(data.results, function(i, tweet) {
|
8
|
+
callback(i, tweet);
|
9
|
+
});
|
10
|
+
}
|
11
|
+
);
|
12
|
+
};
|
13
|
+
|
14
|
+
})();
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: golf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Micha Niskin, Alan Dipert, Julio Capote
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-11 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -89,18 +89,25 @@ files:
|
|
89
89
|
- templates/twitter/plugins/twitter.js
|
90
90
|
- templates/twitter/scripts/00-myscript.js
|
91
91
|
- templates/twitter/styles/main.css
|
92
|
-
- test/data/app_error.html
|
93
|
-
- test/data/components.js
|
94
|
-
- test/data/components/HelloWorld/HelloWorld.html
|
95
|
-
- test/data/controller.js
|
96
|
-
- test/data/index.html
|
97
|
-
- test/data/jquery.address.js
|
98
|
-
- test/data/jquery.golf.js
|
99
|
-
- test/data/jquery.js
|
100
|
-
- test/data/welcome2golf.html
|
101
92
|
- test/test_compiler.rb
|
102
93
|
- test/test_helper.rb
|
103
94
|
- test/test_rack.rb
|
95
|
+
- test/twitter_compiled/404.txt
|
96
|
+
- test/twitter_compiled/Gemfile
|
97
|
+
- test/twitter_compiled/app_error.html
|
98
|
+
- test/twitter_compiled/components.js
|
99
|
+
- test/twitter_compiled/components/golf/twitter/Search/Search.html
|
100
|
+
- test/twitter_compiled/components/golf/twitter/Tweet/Tweet.html
|
101
|
+
- test/twitter_compiled/config.ru
|
102
|
+
- test/twitter_compiled/controller.js
|
103
|
+
- test/twitter_compiled/index.html
|
104
|
+
- test/twitter_compiled/jquery.address.js
|
105
|
+
- test/twitter_compiled/jquery.golf.js
|
106
|
+
- test/twitter_compiled/jquery.js
|
107
|
+
- test/twitter_compiled/plugins/twitter.js
|
108
|
+
- test/twitter_compiled/scripts/00-myscript.js
|
109
|
+
- test/twitter_compiled/styles/main.css
|
110
|
+
- test/twitter_compiled/welcome2golf.html
|
104
111
|
has_rdoc: true
|
105
112
|
homepage: http://golf.github.com
|
106
113
|
licenses: []
|
data/test/data/components.js
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
jQuery.golf.components={"HelloWorld":{"name":"HelloWorld","html":"<div>\n <style type=\"text/golf\">\n div.container {\n border: 1px solid red;\n }\n <\/style>\n <script type=\"text/golf\">\n\n function() {\n $(\".container\").append(\"<h1>Hello, world!<\/h1>\");\n }\n \n<\/script>\n <div class=\"container\"><\/div>\n<\/div>\n"}};jQuery.golf.res={};jQuery.golf.plugins={};jQuery.golf.scripts={};jQuery.golf.styles={};jQuery.golf.setupComponents();
|
data/test/data/controller.js
DELETED
File without changes
|
File without changes
|
File without changes
|
File without changes
|