luneta 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +4 -0
  3. data/Rakefile +9 -0
  4. data/bin/luneta +2 -0
  5. data/lib/luneta.rb +11 -0
  6. data/lib/luneta/builder.rb +11 -0
  7. data/lib/luneta/layout.rb +13 -0
  8. data/lib/luneta/park.rb +73 -0
  9. data/lib/luneta/template.rb +13 -0
  10. data/lib/luneta/version.rb +3 -0
  11. data/luneta.gemspec +26 -0
  12. data/spec/.DS_Store +0 -0
  13. data/spec/layout_spec.rb +23 -0
  14. data/spec/luneta_spec.rb +40 -0
  15. data/spec/sample-site/.DS_Store +0 -0
  16. data/spec/sample-site/app.rb +33 -0
  17. data/spec/sample-site/config.ru +4 -0
  18. data/spec/sample-site/humans.txt +8 -0
  19. data/spec/sample-site/images/foundation/orbit/bullets.jpg +0 -0
  20. data/spec/sample-site/images/foundation/orbit/left-arrow-small.png +0 -0
  21. data/spec/sample-site/images/foundation/orbit/left-arrow.png +0 -0
  22. data/spec/sample-site/images/foundation/orbit/loading.gif +0 -0
  23. data/spec/sample-site/images/foundation/orbit/mask-black.png +0 -0
  24. data/spec/sample-site/images/foundation/orbit/pause-black.png +0 -0
  25. data/spec/sample-site/images/foundation/orbit/right-arrow-small.png +0 -0
  26. data/spec/sample-site/images/foundation/orbit/right-arrow.png +0 -0
  27. data/spec/sample-site/images/foundation/orbit/rotator-black.png +0 -0
  28. data/spec/sample-site/images/foundation/orbit/timer-black.png +0 -0
  29. data/spec/sample-site/index.html.erb +180 -0
  30. data/spec/sample-site/javascripts/app.js +38 -0
  31. data/spec/sample-site/javascripts/foundation.min.js +98 -0
  32. data/spec/sample-site/javascripts/jquery.foundation.accordion.js +34 -0
  33. data/spec/sample-site/javascripts/jquery.foundation.alerts.js +20 -0
  34. data/spec/sample-site/javascripts/jquery.foundation.buttons.js +74 -0
  35. data/spec/sample-site/javascripts/jquery.foundation.clearing.js +468 -0
  36. data/spec/sample-site/javascripts/jquery.foundation.forms.js +486 -0
  37. data/spec/sample-site/javascripts/jquery.foundation.joyride.js +639 -0
  38. data/spec/sample-site/javascripts/jquery.foundation.magellan.js +85 -0
  39. data/spec/sample-site/javascripts/jquery.foundation.mediaQueryToggle.js +27 -0
  40. data/spec/sample-site/javascripts/jquery.foundation.navigation.js +55 -0
  41. data/spec/sample-site/javascripts/jquery.foundation.orbit.js +897 -0
  42. data/spec/sample-site/javascripts/jquery.foundation.reveal.js +794 -0
  43. data/spec/sample-site/javascripts/jquery.foundation.tabs.js +43 -0
  44. data/spec/sample-site/javascripts/jquery.foundation.tooltips.js +193 -0
  45. data/spec/sample-site/javascripts/jquery.foundation.topbar.js +152 -0
  46. data/spec/sample-site/javascripts/jquery.js +9440 -0
  47. data/spec/sample-site/javascripts/jquery.placeholder.js +157 -0
  48. data/spec/sample-site/javascripts/modernizr.foundation.js +4 -0
  49. data/spec/sample-site/layout.erb +38 -0
  50. data/spec/sample-site/robots.txt +4 -0
  51. data/spec/sample-site/simple-layout.erb +10 -0
  52. data/spec/sample-site/simple-layout.rb +3 -0
  53. data/spec/sample-site/simple-test-with-params.haml +1 -0
  54. data/spec/sample-site/simple-test.erb +3 -0
  55. data/spec/sample-site/simple-test.haml +1 -0
  56. data/spec/sample-site/store.html +253 -0
  57. data/spec/sample-site/stylesheets/app.css +29 -0
  58. data/spec/sample-site/stylesheets/foundation.css +1213 -0
  59. data/spec/sample-site/stylesheets/foundation.min.css +1 -0
  60. data/spec/spec_helper.rb +10 -0
  61. data/spec/template_spec.rb +36 -0
  62. metadata +200 -0
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in luneta.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake'
4
+ require 'rake/testtask'
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.pattern = 'spec/**/*_spec.rb'
8
+ t.libs.push 'spec'
9
+ end
data/bin/luneta ADDED
@@ -0,0 +1,2 @@
1
+
2
+ require 'luneta'
data/lib/luneta.rb ADDED
@@ -0,0 +1,11 @@
1
+ require "tilt"
2
+ require "luneta/version"
3
+ require "luneta/template"
4
+ require "luneta/layout"
5
+ require "luneta/builder"
6
+ require "luneta/park"
7
+
8
+
9
+ module Luneta
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+ class Luneta::Builder < Rack::Builder
2
+
3
+ def initialize(&block)
4
+
5
+ super do
6
+ use Rack::Static, :urls => ["/stylesheets", "/javascripts", "/images"]
7
+ yield self
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ class Luneta::Layout
2
+
3
+ @template = nil
4
+
5
+ def initialize(file, options = {})
6
+ @template = Tilt.new(file)
7
+ end
8
+
9
+ def render(scope=Object.new, locals={}, &block)
10
+ @template.render(scope, locals, &block)
11
+ end
12
+
13
+ end
@@ -0,0 +1,73 @@
1
+ # Luneta::Park
2
+ # A rack handler to support development or running as a standalone server
3
+
4
+ require 'rack/request'
5
+ require 'rack/response'
6
+
7
+ module Luneta
8
+ class Park
9
+
10
+ class << self
11
+
12
+ @@routes = []
13
+
14
+ def start(routes = [], &block)
15
+
16
+ builder = Luneta::Builder.new do |builder|
17
+ builder.run Luneta::Park.new(routes)
18
+ end
19
+
20
+ yield block
21
+
22
+ return builder
23
+
24
+ end
25
+
26
+ def path(&block)
27
+ yield block
28
+ end
29
+
30
+ end
31
+
32
+ def initialize(routes)
33
+ @routes = routes
34
+ end
35
+
36
+ def call(env)
37
+
38
+ @output = ""
39
+
40
+ @routes.each do |route|
41
+ match = env['PATH_INFO'].match(route[:path])
42
+ if match
43
+ req = Rack::Request.new(env)
44
+ template = route[:template]
45
+ template = Dir.pwd + "/" + template
46
+ layout_template = route[:layout]
47
+ layout_template = Dir.pwd + "/" + layout_template
48
+
49
+ res = Rack::Response.new
50
+
51
+ if layout_template
52
+
53
+ layout = Luneta::Template.new(layout_template)
54
+
55
+ @output = layout.render(route[:title], route[:locals]) do
56
+ Luneta::Template.new(template).render(route[:title], route[:locals])
57
+ end
58
+
59
+ else
60
+ @output = Luneta::Template.new(template).render(route[:title], route[:locals])
61
+ end
62
+
63
+ res.write @output
64
+ res.finish
65
+
66
+ return res
67
+ end
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+ end
@@ -0,0 +1,13 @@
1
+ class Luneta::Template
2
+
3
+ @template = nil
4
+
5
+ def initialize(file, options = {})
6
+ @template = Tilt.new(file)
7
+ end
8
+
9
+ def render(scope=Object.new, locals={}, &block)
10
+ @template.render(scope, locals, &block)
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+ module Luneta
2
+ VERSION = "0.0.3"
3
+ end
data/luneta.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "luneta/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "luneta"
7
+ s.version = Luneta::VERSION
8
+ s.authors = ["Jason Torres"]
9
+ s.email = ["jason.e.torres@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{An über simple web microframework built on rack and tilt.}
12
+ s.description = %q{An über simple web microframework built on rack and tilt.}
13
+
14
+ s.rubyforge_project = "luneta"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "minitest", "~> 4.2.0"
23
+ s.add_development_dependency "rack-test"
24
+ s.add_runtime_dependency "tilt"
25
+ s.add_runtime_dependency "rack"
26
+ end
data/spec/.DS_Store ADDED
Binary file
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Luneta' do
4
+
5
+ describe 'Layout' do
6
+
7
+ let(:layout) do
8
+ Luneta::Layout.new(sample_file("sample-site/simple-layout.erb"))
9
+ end
10
+
11
+ it "creates an instance" do
12
+ layout.must_be_instance_of(Luneta::Layout)
13
+ end
14
+
15
+ it "renders the layout" do
16
+ layout.render do
17
+ "Content"
18
+ end.must_match("Content")
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+ include Rack::Test::Methods
3
+
4
+ describe 'Luneta' do
5
+
6
+ def app
7
+ routes = [
8
+ {
9
+ title: 'Simple HAML',
10
+ path: '/simple-test.html',
11
+ template: 'spec/sample-site/simple-test.erb',
12
+ layout: 'spec/sample-site/layout.erb',
13
+ locals: {title: 'Simple Test', description: 'Simple Description'}
14
+ },
15
+ {
16
+ title: 'Simple ERB',
17
+ path: '/test.html',
18
+ template: 'spec/sample-site/index.html.erb',
19
+ layout: 'spec/sample-site/layout.erb',
20
+ locals: {title: 'Test', description: 'SEO description'}
21
+ }
22
+ ]
23
+
24
+ Luneta::Park.start(routes) do
25
+
26
+ end
27
+ end
28
+
29
+ it "returns the instance" do
30
+ app.must_be_instance_of(Luneta::Builder)
31
+ end
32
+
33
+ it "returns a valid page" do
34
+ request "/test.html"
35
+ #last_response.must_be :ok?
36
+ last_response.ok?.must_equal(true)
37
+ end
38
+
39
+
40
+ end
Binary file
@@ -0,0 +1,33 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+
3
+ require 'luneta'
4
+
5
+ routes = [
6
+ {
7
+ title: 'Simple HAML',
8
+ path: '/simple-test.html',
9
+ template: 'simple-test.erb',
10
+ layout: 'layout.erb',
11
+ locals: {title: 'Simple Test', description: 'Simple Description'}
12
+ },
13
+ {
14
+ title: 'Simple ERB',
15
+ path: '/test.html',
16
+ template: 'index.html.erb',
17
+ layout: 'layout.erb',
18
+ locals: {title: 'Test', description: 'SEO description'}
19
+ }
20
+ ]
21
+
22
+ App = Luneta::Park.start(routes) do
23
+
24
+ end
25
+
26
+ #Luneta.new do
27
+
28
+ #path '/simple-test.haml' do
29
+ #title 'Simple Haml'
30
+ #template 'simple-test.erb'
31
+ #end
32
+
33
+ #end
@@ -0,0 +1,4 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__))
2
+
3
+ require 'app'
4
+ run App
@@ -0,0 +1,8 @@
1
+ /* Foundation was made by ZURB, an interaction design and design strategy firm in Campbell, CA */
2
+ /* zurb.com */
3
+ /* humanstxt.org */
4
+
5
+ /* SITE */
6
+ Standards: HTML5, CSS3
7
+ Components: jQuery, Orbit, Reveal
8
+ Software: Coda, Textmate, Git
@@ -0,0 +1,180 @@
1
+ <div class="row">
2
+ <div class="twelve columns">
3
+ <h2>Welcome to Foundation</h2>
4
+ <p>This is version <strong>3.2.0</strong> generated on November 05, 2012.</p>
5
+ <hr />
6
+ </div>
7
+ </div>
8
+
9
+ <div class="row">
10
+ <div class="eight columns">
11
+ <h3>The Grid</h3>
12
+
13
+ <!-- Grid Example -->
14
+ <div class="row">
15
+ <div class="twelve columns">
16
+ <div class="panel">
17
+ <p>This is a twelve column section in a row. Each of these includes a div.panel element so you can see where the columns are - it's not required at all for the grid.</p>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ <div class="row">
22
+ <div class="six columns">
23
+ <div class="panel">
24
+ <p>Six columns</p>
25
+ </div>
26
+ </div>
27
+ <div class="six columns">
28
+ <div class="panel">
29
+ <p>Six columns</p>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <div class="row">
34
+ <div class="four columns">
35
+ <div class="panel">
36
+ <p>Four columns</p>
37
+ </div>
38
+ </div>
39
+ <div class="four columns">
40
+ <div class="panel">
41
+ <p>Four columns</p>
42
+ </div>
43
+ </div>
44
+ <div class="four columns">
45
+ <div class="panel">
46
+ <p>Four columns</p>
47
+ </div>
48
+ </div>
49
+ </div>
50
+
51
+
52
+ <h3>Tabs</h3>
53
+ <dl class="tabs">
54
+ <dd class="active"><a href="#simple1">Simple Tab 1</a></dd>
55
+ <dd><a href="#simple2">Simple Tab 2</a></dd>
56
+ <dd><a href="#simple3">Simple Tab 3</a></dd>
57
+ </dl>
58
+
59
+ <ul class="tabs-content">
60
+ <li class="active" id="simple1Tab">This is simple tab 1's content. Pretty neat, huh?</li>
61
+ <li id="simple2Tab">This is simple tab 2's content. Now you see it!</li>
62
+ <li id="simple3Tab">This is simple tab 3's content. It's, you know...okay.</li>
63
+ </ul>
64
+
65
+
66
+
67
+ <h3>Buttons</h3>
68
+
69
+ <div class="row">
70
+ <div class="six columns">
71
+ <p><a href="#" class="small button">Small Button</a></p>
72
+ <p><a href="#" class="button">Medium Button</a></p>
73
+ <p><a href="#" class="large button">Large Button</a></p>
74
+ </div>
75
+ <div class="six columns">
76
+ <p><a href="#" class="small alert button">Small Alert Button</a></p>
77
+ <p><a href="#" class="success button">Medium Success Button</a></p>
78
+ <p><a href="#" class="large secondary button">Large Secondary Button</a></p>
79
+ </div>
80
+ </div>
81
+
82
+ </div>
83
+
84
+ <div class="four columns">
85
+ <h4>Getting Started</h4>
86
+ <p>We're stoked you want to try Foundation! To get going, this file (index.html) includes some basic styles you can modify, play around with, or totally destroy to get going.</p>
87
+
88
+ <h4>Other Resources</h4>
89
+ <p>Once you've exhausted the fun in this document, you should check out:</p>
90
+ <ul class="disc">
91
+ <li><a href="http://foundation.zurb.com/docs">Foundation Documentation</a><br />Everything you need to know about using the framework.</li>
92
+ <li><a href="http://github.com/zurb/foundation">Foundation on Github</a><br />Latest code, issue reports, feature requests and more.</li>
93
+ <li><a href="http://twitter.com/foundationzurb">@foundationzurb</a><br />Ping us on Twitter if you have questions. If you build something with this we'd love to see it (and send you a totally boss sticker).</li>
94
+ </ul>
95
+ </div>
96
+ </div>
97
+
98
+
99
+ <div class="row">
100
+ <div class="twelve columns">
101
+ <h3>Orbit</h3>
102
+ <div id="featured">
103
+ <img src="holder.js/1200x250/text:Slide_1" alt="slide image">
104
+ <img src="holder.js/1200x250/text:Slide_2" alt="slide image">
105
+ <img src="holder.js/1200x250/text:Slide_3" alt="slide image">
106
+ </div>
107
+ </div>
108
+ </div>
109
+
110
+
111
+
112
+ <div class="row">
113
+ <div class="twelve columns">
114
+ <h3>Reveal</h3>
115
+ <p><a href="#" data-reveal-id="exampleModal" class="button">Example modal</a></p>
116
+ </div>
117
+ </div>
118
+
119
+ <div id="exampleModal" class="reveal-modal">
120
+ <h2>This is a modal.</h2>
121
+ <p>
122
+ Reveal makes these very easy to summon and dismiss. The close button is simple an anchor with a unicode
123
+ character icon and a class of <code>close-reveal-modal</code>. Clicking anywhere outside the modal will
124
+ also dismiss it.
125
+ </p>
126
+ <a class="close-reveal-modal">×</a>
127
+ </div>
128
+
129
+
130
+ <!-- Included JS Files (Uncompressed) -->
131
+ <!--
132
+
133
+ <script src="javascripts/jquery.js"></script>
134
+
135
+ <script src="javascripts/jquery.foundation.mediaQueryToggle.js"></script>
136
+
137
+ <script src="javascripts/jquery.foundation.forms.js"></script>
138
+
139
+ <script src="javascripts/jquery.foundation.reveal.js"></script>
140
+
141
+ <script src="javascripts/jquery.foundation.orbit.js"></script>
142
+
143
+ <script src="javascripts/jquery.foundation.navigation.js"></script>
144
+
145
+ <script src="javascripts/jquery.foundation.buttons.js"></script>
146
+
147
+ <script src="javascripts/jquery.foundation.tabs.js"></script>
148
+
149
+ <script src="javascripts/jquery.foundation.tooltips.js"></script>
150
+
151
+ <script src="javascripts/jquery.foundation.accordion.js"></script>
152
+
153
+ <script src="javascripts/jquery.placeholder.js"></script>
154
+
155
+ <script src="javascripts/jquery.foundation.alerts.js"></script>
156
+
157
+ <script src="javascripts/jquery.foundation.topbar.js"></script>
158
+
159
+ <script src="javascripts/jquery.foundation.joyride.js"></script>
160
+
161
+ <script src="javascripts/jquery.foundation.clearing.js"></script>
162
+
163
+ <script src="javascripts/jquery.foundation.magellan.js"></script>
164
+
165
+ -->
166
+
167
+ <!-- Included JS Files (Compressed) -->
168
+ <script src="javascripts/jquery.js"></script>
169
+ <script src="javascripts/foundation.min.js"></script>
170
+
171
+ <!-- Initialize JS Plugins -->
172
+ <script src="javascripts/app.js"></script>
173
+
174
+
175
+ <script>
176
+ $(window).load(function(){
177
+ $("#featured").orbit();
178
+ });
179
+ </script>
180
+