golf 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/golf.gemspec CHANGED
@@ -11,7 +11,9 @@ Gem::Specification.new do |s|
11
11
  s.homepage = "http://golf.github.com"
12
12
  s.summary = %q{Component based front end JS Framework}
13
13
  s.description = %q{Golf lets you write your interface in terms of reusable, simple components.}
14
+
14
15
  s.add_dependency('thor')
16
+ s.add_dependency('json')
15
17
 
16
18
  s.bindir = 'bin'
17
19
  s.executables = ['golf']
data/lib/golf/compiler.rb CHANGED
@@ -1,12 +1,22 @@
1
1
  module Golf
2
2
  class Compiler
3
3
 
4
- def self.compile!(env = nil)
4
+ def initialize(golfpath = "golfapp/components")
5
+ @golfpath = golfpath
5
6
  end
6
7
 
7
- def self.discover_components
8
- true
8
+ def generate_componentsjs
9
+ component_preamble = 'jQuery.golf.components='
10
+ components = {}
11
+ if File.exists?(@golfpath) and File.directory?(@golfpath)
12
+ Dir["#{@golfpath}/**/*.html"].each do |path|
13
+ name = path.split('/').last.gsub('.html','')
14
+ html = File.read(path)
15
+ components = components.merge({ name => { "name" => name, "html" => html }})
16
+ end
17
+ end
18
+ component_preamble << JSON.dump(components) << ';' << 'jQuery.golf.res={};jQuery.golf.plugins={};jQuery.golf.scripts={};jQuery.golf.styles={};jQuery.golf.setupComponents();'
9
19
  end
10
-
20
+
11
21
  end
12
22
  end
data/lib/golf/rack.rb CHANGED
@@ -3,11 +3,13 @@ module Golf
3
3
 
4
4
  def initialize(app = nil)
5
5
  @app = app if app
6
+ @compiler = Golf::Compiler.new
6
7
  end
7
8
 
8
9
  def call(env)
9
10
  if env["REQUEST_METHOD"] == "GET" and env["PATH_INFO"] == "/component.js"
10
- ['200', { 'Content-Type' => 'application/javascript', 'Content-Length' => '5'}, ['asasd']]
11
+ result = @compiler.generate_componentsjs
12
+ ['200', { 'Content-Type' => 'application/javascript', 'Content-Length' => result.length.to_s}, [result]]
11
13
  else
12
14
  @app.call(env) if @app
13
15
  end
data/lib/golf/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Golf
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
data/lib/golf.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "json"
1
2
  require "golf/compiler"
2
3
  require "golf/rack"
3
4
  require "golf/cli"
data/template/config.ru CHANGED
@@ -4,5 +4,5 @@ require 'rack'
4
4
  require 'rack/contrib'
5
5
 
6
6
  use Golf::Rack
7
- use Rack::Static, :urls => ["/"], :root => "golf"
7
+ use Rack::Static, :urls => ["/"], :root => "golfapp"
8
8
  run Rack::NotFound.new('404.txt')
@@ -0,0 +1,13 @@
1
+ <div>
2
+ <style type="text/golf">
3
+ div.container {
4
+ border: 1px solid red;
5
+ }
6
+ </style>
7
+ <script type="text/golf">
8
+ function() {
9
+ $(".container").append("<h1>Hello, world!</h1>");
10
+ }
11
+ </script>
12
+ <div class="container"></div>
13
+ </div>
@@ -1,10 +1,7 @@
1
-
2
1
  $.golf.controller = [
3
-
4
2
  { route: ".*",
5
3
  action: function(container, params) {
6
- container.append(new Component.Test());
4
+ container.empty().append(new Component.HelloWorld());
7
5
  }
8
6
  }
9
-
10
7
  ];
@@ -0,0 +1,60 @@
1
+
2
+ <style type="text/css">
3
+ * {
4
+ font-family: sans-serif;
5
+ margin: 0;
6
+ padding: 0;
7
+ color: #333;
8
+ }
9
+
10
+ h1.type {
11
+ padding: .5em 20px .5em 20px;
12
+ background: orange;
13
+ margin: 2px;
14
+ }
15
+
16
+ h3.description {
17
+ padding: .5em 20px .5em 20px;
18
+ background: yellowgreen;
19
+ margin: 2px;
20
+ }
21
+
22
+ p.message {
23
+ padding: .75em 20px .75em 20px;
24
+ background: cadetblue;
25
+ margin: 2px;
26
+ }
27
+
28
+ a, a:visited {
29
+ color: darkblue;
30
+ text-decoration: none;
31
+ }
32
+
33
+ a:hover {
34
+ color: darkblue;
35
+ text-decoration: underline;
36
+ }
37
+
38
+ code {
39
+ font-family: monospace;
40
+ font-weight: bold;
41
+ font-size: 1.18em;
42
+ padding: 0 0.20em 0 0.20em;
43
+ }
44
+
45
+ .content {
46
+ position: relative;
47
+ top: 5em;
48
+ width: 35em;
49
+ margin: 0 auto;
50
+ }
51
+ </style>
52
+
53
+ <div class="content">
54
+ <h1 class="type"/>
55
+ <h3 class="description"/>
56
+ <p class="message">
57
+ Golf server documentation:
58
+ <a href="http://golf.github.com/">http://golf.github.com</a>.
59
+ </p>
60
+ </div>
@@ -0,0 +1,13 @@
1
+ <div>
2
+ <style type="text/golf">
3
+ div.container {
4
+ border: 1px solid red;
5
+ }
6
+ </style>
7
+ <script type="text/golf">
8
+ function() {
9
+ $(".container").append("<h1>Hello, world!</h1>");
10
+ }
11
+ </script>
12
+ <div class="container"></div>
13
+ </div>
@@ -0,0 +1 @@
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();
@@ -0,0 +1,7 @@
1
+ $.golf.controller = [
2
+ { route: ".*",
3
+ action: function(container, params) {
4
+ container.empty().append(new Component.HelloWorld());
5
+ }
6
+ }
7
+ ];
@@ -0,0 +1,61 @@
1
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
2
+ <head>
3
+ <title> </title>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
5
+ <meta name="robots" content="noindex,nofollow"/>
6
+ <script type="text/javascript">
7
+ window.serverside = false;
8
+ window.sessionid = "";
9
+ window.servletUrl = window.location.protocol+"//"+window.location.host+window.location.pathname;
10
+ window.urlHash = "";
11
+ window.devmode = false;
12
+ window.forcebot = false;
13
+ window.forceproxy = false;
14
+ window.forceclient = false;
15
+ window.restBackends = [];
16
+ window.cloudfrontDomain = "";
17
+ if (servletUrl.match("/index\.html$"))
18
+ window.location.replace(
19
+ servletUrl.substring(0, servletUrl.length - "index.html".length));
20
+ </script>
21
+ <script type="text/javascript" src="jquery.js"></script>
22
+ <script type="text/javascript">
23
+ jQuery.golf = {};
24
+ </script>
25
+ <script type="text/javascript" src="jquery.address.js"></script>
26
+ <script type="text/javascript" src="jquery.golf.js"></script>
27
+ <script type="text/javascript" src="components.js"></script>
28
+ <script type="text/javascript" src="controller.js"></script>
29
+ <style type="text/css">
30
+ a.golfproxylink,
31
+ a.golfproxylink:link,
32
+ a.golfproxylink:visited,
33
+ a.golfproxylink:hover { color:inherit; text-decoration:inherit; }
34
+ </style>
35
+ <!-- custom head section -->
36
+ <!-- end custom head section -->
37
+ </head>
38
+ <body>
39
+ <noscript>
40
+ <!-- custom noscript section -->
41
+ <div style="color:#222;width:25em;margin:2em auto;padding:2em;border:1px solid black;font-family:sans-serif;text-align:justify">
42
+ <div style="margin:0 auto;text-align:center;">
43
+ <h3>JavaScript proxying is disabled.</h3>
44
+ </div>
45
+ <p>It looks like your browser doesn't support JavaScript, or
46
+ maybe you've turned it off. Normally, the Golf server would
47
+ proxy the JavaScript for you and you'd still be able to access
48
+ the site. However this application is running in static mode
49
+ and proxying is disabled.</p>
50
+
51
+ <p>If you want to access this application you will need to
52
+ enable JavaScript in your browser. Check out
53
+ <a href="http://www.google.com/support/websearch/bin/answer.py?hl=en&answer=23852">Google's JavaScript page</a>
54
+ for more information on how to do this.</p>
55
+ </div>
56
+ <!-- end custom noscript section -->
57
+ </noscript>
58
+ <div class="golfbody">
59
+ </div>
60
+ </body>
61
+ </html>