broadway 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -14,12 +14,12 @@ RAILS_ROOT = File.dirname(__FILE__)
14
14
  spec = Gem::Specification.new do |s|
15
15
  s.name = "broadway"
16
16
  s.author = "Lance Pollard"
17
- s.version = Broadway::VERSION
17
+ s.version = "0.0.3"
18
18
  s.date = "Mon Mar 22 20:12:47 -0700 2010"
19
- s.summary = "More than Syncing Rails Apps with the Google Data API"
19
+ s.summary = "Write Posts in Textile and Markdown, built it into a Rails or Sinatra Blog"
20
20
  s.homepage = "http://github.com/viatropos/broadway"
21
21
  s.email = "lancejpollard@gmail.com"
22
- s.description = "Broadway: A New Way of Googling"
22
+ s.description = "Broadway: Static and Dynamic Site Generator"
23
23
  s.has_rdoc = true
24
24
  s.rubyforge_project = "broadway"
25
25
  s.platform = Gem::Platform::RUBY
@@ -54,13 +54,18 @@ task :manifest => :clean do
54
54
  end
55
55
  end
56
56
 
57
+ desc "Publish gem to rubygems"
58
+ task :publish => [:package] do
59
+ %x[gem push pkg/#{spec.name}-#{spec.version}.gem]
60
+ end
61
+
57
62
  Rake::GemPackageTask.new(spec) do |pkg|
58
63
  pkg.gem_spec = spec
59
64
  end
60
65
 
61
66
  desc "Install the gem locally"
62
67
  task :install => [:package] do
63
- sh %{sudo gem install pkg/broadway-#{Broadway::VERSION} --no-ri --no-rdoc}
68
+ sh %{sudo gem install pkg/#{spec.name}-#{spec.version} --no-ri --no-rdoc}
64
69
  end
65
70
 
66
71
  desc "Generate the rdoc"
@@ -2,6 +2,5 @@ libdir = File.dirname(__FILE__)
2
2
  $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
3
3
 
4
4
  require 'broadway/base'
5
- require 'broadway/main'
6
5
 
7
6
  # http://en.wikipedia.org/wiki/Lists_of_musicals
@@ -20,10 +20,6 @@ require "time"
20
20
  require "yaml"
21
21
  require "nokogiri"
22
22
  require "cgi"
23
- require "sinatra"
24
- require "sinatra/base"
25
- require "sinatra_more"
26
- require "haml"
27
23
 
28
24
  # stdlib
29
25
 
@@ -33,17 +29,15 @@ require "redcloth"
33
29
  $:.push(File.dirname(__FILE__))
34
30
  require "core_ext"
35
31
  require "convertible"
36
- require "resource"
37
32
  require "site"
38
33
  require "asset"
39
34
  require "page"
40
35
  require "post"
41
36
  require "static_file"
42
37
  require "runner"
43
- require "helpers"
44
38
 
45
39
  module Broadway
46
- VERSION = "0.0.2"
40
+ VERSION = "0.0.3"
47
41
  # Default options. Overriden by values in _config.yml or command-line opts.
48
42
  # (Strings rather symbols used for compatability with YAML)
49
43
  DEFAULTS = {
@@ -90,7 +84,7 @@ module Broadway
90
84
  # Get configuration from <source>/_config.yml
91
85
  config_file = File.join(source, "_config.yml")
92
86
  begin
93
- config = YAML.load_file(config_file)
87
+ config = YAML.load_file(config_file).recursive_symbolize_keys!
94
88
  raise "Invalid configuration - #{config_file}" if !config.is_a?(Hash)
95
89
  $stdout.puts "Configuration from #{config_file}"
96
90
  rescue => err
@@ -100,7 +94,9 @@ module Broadway
100
94
  end
101
95
 
102
96
  # Merge DEFAULTS < _config.yml < override
103
- Broadway::DEFAULTS.deep_merge(config).deep_merge(override)
97
+ config = Broadway::DEFAULTS.deep_merge(config).merge(override)
98
+
99
+ config
104
100
  end
105
101
 
106
102
  def self.build(options = {})
@@ -14,7 +14,22 @@ module Broadway
14
14
  def to_s
15
15
  self.content || ''
16
16
  end
17
-
17
+
18
+ def read(attribute = nil)
19
+ self.content = IO.read(self.path)
20
+ if self.content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
21
+ if attribute
22
+ output = YAML.load($1)[attribute] || ""
23
+ return output
24
+ end
25
+ self.content = self.content[($1.size + $2.size)..-1]
26
+ end
27
+ self.render(site.layouts, site.site_payload)
28
+ output = self.output
29
+ self.content = self.output = nil
30
+ output
31
+ end
32
+
18
33
  # Read the YAML frontmatter
19
34
  # +base+ is the String path to the dir containing the file
20
35
  # +name+ is the String filename of the file
@@ -71,19 +86,12 @@ module Broadway
71
86
  # render and transform content (this becomes the final content of the object)
72
87
  payload["content_type"] = self.content_type
73
88
  self.content = Liquid::Template.parse(self.content).render(payload, info)
74
- self.transform
89
+
90
+ # TODO FIX
91
+ # self.transform
75
92
 
76
93
  # output keeps track of what will finally be written
77
94
  self.output = self.content
78
-
79
- # recursively render layouts
80
- layout = layouts[self.data["layout"]]
81
- while layout
82
- payload = payload.deep_merge({"content" => self.output, "page" => layout.data})
83
- self.output = Liquid::Template.parse(layout.content).render(payload, info)
84
-
85
- layout = layouts[layout.data["layout"]]
86
- end
87
95
  end
88
96
  end
89
97
  end
@@ -19,16 +19,22 @@ module Broadway
19
19
  self.path = options[:path] if options.has_key?(:path)
20
20
  self.data = {}
21
21
  self.dir = path =~ /\// ? File.dirname(path.gsub(/#{site.config[:source]}\/?/, "")).gsub(/^\//, "") : path
22
- self.name = File.basename(self.dir)
22
+ base = self.dir == "." ? "" : File.basename(self.dir)
23
+ self.name = base
23
24
  self.ext = File.extname(path)
24
25
  self.basename = File.basename(path).split('.')[0..-2].first
25
26
 
26
27
  self.categories ||= []
27
- self.categories.concat self.dir.split('/').reject { |x| x.empty? }
28
+ self.categories.concat base.split('/').reject { |x| x.empty? }
28
29
  self.children ||= []
29
30
  process(options) unless options.has_key?(:process) and options[:process] == false
30
31
  end
31
32
 
33
+ def children
34
+ @children = site.find_pages_by_category(self.categories.last) + site.find_posts_by_category(self.categories.last)
35
+ @children.delete_if {|i| i.url == self.url}
36
+ end
37
+
32
38
  # The UID for this post (useful in feeds)
33
39
  # e.g. /2008/11/05/my-awesome-post
34
40
  #
@@ -3,7 +3,6 @@ module Broadway
3
3
  class Post
4
4
  include Comparable
5
5
  include Convertible
6
- include Resource
7
6
 
8
7
  SRC_MATCHER = /^(.+\/)*(?:(\d+-\d+-\d+)-)?(.*)(\.[^.]+)$/
9
8
  URL_MATCHER = /^(.+\/)*(.*)$/
@@ -40,8 +39,9 @@ module Broadway
40
39
  self.slug = slug
41
40
  self.ext = ext
42
41
  self.dir = options.has_key?(:dir) ? options[:dir] : File.dirname(path.gsub(/#{site.config[:source]}\/?/, ""))
43
-
44
- self.categories = dir.split('/').reject { |x| x.empty? }
42
+ base = self.dir == "." ? "" : File.basename(self.dir)
43
+ self.name = base
44
+ self.categories = base.split('/').reject { |x| x.empty? }
45
45
 
46
46
  process(options) unless options.has_key?(:process) and options[:process] == false
47
47
  end
@@ -0,0 +1,3 @@
1
+ module Broadway::Rails
2
+
3
+ end
@@ -36,9 +36,6 @@ module Broadway
36
36
  FileUtils.mkdir_p(item_dir)
37
37
  name = File.join(item_dir, "index.html").squeeze("/")
38
38
  text = ""
39
- # text << "---\n"
40
- # text << "categories: #{item.categories.sort.join(" ")}\n"
41
- # text << "---\n"
42
39
  text << response.body
43
40
  puts "Writing... #{name}"
44
41
  File.open(name, "w") {|f| f.write(text) }
@@ -0,0 +1,5 @@
1
+ module Broadway::Sinatra
2
+
3
+ end
4
+
5
+ require_local "sinatra/*"
@@ -1,7 +1,9 @@
1
1
  libdir = File.dirname(__FILE__)
2
2
  $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
3
3
 
4
- require 'base'
4
+ require "sinatra"
5
+ require "sinatra/base"
6
+ require "sinatra_more"
5
7
 
6
8
  @site = site = Broadway.build
7
9
 
@@ -1,7 +1,7 @@
1
- require_local "helpers/*"
1
+ require_local "sinatra/helpers/*"
2
2
 
3
3
  helpers do
4
- files("helpers/*") do |file|
4
+ files("sinatra/helpers/*") do |file|
5
5
  include "Broadway::Helpers::#{File.basename(file).split(".").first.camelize}".constantize
6
6
  end
7
7
  end
@@ -11,18 +11,7 @@ module Broadway
11
11
 
12
12
  # read the post and parse it with Liquid
13
13
  def read(post, attribute = nil)
14
- post.content = IO.read(post.path)
15
- if post.content =~ /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
16
- if attribute
17
- output = YAML.load($1)[attribute] || ""
18
- return output
19
- end
20
- post.content = post.content[($1.size + $2.size)..-1]
21
- end
22
- post.render(site.layouts, site.site_payload)
23
- output = post.output
24
- post.content = post.output = nil
25
- output
14
+ post.read(attribute)
26
15
  end
27
16
 
28
17
  def read_excerpt(post, max_length = nil)
@@ -16,7 +16,7 @@ module Broadway
16
16
  merge_extra_config!(config)
17
17
 
18
18
  config.recursive_symbolize_keys!
19
-
19
+
20
20
  self.config = config.clone
21
21
 
22
22
  self.source = config[:source]
@@ -33,10 +33,11 @@ module Broadway
33
33
 
34
34
  def merge_extra_config!(config)
35
35
  locale = File.join(config[:locales], "#{config[:language]}.yml")
36
-
36
+
37
37
  config.merge!(YAML.load_file(locale)) if File.exists?(locale)
38
38
 
39
- config_dir = "config"
39
+
40
+ config_dir = File.join(config[:source], "config")
40
41
  return unless File.exists?(config_dir)
41
42
  Dir.glob("#{config_dir}/**/*").each do |file|
42
43
  next if File.directory?(file)
@@ -189,6 +190,7 @@ module Broadway
189
190
  def read_directories(dir = '')
190
191
  base = File.join(self.source, dir).gsub(/\/$/, "")
191
192
  lists = []
193
+
192
194
  # RULES:
193
195
  # Pages are only index.textile files, or static .html files (TODO)
194
196
  # Posts are leaf nodes (name.textile files)
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Lance Pollard
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-22 00:00:00 -07:00
17
+ date: 2010-03-22 20:12:47 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -57,7 +57,7 @@ dependencies:
57
57
  version: 2.3.5
58
58
  type: :runtime
59
59
  version_requirements: *id003
60
- description: "Broadway: A New Way of Googling"
60
+ description: "Broadway: Static and Dynamic Site Generator"
61
61
  email: lancejpollard@gmail.com
62
62
  executables: []
63
63
 
@@ -73,15 +73,16 @@ files:
73
73
  - lib/broadway/base.rb
74
74
  - lib/broadway/convertible.rb
75
75
  - lib/broadway/core_ext.rb
76
- - lib/broadway/helpers/collection_helper.rb
77
- - lib/broadway/helpers/partial_helper.rb
78
- - lib/broadway/helpers/text_helper.rb
79
- - lib/broadway/helpers.rb
80
- - lib/broadway/main.rb
81
76
  - lib/broadway/page.rb
82
77
  - lib/broadway/post.rb
83
- - lib/broadway/resource.rb
78
+ - lib/broadway/rails.rb
84
79
  - lib/broadway/runner.rb
80
+ - lib/broadway/sinatra/base.rb
81
+ - lib/broadway/sinatra/helpers/collection_helper.rb
82
+ - lib/broadway/sinatra/helpers/partial_helper.rb
83
+ - lib/broadway/sinatra/helpers/text_helper.rb
84
+ - lib/broadway/sinatra/helpers.rb
85
+ - lib/broadway/sinatra.rb
85
86
  - lib/broadway/site.rb
86
87
  - lib/broadway/static_file.rb
87
88
  - lib/broadway.rb
@@ -114,6 +115,6 @@ rubyforge_project: broadway
114
115
  rubygems_version: 1.3.6
115
116
  signing_key:
116
117
  specification_version: 3
117
- summary: More than Syncing Rails Apps with the Google Data API
118
+ summary: Write Posts in Textile and Markdown, built it into a Rails or Sinatra Blog
118
119
  test_files: []
119
120
 
@@ -1,5 +0,0 @@
1
- module Broadway
2
- module Resource
3
-
4
- end
5
- end