frank 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/README.md +42 -1
  2. data/Rakefile +6 -3
  3. data/VERSION +1 -1
  4. data/bin/frank +3 -26
  5. data/bin/frankup +1 -0
  6. data/frank.gemspec +65 -12
  7. data/lib/frank.rb +10 -3
  8. data/lib/frank/base.rb +80 -55
  9. data/lib/frank/imager.rb +39 -0
  10. data/lib/frank/lorem.rb +54 -0
  11. data/lib/frank/output.rb +7 -8
  12. data/lib/frank/rescue.rb +6 -6
  13. data/lib/frank/statik.rb +23 -21
  14. data/lib/frank/template_helpers.rb +8 -2
  15. data/lib/frank/templates/404.haml +1 -1
  16. data/lib/frank/templates/imager/frank0.jpg +0 -0
  17. data/lib/frank/templates/imager/frank1.jpg +0 -0
  18. data/lib/frank/templates/imager/frank2.jpg +0 -0
  19. data/lib/frank/templates/imager/frank3.jpg +0 -0
  20. data/lib/frank/templates/imager/frank4.jpg +0 -0
  21. data/lib/frank/templates/imager/frank5.jpg +0 -0
  22. data/lib/frank/templates/imager/frank6.jpg +0 -0
  23. data/lib/frank/templates/imager/frank7.jpg +0 -0
  24. data/lib/frank/templates/imager/frank8.jpg +0 -0
  25. data/lib/frank/templates/imager/frank9.png +0 -0
  26. data/test/helper.rb +29 -0
  27. data/test/suite.rb +4 -0
  28. data/test/template/dynamic/_partial.haml +1 -0
  29. data/test/template/dynamic/builder.builder +1 -0
  30. data/test/template/dynamic/coffee.coffee +1 -0
  31. data/test/template/dynamic/erb.erb +1 -0
  32. data/test/template/dynamic/helper_test.haml +1 -0
  33. data/test/template/dynamic/index.haml +2 -0
  34. data/test/template/dynamic/layout.haml +2 -0
  35. data/test/template/dynamic/layout2.haml +2 -0
  36. data/test/template/dynamic/layout2_test.haml +1 -0
  37. data/test/template/dynamic/layout_test.haml +1 -0
  38. data/test/template/dynamic/liquid.liquid +1 -0
  39. data/test/template/dynamic/lorem_test.haml +4 -0
  40. data/test/template/dynamic/markdown.md +1 -0
  41. data/test/template/dynamic/mustache.mustache +1 -0
  42. data/test/template/dynamic/partial_test.haml +2 -0
  43. data/test/template/dynamic/redcloth.textile +1 -0
  44. data/test/template/dynamic/sass.sass +2 -0
  45. data/test/template/helpers.rb +5 -0
  46. data/test/template/settings.yml +67 -0
  47. data/test/template/static/static.html +1 -0
  48. data/test/test_base.rb +81 -0
  49. data/test/test_helpers.rb +53 -0
  50. data/test/test_output.rb +81 -0
  51. data/test/test_render.rb +89 -0
  52. metadata +71 -7
@@ -0,0 +1 @@
1
+ hello from static
data/test/test_base.rb ADDED
@@ -0,0 +1,81 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestBase < Test::Unit::TestCase
4
+
5
+ def app
6
+ proj_dir = File.join(File.dirname(__FILE__), 'template')
7
+ settings = YAML.load_file(File.join(proj_dir, 'settings.yml'))
8
+ Frank.new do
9
+ settings.each do |name, value|
10
+ set name.to_s, value
11
+ end
12
+ set :environment, :test
13
+ set :proj_dir, proj_dir
14
+ end
15
+ end
16
+
17
+ context 'Frank::Base' do
18
+
19
+ should 'have all required settings set' do
20
+ assert_not_nil app.proj_dir
21
+ assert_not_nil app.server
22
+ assert_not_nil app.static_folder
23
+ assert_not_nil app.dynamic_folder
24
+ assert_not_nil app.templates
25
+ end
26
+
27
+ should 'render a dynamic template given a request' do
28
+ get '/'
29
+
30
+ assert last_response.ok?
31
+ assert_equal "<div id='layout'>\n <h1>hello worlds</h1>\n</div>\n", last_response.body
32
+ end
33
+
34
+ should 'render a dynamic css without a layout' do
35
+ get '/sass.css'
36
+
37
+ assert last_response.ok?
38
+ assert_equal "#hello-worlds {\n background: red; }\n", last_response.body
39
+ end
40
+
41
+ should 'render a dynamic javascript without a layout' do
42
+ get '/coffee.js'
43
+
44
+ assert last_response.ok?
45
+ assert_equal "(function(){\n var greeting;\n greeting = \"Hello CoffeeScript\";\n})();", last_response.body
46
+ end
47
+
48
+ should 'render 404 page if template not found' do
49
+ get '/not_here.css'
50
+
51
+ assert !last_response.ok?
52
+ assert_equal 'text/html', last_response.content_type
53
+ assert_match 'Not Found', last_response.body
54
+ end
55
+
56
+ should 'render 500 page for error' do
57
+ get '/?brok=en'
58
+
59
+ assert !last_response.ok?
60
+ assert_equal 'text/html', last_response.content_type
61
+ assert_match "undefined local variable or method `non_method'", last_response.body
62
+ end
63
+
64
+ end
65
+
66
+ context 'Frank.stub' do
67
+
68
+ should 'stub out a project' do
69
+ out = capture_stdout { Frank.stub('stubbed') }
70
+ assert_equal Dir.entries('stubbed'), Dir.entries(File.join(LIBDIR, 'template'))
71
+ putss = "\n-----------------------\n Frank:\n - Creating 'stubbed'\n - Copying Frank template\n\n Congratulations, 'stubbed' is ready to go.\n\n"
72
+ assert_equal putss, out.string
73
+ end
74
+
75
+ teardown do
76
+ FileUtils.rm_r File.join(Dir.pwd, 'stubbed')
77
+ end
78
+
79
+ end
80
+
81
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestBase < Test::Unit::TestCase
4
+
5
+ context 'Frank::TemplateHelpers' do
6
+
7
+ setup do
8
+ proj_dir = File.join(File.dirname(__FILE__), 'template')
9
+ settings = YAML.load_file(File.join(proj_dir, 'settings.yml'))
10
+ require File.join(proj_dir, 'helpers')
11
+ @frank = Frank.new do
12
+ settings.each do |name, value|
13
+ set name.to_s, value
14
+ end
15
+ set :environment, :test
16
+ set :proj_dir, proj_dir
17
+ end
18
+ end
19
+
20
+ should 'render haml and use hello_helper' do
21
+ template = @frank.render_path('helper_test.haml')
22
+ assert_equal "<div id='layout'>\n <h1>hello from helper</h1>\n</div>\n", template
23
+ end
24
+
25
+ context 'Lorem' do
26
+ should 'render haml with 3 random lorem words' do
27
+ template = @frank.render_path('lorem_test.haml')
28
+ reg = /<p class='words'>(?:\w+\s?){3}<\/p>/
29
+ assert_match reg, template
30
+ end
31
+
32
+ should 'render haml with 2 random lorem sentences' do
33
+ template = @frank.render_path('lorem_test.haml')
34
+ reg = /<p class='sentences'>(?:[^.]+.){2}<\/p>/
35
+ assert_match reg, template
36
+ end
37
+
38
+ should 'render haml with 1 random lorem paragraph' do
39
+ template = @frank.render_path('lorem_test.haml')
40
+ reg = /<p class='paragraphs'>(?:[^\n]+(?:\n\n)?){1}<\/p>/m
41
+ assert_match reg, template
42
+ end
43
+
44
+ should 'render image url using imager' do
45
+ template = @frank.render_path('lorem_test.haml')
46
+ reg = /<img src='\/_img\/400x300.jpg\?random' \/>/
47
+ assert_match reg, template
48
+ end
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,81 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestBase < Test::Unit::TestCase
4
+
5
+ context 'Frank::Output' do
6
+
7
+ setup do
8
+ proj_dir = File.join(File.dirname(__FILE__), 'template')
9
+ settings = YAML.load_file(File.join(proj_dir, 'settings.yml'))
10
+ require File.join(proj_dir, 'helpers')
11
+ @frank = Frank::Output.new do
12
+ settings.each do |name, value|
13
+ set name.to_s, value
14
+ end
15
+ set :environment, :test
16
+ set :proj_dir, proj_dir
17
+ set :output_folder, 'output'
18
+ end.dump
19
+ end
20
+
21
+ should 'create the output folder' do
22
+ assert File.exist? File.join(File.dirname(__FILE__), 'template/output')
23
+ end
24
+
25
+ should 'create index.html' do
26
+ output = File.join(File.dirname(__FILE__), 'template/output/index.html')
27
+ assert_equal "<div id='layout'>\n <h1>hello worlds</h1>\n</div>\n", IO.read(output)
28
+ end
29
+
30
+ should 'create partial_test.html' do
31
+ output = File.join(File.dirname(__FILE__), 'template/output/partial_test.html')
32
+ assert_equal "<div id='layout'>\n <h1>hello worlds</h1>\n <p>hello from partial</p>\n</div>\n", IO.read(output)
33
+ end
34
+
35
+ should 'create erb.html' do
36
+ output = File.join(File.dirname(__FILE__), 'template/output/erb.html')
37
+ assert_equal "<h1>hello worlds</h1>\n", IO.read(output)
38
+ end
39
+
40
+ should 'create redcloth.html' do
41
+ output = File.join(File.dirname(__FILE__), 'template/output/redcloth.html')
42
+ assert_equal "<h1>hello worlds</h1>", IO.read(output)
43
+ end
44
+
45
+ should 'create markdown.html' do
46
+ output = File.join(File.dirname(__FILE__), 'template/output/markdown.html')
47
+ assert_equal "<h1>hello worlds</h1>\n", IO.read(output)
48
+ end
49
+
50
+ should 'create mustache.html' do
51
+ output = File.join(File.dirname(__FILE__), 'template/output/mustache.html')
52
+ assert_equal "<h1>hello worlds</h1>\n", IO.read(output)
53
+ end
54
+
55
+ should 'create liquid.html' do
56
+ output = File.join(File.dirname(__FILE__), 'template/output/liquid.html')
57
+ assert_equal "<h1>hello worlds</h1>", IO.read(output)
58
+ end
59
+
60
+ should 'create builder.html' do
61
+ output = File.join(File.dirname(__FILE__), 'template/output/builder.html')
62
+ assert_equal "<h1>hello worlds</h1>\n", IO.read(output)
63
+ end
64
+
65
+ should 'copy static.html' do
66
+ output = File.join(File.dirname(__FILE__), 'template/output/static.html')
67
+ assert_equal "hello from static", IO.read(output)
68
+ end
69
+
70
+ should 'not create partials' do
71
+ assert !File.exist?(File.join(File.dirname(__FILE__), 'template/output/_partial.html'))
72
+ end
73
+
74
+ teardown do
75
+ FileUtils.rm_r File.join(File.dirname(__FILE__), 'template/output')
76
+ end
77
+
78
+
79
+ end
80
+
81
+ end
@@ -0,0 +1,89 @@
1
+ require File.dirname(__FILE__) + '/helper'
2
+
3
+ class TestBase < Test::Unit::TestCase
4
+
5
+ context 'Frank::Base' do
6
+
7
+ setup do
8
+ proj_dir = File.join(File.dirname(__FILE__), 'template')
9
+ settings = YAML.load_file(File.join(proj_dir, 'settings.yml'))
10
+ @frank = Frank.new do
11
+ settings.each do |name, value|
12
+ set name.to_s, value
13
+ end
14
+ set :environment, :test
15
+ set :proj_dir, proj_dir
16
+ end
17
+ end
18
+
19
+ context 'layouts' do
20
+
21
+ should 'render template using layout' do
22
+ template = @frank.render_path('layout_test.haml')
23
+ assert_equal "<div id='layout'>\n <h1>hi inside layout</h1>\n</div>\n", template
24
+ end
25
+
26
+ should 'render template using layout2' do
27
+ template = @frank.render_path('layout2_test.haml')
28
+ assert_equal "<div id='layout2'>\n <h1>hi inside layout2</h1>\n</div>\n", template
29
+ end
30
+
31
+ end
32
+
33
+ should 'render haml template' do
34
+ template = @frank.render_path('index.haml')
35
+ assert_equal "<div id='layout'>\n <h1>hello worlds</h1>\n</div>\n", template
36
+ end
37
+
38
+ should 'render haml template with a haml partial' do
39
+ template = @frank.render_path('partial_test.haml')
40
+ assert_equal "<div id='layout'>\n <h1>hello worlds</h1>\n <p>hello from partial</p>\n</div>\n", template
41
+ end
42
+
43
+ should 'render sass template' do
44
+ template = @frank.render_path('sass.sass')
45
+ assert_equal "#hello-worlds {\n background: red; }\n", template
46
+ end
47
+
48
+ should 'render coffee template' do
49
+ template = @frank.render_path('coffee.coffee')
50
+ assert_equal "(function(){\n var greeting;\n greeting = \"Hello CoffeeScript\";\n})();", template
51
+ end
52
+
53
+ should 'render erb template' do
54
+ template = @frank.render_path('erb.erb')
55
+ assert_equal "<h1>hello worlds</h1>\n", template
56
+ end
57
+
58
+ should 'render redcloth template' do
59
+ template = @frank.render_path('redcloth.textile')
60
+ assert_equal "<h1>hello worlds</h1>", template
61
+ end
62
+
63
+ should 'render rdiscount template' do
64
+ template = @frank.render_path('markdown.md')
65
+ assert_equal "<h1>hello worlds</h1>\n", template
66
+ end
67
+
68
+ should 'render mustache template' do
69
+ template = @frank.render_path('mustache.mustache')
70
+ assert_equal "<h1>hello worlds</h1>\n", template
71
+ end
72
+
73
+ should 'render liquid template' do
74
+ template = @frank.render_path('liquid.liquid')
75
+ assert_equal "<h1>hello worlds</h1>", template
76
+ end
77
+
78
+ should 'render builder template' do
79
+ template = @frank.render_path('builder.builder')
80
+ assert_equal "<h1>hello worlds</h1>\n", template
81
+ end
82
+
83
+ should 'raise template error' do
84
+ assert_raise(Frank::TemplateError) { @frank.render_path('not_a.template') }
85
+ end
86
+
87
+ end
88
+
89
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frank
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - blahed
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-02-18 00:00:00 -05:00
13
+ date: 2010-02-26 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - ">="
23
23
  - !ruby/object:Gem::Version
24
- version: "0"
24
+ version: "1.0"
25
25
  version:
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: mongrel
@@ -31,7 +31,7 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: "0"
34
+ version: "1.0"
35
35
  version:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: haml
@@ -41,7 +41,27 @@ dependencies:
41
41
  requirements:
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: "0"
44
+ version: "2.0"
45
+ version:
46
+ - !ruby/object:Gem::Dependency
47
+ name: shoulda
48
+ type: :development
49
+ version_requirement:
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: "2.0"
55
+ version:
56
+ - !ruby/object:Gem::Dependency
57
+ name: rack-test
58
+ type: :development
59
+ version_requirement:
60
+ version_requirements: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: "0.5"
45
65
  version:
46
66
  description: Create/Dump static builds using whatever templating/helper languages you wish
47
67
  email: travis.dunn@thisismedium.com
@@ -66,6 +86,8 @@ files:
66
86
  - frank.gemspec
67
87
  - lib/frank.rb
68
88
  - lib/frank/base.rb
89
+ - lib/frank/imager.rb
90
+ - lib/frank/lorem.rb
69
91
  - lib/frank/output.rb
70
92
  - lib/frank/rescue.rb
71
93
  - lib/frank/statik.rb
@@ -74,6 +96,16 @@ files:
74
96
  - lib/frank/templates/500.haml
75
97
  - lib/frank/templates/frank-404.png
76
98
  - lib/frank/templates/frank-500.png
99
+ - lib/frank/templates/imager/frank0.jpg
100
+ - lib/frank/templates/imager/frank1.jpg
101
+ - lib/frank/templates/imager/frank2.jpg
102
+ - lib/frank/templates/imager/frank3.jpg
103
+ - lib/frank/templates/imager/frank4.jpg
104
+ - lib/frank/templates/imager/frank5.jpg
105
+ - lib/frank/templates/imager/frank6.jpg
106
+ - lib/frank/templates/imager/frank7.jpg
107
+ - lib/frank/templates/imager/frank8.jpg
108
+ - lib/frank/templates/imager/frank9.png
77
109
  - lib/frank/tilt.rb
78
110
  - lib/template/dynamic/css/frank.sass
79
111
  - lib/template/dynamic/index.haml
@@ -82,6 +114,32 @@ files:
82
114
  - lib/template/settings.yml
83
115
  - lib/template/static/images/frank-med.png
84
116
  - lib/template/static/js/frank.js
117
+ - test/helper.rb
118
+ - test/suite.rb
119
+ - test/template/dynamic/_partial.haml
120
+ - test/template/dynamic/builder.builder
121
+ - test/template/dynamic/coffee.coffee
122
+ - test/template/dynamic/erb.erb
123
+ - test/template/dynamic/helper_test.haml
124
+ - test/template/dynamic/index.haml
125
+ - test/template/dynamic/layout.haml
126
+ - test/template/dynamic/layout2.haml
127
+ - test/template/dynamic/layout2_test.haml
128
+ - test/template/dynamic/layout_test.haml
129
+ - test/template/dynamic/liquid.liquid
130
+ - test/template/dynamic/lorem_test.haml
131
+ - test/template/dynamic/markdown.md
132
+ - test/template/dynamic/mustache.mustache
133
+ - test/template/dynamic/partial_test.haml
134
+ - test/template/dynamic/redcloth.textile
135
+ - test/template/dynamic/sass.sass
136
+ - test/template/helpers.rb
137
+ - test/template/settings.yml
138
+ - test/template/static/static.html
139
+ - test/test_base.rb
140
+ - test/test_helpers.rb
141
+ - test/test_output.rb
142
+ - test/test_render.rb
85
143
  has_rdoc: true
86
144
  homepage: http://github.com/blahed/frank
87
145
  licenses: []
@@ -110,5 +168,11 @@ rubygems_version: 1.3.5
110
168
  signing_key:
111
169
  specification_version: 3
112
170
  summary: Stupidly Simple Static Slinger
113
- test_files: []
114
-
171
+ test_files:
172
+ - test/helper.rb
173
+ - test/suite.rb
174
+ - test/template/helpers.rb
175
+ - test/test_base.rb
176
+ - test/test_helpers.rb
177
+ - test/test_output.rb
178
+ - test/test_render.rb