mango 0.1.1 → 0.5.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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