staticmatic 0.9.5 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/Manifest.txt +24 -0
- data/README.rdoc +48 -0
- data/Rakefile +22 -27
- data/bin/staticmatic +0 -0
- data/lib/staticmatic.rb +12 -4
- data/lib/staticmatic/base.rb +30 -242
- data/lib/staticmatic/mixins/build.rb +46 -0
- data/lib/staticmatic/mixins/helpers.rb +15 -0
- data/lib/staticmatic/mixins/render.rb +125 -0
- data/lib/staticmatic/mixins/rescue.rb +12 -0
- data/lib/staticmatic/mixins/server.rb +6 -0
- data/lib/staticmatic/mixins/setup.rb +20 -0
- data/lib/staticmatic/template_error.rb +40 -0
- data/lib/staticmatic/templates/{application.haml → default/application.haml} +0 -0
- data/lib/staticmatic/templates/{application.sass → default/application.sass} +0 -0
- data/lib/staticmatic/templates/{index.haml → default/index.haml} +0 -0
- data/lib/staticmatic/templates/rescues/default.haml +7 -0
- data/lib/staticmatic/templates/rescues/template.haml +18 -0
- data/test/test_helper.rb +20 -48
- metadata +55 -124
- data/CHANGELOG +0 -57
- data/LICENSE +0 -21
- data/README +0 -56
- data/example/site/contact.html +0 -17
- data/example/site/index.html +0 -16
- data/example/site/javascripts/application.css +0 -2
- data/example/src/layouts/application.haml +0 -11
- data/example/src/pages/contact.haml +0 -3
- data/example/src/pages/index.haml +0 -3
- data/example/src/pages/test test/blah.haml +0 -1
- data/example/src/stylesheets/application.sass +0 -4
- data/lib/staticmatic/version.rb +0 -34
- data/test/base_test.rb +0 -60
- data/test/helpers_test.rb +0 -296
- data/test/sandbox/test_site/configuration.rb +0 -0
- data/test/sandbox/test_site/site/index.html +0 -10
- data/test/sandbox/test_site/site/stylesheets/application.css +0 -2
- data/test/sandbox/test_site/src/helpers/application_helper.rb +0 -5
- data/test/sandbox/test_site/src/layouts/alternate_layout.haml +0 -3
- data/test/sandbox/test_site/src/layouts/application.haml +0 -7
- data/test/sandbox/test_site/src/layouts/projects.haml +0 -1
- data/test/sandbox/test_site/src/pages/index.haml +0 -5
- data/test/sandbox/test_site/src/pages/layout_test.haml +0 -2
- data/test/sandbox/test_site/src/partials/menu.haml +0 -1
- data/test/sandbox/test_site/src/stylesheets/application.sass +0 -2
- data/test/server_test.rb +0 -12
- data/test/test_helper_test.rb +0 -49
- data/test/version_test.rb +0 -28
- data/website/site/download.html +0 -84
- data/website/site/faq.html +0 -101
- data/website/site/helper_central/index.html +0 -144
- data/website/site/how_to_use.html +0 -307
- data/website/site/images/bycurve21.gif +0 -0
- data/website/site/images/curve21.jpg +0 -0
- data/website/site/images/homepage-build.jpg +0 -0
- data/website/site/images/homepage-previewing.jpg +0 -0
- data/website/site/images/homepage-templating.jpg +0 -0
- data/website/site/index.html +0 -98
- data/website/site/releases/0_8_10.html +0 -106
- data/website/site/releases/0_8_4.html +0 -101
- data/website/site/releases/0_8_8.html +0 -96
- data/website/site/releases/0_9_0.html +0 -124
- data/website/site/stylesheets/application.css +0 -287
- data/website/src/helpers/application_helper.rb +0 -5
- data/website/src/layouts/application.haml +0 -43
- data/website/src/layouts/test.haml +0 -4
- data/website/src/pages/_qa.haml +0 -2
- data/website/src/pages/download.haml +0 -15
- data/website/src/pages/faq.haml +0 -8
- data/website/src/pages/helper_central/_helper.haml +0 -7
- data/website/src/pages/helper_central/index.haml +0 -21
- data/website/src/pages/how_to_use.haml +0 -270
- data/website/src/pages/index.haml +0 -27
- data/website/src/pages/releases/0_8_10.haml +0 -22
- data/website/src/pages/releases/0_8_4.haml +0 -25
- data/website/src/pages/releases/0_8_8.haml +0 -35
- data/website/src/pages/releases/0_9_0.haml +0 -34
- data/website/src/partials/news.haml +0 -10
data/CHANGELOG
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
*SVN*
|
2
|
-
|
3
|
-
* [NEW] added link_to as an alias to link for those Rails types [Brent Beardsley]
|
4
|
-
|
5
|
-
* [NEW] added text_area helper (patch #14870) [steve ross]
|
6
|
-
|
7
|
-
* [NEW] tag helper adds name as an id if no id and a name given (patch #14870) [steve ross]
|
8
|
-
|
9
|
-
* [NEW] stylesheet type='text/css' attribute is now specified [Brent Beardsley]
|
10
|
-
|
11
|
-
*0.9.0* (October 16th, 2007)
|
12
|
-
|
13
|
-
* [NEW] added StaticMatic::VERSION.requirements_met? [Brent Beardsley]
|
14
|
-
|
15
|
-
* [NEW] added LICENSE and CHANGELOG files [Brent Beardsley]
|
16
|
-
|
17
|
-
* [NEW] can now specify relative paths when only specifying a title - link("../How to download") [Brent Beardsley]
|
18
|
-
|
19
|
-
* [NEW] add src_dir/stylesheets directory to sass load path so you can use @import styles.sass [Brent Beardsley]
|
20
|
-
|
21
|
-
* [NEW] added sass_options hash to configuration so you can configure sass (ie: :style => :compact) [Brent Beardsley]
|
22
|
-
|
23
|
-
* [NEW] added configuration.use_extensions_for_page_links (defaults to true) when false will strip index.html and .html off the end of links for pretty urls [Brent Beardsley]
|
24
|
-
|
25
|
-
* [NEW] made all "local" links (pages/stylesheets/images) relative to the current page and removed use_relative_path_for_* configuration settings [Brent Beardsley]
|
26
|
-
|
27
|
-
* [FIX] no longer add \n after the tag in the tag helper [Brent Beardsley]
|
28
|
-
|
29
|
-
* [FIX] mailto: links were getting a / inserted at in front of the mailto: [Brent Beardsley]
|
30
|
-
|
31
|
-
* [NEW] stylesheets helper can now take a list of stylesheets to include and the order as well as options (ie: :media => :print) [Brent Beardsley]
|
32
|
-
|
33
|
-
* [FIX] clear all instance variables in @scope except @staticmatic [Brent Beardsley]
|
34
|
-
|
35
|
-
* [NEW] added clean and clobber tasks to Rakefile [Brent Beardsley]
|
36
|
-
|
37
|
-
* [NEW] added StaticMatic::VERSION in version.rb [Brent Beardsley]
|
38
|
-
|
39
|
-
* [NEW] added package task to Rakefile and made it the default [Brent Beardsley]
|
40
|
-
|
41
|
-
*0.8.10* (October 12th, 2007)
|
42
|
-
|
43
|
-
* [NEW] rails-like partials. Partials can start with an underscore and live in the pages directory tree, old way still works [Brent Beardsley]
|
44
|
-
|
45
|
-
* [NEW] img helper changes and tests [Jason Tennier]
|
46
|
-
|
47
|
-
* [NEW] added current_page helper for use in other helpers, layouts, or pages [Brent Beardsley]
|
48
|
-
|
49
|
-
* [NEW] add src_dir, site_dir, and current_page attr_reader's on staticmatic class [Brent Beardsley]
|
50
|
-
|
51
|
-
* [FIX] removed dependency on rails needing to be installed [Brent Beardsley]
|
52
|
-
|
53
|
-
* [FIX] fixed preview bug where setting a layout in a page would cause it to be used even for pages that did not have a layout specified and should be using the default [Brent Beardsley]
|
54
|
-
|
55
|
-
* [FIX] tag helper only outputs the attribute if it has a value [Brent Beardsley]
|
56
|
-
|
57
|
-
* [FIX] renamed RakeFile to Rakefile so it'll work on non-windows boxes [Brent Beardsley]
|
data/LICENSE
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
Copyright (C) 2007 Stephen Bartholomew
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
-
|
data/README
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
# StaticMatic
|
2
|
-
|
3
|
-
*For information on Haml & Sass please see [haml.hamptoncatlin.com](http://haml.hamptoncatlin.com)*.
|
4
|
-
|
5
|
-
**Please Note:** StaticMatic is fresh out the oven. It has a limited feature set and
|
6
|
-
is only really covering my immediate requirements.
|
7
|
-
|
8
|
-
_However_, I am interested in getting feedback on the idea and code contributions & ideas are always welcome.
|
9
|
-
|
10
|
-
## What's it all about?
|
11
|
-
|
12
|
-
CMS is overrated. A lot of the time, clients want us to do what we do
|
13
|
-
best - well designed pages with structured, accessible and maintainable markup & styling.
|
14
|
-
|
15
|
-
CMSs are often perfect for this, but sometimes they can be restrictive and more cumbersome
|
16
|
-
than just working with good ol' source code. At the same time we want our code to be
|
17
|
-
structured, DRY and flexible.
|
18
|
-
|
19
|
-
Enter **StaticMatic**.
|
20
|
-
|
21
|
-
## Usage
|
22
|
-
|
23
|
-
StaticMatic will set up a basic site structure for you with this command:
|
24
|
-
|
25
|
-
staticmatic setup <directory>
|
26
|
-
|
27
|
-
After this command you'll have the following files:
|
28
|
-
|
29
|
-
<directory>/
|
30
|
-
site/
|
31
|
-
images/
|
32
|
-
stylesheets/
|
33
|
-
javascripts/
|
34
|
-
src/
|
35
|
-
helpers/
|
36
|
-
layouts/
|
37
|
-
application.haml
|
38
|
-
pages/
|
39
|
-
index.haml
|
40
|
-
partials/
|
41
|
-
stylesheets/
|
42
|
-
application.sass
|
43
|
-
|
44
|
-
StaticMatic sets you up with a sample layout, stylesheet and page file. Once you've
|
45
|
-
edited the pages and stylesheets, you can generate the static site:
|
46
|
-
|
47
|
-
staticmatic build <directory>
|
48
|
-
|
49
|
-
All of the pages are parsed and wrapped up in application.haml and put into the site directory.
|
50
|
-
|
51
|
-
## Templates
|
52
|
-
|
53
|
-
StaticMatic adds a few helpers to the core Haml helpers:
|
54
|
-
|
55
|
-
= link 'Title', 'url'
|
56
|
-
= img 'my_image.jpg'
|
data/example/site/contact.html
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>Welcome to my site</title>
|
5
|
-
</head>
|
6
|
-
<body>
|
7
|
-
<div id='menu'>
|
8
|
-
<ul>
|
9
|
-
<li>Test</li>
|
10
|
-
</ul>
|
11
|
-
</div>
|
12
|
-
<h1>Contact Us</h1>
|
13
|
-
<p>Use the form below</p>
|
14
|
-
</body>
|
15
|
-
</html>
|
16
|
-
</body>
|
17
|
-
</html>
|
data/example/site/index.html
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title>Welcome to my site</title>
|
5
|
-
</head>
|
6
|
-
<body>
|
7
|
-
<div id='menu'>
|
8
|
-
<ul>
|
9
|
-
<li>Test</li>
|
10
|
-
</ul>
|
11
|
-
</div>
|
12
|
-
<h1>This is a test - with a change</h1>
|
13
|
-
<a href="index"><img src="images/image_path.jpg"/></a>
|
14
|
-
<img src="images/test"/>
|
15
|
-
</body>
|
16
|
-
</html>
|
@@ -1 +0,0 @@
|
|
1
|
-
%h1 Test
|
data/lib/staticmatic/version.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module StaticMatic #:nodoc:
|
2
|
-
module VERSION #:nodoc:
|
3
|
-
MAJOR = 0
|
4
|
-
MINOR = 9
|
5
|
-
TINY = 5
|
6
|
-
|
7
|
-
STRING = [MAJOR, MINOR, TINY].join('.')
|
8
|
-
URLIFIED = STRING.tr('.', '_')
|
9
|
-
|
10
|
-
# requirements_met? can take a hash with :major, :minor, :tiny set or
|
11
|
-
# a string in the format "major.minor.tiny"
|
12
|
-
def self.requirements_met?(minimum_version = {})
|
13
|
-
major = minor = tiny = 0
|
14
|
-
if minimum_version.is_a?(Hash)
|
15
|
-
major = minimum_version[:major].to_i if minimum_version.has_key?(:major)
|
16
|
-
minor = minimum_version[:minor].to_i if minimum_version.has_key?(:minor)
|
17
|
-
tiny = minimum_version[:tiny].to_i if minimum_version.has_key?(:tiny)
|
18
|
-
else
|
19
|
-
major, minor, tiny = minimum_version.to_s.split('.').collect { |v| v.to_i }
|
20
|
-
end
|
21
|
-
met = false
|
22
|
-
if StaticMatic::VERSION::MAJOR > major
|
23
|
-
met = true
|
24
|
-
elsif StaticMatic::VERSION::MAJOR == major
|
25
|
-
if StaticMatic::VERSION::MINOR > minor
|
26
|
-
met = true
|
27
|
-
elsif StaticMatic::VERSION::MINOR == minor
|
28
|
-
met = StaticMatic::VERSION::TINY >= tiny
|
29
|
-
end
|
30
|
-
end
|
31
|
-
met
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/test/base_test.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require File.dirname(__FILE__) + '/../lib/staticmatic'
|
3
|
-
|
4
|
-
class StaticMaticBaseTest < Test::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
@base_dir = File.dirname(__FILE__) + '/sandbox/test_site'
|
7
|
-
@staticmatic = StaticMatic::Base.new(@base_dir)
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_initial_configuration_settings
|
11
|
-
assert_equal true, @staticmatic.configuration.use_extensions_for_page_links
|
12
|
-
assert_equal 3000, @staticmatic.configuration.preview_server_port
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_should_setup_directories
|
16
|
-
tmp_dir = File.dirname(__FILE__) + '/sandbox/tmp'
|
17
|
-
staticmatic = StaticMatic::Base.new(tmp_dir)
|
18
|
-
staticmatic.run('setup')
|
19
|
-
|
20
|
-
StaticMatic::Base.base_dirs.each do |dir|
|
21
|
-
assert File.exists?("#{tmp_dir}/#{dir}"), "Should create #{dir}"
|
22
|
-
end
|
23
|
-
|
24
|
-
StaticMatic::Base.base_dirs.reverse.each do |dir|
|
25
|
-
Dir.entries("#{tmp_dir}/#{dir}").each do |file|
|
26
|
-
next if file.match(/^\./)
|
27
|
-
File.delete("#{tmp_dir}/#{dir}/#{file}")
|
28
|
-
end
|
29
|
-
Dir.delete("#{tmp_dir}/#{dir}") if File.exists?("#{tmp_dir}/#{dir}")
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_should_generate_html_with_layout
|
34
|
-
content = @staticmatic.generate_html_with_layout("index")
|
35
|
-
assert_match "StaticMatic", content
|
36
|
-
assert_match "This is some test content", content
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_should_generate_html_with_layout_assigned_in_template
|
40
|
-
content = @staticmatic.generate_html_with_layout("layout_test")
|
41
|
-
assert_match "Alternate Layout", content
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_should_generate_css
|
45
|
-
content = @staticmatic.generate_css("application")
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_should_find_source_filename_from_path
|
49
|
-
assert_equal "application", @staticmatic.source_template_from_path("@base_dir/src/stylesheets/application.css")[1]
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_should_find_layout_from_passed_path
|
53
|
-
assert_equal "projects", @staticmatic.detirmine_layout("test/projects")
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_should_include_custom_helper
|
57
|
-
content = @staticmatic.generate_html_with_layout("index")
|
58
|
-
assert_match "Hello, Steve!", content
|
59
|
-
end
|
60
|
-
end
|
data/test/helpers_test.rb
DELETED
@@ -1,296 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require File.dirname(__FILE__) + '/../lib/staticmatic'
|
3
|
-
require File.dirname(__FILE__) + '/test_helper'
|
4
|
-
|
5
|
-
class HelpersTest < Test::Unit::TestCase
|
6
|
-
include StaticMatic::Helpers
|
7
|
-
|
8
|
-
def setup
|
9
|
-
@staticmatic = StaticMatic::Base.new(File.dirname(__FILE__) + '/sandbox/test_site')
|
10
|
-
end
|
11
|
-
|
12
|
-
# Stylesheets tests
|
13
|
-
def test_should_generate_stylesheet_links
|
14
|
-
set_current_page("/index.html")
|
15
|
-
expected_output = %q{<link href="stylesheets/application.css" media="all"}
|
16
|
-
assert_match expected_output, stylesheets
|
17
|
-
|
18
|
-
expected_output = %q{<link href="stylesheets/application.css" media="print"}
|
19
|
-
assert_match expected_output, stylesheets(:media => :print)
|
20
|
-
|
21
|
-
expected_output = %q{<link href="stylesheets/application.css" media="all"}
|
22
|
-
assert_match expected_output, stylesheets(:application)
|
23
|
-
|
24
|
-
expected_output = %q{<link href="stylesheets/application.css" media="print"}
|
25
|
-
assert_match expected_output, stylesheets(:application, :media => :print)
|
26
|
-
|
27
|
-
set_current_page("/subdir/index.html")
|
28
|
-
expected_output = %q{<link href="../stylesheets/application.css"}
|
29
|
-
assert_match expected_output, stylesheets
|
30
|
-
|
31
|
-
set_current_page("/subdir/other/index.html")
|
32
|
-
expected_output = %q{<link href="../../stylesheets/application.css"}
|
33
|
-
assert_match expected_output, stylesheets
|
34
|
-
end
|
35
|
-
|
36
|
-
# Link tests
|
37
|
-
def test_should_autolink_page
|
38
|
-
set_current_page("/index.html")
|
39
|
-
expected_output = %q{<a href="test.html">Test</a>}
|
40
|
-
assert_match expected_output, link("Test")
|
41
|
-
|
42
|
-
set_current_page("/subdir/index.html")
|
43
|
-
expected_output = %q{<a href="../test.html">Test</a>}
|
44
|
-
assert_match expected_output, link("Test")
|
45
|
-
|
46
|
-
set_current_page("/subdir/other/index.html")
|
47
|
-
expected_output = %q{<a href="../../test.html">Test</a>}
|
48
|
-
assert_match expected_output, link("Test")
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_should_not_change_url_with_protocol
|
52
|
-
expected_output = %q{<a href="mailto:joe@mailinator.com">Email Joe</a>}
|
53
|
-
assert_match expected_output, link("Email Joe", "mailto:joe@mailinator.com")
|
54
|
-
|
55
|
-
%w(http https ftp gopher ssh telnet).each do |protocol|
|
56
|
-
expected_output = "<a href=\"#{protocol}://www.google.com\">Google</a>"
|
57
|
-
assert_match expected_output, link("Google", "#{protocol}://www.google.com")
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_should_not_change_url_with_existing_relative_path
|
62
|
-
['/index.html', '/subdir/index.html', '/subdir/other/index.html'].each do |the_current_page|
|
63
|
-
set_current_page(the_current_page)
|
64
|
-
|
65
|
-
['/foo.html', './foo.html', '../other/foo.html', '//www.google.com/search'].each do |the_path|
|
66
|
-
expected_output = "<a href=\"#{the_path}\">Foo</a>"
|
67
|
-
assert_match expected_output, link("Foo", the_path)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_should_not_change_anchor_url
|
73
|
-
['/index.html', '/subdir/index.html', '/subdir/other.html'].each do |the_current_page|
|
74
|
-
set_current_page(the_current_page)
|
75
|
-
|
76
|
-
expected_output = %q{<a href="#myanchor">Foo</a>}
|
77
|
-
assert_match expected_output, link("Foo", "#myanchor")
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_should_strip_html_extension_from_page_links
|
82
|
-
@staticmatic.configuration.use_extensions_for_page_links = false
|
83
|
-
|
84
|
-
set_current_page("/index.html")
|
85
|
-
expected_output = %q{<a href="other">Other</a>}
|
86
|
-
assert_match expected_output, link("Other")
|
87
|
-
|
88
|
-
set_current_page("/subdir/index.html")
|
89
|
-
expected_output = %q{<a href="../other">Other</a>}
|
90
|
-
assert_match expected_output, link("Other")
|
91
|
-
|
92
|
-
set_current_page("/subdir/other/index.html")
|
93
|
-
expected_output = %q{<a href="../../other">Other</a>}
|
94
|
-
assert_match expected_output, link("Other")
|
95
|
-
|
96
|
-
set_current_page("/index.html")
|
97
|
-
expected_output = %q{<a href="/other">Other</a>}
|
98
|
-
assert_match expected_output, link("Other", "/other.html")
|
99
|
-
|
100
|
-
expected_output = %q{<a href="/foo/">Foo</a>}
|
101
|
-
assert_match expected_output, link("Foo", "/foo/index.html")
|
102
|
-
|
103
|
-
expected_output = %q{<a href="/">Home</a>}
|
104
|
-
assert_match expected_output, link("Home", "/")
|
105
|
-
end
|
106
|
-
|
107
|
-
def test_should_not_strip_extension_from_non_page_links
|
108
|
-
@staticmatic.configuration.use_extensions_for_page_links = false
|
109
|
-
|
110
|
-
set_current_page("/index.html")
|
111
|
-
expected_output = %q{<a href="other.zip">Other</a>}
|
112
|
-
assert_match expected_output, link("Other", "other.zip")
|
113
|
-
|
114
|
-
set_current_page("/subdir/index.html")
|
115
|
-
expected_output = %q{<a href="../other.zip">Other</a>}
|
116
|
-
assert_match expected_output, link("Other", "other.zip")
|
117
|
-
|
118
|
-
set_current_page("/subdir/other/index.html")
|
119
|
-
expected_output = %q{<a href="../../other.zip">Other</a>}
|
120
|
-
assert_match expected_output, link("Other", "other.zip")
|
121
|
-
|
122
|
-
set_current_page("/index.html")
|
123
|
-
expected_output = %q{<a href="/other.zip">Other</a>}
|
124
|
-
assert_match expected_output, link("Other", "/other.zip")
|
125
|
-
|
126
|
-
expected_output = %q{<a href="http://www.google.com/index.html">Google</a>}
|
127
|
-
assert_match expected_output, link("Google", "http://www.google.com/index.html")
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_should_prefix_relative_path_while_generating_file_name
|
131
|
-
['/other.html', '/subdir/index.html', '/subdir/other/filename.html'].each do |the_current_page|
|
132
|
-
set_current_page(the_current_page)
|
133
|
-
|
134
|
-
['Other', 'Other File', 'Other / File', 'Other /File/'].each do |link_name|
|
135
|
-
['../', './', '/', '/foo/','../bar/'].each do |relative_path|
|
136
|
-
expected_output = %Q{<a href="#{relative_path}#{urlify(link_name)}.html">#{link_name}</a>}
|
137
|
-
assert_match expected_output, link("#{relative_path}#{link_name}")
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_should_not_prefix_relative_path_while_generating_file_name
|
144
|
-
set_current_page("/other.html")
|
145
|
-
|
146
|
-
expected_output = %q{<a href="testlink.html">Test/Link</a>}
|
147
|
-
assert_match expected_output, link('Test/Link')
|
148
|
-
|
149
|
-
set_current_page("/subdir/index.html")
|
150
|
-
expected_output = %q{<a href="../testlink.html">Test/Link</a>}
|
151
|
-
assert_match expected_output, link('Test/Link')
|
152
|
-
|
153
|
-
set_current_page("/subdir/other/filename.html")
|
154
|
-
expected_output = %q{<a href="../../testlink.html">Test/Link</a>}
|
155
|
-
assert_match expected_output, link('Test/Link')
|
156
|
-
end
|
157
|
-
|
158
|
-
# Tag tests
|
159
|
-
def test_should_generate_tag_with_block
|
160
|
-
expected_output = %q{<a href="/test.html" title="My Test Link">Test</a>}
|
161
|
-
assert_match expected_output, tag(:a, :href => "/test.html", :title => 'My Test Link') { "Test" }
|
162
|
-
end
|
163
|
-
|
164
|
-
def test_should_generate_tag
|
165
|
-
expected_output = %q{<br/>}
|
166
|
-
assert_match expected_output, tag(:br)
|
167
|
-
end
|
168
|
-
|
169
|
-
# Urlify tests
|
170
|
-
def test_should_urlify_string
|
171
|
-
assert_equal "stephens_haml_and_sass_project", urlify("Stephen's Haml & Sass Project")
|
172
|
-
assert_equal "testlink", urlify("Test/Link")
|
173
|
-
end
|
174
|
-
|
175
|
-
# Text_field tests
|
176
|
-
def test_should_generate_input
|
177
|
-
expected_output = %q{<input type="text" id="test" value="blah" name="test"/>}
|
178
|
-
assert_tags_match expected_output, text_field("test", "blah")
|
179
|
-
end
|
180
|
-
|
181
|
-
# Text_area tests
|
182
|
-
def test_should_generate_text_area
|
183
|
-
expected_output = '<textarea id="hello" name="hello">world</textarea>'
|
184
|
-
assert_equal expected_output, text_area('hello', 'world')
|
185
|
-
end
|
186
|
-
|
187
|
-
# Element id test
|
188
|
-
def test_id_should_not_be_overwritten
|
189
|
-
expected_output = '<textarea id="goodbye" name="hello">world</textarea>'
|
190
|
-
assert_equal expected_output, text_area('hello', 'world', :id => 'goodbye')
|
191
|
-
end
|
192
|
-
|
193
|
-
# Javascripts tests
|
194
|
-
def test_should_generate_js_links
|
195
|
-
set_current_page('/index.html')
|
196
|
-
expected_output = %q{src="javascripts/test.js"}
|
197
|
-
assert_match expected_output, javascripts('test')
|
198
|
-
|
199
|
-
expected_output = %q{src="javascripts/test.js"}
|
200
|
-
assert_match expected_output, javascripts(:test)
|
201
|
-
|
202
|
-
set_current_page('/subdir/index.html')
|
203
|
-
expected_output = %q{src="../javascripts/test.js"}
|
204
|
-
assert_match expected_output, javascripts('test')
|
205
|
-
|
206
|
-
set_current_page('/subdir/other/index.html')
|
207
|
-
expected_output = %q{src="../../javascripts/test.js"}
|
208
|
-
assert_match expected_output, javascripts('test')
|
209
|
-
end
|
210
|
-
|
211
|
-
def test_should_not_change_js_link_with_existing_relative_url
|
212
|
-
['/index.html', '/subdir/index.html', '/subdir/other/index.html'].each do |the_current_page|
|
213
|
-
set_current_page(the_current_page)
|
214
|
-
|
215
|
-
['/my_javascript.js', './my_javascript.js', '../other/my_javascript.js'].each do |the_path|
|
216
|
-
expected_output = "src=\"#{the_path}\""
|
217
|
-
assert_match expected_output, javascripts(the_path)
|
218
|
-
end
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
def test_should_generate_absolute_js_link
|
223
|
-
['/index.html', '/subdir/index.html', '/subdir/other/foo.html'].each do |the_current_page|
|
224
|
-
set_current_page(the_current_page)
|
225
|
-
|
226
|
-
['http://staticmatic.rubyforge.org/javascripts/test.js', 'https://staticmatic.rubyforge.org/javascripts/test.js'].each do |the_path|
|
227
|
-
expected_output = "src=\"#{the_path}\""
|
228
|
-
assert_match expected_output, javascripts(the_path)
|
229
|
-
end
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
# Partials tests
|
234
|
-
def test_should_include_partial_template
|
235
|
-
@staticmatic.instance_eval { def current_file() "/index.haml"; end }
|
236
|
-
set_current_page("/index.html")
|
237
|
-
expected_output = "My Menu"
|
238
|
-
assert_match expected_output, partial("menu")
|
239
|
-
end
|
240
|
-
|
241
|
-
# Image tests
|
242
|
-
def test_should_generate_basic_img_tag
|
243
|
-
set_current_page("/index.html")
|
244
|
-
expected_output = %q{<img src="images/test.gif" alt="Test"/>}
|
245
|
-
assert_tags_match expected_output, img('test.gif')
|
246
|
-
|
247
|
-
set_current_page("/subdir/index.html")
|
248
|
-
expected_output = %q{<img src="../images/test.gif" alt="Test"/>}
|
249
|
-
assert_tags_match expected_output, img('test.gif')
|
250
|
-
|
251
|
-
set_current_page("/subdir/other/index.html")
|
252
|
-
expected_output = %q{<img src="../../images/test.gif" alt="Test"/>}
|
253
|
-
assert_tags_match expected_output, img('test.gif')
|
254
|
-
end
|
255
|
-
|
256
|
-
def test_should_generate_img_tag_with_options
|
257
|
-
set_current_page("/index.html")
|
258
|
-
expected_output = %q{<img src="images/test.gif" alt="Testing the alt" class="testClass"/>}
|
259
|
-
assert_tags_match expected_output, img('test.gif', {:alt => 'Testing the alt', :class => 'testClass'})
|
260
|
-
end
|
261
|
-
|
262
|
-
def test_should_generate_img_tag_with_sub_directory
|
263
|
-
set_current_page("/index.html")
|
264
|
-
expected_output = %q{<img src="images/about_us/test.gif" alt="Test"/>}
|
265
|
-
assert_tags_match expected_output, img('about_us/test.gif')
|
266
|
-
end
|
267
|
-
|
268
|
-
def test_should_generate_img_tag_with_src_left_as_is
|
269
|
-
['/index.html', '/subdir/index.html', '/subdir/other/index.html'].each do |the_current_page|
|
270
|
-
set_current_page(the_current_page)
|
271
|
-
|
272
|
-
['/images/test_image.gif', './test_image.gif', '../test_image.gif'].each do |the_path|
|
273
|
-
expected_output = "<img src=\"#{the_path}\" alt=\"Test image\"/>"
|
274
|
-
assert_tags_match expected_output, img(the_path)
|
275
|
-
end
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
|
-
def test_should_generate_absolute_img_tag
|
280
|
-
['/index.html', '/subdir/foo.html', '/subdir/other/index.html'].each do |the_current_page|
|
281
|
-
set_current_page(the_current_page)
|
282
|
-
|
283
|
-
['http://staticmatic.rubyforge.org/images/bycurve21.gif', 'https://staticmatic.rubyforge.org/images/bycurve21.gif'].each do |the_path|
|
284
|
-
expected_output = "<img src=\"#{the_path}\" alt=\"Bycurve21\"/>"
|
285
|
-
assert_tags_match expected_output, img(the_path)
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
289
|
-
|
290
|
-
private
|
291
|
-
|
292
|
-
def set_current_page(page)
|
293
|
-
@staticmatic.instance_variable_set("@current_page", page)
|
294
|
-
end
|
295
|
-
|
296
|
-
end
|