static 0.1.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +213 -0
- data/README.md +50 -0
- data/Rakefile +40 -11
- data/bin/static +5 -93
- data/lib/static.rb +6 -145
- data/lib/static/cli.rb +32 -0
- data/lib/static/cli/app/download.rb +40 -0
- data/lib/static/version.rb +5 -0
- metadata +111 -79
- data/History.txt +0 -5
- data/Manifest.txt +0 -36
- data/README.txt +0 -307
- data/bin/cli.rbml +0 -321
- data/lib/collection.rb +0 -161
- data/lib/extentions/class.rb +0 -43
- data/lib/extentions/string.rb +0 -11
- data/lib/filebase.rb +0 -84
- data/lib/generator.rb +0 -20
- data/lib/page.rb +0 -135
- data/lib/site.rb +0 -153
- data/lib/xhtml.rb +0 -198
- data/templates/disco/attributes +0 -3
- data/templates/disco/display +0 -6
- data/templates/disco/feed +0 -21
- data/templates/disco/link_list +0 -6
- data/templates/disco/paginate +0 -1
- data/templates/helpers/content.rb +0 -393
- data/templates/helpers/prototype.js +0 -3277
- data/templates/layouts/default/contents.erbml +0 -8
- data/templates/layouts/default/copy/page.copy +0 -4
- data/templates/layouts/default/main_navigation.erbml +0 -10
- data/templates/layouts/default/page_head.erbml +0 -7
- data/templates/layouts/default/structure/default.rbml +0 -22
- data/templates/layouts/default/structure/footer.rbml +0 -6
- data/templates/layouts/default/stylesheets/default.css +0 -180
- data/templates/layouts/default/submenu.erbml +0 -13
- data/templates/page.copy +0 -3
- data/templates/site.info +0 -3
- data/templates/site.map +0 -15
- data/templates/submenu.copy +0 -0
data/lib/extentions/class.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
|
2
|
-
class Class # :nodoc:
|
3
|
-
def cattr_reader(*syms)
|
4
|
-
syms.flatten.each do |sym|
|
5
|
-
class_eval(<<-EOS, __FILE__, __LINE__)
|
6
|
-
unless defined? @@#{sym}
|
7
|
-
@@#{sym} = nil
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.#{sym}
|
11
|
-
@@#{sym}
|
12
|
-
end
|
13
|
-
|
14
|
-
def #{sym}
|
15
|
-
@@#{sym}
|
16
|
-
end
|
17
|
-
EOS
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def cattr_writer(*syms)
|
22
|
-
syms.flatten.each do |sym|
|
23
|
-
class_eval(<<-EOS, __FILE__, __LINE__)
|
24
|
-
unless defined? @@#{sym}
|
25
|
-
@@#{sym} = nil
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.#{sym}=(obj)
|
29
|
-
@@#{sym} = obj
|
30
|
-
end
|
31
|
-
|
32
|
-
def #{sym}=(obj)
|
33
|
-
@@#{sym} = obj
|
34
|
-
end
|
35
|
-
EOS
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def cattr_accessor(*syms)
|
40
|
-
cattr_reader(*syms)
|
41
|
-
cattr_writer(*syms)
|
42
|
-
end
|
43
|
-
end
|
data/lib/extentions/string.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class String
|
4
|
-
def as_file; self.gsub(/([!?,]|[^a-zA-Z0-9\.]$)/, '').gsub(/[^a-zA-Z0-9\.\/~]/, '_').downcase end
|
5
|
-
def as_folder; self.as_file+((self.as_file=~/\/$/||self=='') ? '' : '/') end
|
6
|
-
def as_ext; self[0,0]='.' unless self[0,1]=='.'|| self==''; self end
|
7
|
-
def as_file_title; self.as_file.gsub /_/, ' ' end
|
8
|
-
def filename_as_symbol; self.as_file.to_sym end
|
9
|
-
def as_http; self =~ /^http\:\/\// ? "http://#{self.gsub(/^http\:\/\//, '').as_folder}" : "http://#{self.as_folder}" end
|
10
|
-
end
|
11
|
-
|
data/lib/filebase.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'erb'
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
module FileBase
|
6
|
-
include FileUtils
|
7
|
-
|
8
|
-
Home = ''
|
9
|
-
def home; (@home||Home).as_folder end
|
10
|
-
def set_home(here)
|
11
|
-
mkdir here unless exists? :folder, here
|
12
|
-
@home=here
|
13
|
-
end
|
14
|
-
|
15
|
-
def location; (@location||'').as_folder end
|
16
|
-
def set_location where; @location=where end
|
17
|
-
def setup_location where; @location=where; mkdir path unless exists? :folder, path end
|
18
|
-
def reset_location; @location='' end
|
19
|
-
def has_location?; location!='' end
|
20
|
-
|
21
|
-
def path; home+location end
|
22
|
-
def file_path; home+location+filename end
|
23
|
-
|
24
|
-
def exists? type, item
|
25
|
-
return false unless File.exist? item
|
26
|
-
truth = case type
|
27
|
-
when :folder
|
28
|
-
return(File.directory?(item))
|
29
|
-
when :file
|
30
|
-
return(!File.directory?(item))
|
31
|
-
else
|
32
|
-
return(true)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def items_under(pth, match=nil)
|
37
|
-
match||=''
|
38
|
-
folders = []
|
39
|
-
files = []
|
40
|
-
Dir.entries(pth).each { |item| (exists?(:folder, pth.as_folder+item) ? folders << item : files << item) unless item[0,1]=='.' or not item=~/#{match}/}
|
41
|
-
{:folders => folders, :files => files}
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
def move(from, to=home)
|
46
|
-
FileUtils.mv from, to
|
47
|
-
end
|
48
|
-
|
49
|
-
def copy(from, to=home)
|
50
|
-
FileUtils.cp_r from, to
|
51
|
-
end
|
52
|
-
|
53
|
-
def mkdir where, force=false
|
54
|
-
begin
|
55
|
-
Dir.mkdir where
|
56
|
-
rescue
|
57
|
-
raise $! unless force
|
58
|
-
destroy where
|
59
|
-
mkdir where
|
60
|
-
end
|
61
|
-
where
|
62
|
-
end
|
63
|
-
|
64
|
-
def make_dir path, force=false
|
65
|
-
mkdir path, force
|
66
|
-
puts 'creating '+path
|
67
|
-
end
|
68
|
-
|
69
|
-
def destroy what
|
70
|
-
FileUtils.rm_rf what
|
71
|
-
puts 'destroying '+what
|
72
|
-
end
|
73
|
-
|
74
|
-
def write(contents, where)
|
75
|
-
File.open(where, 'w'){ |f| f << contents }
|
76
|
-
end
|
77
|
-
def write_template what, where
|
78
|
-
write ERB.new(File.read(what)).result(binding), where
|
79
|
-
end
|
80
|
-
|
81
|
-
alias loc location
|
82
|
-
alias loc= set_location
|
83
|
-
end
|
84
|
-
|
data/lib/generator.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
class Generator
|
2
|
-
include Singleton
|
3
|
-
cattr_accessor :act_on, :actors
|
4
|
-
|
5
|
-
def self.load(what)
|
6
|
-
self.actors ||= []
|
7
|
-
self.actors << self.act_on if self.act_on
|
8
|
-
self.act_on = what
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.unload
|
12
|
-
self.act_on = self.actors.shift
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.method_missing(sym, *args)
|
16
|
-
act_on.send(sym, *args)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
|
data/lib/page.rb
DELETED
@@ -1,135 +0,0 @@
|
|
1
|
-
class Page
|
2
|
-
include FileBase
|
3
|
-
|
4
|
-
cattr_accessor :pages
|
5
|
-
@@pages=[]
|
6
|
-
attr_accessor :name, :subs, :page_location, :contents, :stylesheets, :index, :site_location, :site_base, :breadcrumbs
|
7
|
-
@@templates = {}
|
8
|
-
|
9
|
-
def initialize(name, home, location, generate_to, subs=nil, index=nil)
|
10
|
-
@home = home
|
11
|
-
@page_location = location
|
12
|
-
@name = name
|
13
|
-
@subs = subs
|
14
|
-
@site_base = generate_to.as_folder
|
15
|
-
@index = index
|
16
|
-
@breadcrumbs = []
|
17
|
-
@stylesheets = []
|
18
|
-
pages << self
|
19
|
-
end
|
20
|
-
|
21
|
-
def included_in? page_name, all_levels=false
|
22
|
-
ans = (file_name == page_name.to_s or Page.find(page_name).subs.include? name)
|
23
|
-
subs.each { |sub| ans = Page.find(sub.as_file).included_in?(page_name, all_levels) } if all_levels and !ans
|
24
|
-
ans
|
25
|
-
end
|
26
|
-
|
27
|
-
def file_name
|
28
|
-
name.as_file
|
29
|
-
end
|
30
|
-
def to_s
|
31
|
-
name.downcase
|
32
|
-
end
|
33
|
-
def self.find(name)
|
34
|
-
item = nil
|
35
|
-
name = name.to_s
|
36
|
-
self.pages.each{ |p| item = p if p.file_name==name.as_file}
|
37
|
-
item
|
38
|
-
end
|
39
|
-
|
40
|
-
def index?; @index end
|
41
|
-
|
42
|
-
def generate collection_name
|
43
|
-
stylesheets << contents['stylesheets'] if contents['stylesheets']
|
44
|
-
mkdir in_site_location unless exists?(:folder, in_site_location) or index?
|
45
|
-
collection = load_collection(collection_name) if collection_name
|
46
|
-
if collection
|
47
|
-
Generator.class_eval { cattr_accessor :include_text }
|
48
|
-
Generator.include_text = File.read home+"blueprint/#{page_location}_#{collection_name}_for_#{file_name}/#{collection.first}"
|
49
|
-
write ::Rbml::Processor.new.instance_eval(File.read(home+'base/default.rbml')), in_site_location+'index.html'
|
50
|
-
puts 'writing the index'
|
51
|
-
collection.each { |col|
|
52
|
-
Generator.include_text = File.read home+"blueprint/#{page_location}_#{collection_name}_for_#{file_name}/#{col}"
|
53
|
-
write ::Rbml::Processor.new.instance_eval(File.read(home+'base/default.rbml')), in_site_location+col+'.html'
|
54
|
-
puts "writing the entry for #{col}"
|
55
|
-
}
|
56
|
-
Generator.class_eval { @include_text = nil }
|
57
|
-
else
|
58
|
-
write ::Rbml::Processor.new.instance_eval(File.read(home+'base/default.rbml')), in_site_location+'index.html'
|
59
|
-
end
|
60
|
-
puts "writing #{in_site_location}index.html"
|
61
|
-
end
|
62
|
-
|
63
|
-
def load_collection name
|
64
|
-
stuff = nil
|
65
|
-
File.open(home+ 'blueprint/'+page_location+"_#{name}_for_#{file_name}/page.list") { |yf| stuff = YAML::load( yf ) }
|
66
|
-
stuff
|
67
|
-
end
|
68
|
-
|
69
|
-
def in_site_location
|
70
|
-
(index? ? site_base : ( has_subs? && subs.kind_of?(Array) ? site_base+page_location : site_base+page_location+name.as_file )).as_folder
|
71
|
-
end
|
72
|
-
def in_site_link
|
73
|
-
in_site_location.sub(site_base, '')
|
74
|
-
end
|
75
|
-
def level
|
76
|
-
tmp = (index? || has_subs? && subs.kind_of?(Array)) ? '' : '../'
|
77
|
-
tmp+page_location.gsub(/\w+\//, '../')
|
78
|
-
end
|
79
|
-
|
80
|
-
def menu_title
|
81
|
-
case subs
|
82
|
-
when Array : name
|
83
|
-
when String : subs
|
84
|
-
else
|
85
|
-
nil
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
def load_contents
|
90
|
-
File.open(home+ 'contents/'+page_location+name.as_file+'.copy') { |yf| @contents = YAML::load( yf ) } rescue puts $!
|
91
|
-
end
|
92
|
-
def save_contents
|
93
|
-
File.open(home+ 'contents/'+page_location+name.as_file+'.copy', 'w') { |yf| YAML.dump(@contents, yf) }
|
94
|
-
end
|
95
|
-
|
96
|
-
def extentions
|
97
|
-
{
|
98
|
-
:contents => '.copy',
|
99
|
-
:blueprint => '.rbml',
|
100
|
-
:page => '.html'
|
101
|
-
}
|
102
|
-
end
|
103
|
-
|
104
|
-
def make(type)
|
105
|
-
page_path = home+type.to_s+'/'+page_location
|
106
|
-
mkdir page_path unless exists? :folder, page_path
|
107
|
-
template_file = case type
|
108
|
-
when :contents : {:main => home+'layout/copy/page.copy', :sub => home+'layout/copy/submenu.copy'}
|
109
|
-
when :blueprint : {:main => home+'layout/contents.erbml', :sub => home+'layout/submenu.erbml'}
|
110
|
-
end
|
111
|
-
|
112
|
-
if subs && subs.kind_of?(Array)
|
113
|
-
unless exists?(:file, page_path+'submenu'+extentions[type])
|
114
|
-
unless type == :contents
|
115
|
-
write_template template_file[:sub], page_path+'_submenu'+extentions[type]
|
116
|
-
puts "writing #{page_path}submenu#{extentions[type]}"
|
117
|
-
end
|
118
|
-
else
|
119
|
-
puts "#{page_path}submenu#{extentions[type]} already exists"
|
120
|
-
end
|
121
|
-
end
|
122
|
-
unless exists?(:file, page_path+name.as_file+extentions[type])
|
123
|
-
write_template template_file[:main], page_path+name.as_file+extentions[type]
|
124
|
-
puts "writing #{page_path}#{name.as_file}#{extentions[type]}"
|
125
|
-
else
|
126
|
-
puts "#{page_path}#{name.as_file}#{extentions[type]} already exists"
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
def has_subs?
|
131
|
-
subs && !subs.empty?
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
|
data/lib/site.rb
DELETED
@@ -1,153 +0,0 @@
|
|
1
|
-
class Site
|
2
|
-
include FileBase
|
3
|
-
|
4
|
-
attr_accessor :name, :map, :info, :pages, :main_links, :site_loc
|
5
|
-
|
6
|
-
def initialize(where, name, generate_to, templates=nil)
|
7
|
-
set_home where+name
|
8
|
-
@name = name
|
9
|
-
@pages = []
|
10
|
-
@main_links = []
|
11
|
-
mkdir generate_to unless exists? :folder, generate_to
|
12
|
-
@site_loc = generate_to + name
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.load(where, name, generate_to, templates)
|
16
|
-
return nil unless self.site_exists?(where, name)
|
17
|
-
s = self.new(where, name, generate_to, templates)
|
18
|
-
s.load_info
|
19
|
-
s.load_pages
|
20
|
-
s
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.site_exists?(where, name)
|
24
|
-
(exists?(:folder, where+name) && exists?(:folder, where+name+'/project_info'))
|
25
|
-
end
|
26
|
-
def self.start where, name, generate_to, templates
|
27
|
-
return nil if self.site_exists?(where, name)
|
28
|
-
site = Site.new(where, name, generate_to, templates)
|
29
|
-
site.mkdir(site.home+'project_info')
|
30
|
-
site.copy(templates+'helpers', site.home) rescue puts $!
|
31
|
-
site.setup_location 'project_info'
|
32
|
-
site.write_template templates+'site.map', site.path+'site.map'
|
33
|
-
site.write_template templates+'site.info', site.path+'site.info'
|
34
|
-
site.load_info
|
35
|
-
site
|
36
|
-
end
|
37
|
-
|
38
|
-
def load_info(file=nil)
|
39
|
-
File.open(home+ 'project_info/site.map') { |yf| @map = YAML::load( yf ) } unless file=='site.info'
|
40
|
-
File.open(home+'project_info/site.info') { |yf| @info = YAML::load( yf ) } unless file=='site.map'
|
41
|
-
end
|
42
|
-
|
43
|
-
def save_info(file=nil)
|
44
|
-
File.open(home+'project_info/site.map', 'w') { |yf| YAML.dump(@map, yf) } unless file=='site.info'
|
45
|
-
File.open(home+'project_info/site.info', 'w') { |yf| YAML.dump(@info, yf) } unless file=='site.map'
|
46
|
-
end
|
47
|
-
|
48
|
-
def set_layout(name, address)
|
49
|
-
copy address+name, home+'layout/' unless exists? :folder, home+'layout' rescue puts $!
|
50
|
-
info['layout'] = {'name' => name, 'address' => address}
|
51
|
-
end
|
52
|
-
|
53
|
-
def load_pages
|
54
|
-
gather_pages
|
55
|
-
make_breadcrumbs
|
56
|
-
end
|
57
|
-
def gather_pages(page=nil, first_time=true, parent=nil)
|
58
|
-
index = nil
|
59
|
-
if first_time
|
60
|
-
reset_location
|
61
|
-
@pages = []
|
62
|
-
page ||= map
|
63
|
-
else
|
64
|
-
index = true if @pages.empty?
|
65
|
-
end
|
66
|
-
case page
|
67
|
-
when String : pages << Page.new(page, home, location, site_loc, parent, index)
|
68
|
-
when Array then
|
69
|
-
tmp = page.dup
|
70
|
-
gather_pages(tmp.shift, false, parent) while(tmp.size > 0)
|
71
|
-
when Hash then
|
72
|
-
page.each { |page_name, sub_pages|
|
73
|
-
unless first_time
|
74
|
-
set_location(pages.empty? ? location : location+page_name )
|
75
|
-
pages << Page.new(page_name, home, location, site_loc, sub_pages, index)
|
76
|
-
else
|
77
|
-
page_name = nil
|
78
|
-
end
|
79
|
-
gather_pages(sub_pages, false, page_name)
|
80
|
-
set_location location.sub(page_name.as_file+'/', '') if page_name
|
81
|
-
}
|
82
|
-
else
|
83
|
-
return nil
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def make_breadcrumbs
|
88
|
-
pages.each do |page|
|
89
|
-
page.breadcrumbs << page.name.as_file
|
90
|
-
page.subs.each { |p|
|
91
|
-
if p.kind_of?(Hash)
|
92
|
-
p.each{ |k, v|
|
93
|
-
tmp = Page.find(k)
|
94
|
-
tmp.breadcrumbs << page.breadcrumbs }
|
95
|
-
else
|
96
|
-
tmp = Page.find(p).breadcrumbs << page.breadcrumbs
|
97
|
-
end
|
98
|
-
} if page.has_subs? && page.subs.kind_of?(Array)
|
99
|
-
page.breadcrumbs.flatten!
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
def load_main_links
|
104
|
-
map['site_map'].each { |page|
|
105
|
-
case page
|
106
|
-
when String
|
107
|
-
main_links << page
|
108
|
-
when Hash
|
109
|
-
page.each { |name, subs| main_links << name }
|
110
|
-
end
|
111
|
-
}
|
112
|
-
end
|
113
|
-
|
114
|
-
def build_header
|
115
|
-
write_template home+"layout/page_head.erbml", home+'base/page_head.rbml'
|
116
|
-
write_template home+"layout/main_navigation.erbml", home+'base/main_navigation.rbml'
|
117
|
-
end
|
118
|
-
|
119
|
-
def build(type)
|
120
|
-
setup_location(type.to_s)
|
121
|
-
if type == :blueprint
|
122
|
-
@main_links = []
|
123
|
-
copy home+'layout/structure', home+'base'
|
124
|
-
begin
|
125
|
-
copy home+'layout/stylesheets', home+'base/stylesheets'
|
126
|
-
puts 'copied stylesheets'
|
127
|
-
rescue
|
128
|
-
puts "There are no stylesheets associated with this layout"
|
129
|
-
end
|
130
|
-
copy home+'layout/resources', home+'base/resources' rescue puts "There are no resources associated with this layout"
|
131
|
-
copy home+'layout/scripts', home+'base/scripts' rescue puts "There are no scripts associated with this layout"
|
132
|
-
load_main_links
|
133
|
-
build_header
|
134
|
-
end
|
135
|
-
pages.each{|page| page.make(type)}
|
136
|
-
end
|
137
|
-
|
138
|
-
def generate
|
139
|
-
mkdir site_loc unless exists? :folder, site_loc
|
140
|
-
copy home+'base/stylesheets', site_loc rescue puts $!
|
141
|
-
copy home+'base/resources', site_loc rescue puts $!
|
142
|
-
copy home+'base/scripts', site_loc rescue puts $!
|
143
|
-
pages.each do |page|
|
144
|
-
page.stylesheets = []
|
145
|
-
Generator.load(page)
|
146
|
-
page.load_contents
|
147
|
-
page.stylesheets << info['stylesheets'] if info['stylesheets']
|
148
|
-
page.generate info['paginate'] ? info['paginate'][page.file_name] : nil rescue puts "site generator -- #{$!}"
|
149
|
-
Generator.unload
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|