brite 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.ruby +56 -0
- data/COPYING.rdoc +30 -0
- data/HISTORY.rdoc +16 -2
- data/README.rdoc +35 -27
- data/bin/brite-server +1 -1
- data/lib/brite.rb +2 -1
- data/lib/brite.yml +56 -0
- data/lib/brite/command.rb +100 -55
- data/lib/brite/config.rb +122 -40
- data/lib/brite/controller.rb +46 -104
- data/lib/brite/layout.rb +27 -13
- data/lib/brite/model.rb +107 -0
- data/lib/brite/page.rb +229 -0
- data/lib/brite/part.rb +88 -0
- data/lib/brite/post.rb +41 -0
- data/lib/brite/server.rb +88 -93
- data/lib/brite/site.rb +150 -0
- data/lib/brite/version.rb +21 -0
- data/test/fixture/brite.yml +3 -0
- data/test/fixture/example-page.page +8 -0
- data/test/fixture/example-post.post +9 -0
- data/test/helper.rb +5 -0
- data/test/test_config.rb +23 -0
- data/test/test_page.rb +28 -0
- data/test/test_site.rb +37 -0
- metadata +104 -109
- data/LICENSE +0 -205
- data/Syckfile +0 -76
- data/lib/brite/meta/data.rb +0 -26
- data/lib/brite/meta/package +0 -8
- data/lib/brite/meta/profile +0 -19
- data/lib/brite/models/model.rb +0 -97
- data/lib/brite/models/page.rb +0 -142
- data/lib/brite/models/post.rb +0 -9
- data/lib/brite/models/site.rb +0 -46
- data/lib/brite/rackup.rb +0 -6
- data/lib/plugins/sow/brite/awesome/Sowfile +0 -11
- data/lib/plugins/sow/brite/awesome/about.page +0 -28
- data/lib/plugins/sow/brite/awesome/assets/custom.less +0 -96
- data/lib/plugins/sow/brite/awesome/assets/fade.png +0 -0
- data/lib/plugins/sow/brite/awesome/assets/highlight.css +0 -96
- data/lib/plugins/sow/brite/awesome/assets/highlight.js +0 -1
- data/lib/plugins/sow/brite/awesome/assets/jquery.js +0 -19
- data/lib/plugins/sow/brite/awesome/assets/jquery.tabs.js +0 -1
- data/lib/plugins/sow/brite/awesome/assets/reset.css +0 -57
- data/lib/plugins/sow/brite/awesome/assets/ruby.png +0 -0
- data/lib/plugins/sow/brite/awesome/brite.yaml +0 -3
- data/lib/plugins/sow/brite/awesome/history.page +0 -15
- data/lib/plugins/sow/brite/awesome/index.page +0 -18
- data/lib/plugins/sow/brite/awesome/legal.page +0 -28
- data/lib/plugins/sow/brite/awesome/logs.page +0 -14
- data/lib/plugins/sow/brite/awesome/page.layout +0 -75
- data/lib/plugins/sow/brite/blog1/.rsync-filter +0 -12
- data/lib/plugins/sow/brite/blog1/2011/01/sample.html +0 -293
- data/lib/plugins/sow/brite/blog1/2011/01/sample.post +0 -44
- data/lib/plugins/sow/brite/blog1/Sowfile +0 -10
- data/lib/plugins/sow/brite/blog1/assets/images/bg.jpg +0 -0
- data/lib/plugins/sow/brite/blog1/assets/images/icon.jpg +0 -0
- data/lib/plugins/sow/brite/blog1/assets/styles/class.css +0 -15
- data/lib/plugins/sow/brite/blog1/assets/styles/id.css +0 -85
- data/lib/plugins/sow/brite/blog1/assets/styles/misc.css +0 -0
- data/lib/plugins/sow/brite/blog1/assets/styles/print.css +0 -76
- data/lib/plugins/sow/brite/blog1/assets/styles/reset.css +0 -77
- data/lib/plugins/sow/brite/blog1/assets/styles/tag.css +0 -68
- data/lib/plugins/sow/brite/blog1/brite.yml +0 -3
- data/lib/plugins/sow/brite/blog1/index.page +0 -23
- data/lib/plugins/sow/brite/blog1/page.layout +0 -88
- data/lib/plugins/sow/brite/blog1/post.layout +0 -25
- data/meta/data.rb +0 -26
- data/meta/package +0 -8
- data/meta/profile +0 -19
data/Syckfile
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
---
|
2
|
-
email:
|
3
|
-
service : Email
|
4
|
-
file : ~
|
5
|
-
subject : ~
|
6
|
-
mailto :
|
7
|
-
- ruby-talk@ruby-lang.org
|
8
|
-
- proutils@googlegroups.com
|
9
|
-
parts : ~
|
10
|
-
active : true
|
11
|
-
|
12
|
-
gemcutter:
|
13
|
-
active: true
|
14
|
-
|
15
|
-
grancher:
|
16
|
-
active: true
|
17
|
-
|
18
|
-
box:
|
19
|
-
service: Box
|
20
|
-
types : [gem]
|
21
|
-
spec : false
|
22
|
-
active : true
|
23
|
-
|
24
|
-
dnote:
|
25
|
-
service : DNote
|
26
|
-
loadpath : ~
|
27
|
-
labels : ~
|
28
|
-
output : ~
|
29
|
-
format : ~
|
30
|
-
active : true
|
31
|
-
|
32
|
-
rdoc:
|
33
|
-
service : RDoc
|
34
|
-
template: redfish
|
35
|
-
exclude : [Syckfile]
|
36
|
-
output : site/docs/api
|
37
|
-
active : true
|
38
|
-
|
39
|
-
ridoc:
|
40
|
-
service: RIDoc
|
41
|
-
include: ~
|
42
|
-
exclude: ~
|
43
|
-
output : ri
|
44
|
-
active : true
|
45
|
-
|
46
|
-
stats:
|
47
|
-
service : Stats
|
48
|
-
title : ~
|
49
|
-
loadpath : ~
|
50
|
-
exclude : ~
|
51
|
-
output : ~
|
52
|
-
active : true
|
53
|
-
|
54
|
-
vclog:
|
55
|
-
service : vclog
|
56
|
-
formats : html,rdoc
|
57
|
-
layout : history
|
58
|
-
typed : true
|
59
|
-
output : ~
|
60
|
-
active : false
|
61
|
-
|
62
|
-
testrb:
|
63
|
-
service : TestUnit
|
64
|
-
tests : ~
|
65
|
-
exclude : ~
|
66
|
-
loadpath : ~
|
67
|
-
requires : ~
|
68
|
-
live : false
|
69
|
-
active : false
|
70
|
-
|
71
|
-
syntax:
|
72
|
-
service : Syntax
|
73
|
-
loadpath : ~
|
74
|
-
exclude : ~
|
75
|
-
active : false
|
76
|
-
|
data/lib/brite/meta/data.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
module Brite
|
2
|
-
|
3
|
-
def self.package
|
4
|
-
@package ||= (
|
5
|
-
require 'yaml'
|
6
|
-
YAML.load(File.new(File.dirname(__FILE__) + '/package'))
|
7
|
-
)
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.profile
|
11
|
-
@profile ||= (
|
12
|
-
require 'yaml'
|
13
|
-
YAML.load(File.new(File.dirname(__FILE__) + '/profile'))
|
14
|
-
)
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.const_missing(name)
|
18
|
-
key = name.to_s.downcase
|
19
|
-
package[key] || profile[key] || super(name)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
# becuase Ruby 1.8~ gets in the way
|
25
|
-
Object.__send__(:remove_const, :VERSION) if Object.const_defined?(:VERSION)
|
26
|
-
|
data/lib/brite/meta/package
DELETED
data/lib/brite/meta/profile
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
---
|
2
|
-
title : Brite
|
3
|
-
subtitle : Light Up Your Site
|
4
|
-
summary : Super Simple Static Site Generation
|
5
|
-
copyright: Copyright (c) 2006,2009 Thomas Sawyer
|
6
|
-
license : Apache v2.0
|
7
|
-
suite : proutils
|
8
|
-
contact : http://googlegroups.com/group/proutils
|
9
|
-
authors : Thomas Sawyer
|
10
|
-
|
11
|
-
description:
|
12
|
-
Brite is a remarkably easy to use, light-weight website
|
13
|
-
generator. It supports a variety of backend rendering engines
|
14
|
-
including rhtml via eruby, textile via redcloth, markdown
|
15
|
-
via rdiscount, with others on the way.
|
16
|
-
|
17
|
-
resources:
|
18
|
-
homepage: http://proutils.github.com/brite
|
19
|
-
repository: git://github.com/proutils/brite.git
|
data/lib/brite/models/model.rb
DELETED
@@ -1,97 +0,0 @@
|
|
1
|
-
module Brite
|
2
|
-
|
3
|
-
#
|
4
|
-
class Model
|
5
|
-
|
6
|
-
# Designate a field to be omitted from rendering context.
|
7
|
-
def self.omit_field(name)
|
8
|
-
omit_fields << (RUBY_VERSION >= "1.9" ? name.to_sym : name.to_s)
|
9
|
-
end
|
10
|
-
|
11
|
-
# Returns an Array of omitted fields for this class.
|
12
|
-
def self.omit_fields
|
13
|
-
@omit_fields ||= []
|
14
|
-
end
|
15
|
-
|
16
|
-
#
|
17
|
-
def self.attr_accessor(name, &default)
|
18
|
-
name = name.to_sym
|
19
|
-
if default
|
20
|
-
define_method(name) do
|
21
|
-
value = instance_variable_get("@#{name}") || instance_eval(&default)
|
22
|
-
(class << self; self; end).class_eval do
|
23
|
-
define_method(name){ value }
|
24
|
-
end
|
25
|
-
value
|
26
|
-
end
|
27
|
-
else
|
28
|
-
attr_reader(name)
|
29
|
-
end
|
30
|
-
attr_writer(name)
|
31
|
-
end
|
32
|
-
|
33
|
-
# Define a singleton method for given key-value pair.
|
34
|
-
def []=(k,v)
|
35
|
-
(class << self; self; end).class_eval do
|
36
|
-
define_method(k){v}
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Returns a Binding for this instance.
|
41
|
-
def to_binding(&block)
|
42
|
-
binding
|
43
|
-
end
|
44
|
-
|
45
|
-
# Returns a Hash of rendering fields.
|
46
|
-
def to_h
|
47
|
-
hash = {}
|
48
|
-
fields = rendering_fields
|
49
|
-
fields.each do |field|
|
50
|
-
hash[field.to_s] = __send__(field)
|
51
|
-
end
|
52
|
-
#extra.each do |k,v|
|
53
|
-
# hash[k.to_s] == v
|
54
|
-
#end
|
55
|
-
hash
|
56
|
-
end
|
57
|
-
|
58
|
-
# In case Liquid template is used.
|
59
|
-
def to_liquid
|
60
|
-
to_h
|
61
|
-
end
|
62
|
-
|
63
|
-
# Returns an Array of attribute/method names to be visible to the page
|
64
|
-
# rendering.
|
65
|
-
def rendering_fields
|
66
|
-
list = public_methods
|
67
|
-
list -= Model.public_instance_methods
|
68
|
-
list -= omit_fields
|
69
|
-
list.select do |name|
|
70
|
-
case name.to_s
|
71
|
-
when /\W+/ then false
|
72
|
-
when /^to_/ then false
|
73
|
-
else
|
74
|
-
true
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
# Returns an Array of attribute/method names explicitly omitted from
|
80
|
-
# being visible from the rendering.
|
81
|
-
def omit_fields
|
82
|
-
list = []
|
83
|
-
self.class.ancestors.reverse_each do |ancestor|
|
84
|
-
list.concat(ancestor.omit_fields) if ancestor.respond_to?(:omit_fields)
|
85
|
-
end
|
86
|
-
list
|
87
|
-
end
|
88
|
-
|
89
|
-
#
|
90
|
-
def singleton_class
|
91
|
-
(class << self; self; end)
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
end
|
97
|
-
|
data/lib/brite/models/page.rb
DELETED
@@ -1,142 +0,0 @@
|
|
1
|
-
require 'brite/models/model'
|
2
|
-
|
3
|
-
module Brite
|
4
|
-
|
5
|
-
#
|
6
|
-
class Page < Model
|
7
|
-
|
8
|
-
# New Page.
|
9
|
-
def initialize(settings={}, &rendering)
|
10
|
-
settings.each do |k,v|
|
11
|
-
if respond_to?("#{k}=")
|
12
|
-
__send__("#{k}=",v)
|
13
|
-
else
|
14
|
-
self[k] = v
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
@rendering = rendering
|
19
|
-
end
|
20
|
-
|
21
|
-
#
|
22
|
-
attr_accessor :file
|
23
|
-
|
24
|
-
# Instance of Site class to which this page belongs.
|
25
|
-
attr_accessor :site
|
26
|
-
|
27
|
-
# Author
|
28
|
-
attr_accessor :author do
|
29
|
-
'Anonymous'
|
30
|
-
end
|
31
|
-
|
32
|
-
# Title of page/post
|
33
|
-
attr_accessor :title
|
34
|
-
|
35
|
-
# Publish date
|
36
|
-
attr_accessor :date do
|
37
|
-
date_from_filename(file) || Time.now
|
38
|
-
end
|
39
|
-
|
40
|
-
# Category ("a glorified tag")
|
41
|
-
attr_accessor :category
|
42
|
-
|
43
|
-
# Tags (labels)
|
44
|
-
attr_accessor :tags
|
45
|
-
|
46
|
-
#
|
47
|
-
def tags=(entry)
|
48
|
-
case entry
|
49
|
-
when String, Symbol
|
50
|
-
entry = entry.to_s.strip
|
51
|
-
if entry.index(/[,;]/)
|
52
|
-
entry = entry.split(/[,;]/)
|
53
|
-
else
|
54
|
-
entry = entry.split(/\s+/)
|
55
|
-
end
|
56
|
-
else
|
57
|
-
entry = entry.to_a.flatten
|
58
|
-
end
|
59
|
-
@tags = entry.map{ |e| e.strip }
|
60
|
-
end
|
61
|
-
|
62
|
-
#
|
63
|
-
attr_accessor :url do
|
64
|
-
File.join(site.url, name + extension)
|
65
|
-
end
|
66
|
-
|
67
|
-
#
|
68
|
-
attr_accessor :layout
|
69
|
-
|
70
|
-
#
|
71
|
-
def output
|
72
|
-
@output ||= file.chomp(File.extname(file)) + extension
|
73
|
-
end
|
74
|
-
|
75
|
-
#
|
76
|
-
def output=(fname)
|
77
|
-
@output = File.join(File.dirname(file), fname) if fname
|
78
|
-
@output
|
79
|
-
end
|
80
|
-
|
81
|
-
#
|
82
|
-
def name
|
83
|
-
@name ||= file.chomp(File.extname(file))
|
84
|
-
end
|
85
|
-
|
86
|
-
#
|
87
|
-
#attr_accessor :relative_url do
|
88
|
-
# output #File.join(root, output)
|
89
|
-
#end
|
90
|
-
|
91
|
-
#
|
92
|
-
attr_accessor :path do
|
93
|
-
'/' + name + extension
|
94
|
-
end
|
95
|
-
|
96
|
-
# DEPRECATE: Get rid of this and use rack to test page instead of files.
|
97
|
-
# OTOH, that may not alwasy be possible we may need to keep this.
|
98
|
-
attr_accessor :root do
|
99
|
-
'../' * file.count('/')
|
100
|
-
end
|
101
|
-
|
102
|
-
# Working directory of file being rendering. (Why a field?)
|
103
|
-
attr_accessor :work do
|
104
|
-
'/' + File.dirname(file)
|
105
|
-
end
|
106
|
-
|
107
|
-
# Summary is the rendering of the first part.
|
108
|
-
attr_accessor :summary
|
109
|
-
|
110
|
-
# Output extension (defualt is 'html')
|
111
|
-
def extension
|
112
|
-
@extension ||= '.html'
|
113
|
-
end
|
114
|
-
|
115
|
-
# Set output extension.
|
116
|
-
def extension=(extname)
|
117
|
-
@extension = (
|
118
|
-
e = (extname || 'html').to_s
|
119
|
-
e = '.' + e unless e.start_with?('.')
|
120
|
-
e
|
121
|
-
)
|
122
|
-
end
|
123
|
-
|
124
|
-
# Renders page template.
|
125
|
-
def to_s
|
126
|
-
@rendering.call(self)
|
127
|
-
end
|
128
|
-
|
129
|
-
private
|
130
|
-
|
131
|
-
#
|
132
|
-
def date_from_filename(file)
|
133
|
-
if md = (/^\d\d\d\d-\d\d-\d\d/.match(file))
|
134
|
-
md[1]
|
135
|
-
else
|
136
|
-
File.mtime(file)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
end
|
141
|
-
|
142
|
-
end
|
data/lib/brite/models/post.rb
DELETED
data/lib/brite/models/site.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'brite/models/model'
|
2
|
-
|
3
|
-
module Brite
|
4
|
-
|
5
|
-
#
|
6
|
-
class Site < Model
|
7
|
-
|
8
|
-
# New Site model.
|
9
|
-
def initialize(settings={})
|
10
|
-
settings.each do |k,v|
|
11
|
-
__send__("#{k}=", v)
|
12
|
-
end
|
13
|
-
@pages = []
|
14
|
-
@posts = []
|
15
|
-
end
|
16
|
-
|
17
|
-
# Returns a String of the site's URL.
|
18
|
-
attr_accessor :url
|
19
|
-
|
20
|
-
# Returns and Array of Page instances.
|
21
|
-
attr :pages
|
22
|
-
|
23
|
-
# Returns and Array of Post instances.
|
24
|
-
attr :posts
|
25
|
-
|
26
|
-
# Returns an Array of all tags used in all posts.
|
27
|
-
def tags
|
28
|
-
@tags ||= posts.map{ |post| post.tags }.flatten.uniq.sort
|
29
|
-
end
|
30
|
-
|
31
|
-
# Returns a Hash posts indexed by tag.
|
32
|
-
def posts_by_tag
|
33
|
-
@posts_by_tag ||= (
|
34
|
-
chart ||= Hash.new{|h,k|h[k]=[]}
|
35
|
-
posts.each do |post|
|
36
|
-
post.tags.each do |tag|
|
37
|
-
chart[tag] << post
|
38
|
-
end
|
39
|
-
end
|
40
|
-
chart
|
41
|
-
)
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
data/lib/brite/rackup.rb
DELETED