brite 0.6.0 → 0.7.0
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.
- 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