mango 0.1.1 → 0.5.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/.gitignore +6 -0
  2. data/.yardopts +6 -0
  3. data/README.mdown +62 -29
  4. data/Rakefile +62 -0
  5. data/VERSION +1 -0
  6. data/bin/mango +5 -0
  7. data/doc/HISTORY.mdown +71 -0
  8. data/doc/ROAD-MAP.mdown +10 -0
  9. data/lib/mango.rb +7 -0
  10. data/lib/mango/application.rb +334 -0
  11. data/lib/mango/content_page.rb +193 -0
  12. data/lib/mango/dependencies.rb +125 -0
  13. data/lib/mango/flavored_markdown.rb +82 -0
  14. data/lib/mango/rack/debugger.rb +22 -0
  15. data/lib/mango/runner.rb +95 -0
  16. data/lib/mango/templates/Gemfile +4 -0
  17. data/lib/mango/templates/README.md +1 -0
  18. data/lib/mango/templates/config.ru +4 -0
  19. data/lib/mango/templates/content/index.md +5 -0
  20. data/lib/mango/templates/themes/default/public/images/particles.gif +0 -0
  21. data/lib/mango/templates/themes/default/public/javascripts/fireworks.js +546 -0
  22. data/lib/mango/templates/themes/default/public/javascripts/timer.js +5 -0
  23. data/lib/mango/templates/themes/default/public/robots.txt +5 -0
  24. data/lib/mango/templates/themes/default/public/styles/fireworks.css +55 -0
  25. data/lib/mango/templates/themes/default/public/styles/reset.css +54 -0
  26. data/lib/mango/templates/themes/default/styles/screen.sass +17 -0
  27. data/lib/mango/templates/themes/default/views/404.haml +21 -0
  28. data/lib/mango/templates/themes/default/views/layout.haml +20 -0
  29. data/lib/mango/templates/themes/default/views/page.haml +3 -0
  30. data/lib/mango/version.rb +6 -0
  31. data/mango.gemspec +35 -0
  32. data/spec/app_root/content/about/index.haml +1 -0
  33. data/spec/app_root/content/about/us.haml +1 -0
  34. data/spec/app_root/content/engines/haml.haml +7 -0
  35. data/spec/app_root/content/engines/markdown.markdown +7 -0
  36. data/spec/app_root/content/engines/md.md +7 -0
  37. data/spec/app_root/content/engines/mdown.mdown +7 -0
  38. data/spec/app_root/content/index.haml +1 -0
  39. data/spec/app_root/content/override.haml +1 -0
  40. data/spec/app_root/content/page_with_missing_view.haml +4 -0
  41. data/spec/app_root/content/turner+hooch.haml +1 -0
  42. data/spec/app_root/security_hole.haml +1 -0
  43. data/spec/app_root/themes/default/public/default.css +3 -0
  44. data/spec/app_root/themes/default/public/images/index.html +10 -0
  45. data/spec/app_root/themes/default/public/images/ripe-mango.jpg +0 -0
  46. data/spec/app_root/themes/default/public/override +10 -0
  47. data/spec/app_root/themes/default/public/robots.txt +2 -0
  48. data/spec/app_root/themes/default/public/styles/override.css +3 -0
  49. data/spec/app_root/themes/default/public/styles/reset.css +27 -0
  50. data/spec/app_root/themes/default/public/styles/subfolder/another.css +3 -0
  51. data/spec/app_root/themes/default/security_hole.sass +1 -0
  52. data/spec/app_root/themes/default/security_hole.txt +1 -0
  53. data/spec/app_root/themes/default/styles/override.sass +2 -0
  54. data/spec/app_root/themes/default/styles/screen.sass +13 -0
  55. data/spec/app_root/themes/default/styles/subfolder/screen.sass +12 -0
  56. data/spec/app_root/themes/default/views/404.haml +7 -0
  57. data/spec/app_root/themes/default/views/layout.haml +7 -0
  58. data/spec/app_root/themes/default/views/page.haml +4 -0
  59. data/spec/mango/application/routing_content_pages_spec.rb +357 -0
  60. data/spec/mango/application/routing_public_files_spec.rb +181 -0
  61. data/spec/mango/application/routing_style_sheets_spec.rb +286 -0
  62. data/spec/mango/application_spec.rb +34 -0
  63. data/spec/mango/content_page/finding_spec.rb +213 -0
  64. data/spec/mango/content_page/initializing_spec.rb +298 -0
  65. data/spec/mango/content_page_spec.rb +44 -0
  66. data/spec/mango/dependencies_spec.rb +189 -0
  67. data/spec/mango/flavored_markdown_spec.rb +52 -0
  68. data/spec/mango/rack/debugger_spec.rb +114 -0
  69. data/spec/mango/version_spec.rb +18 -0
  70. data/spec/quality_spec.rb +32 -0
  71. data/spec/spec.opts +3 -0
  72. data/spec/spec_helper.rb +18 -0
  73. data/spec/support/matchers/malformed_whitespace_matchers.rb +60 -0
  74. metadata +304 -17
@@ -0,0 +1,5 @@
1
+ function fire() {
2
+ var gap = Math.floor(Math.random() * 1201) + 600;
3
+ setTimeout("fire()", gap);
4
+ createFirework(30,125,7,5,null,null,null,null,false,true);
5
+ }
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1,55 @@
1
+ /* fireworks styles */
2
+
3
+ #fireworks-template {
4
+ display:none;
5
+ }
6
+
7
+ #fireContainer {
8
+ position:absolute;
9
+ left:0px;
10
+ top:0px;
11
+ z-index:706;
12
+ }
13
+
14
+ .firework {
15
+ /* containing box which flies out first */
16
+ position:absolute;
17
+ left:0px;
18
+ top:0px;
19
+ font-size:1px;
20
+ width:4px;
21
+ height:4px;
22
+ border:1px solid #333;
23
+ background:#666;
24
+ }
25
+
26
+ .fireworkParticle {
27
+ /* elements that explode from the container */
28
+ position:absolute;
29
+ font-size:1px;
30
+ width:10px;
31
+ height:10px;
32
+ overflow:hidden;
33
+ }
34
+
35
+ .fireworkParticle img {
36
+ display:block;
37
+ width:100px;
38
+ }
39
+
40
+ #sound {
41
+ position:absolute;
42
+ left:-706px;
43
+ top:-706px;
44
+ }
45
+
46
+ #debug {
47
+ position:absolute;
48
+ left:8px;
49
+ top:8px;
50
+ width:220px;
51
+ height:165px;
52
+ overflow:hidden;
53
+ color:#666;
54
+ display:none;
55
+ }
@@ -0,0 +1,54 @@
1
+ @charset "UTF-8";
2
+
3
+ /* v1.0 | 20080212 */
4
+
5
+ html, body, div, span, applet, object, iframe,
6
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
7
+ a, abbr, acronym, address, big, cite, code,
8
+ del, dfn, em, font, img, ins, kbd, q, s, samp,
9
+ small, strike, strong, sub, sup, tt, var,
10
+ b, u, i, center,
11
+ dl, dt, dd, ol, ul, li,
12
+ fieldset, form, label, legend,
13
+ table, caption, tbody, tfoot, thead, tr, th, td {
14
+ margin: 0;
15
+ padding: 0;
16
+ border: 0;
17
+ outline: 0;
18
+ font-size: 100%;
19
+ vertical-align: baseline;
20
+ background: transparent;
21
+ }
22
+ body {
23
+ line-height: 1;
24
+ }
25
+ ol, ul {
26
+ list-style: none;
27
+ }
28
+ blockquote, q {
29
+ quotes: none;
30
+ }
31
+ blockquote:before, blockquote:after,
32
+ q:before, q:after {
33
+ content: '';
34
+ content: none;
35
+ }
36
+
37
+ /* remember to define focus styles! */
38
+ :focus {
39
+ outline: 0;
40
+ }
41
+
42
+ /* remember to highlight inserts somehow! */
43
+ ins {
44
+ text-decoration: none;
45
+ }
46
+ del {
47
+ text-decoration: line-through;
48
+ }
49
+
50
+ /* tables still need 'cellspacing="0"' in the markup */
51
+ table {
52
+ border-collapse: collapse;
53
+ border-spacing: 0;
54
+ }
@@ -0,0 +1,17 @@
1
+ @charset "UTF-8"
2
+
3
+ body
4
+ background-color: #D05C12
5
+ font-family: "Lobster", arial, serif
6
+ margin: 0px auto
7
+ text-align: center
8
+ text-shadow: 2px 2px 5px #000
9
+
10
+ h1
11
+ color: #29B7DD
12
+ font-size: 90pt
13
+ margin: 60px 0px 100px 0px
14
+
15
+ h2
16
+ color: #FBAF0D
17
+ font-size: 240pt
@@ -0,0 +1,21 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %meta{ :charset => "utf-8" }
5
+ %title The page you were looking for doesn't exist (404)
6
+ :css
7
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
8
+ div.dialog {
9
+ width: 25em;
10
+ padding: 0 4em;
11
+ margin: 4em auto 0 auto;
12
+ border: 1px solid #ccc;
13
+ border-right-color: #999;
14
+ border-bottom-color: #999;
15
+ }
16
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
17
+ %body
18
+ / This file lives in themes/default/views/404.haml
19
+ %div.dialog
20
+ %h1 The page you were looking for doesn't exist.
21
+ %p You may have mistyped the address or the page may have moved.
@@ -0,0 +1,20 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %meta{ :charset => "utf-8" }
5
+ %title= "Mango: #{@content_page.title}"
6
+ %link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "http://fonts.googleapis.com/css?family=Lobster" }
7
+ %link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "/styles/reset.css" }
8
+ %link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "/styles/screen.css" }
9
+ %link{ :rel => "stylesheet", :type => "text/css", :media => "screen", :href => "/styles/fireworks.css" }
10
+ %script{ :type => "text/javascript", :src => "/javascripts/fireworks.js"}
11
+ %script{ :type => "text/javascript", :src => "/javascripts/timer.js"}
12
+ %body{ :onload => "fire();" }
13
+ %div#fireworks-template
14
+ %div#fw.firework
15
+ %div#fp.fireworkParticle
16
+ %img{ :src => "/images/particles.gif" }
17
+
18
+ %div#fireContainer
19
+
20
+ = yield
@@ -0,0 +1,3 @@
1
+ %h1= @content_page.title
2
+
3
+ = @content_page.to_html
@@ -0,0 +1,6 @@
1
+ # encoding: UTF-8
2
+
3
+ module Mango
4
+ # Current stable released version
5
+ VERSION = "0.5.0.beta1"
6
+ end
data/mango.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # encoding: UTF-8
2
+ require_relative "lib/mango/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "mango"
6
+ s.version = Mango::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.author = "Ryan Sobol"
9
+ s.email = "contact@ryansobol.com"
10
+ s.homepage = "http://github.com/ryansobol/mango"
11
+ s.summary = "Mango is a dynamic, database-free, and open source website framework"
12
+ s.description = "Mango is a dynamic, database-free, and open source website framework that is designed to make life easier for small teams of designers, developers, and content writers."
13
+
14
+ s.required_rubygems_version = ">= 1.3.7"
15
+ s.rubyforge_project = "mango"
16
+
17
+ s.add_runtime_dependency "bundler", "~> 1.0.0"
18
+ s.add_runtime_dependency "rack", "~> 1.2.1"
19
+ s.add_runtime_dependency "sinatra", "~> 1.0"
20
+ s.add_runtime_dependency "haml", "~> 3.0.18"
21
+ s.add_runtime_dependency "bluecloth", "~> 2.0.7"
22
+ s.add_runtime_dependency "thor", "~> 0.14.0"
23
+
24
+ s.add_development_dependency "rspec", "~> 1.3.0"
25
+ s.add_development_dependency "rack-test", "~> 0.5.4"
26
+ s.add_development_dependency "yard", "~> 0.5.8"
27
+ s.add_development_dependency "bluecloth", "~> 2.0.7"
28
+ s.add_development_dependency "yard-sinatra", "~> 0.5.0"
29
+
30
+ s.files = `git ls-files`.split("\n")
31
+ s.test_files = `git ls-files -- spec/*`.split("\n")
32
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
33
+ s.default_executable = "mango"
34
+ s.require_paths = ["lib"]
35
+ end
@@ -0,0 +1 @@
1
+ %p /about/index.haml
@@ -0,0 +1 @@
1
+ %p /about/us.haml
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: Haml!
3
+ category:
4
+ - content
5
+ - engine
6
+ ---
7
+ %p /engines/haml.haml
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: Markdown!
3
+ category:
4
+ - content
5
+ - engine
6
+ ---
7
+ ### /engines/markdown.markdown
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: Markdown!
3
+ category:
4
+ - content
5
+ - engine
6
+ ---
7
+ ### /engines/md.md
@@ -0,0 +1,7 @@
1
+ ---
2
+ title: Markdown!
3
+ category:
4
+ - content
5
+ - engine
6
+ ---
7
+ ### /engines/mdown.mdown
@@ -0,0 +1 @@
1
+ %p /index.haml
@@ -0,0 +1 @@
1
+ %p /override.haml
@@ -0,0 +1,4 @@
1
+ ---
2
+ view: missing_view_template
3
+ ---
4
+ %p /attributes.haml
@@ -0,0 +1 @@
1
+ %p /turner+hooch.haml
@@ -0,0 +1 @@
1
+ This file should *not* be accessible to a browser.
@@ -0,0 +1,3 @@
1
+ #default {
2
+ background-color: black;
3
+ }
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset='utf-8' />
5
+ <title>/themes/default/public/images/index.html</title>
6
+ </head>
7
+ <body>
8
+ <p>/themes/default/public/images/index.html</p>
9
+ </body>
10
+ </html>
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset='utf-8' />
5
+ <title>/themes/default/public/override</title>
6
+ </head>
7
+ <body>
8
+ <p>/themes/default/public/override</p>
9
+ </body>
10
+ </html>
@@ -0,0 +1,2 @@
1
+ User-agent: *
2
+ Disallow: /cgi-bin/
@@ -0,0 +1,3 @@
1
+ #override {
2
+ font-weight: bold;
3
+ }
@@ -0,0 +1,27 @@
1
+ /*
2
+ html5doctor.com Reset Stylesheet
3
+ v1.4.1
4
+ 2010-03-01
5
+ Author: Richard Clark - http://richclarkdesign.com
6
+ */
7
+
8
+ html, body, div, span, object, iframe,
9
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
10
+ abbr, address, cite, code,
11
+ del, dfn, em, img, ins, kbd, q, samp,
12
+ small, strong, sub, sup, var,
13
+ b, i,
14
+ dl, dt, dd, ol, ul, li,
15
+ fieldset, form, label, legend,
16
+ table, caption, tbody, tfoot, thead, tr, th, td,
17
+ article, aside, canvas, details, figcaption, figure,
18
+ footer, header, hgroup, menu, nav, section, summary,
19
+ time, mark, audio, video {
20
+ margin:0;
21
+ padding:0;
22
+ border:0;
23
+ outline:0;
24
+ font-size:100%;
25
+ vertical-align:baseline;
26
+ background:transparent;
27
+ }
@@ -0,0 +1,3 @@
1
+ #another {
2
+ color: red;
3
+ }
@@ -0,0 +1 @@
1
+ This file should *not* be accessible to a browser.
@@ -0,0 +1 @@
1
+ This file should *not* be accessible to a browser.
@@ -0,0 +1,2 @@
1
+ #override
2
+ font-weight: normal
@@ -0,0 +1,13 @@
1
+ @charset "UTF-8"
2
+
3
+ $blue: #3bbfce
4
+ $margin: 16px
5
+
6
+ .content-navigation
7
+ border-color: $blue
8
+ color: darken($blue, 9%)
9
+
10
+ .border
11
+ padding: $margin / 2
12
+ margin: $margin / 2
13
+ border-color: $blue
@@ -0,0 +1,12 @@
1
+ @charset "UTF-8"
2
+
3
+ table.hl
4
+ margin: 2em 0
5
+ td.ln
6
+ text-align: right
7
+
8
+ li
9
+ font:
10
+ family: serif
11
+ weight: bold
12
+ size: 1.2em
@@ -0,0 +1,7 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %meta{ :charset => "utf-8" }
5
+ %title 404 Page
6
+ %body
7
+ %h1 Page not found
@@ -0,0 +1,7 @@
1
+ !!! 5
2
+ %html
3
+ %head
4
+ %meta{ :charset => "utf-8" }
5
+ %title App Root Page
6
+ %body
7
+ = yield
@@ -0,0 +1,4 @@
1
+ %h1 Welcome to Mango!
2
+
3
+ %div#content
4
+ = @content_page.to_html