frank 0.3.0.beta2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README.md +76 -41
  2. data/frank.gemspec +3 -3
  3. data/lib/frank/base.rb +2 -2
  4. metadata +6 -9
data/README.md CHANGED
@@ -4,11 +4,11 @@ Frank
4
4
  Inspired by [Sinatra][0]'s simplicity and ease of use, Frank lets you build
5
5
  static sites using your favorite libs. Frank has a built in development server
6
6
  for previewing work as you develop. Frank also has a "dump" command for compiling and saving
7
- your work out to static html, css, and js.
7
+ your work out to static html and css.
8
8
 
9
9
  Frank uses [Tilt][1], so it
10
10
  comes with support for [Haml & Sass][2], [LESS][10], [Builder][3], [ERB][4],
11
- [Liquid][5], [Mustache][6], and [CoffeeScript][7].
11
+ [Liquid][5], and [Mustache][6].
12
12
 
13
13
  Overview
14
14
  --------
@@ -26,56 +26,84 @@ Then `cd <project_name>` and start up the server with:
26
26
  0.0.0.0:3601
27
27
 
28
28
  And you're ready to get to work. By default, dynamic templates are served from the `dynamic` folder,
29
- static files are served from the `static` folder, and layouts are server from the `layouts` folder.
29
+ static files are served from the `static` folder, and layouts are served from the `layouts` folder.
30
30
 
31
- When you are finished:
32
- `$ frankout <dump_dir> # compile templates`
33
-
34
- or
31
+ When you're done working:
32
+
33
+ $ frankout <dump_dir>
34
+
35
+ to compile templates and copy them--along with static your assets--into `<dump_dir>`. Or,
35
36
 
36
- `$ frankout --production <dump_dir> # compile and create folder structure suitable for serving from a production website`
37
+ $ frankout --production <dump_dir>
38
+
39
+ to compile & copy over, but organized to work as a static website in production. (e.g. folders named after your views, with an `index.html` inside)
37
40
 
38
41
  Views & Meta Data
39
42
  -------------------------
40
43
 
41
- All of your templates, and less/sass/coffeescript go into `<project>/dynamic`,
42
- by default. You can organize them into subfolders if you've
43
- got lots.
44
+ All of your templates, less, sass &c. go into `<project>/dynamic` by default.
45
+ You can organize them into subfolders if you've got lots.
44
46
 
45
47
  ### Views
46
48
 
47
- Writing views is simple. Say you've got a `blog.haml`, in `<project>/dynamic` just browse to
48
- `http://0.0.0.0:3601/blog` and your view will be parsed and returned as html.
49
+ Writing views is simple. Say you've got a `blog.haml` in `<project>/dynamic`; just browse over to
50
+ `http://0.0.0.0:3601/blog` and your view will be parsed and served up as html.
49
51
 
50
- ### Meta Data
51
52
 
52
- Frank doesn't have controllers and there are times you need to pass variables around between templates and layouts.
53
- This can be done with template Meta data. Meta data is set using YAML.
53
+ ### Meta Data
54
54
 
55
- You define your fields at the top a template
56
- a separate it from the rest of your template using the Meta delimiter: `META--------`. The delimiter can contain as
57
- many dashes, or hyphens as you wish.
55
+ Frank was designed to make controllers unnecessary. But, sometimes it's nice to have
56
+ variables in your templates / layouts. This is particularly handy if you want to set the page
57
+ title (in the layout) according to the view. This is simple, now, with meta data.
58
+
59
+ Meta fields go at the top of any view, and are written in [YAML][13]. To mark the end
60
+ of the meta section, place the meta delimeter, `META---`, on a blank line. You can
61
+ use as many hyphens as you'd like (as long as there are 3).
62
+
63
+ Meta fields are then available as local variables to all templating languages that
64
+ support them--in the view & layout:
65
+
66
+ view:
67
+ title: My Rad Page
68
+ author: My Rad Self
69
+ ---------------------------------------------META
70
+
71
+ %h1= title
72
+ %h3= 'By ' + author
73
+
74
+ layout:
75
+ %title= title + '--My Rad Site'
76
+
58
77
 
59
- You can access your fields as local variables in the template (if the template language supports it).
60
- For example, you might have a template and define a field `title: My Rad Template`, then inside a haml layout,
61
- you could create a title tag with the field: `%title= title`
62
78
 
63
79
  Layouts (updated in 0.3)
64
80
  -----------------------------
65
81
 
66
- Layouts are also simple with Frank. By default, just create a `default.haml`
67
- (or another language), inside the `layouts` folder and include a `yield` statement. Any
68
- views will be inserted into it at that point.
82
+ Layouts are also simple with Frank. Create a `default.haml` (or `.rhtml`, etc.),
83
+ in the `layouts` folder, and include a `yield` somewhere therein; views using the
84
+ layout will be inserted there.
69
85
 
70
- Layouts can be name spaced with folders:
86
+ ### Namespacing Layouts
87
+ You can namespace your layouts using folders:
71
88
 
72
- a template: `dynamic_folder/blog/a-blog-post.haml`
73
- would look for a layout: `layouts/blog/default.haml`
74
- and if not found use the default: `layouts/default.haml`
89
+ * When rendering a view--`dynamic_folder/blog/a-blog-post.haml`,
90
+ * Frank would first look for the layout `layouts/blog/default.haml`,
91
+ * and if not found use fall back on `layouts/default.haml`
75
92
 
76
- Frank also supports defining layouts on an individual template basis using meta data
77
- you can do this by defining a meta field `layout: my_layout.haml` You can disable layouts on a
78
- template by using `layout: nil`
93
+ ### Multiple/No Layouts
94
+
95
+ Frank also supports choosing layouts on a view-by-view basis via meta data. Just add a
96
+ `layout` meta field:
97
+
98
+ layout: my_layout.haml
99
+ ---------------------------------------------META
100
+ %h1 I'm using my_layout.haml instead of default.haml!
101
+
102
+ or if you don't want a layout at all:
103
+
104
+ layout: nil
105
+ ---------------------------------------------META
106
+ %h1 No layout here!
79
107
 
80
108
 
81
109
 
@@ -85,7 +113,7 @@ Partials & Helpers
85
113
  Frank comes with a helper method, `render_partial`, for including partials
86
114
  in your views.
87
115
 
88
- In addition, you can also easily add your own helper methods to use.
116
+ You can also add your own helper methods easily.
89
117
 
90
118
  ### Partials
91
119
 
@@ -107,13 +135,19 @@ to the `FrankHelpers` module; that's it. Use them just like `render_partial`.
107
135
  Built-in Helpers
108
136
  ----------------
109
137
 
110
- ### Auto Refresh
138
+ ### Auto-Refresh
139
+
140
+ Frank now has a handy automatic page refreshing helper. Just include `= refresh`
141
+ (or equivalent) in your view, and Frank will automatically refresh the page for you whenever you
142
+ save a project file. This eliminates the tedium of hundreds of manual refreshes over the course
143
+ of building a project.
144
+
145
+ When it's time to `frankout`, Frank will leave out the JavasScript bits of the refresher.
111
146
 
112
- Constantly refreshing your browser can become tedious while doing work. Frank has a handy refresh helper.
113
- It will include a bit of javascript that refreshes the browser when you save the current template or it's layout.
114
- You can include this in a haml template like this: `= refresh`. When you `frankout`,
115
- the template will render an empty string instead of the script tag
147
+ ### Current Page
116
148
 
149
+ Frank now has a `current_page` variable that you can use to set selected states on nav items.
150
+ It will return the path info from the template being processed. You also, have access to the variable from layouts and from the `frankout` command.
117
151
 
118
152
  ### Placeholder Text
119
153
 
@@ -153,7 +187,8 @@ If you would like to use the placeholder images in a context where the helper me
153
187
 
154
188
  All of the lorem helpers accept an optional "replacement" argument. This will be the text rendered when you `frankout`.
155
189
  For example `lorem.sentence("<%= page.content %>")` will generate a lorem sentence when you view the page using the `frankup` server.
156
- However, when you `frankout` the template will render "<%= page.content %>".
190
+ However, when you `frankout` the template will render "<%= page.content %>". This is useful if you plan on moving a frank project
191
+ into a framework. (e.g. rails, sinatra, django, etc)
157
192
 
158
193
 
159
194
  Configuration
@@ -179,9 +214,9 @@ Installation
179
214
  [4]: http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/
180
215
  [5]: http://www.liquidmarkup.org/
181
216
  [6]: http://github.com/defunkt/mustache
182
- [7]: http://jashkenas.github.com/coffee-script/
183
217
  [8]: http://lesscss.org/
184
218
  [9]: http://rack.rubyforge.org/
185
219
  [10]: http://lesscss.org/
186
220
  [11]: http://en.wikipedia.org/wiki/Lorem_ipsum
187
- [12]: http://www.imagemagick.org/script/binary-releases.php?ImageMagick=4pg9cdfr8e6gn7aru9mtelepr3
221
+ [12]: http://www.imagemagick.org/script/binary-releases.php?ImageMagick=4pg9cdfr8e6gn7aru9mtelepr3
222
+ [13]: http://www.yaml.org/start.html
data/frank.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{frank}
8
- s.version = "0.3.0.beta2"
8
+ s.version = "0.3.0"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["blahed", "nwah"]
12
- s.date = %q{2010-06-18}
12
+ s.date = %q{2010-06-21}
13
13
  s.description = %q{Rapidly develop static sites using any supported templating language}
14
14
  s.email = %q{travis.dunn@thisismedium.com}
15
15
  s.executables = ["frank", "frankout", "frankup"]
data/lib/frank/base.rb CHANGED
@@ -6,7 +6,7 @@ require 'frank/middleware/imager'
6
6
  require 'frank/middleware/refresh'
7
7
 
8
8
  module Frank
9
- VERSION = '0.3.0.beta2'
9
+ VERSION = '0.3.0'
10
10
 
11
11
  module Render; end
12
12
 
@@ -98,7 +98,7 @@ module Frank
98
98
 
99
99
  # regex for kinds that don't support meta
100
100
  # and define the meta delimiter
101
- nometa, delimiter = /\/_|\.(sass|less)$/, /^META-{3,}\n$/
101
+ nometa, delimiter = /\/_|\.(sass|less)$/, /^META-{3,}\s*$|^-{3,}META\s*$/
102
102
 
103
103
  # set the layout
104
104
  layout = path.match(nometa) ? nil : layout_for(path)
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frank
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: true
4
+ prerelease: false
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
8
  - 0
9
- - beta2
10
- version: 0.3.0.beta2
9
+ version: 0.3.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - blahed
@@ -16,7 +15,7 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2010-06-18 00:00:00 -04:00
18
+ date: 2010-06-21 00:00:00 -04:00
20
19
  default_executable:
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
@@ -183,13 +182,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
183
182
  version: "0"
184
183
  required_rubygems_version: !ruby/object:Gem::Requirement
185
184
  requirements:
186
- - - ">"
185
+ - - ">="
187
186
  - !ruby/object:Gem::Version
188
187
  segments:
189
- - 1
190
- - 3
191
- - 1
192
- version: 1.3.1
188
+ - 0
189
+ version: "0"
193
190
  requirements: []
194
191
 
195
192
  rubyforge_project: