awestruct 0.4.8 → 0.5.0.cr

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. data/lib/awestruct/astruct.rb +4 -0
  2. data/lib/awestruct/astruct_mixin.rb +3 -0
  3. data/lib/awestruct/cli/auto.rb +6 -6
  4. data/lib/awestruct/cli/deploy.rb +3 -3
  5. data/lib/awestruct/cli/generate.rb +5 -3
  6. data/lib/awestruct/cli/init.rb +1 -1
  7. data/lib/awestruct/cli/invoker.rb +10 -3
  8. data/lib/awestruct/cli/manifest.rb +18 -17
  9. data/lib/awestruct/cli/options.rb +7 -6
  10. data/lib/awestruct/cli/server.rb +7 -14
  11. data/lib/awestruct/config.rb +7 -1
  12. data/lib/awestruct/config/default-site.yml +30 -0
  13. data/lib/awestruct/context_helper.rb +7 -7
  14. data/lib/awestruct/dependencies.rb +14 -11
  15. data/lib/awestruct/deploy/base_deploy.rb +2 -2
  16. data/lib/awestruct/deploy/github_pages_deploy.rb +1 -1
  17. data/lib/awestruct/deploy/rsync_deploy.rb +11 -15
  18. data/lib/awestruct/deploy/s3_deploy.rb +9 -0
  19. data/lib/awestruct/engine.rb +72 -21
  20. data/lib/awestruct/extensions/minify.rb +21 -20
  21. data/lib/awestruct/extensions/paginator.rb +5 -5
  22. data/lib/awestruct/extensions/partial.rb +1 -1
  23. data/lib/awestruct/extensions/pipeline.rb +5 -1
  24. data/lib/awestruct/extensions/posts.rb +8 -4
  25. data/lib/awestruct/extensions/relative.rb +7 -2
  26. data/lib/awestruct/extensions/remotePartial.rb +1 -1
  27. data/lib/awestruct/extensions/sitemap.rb +1 -1
  28. data/lib/awestruct/frameworks/bootstrap/base_index.html.haml +1 -1
  29. data/lib/awestruct/frameworks/bootstrap/base_layout.html.haml +1 -1
  30. data/lib/awestruct/handler_chains.rb +8 -23
  31. data/lib/awestruct/handlers/asciidoctor_handler.rb +114 -0
  32. data/lib/awestruct/handlers/base_tilt_handler.rb +114 -0
  33. data/lib/awestruct/handlers/css_tilt_handler.rb +43 -0
  34. data/lib/awestruct/handlers/front_matter_handler.rb +1 -1
  35. data/lib/awestruct/handlers/interpolation_handler.rb +3 -3
  36. data/lib/awestruct/handlers/layout_handler.rb +6 -4
  37. data/lib/awestruct/handlers/restructuredtext_handler.rb +5 -5
  38. data/lib/awestruct/handlers/template/asciidoc.rb +41 -0
  39. data/lib/awestruct/handlers/template/mustache.rb +25 -0
  40. data/lib/awestruct/handlers/tilt_handler.rb +73 -0
  41. data/lib/awestruct/layouts.rb +1 -1
  42. data/lib/awestruct/logger.rb +59 -0
  43. data/lib/awestruct/page.rb +16 -3
  44. data/lib/awestruct/page_loader.rb +5 -5
  45. data/lib/awestruct/version.rb +1 -1
  46. data/man/awestruct.1 +163 -0
  47. data/spec/asciidoc_handler_spec.rb +75 -0
  48. data/spec/astruct_spec.rb +52 -0
  49. data/spec/coffeescript_handler_spec.rb +23 -0
  50. data/spec/config_spec.rb +22 -0
  51. data/spec/context_helper_spec.rb +115 -0
  52. data/spec/deploy_spec.rb +41 -0
  53. data/spec/disqus_spec.rb +43 -0
  54. data/spec/engine_spec.rb +115 -0
  55. data/spec/erb_handler_spec.rb +52 -0
  56. data/spec/file_handler_spec.rb +57 -0
  57. data/spec/front_matter_handler_spec.rb +42 -0
  58. data/spec/github_pages_deploy_spec.rb +56 -0
  59. data/spec/haml_handler_spec.rb +93 -0
  60. data/spec/handler_chain_spec.rb +44 -0
  61. data/spec/handler_chains_spec.rb +25 -0
  62. data/spec/interpolation_handler_spec.rb +35 -0
  63. data/spec/invoker_spec.rb +74 -0
  64. data/spec/javascript_handler_spec.rb +23 -0
  65. data/spec/layout_handler_spec.rb +77 -0
  66. data/spec/layouts_spec.rb +32 -0
  67. data/spec/less_handler_spec.rb +33 -0
  68. data/spec/markdown_handler_spec.rb +41 -0
  69. data/spec/minify_spec.rb +61 -0
  70. data/spec/mustache_handler_spec.rb +29 -0
  71. data/spec/options_spec.rb +97 -0
  72. data/spec/orgmode_handler_spec.rb +24 -0
  73. data/spec/page_delegating_handler_spec.rb +79 -0
  74. data/spec/page_loader_spec.rb +43 -0
  75. data/spec/page_loader_spec_for_layouts.rb +36 -0
  76. data/spec/page_spec.rb +65 -0
  77. data/spec/pipeline_spec.rb +12 -0
  78. data/spec/posts_archive_spec.rb +108 -0
  79. data/spec/redirect_handler_spec.rb +32 -0
  80. data/spec/restructuredtext_handler_spec.rb +22 -0
  81. data/spec/rsync_deploy_spec.rb +9 -0
  82. data/spec/sass_handler_spec.rb +23 -0
  83. data/spec/scss_handler_spec.rb +23 -0
  84. data/spec/server_spec.rb +45 -0
  85. data/spec/slim_handler_spec.rb +81 -0
  86. data/spec/spec_helper.rb +18 -0
  87. data/spec/support/nokogiri_matchers.rb +21 -0
  88. data/spec/support/shared_handler_example.rb +98 -0
  89. data/spec/test-data/engine/_config/arbitrary.yml +2 -0
  90. data/spec/test-data/engine/_config/other.yml +1 -0
  91. data/spec/test-data/engine/_config/site.yml +14 -0
  92. data/spec/test-data/front-matter-file-no-content.txt +2 -0
  93. data/spec/test-data/front-matter-file-no-front.txt +1 -0
  94. data/spec/test-data/front-matter-file.txt +4 -0
  95. data/spec/test-data/handlers/asciidoc-page.ad +3 -0
  96. data/spec/test-data/handlers/asciidoc-page.adoc +3 -0
  97. data/spec/test-data/handlers/asciidoc-page.asciidoc +3 -0
  98. data/spec/test-data/handlers/asciidoctor_with_front_matter.ad +6 -0
  99. data/spec/test-data/handlers/asciidoctor_with_headers.ad +8 -0
  100. data/spec/test-data/handlers/coffeescript-page.coffee +8 -0
  101. data/spec/test-data/handlers/erb-page.html.erb +6 -0
  102. data/spec/test-data/handlers/erb-page.xml.erb +2 -0
  103. data/spec/test-data/handlers/erb-utf-page.html.erb +2 -0
  104. data/spec/test-data/handlers/haml-layout-two.html.haml +7 -0
  105. data/spec/test-data/handlers/haml-layout.html.haml +4 -0
  106. data/spec/test-data/handlers/haml-page.atom.haml +4 -0
  107. data/spec/test-data/handlers/haml-page.html.haml +2 -0
  108. data/spec/test-data/handlers/haml-page.xml.haml +1 -0
  109. data/spec/test-data/handlers/haml-with-markdown-page.html.haml +6 -0
  110. data/spec/test-data/handlers/haml-with-textile-page.html.haml +6 -0
  111. data/spec/test-data/handlers/haml-with-utf.html.haml +2 -0
  112. data/spec/test-data/handlers/haml-with-variables.html.haml +2 -0
  113. data/spec/test-data/handlers/inner-page.html.haml +4 -0
  114. data/spec/test-data/handlers/javascript-page.js +1 -0
  115. data/spec/test-data/handlers/less-page-include.less +1 -0
  116. data/spec/test-data/handlers/less-page-with-import.less +4 -0
  117. data/spec/test-data/handlers/less-page.less +4 -0
  118. data/spec/test-data/handlers/markdown-page.markdown +2 -0
  119. data/spec/test-data/handlers/markdown-page.md +2 -0
  120. data/spec/test-data/handlers/markdown-page.mkd +2 -0
  121. data/spec/test-data/handlers/mustache-page.html.mustache +2 -0
  122. data/spec/test-data/handlers/mustache-page.xml.mustache +1 -0
  123. data/spec/test-data/handlers/orgmode-page.org +6 -0
  124. data/spec/test-data/handlers/outer-layout.html.haml +2 -0
  125. data/spec/test-data/handlers/outside_relative/git_keep +3 -0
  126. data/spec/test-data/handlers/redirect-page.redirect +1 -0
  127. data/spec/test-data/handlers/restructuredtext-page.rst +8 -0
  128. data/spec/test-data/handlers/sass-page-include.sass +1 -0
  129. data/spec/test-data/handlers/sass-page.sass +4 -0
  130. data/spec/test-data/handlers/scss-page-include.scss +1 -0
  131. data/spec/test-data/handlers/scss-page.scss +5 -0
  132. data/spec/test-data/handlers/simple-redirect-page.redirect +1 -0
  133. data/spec/test-data/handlers/slim-page.atom.slim +4 -0
  134. data/spec/test-data/handlers/slim-page.html.slim +1 -0
  135. data/spec/test-data/handlers/slim-page.xml.slim +1 -0
  136. data/spec/test-data/handlers/slim-with-markdown-page.html.slim +5 -0
  137. data/spec/test-data/handlers/slim-with-utf.html.slim +2 -0
  138. data/spec/test-data/handlers/slim-with-variables.html.slim +1 -0
  139. data/spec/test-data/handlers/textile-page.textile +1 -0
  140. data/spec/test-data/images/logo.png +0 -0
  141. data/spec/test-data/index.html +242 -0
  142. data/spec/test-data/javascript/bootstrap-dropdown.js +92 -0
  143. data/spec/test-data/out-of-site/page-three.html.haml +2 -0
  144. data/spec/test-data/page-loader/_layouts/layout-one.md +2 -0
  145. data/spec/test-data/page-loader/_layouts/layout-two.html.haml +2 -0
  146. data/spec/test-data/page-loader/page-draft.md +5 -0
  147. data/spec/test-data/page-loader/page-one.md +2 -0
  148. data/spec/test-data/page-loader/page-two.html.haml +2 -0
  149. data/spec/test-data/simple-data.yaml +1 -0
  150. data/spec/test-data/simple-file.txt +1 -0
  151. data/spec/test-data/stylesheets/screen.css +688 -0
  152. data/spec/textile_handler_spec.rb +22 -0
  153. data/spec/tilt_handler_spec.rb +81 -0
  154. data/spec/yaml_handler_spec.rb +21 -0
  155. metadata +243 -202
  156. data/lib/awestruct/handlers/asciidoc_handler.rb +0 -86
  157. data/lib/awestruct/handlers/base_sass_handler.rb +0 -42
  158. data/lib/awestruct/handlers/coffeescript_handler.rb +0 -48
  159. data/lib/awestruct/handlers/erb_handler.rb +0 -43
  160. data/lib/awestruct/handlers/haml_handler.rb +0 -54
  161. data/lib/awestruct/handlers/less_handler.rb +0 -37
  162. data/lib/awestruct/handlers/markdown_handler.rb +0 -50
  163. data/lib/awestruct/handlers/mustache_handler.rb +0 -44
  164. data/lib/awestruct/handlers/orgmode_handler.rb +0 -48
  165. data/lib/awestruct/handlers/sass_handler.rb +0 -21
  166. data/lib/awestruct/handlers/scss_handler.rb +0 -21
  167. data/lib/awestruct/handlers/textile_handler.rb +0 -58
@@ -17,6 +17,10 @@ module Awestruct
17
17
  "AStruct{...}"
18
18
  end
19
19
 
20
+ def hash()
21
+ self.output_path.hash
22
+ end
23
+
20
24
  end
21
25
 
22
26
  end
@@ -43,6 +43,9 @@ module Awestruct
43
43
  self[name] = AStruct.new.cascade_for_nils!
44
44
  self[name]
45
45
  else
46
+ unless args.size.zero?
47
+ $LOG.warn "Call to unknown method: #{name}"
48
+ end
46
49
  nil
47
50
  end
48
51
  end
@@ -26,7 +26,7 @@ module Awestruct
26
26
  begin
27
27
  if path.eql? current_path
28
28
  unless generate_thread.nil?
29
- puts "Same path triggered, stopping previous generation" if generate_thread.alive?
29
+ $LOG.info "Same path triggered, stopping previous generation" if generate_thread.alive? && $LOG.info?
30
30
  generate_thread.kill
31
31
  end
32
32
  else
@@ -37,15 +37,15 @@ module Awestruct
37
37
  generate_thread = Thread.new {
38
38
  begin
39
39
  engine.generate_page_by_output_path( path )
40
- puts "Generating.... done!"
40
+ $LOG.info "Generating.... done!" if $LOG.info?
41
41
  rescue => e
42
- puts e
43
- puts e.backtrace
42
+ $LOG.error e if $LOG.error?
43
+ $LOG.error e.backtrace.join("\n") if $LOG.error?
44
44
  end
45
45
  }
46
46
  rescue => e
47
- puts e
48
- puts e.backtrace
47
+ $LOG.error e if $LOG.error?
48
+ $LOG.error e.backtrace.join("\n") if $LOG.error?
49
49
  end
50
50
  end
51
51
  end
@@ -14,7 +14,7 @@ module Awestruct
14
14
  @site_config = site_config
15
15
  @deploy_config = deploy_config
16
16
  @deploy_config['type'] ||= (is_github? ? :github_pages : :rsync)
17
- puts "Deploying to #{deploy_type}"
17
+ $LOG.info "Deploying to #{deploy_type}" if $LOG.info?
18
18
  end
19
19
 
20
20
  def deploy_type
@@ -25,8 +25,8 @@ module Awestruct
25
25
  deployer_class = Awestruct::Deployers.instance[ deploy_type.to_sym ]
26
26
 
27
27
  if ( deployer_class.nil? )
28
- $stderr.puts "Unable to locate correct deployer for #{deploy_type}"
29
- $stderr.puts "Deployers available for #{::Awestruct::Deployers.instance.collect {|k,v| "#{v} (#{k})"}.join(', ')}"
28
+ $LOG.error "Unable to locate correct deployer for #{deploy_type}" if $LOG.error?
29
+ $LOG.error "Deployers available for #{::Awestruct::Deployers.instance.collect {|k,v| "#{v} (#{k})"}.join(', ')}" if $LOG.error?
30
30
  return
31
31
  end
32
32
 
@@ -1,4 +1,6 @@
1
1
  require 'awestruct/engine'
2
+ require 'compass'
3
+ require 'ninesixty'
2
4
 
3
5
  module Awestruct
4
6
  module CLI
@@ -15,11 +17,11 @@ module Awestruct
15
17
  def run()
16
18
  begin
17
19
  base_url = @profile['base_url'] || @default_base_url
18
- puts "Generating site: #{base_url}"
20
+ $LOG.info "Generating site: #{base_url}" if $LOG.info?
19
21
  @engine.run( @profile, @base_url, ( @profile ? @profile['base_url'] || @default_base_url : @default_base_url ), @force )
20
22
  rescue =>e
21
- puts e
22
- puts e.backtrace
23
+ $LOG.error e if $LOG.error?
24
+ $LOG.error e.backtrace.join("\n") if $LOG.error?
23
25
  return false
24
26
  end
25
27
  end
@@ -27,7 +27,7 @@ module Awestruct
27
27
  if ( @scaffold )
28
28
  manifest.copy_file( '_layouts/base.html.haml',
29
29
  File.join( File.dirname(__FILE__), "/../frameworks/#{scaffold_name}/base_layout.html.haml" ) )
30
- if ( File.file? File.join( File.dirname(__FILE__), "/frameworks/#{scaffold_name}/base_index.html.haml" ) )
30
+ if ( File.file? File.join( File.dirname(__FILE__), "/../frameworks/#{scaffold_name}/base_index.html.haml" ) )
31
31
  manifest.copy_file( 'index.html.haml',
32
32
  File.join( File.dirname(__FILE__), "/../frameworks/#{scaffold_name}/base_index.html.haml" ) )
33
33
  else
@@ -5,8 +5,10 @@ require 'awestruct/cli/generate'
5
5
  require 'awestruct/cli/auto'
6
6
  require 'awestruct/cli/server'
7
7
  require 'awestruct/cli/deploy'
8
+ require 'awestruct/logger'
8
9
 
9
10
  require 'pathname'
11
+ require 'logger'
10
12
 
11
13
  module Awestruct
12
14
  module CLI
@@ -28,6 +30,11 @@ module Awestruct
28
30
  @threads = []
29
31
  @profile = nil
30
32
  @success = true
33
+ logging_path = Pathname.new '.awestruct'
34
+ logging_path.mkdir unless logging_path.exist?
35
+ $LOG = Logger.new(Awestruct::AwestructLoggerMultiIO.new(@options.verbose, STDOUT, File.open('.awestruct/debug.log', 'w')))
36
+ $LOG.level = @options.verbose ? Logger::DEBUG : Logger::INFO
37
+ $LOG.formatter = Awestruct::AwestructLogFormatter.new
31
38
  end
32
39
 
33
40
  def invoke!
@@ -68,11 +75,11 @@ module Awestruct
68
75
  end
69
76
 
70
77
  unless @profile
71
- $stderr.puts "Unable to locate profile: #{options.profile}" if options.profile
78
+ $LOG.error "Unable to locate profile: #{options.profile}" if options.profile && $LOG.error?
72
79
  options.profile = 'NONE'
73
80
  @profile = {}
74
81
  end
75
- $stderr.puts "Using profile: #{options.profile}"
82
+ $LOG.info "Using profile: #{options.profile}" if $LOG.info?
76
83
  end
77
84
 
78
85
  def setup_config()
@@ -101,7 +108,7 @@ module Awestruct
101
108
  deploy_config = profile[ 'deploy' ]
102
109
 
103
110
  if ( deploy_config.nil? )
104
- $stderr.puts "No configuration for 'deploy'"
111
+ $LOG.error "No configuration for 'deploy'" if $LOG.error?
105
112
  return
106
113
  end
107
114
 
@@ -16,7 +16,7 @@ class Compass::AppIntegration::StandAlone::Installer
16
16
  # no!
17
17
  end
18
18
  def finalize(opts={})
19
- puts <<-END.gsub(/^ {6}/, '')
19
+ $LOG.info <<-END.gsub(/^ {6}/, '')
20
20
 
21
21
  Now you're awestruct!
22
22
 
@@ -67,8 +67,8 @@ module Awestruct
67
67
  begin
68
68
  step.perform( dir )
69
69
  rescue => e
70
- puts e
71
- puts e.backtrace
70
+ $LOG.error e if $LOG.error?
71
+ $LOG.error e.backtrace.join("\n") if $LOG.error?
72
72
  end
73
73
  end
74
74
  end
@@ -78,8 +78,8 @@ module Awestruct
78
78
  begin
79
79
  step.unperform( dir )
80
80
  rescue => e
81
- puts e
82
- puts e.backtrace
81
+ $LOG.error e if $LOG.error?
82
+ $LOG.error e.backtrace.join("\n") if $LOG.error?
83
83
  end
84
84
  end
85
85
  end
@@ -97,32 +97,32 @@ module Awestruct
97
97
  def perform(dir)
98
98
  p = File.join( dir, @path )
99
99
  if ( File.exist?( p ) )
100
- $stderr.puts "Exists: #{p}"
100
+ $LOG.error "Exists: #{p}" if $LOG.error?
101
101
  return
102
102
  end
103
103
  if ( ! File.directory?( File.dirname( p ) ) )
104
- $stderr.puts "Does not exist: #{File.dirname(p)}"
104
+ $LOG.error "Does not exist: #{File.dirname(p)}" if $LOG.error?
105
105
  return
106
106
  end
107
- $stderr.puts "Create directory: #{p}"
107
+ $LOG.info "Create directory: #{p}" if $LOG.info?
108
108
  FileUtils.mkdir( p )
109
109
  end
110
110
 
111
111
  def unperform(dir)
112
112
  p = File.join( dir, @path )
113
113
  if ( ! File.exist?( p ) )
114
- $stderr.puts "Does not exist: #{p}"
114
+ $LOG.error "Does not exist: #{p}" if $LOG.error?
115
115
  return
116
116
  end
117
117
  if ( ! File.directory?( p ) )
118
- $stderr.puts "Not a directory: #{p}"
118
+ $LOG.error "Not a directory: #{p}" if $LOG.error?
119
119
  return
120
120
  end
121
121
  if ( Dir.entries( p ) != 2 )
122
- $stderr.puts "Not empty: #{p}"
122
+ $LOG.error "Not empty: #{p}" if $LOG.error?
123
123
  return
124
124
  end
125
- $stderr.puts "Remove: #{p}"
125
+ $LOG.info "Remove: #{p}" if $LOG.info?
126
126
  FileUtils.rmdir( p )
127
127
  end
128
128
  end
@@ -150,14 +150,14 @@ module Awestruct
150
150
  def perform(dir )
151
151
  p = File.join( dir, @path )
152
152
  if ( File.exist?( p ) )
153
- $stderr.puts "Exists: #{p}"
153
+ $LOG.error "Exists: #{p}" if $LOG.error?
154
154
  return
155
155
  end
156
156
  if ( ! File.directory?( File.dirname( p ) ) )
157
- $stderr.puts "No directory: #{File.dirname( p )}"
157
+ $LOG.error "No directory: #{File.dirname( p )}" if $LOG.error?
158
158
  return
159
159
  end
160
- $stderr.puts "Create file: #{p}"
160
+ $LOG.info "Create file: #{p}" if $LOG.info?
161
161
  File.open( p, 'w' ){|f| f.write( File.read( @input_path ) ) }
162
162
  end
163
163
 
@@ -168,10 +168,10 @@ module Awestruct
168
168
  def notunperform(dir)
169
169
  p = File.join( @dir, p )
170
170
  if ( ! File.exist?( p ) )
171
- $stderr.puts "Does not exist: #{p}"
171
+ $LOG.error "Does not exist: #{p}" if $LOG.error?
172
172
  return
173
173
  end
174
- $stderr.puts "Remove: #{p}"
174
+ $LOG.info "Remove: #{p}" if $LOG.info?
175
175
  FileUtils.rm( p )
176
176
  end
177
177
 
@@ -193,6 +193,7 @@ module Awestruct
193
193
  :css_dir=>'_site/stylesheets',
194
194
  :sass_dir=>'stylesheets',
195
195
  :images_dir=>'images',
196
+ :fonts_dir=>'fonts',
196
197
  :javascripts_dir=>'javascripts',
197
198
  } )
198
199
  cmd.perform
@@ -36,6 +36,7 @@ module Awestruct
36
36
  @profile = nil
37
37
  @deploy = false
38
38
  @script = nil
39
+ @verbose = false
39
40
  end
40
41
 
41
42
  def self.parse!(args)
@@ -66,14 +67,14 @@ module Awestruct
66
67
  opts.on( '-u', '--url URL', 'Set site.base_url' ) do |url|
67
68
  self.base_url = url
68
69
  end
69
- opts.on( '-d', '--dev', 'Run in development mode (--auto, --server and -profile development)' ) do |url|
70
+ opts.on( '-d', '--dev', 'Run site in development mode (--auto, --server, --port 4242 and --profile development)' ) do |url|
70
71
  self.server = true
71
72
  self.auto = true
72
73
  self.port = 4242
73
74
  self.profile = 'development'
74
75
  end
75
76
 
76
- opts.on( '-P', '--profile PROFILE', 'Specify a profile' ) do |profile|
77
+ opts.on( '-P', '--profile PROFILE', 'Activate a configuration profile' ) do |profile|
77
78
  self.profile = profile
78
79
  end
79
80
 
@@ -91,12 +92,12 @@ module Awestruct
91
92
  opts.on( '-b', '--bind ADDR', 'Server address (default: 0.0.0.0)' ) do |bind_addr|
92
93
  self.bind_addr = bind_addr
93
94
  end
94
- opts.on( '-g', '--[no-]generate', 'Generated site' ) do |g|
95
+ opts.on( '-g', '--[no-]generate', 'Generate site' ) do |g|
95
96
  self.generate = g
96
97
  end
97
- opts.on( '--run SCRIPT', 'Force a regeneration' ) do |script|
98
- self.script = script
99
- end
98
+ #opts.on( '--run SCRIPT', 'Invoke a script after initialization' ) do |script|
99
+ # self.script = script
100
+ #end
100
101
 
101
102
  opts.separator ''
102
103
  opts.separator "Common options:"
@@ -1,13 +1,9 @@
1
- #require 'webrick'
2
- require 'thin'
1
+ require 'rack'
2
+ require 'rack/server'
3
3
  require 'awestruct/rack/app'
4
4
 
5
5
  module Awestruct
6
6
  module CLI
7
-
8
- #WEBrick::HTTPUtils::DefaultMimeTypes.store('atom', 'application/atom+xml')
9
- #WEBrick::HTTPUtils::DefaultMimeTypes.store('appcache', 'text/cache-manifest')
10
-
11
7
  class Server
12
8
  attr_reader :server
13
9
 
@@ -18,14 +14,11 @@ module Awestruct
18
14
  end
19
15
 
20
16
  def run
21
- @server = Thin::Server.new( '0.0.0.0', @port, Awestruct::Rack::App.new( @path ) )
22
- @server.start
23
- end
24
-
25
- def run_webrick
26
- @server = WEBrick::HTTPServer.new( :DocumentRoot=>@path, :Port=>@port, :BindAddress=>@bind_addr )
27
- @server.start
28
- end
17
+ ::Rack::Server::start( :app => Awestruct::Rack::App.new( @path ),
18
+ :Port => @port,
19
+ :Host => @bind_addr
20
+ )
21
+ end
29
22
  end
30
23
  end
31
24
  end
@@ -32,7 +32,13 @@ module Awestruct
32
32
  @images_dir = Pathname.new( File.join(dir, 'images') )
33
33
  @stylesheets_dir = Pathname.new( File.join(dir, 'stylesheets') )
34
34
 
35
- @ignore = File.exists?(ignore_file = File.join(dir, ".awestruct_ignore")) ? Dir[*IO.read(ignore_file).each_line.map(&:strip)] : []
35
+ # Dir[] doesn't like empty list
36
+ ignore_file = File.join(dir, ".awestruct_ignore")
37
+ if File.exists?(ignore_file)
38
+ ignore_stmts = IO.read(ignore_file).each_line.map(&:strip)
39
+ end
40
+
41
+ @ignore = (!ignore_stmts.nil? and ignore_stmts.size > 0) ? Dir[*ignore_stmts] : []
36
42
 
37
43
  @track_dependencies = false
38
44
  end
@@ -0,0 +1,30 @@
1
+ content_syntax:
2
+ coffee: coffeescript
3
+ md: markdown
4
+ mkd: markdown
5
+ org: orgmod
6
+ adoc: asciidoc
7
+ ad: asciidoc
8
+
9
+ haml:
10
+ :attr_wrapper: '"'
11
+ :escape_attrs: :once
12
+ :format: :xhtml
13
+
14
+ haml|html:
15
+ :format: :html5
16
+
17
+ slim:
18
+ :sort_attrs: false
19
+ :disable_escape: true
20
+ :format: :xhtml
21
+
22
+ slim|html:
23
+ :format: :html5
24
+
25
+ asciidoctor:
26
+ :backend: html5
27
+ :safe: 1
28
+ :attributes:
29
+ imagesdir: /images
30
+ stylesdir: /stylesheets
@@ -1,4 +1,4 @@
1
- require 'hpricot'
1
+ require 'nokogiri'
2
2
 
3
3
  module Awestruct
4
4
  module ContextHelper
@@ -38,24 +38,24 @@ module Awestruct
38
38
  end
39
39
 
40
40
  def fully_qualify_urls(base_url, text)
41
- doc = Hpricot( text )
41
+ doc = Nokogiri::HTML.fragment( text )
42
42
 
43
- doc.search( "//a" ).each do |a|
43
+ doc.css( "a" ).each do |a|
44
44
  a['href'] = fix_url( base_url, a['href'] ) if a['href']
45
45
  end
46
- doc.search( "//link" ).each do |link|
46
+ doc.css( "link" ).each do |link|
47
47
  link['href'] = fix_url( base_url, link['href'] )
48
48
  end
49
- doc.search( "//img" ).each do |img|
49
+ doc.css( "img" ).each do |img|
50
50
  img['src'] = fix_url( base_url, img['src'] )
51
51
  end
52
- # Hpricot::Doc#to_s output encoding is not necessarily the same as the encoding of text
52
+
53
53
  if RUBY_VERSION.start_with? '1.8'
54
54
  doc.to_s
55
55
  else
56
56
  doc.to_s.tap do |d|
57
57
  d.force_encoding(text.encoding) if d.encoding != text.encoding
58
- end
58
+ end
59
59
  end
60
60
  end
61
61
 
@@ -27,10 +27,12 @@ module Awestruct
27
27
  end
28
28
 
29
29
  def self.push_page(page)
30
- #puts "push #{page.output_path}"
30
+ $LOG.debug "push #{page.output_path}" if $LOG.debug?
31
31
  if ( top_page.nil? )
32
+ $LOG.debug "clearing dependencies" if $LOG.debug?
32
33
  page.dependencies.clear
33
34
  else
35
+ $LOG.debug "adding page as a dependency to top_page" if $LOG.debug?
34
36
  top_page.dependencies.add_dependency( page )
35
37
  end
36
38
  @pages.push( page )
@@ -38,7 +40,7 @@ module Awestruct
38
40
 
39
41
  def self.pop_page
40
42
  page = @pages.pop
41
- #puts "pop #{page.output_path} #{@pages.empty?}"
43
+ $LOG.debug "pop #{page.output_path} #{@pages.empty?}" if $LOG.debug?
42
44
  if ( @pages.empty? && ! page.nil? )
43
45
  page.dependencies.persist!
44
46
  end
@@ -48,7 +50,7 @@ module Awestruct
48
50
  def self.track_dependency(dep)
49
51
  return if top_page.nil?
50
52
  return if top_page == dep
51
- #puts "dep #{top_page.relative_source_path} - #{dep.relative_source_path}"
53
+ $LOG.debug "dep #{top_page.relative_source_path} - #{dep.relative_source_path}" if $LOG.debug?
52
54
  top_page.dependencies.add_dependency(dep)
53
55
  end
54
56
 
@@ -56,8 +58,8 @@ module Awestruct
56
58
  return if !Awestruct::Dependencies.should_track_dependencies
57
59
  return if top_page.nil?
58
60
  return if top_page == dep
59
- #puts "dep key #{top_page.relative_source_path} - #{dep.relative_source_path} -> #{key}"
60
- #puts Kernel.caller(4)[0]
61
+ $LOG.debug "dep key #{top_page.relative_source_path} - #{dep.relative_source_path} -> #{key}" if $LOG.debug?
62
+ $LOG.debug "callers #{Kernel.caller}" if $LOG.debug?
61
63
  top_page.dependencies.add_key_dependency(dep)
62
64
  end
63
65
 
@@ -75,7 +77,7 @@ module Awestruct
75
77
  end
76
78
 
77
79
  def key_hash=(key)
78
- #puts "key_hash #{key}"
80
+ $LOG.debug "key_hash #{key}" if $LOG.debug?
79
81
  if @key_hash.nil?
80
82
  @has_changed_keys = false
81
83
  else
@@ -89,7 +91,7 @@ module Awestruct
89
91
  end
90
92
 
91
93
  def content_hash=(key)
92
- #puts "content_hash #{key}"
94
+ $LOG.debug "content_hash #{key}" if $LOG.debug?
93
95
  if @content_hash.nil?
94
96
  @has_changed_content = false
95
97
  else
@@ -110,6 +112,7 @@ module Awestruct
110
112
  return if @page.do_not_track_dependencies
111
113
  return if @page.output_path.nil?
112
114
  return if dep == @page
115
+ $LOG.debug "adding dependency #{dep.source_path} to #{page.source_path}" if $LOG.debug?
113
116
  @dependencies << dep
114
117
  dep.dependencies.add_dependent( page )
115
118
  end
@@ -141,8 +144,8 @@ module Awestruct
141
144
 
142
145
  def persist!
143
146
  return if page.output_path.nil? || page.output_path == ''
144
- file = File.join( @page.site.config.dir, '.awestruct', 'dependency-cache', page.output_path )
145
- #puts "store #{file}"
147
+ file = File.join( @page.site.config.dir.to_s, '.awestruct', 'dependency-cache', page.output_path )
148
+ $LOG.debug "store #{file}" if $LOG.debug?
146
149
  FileUtils.mkdir_p( File.dirname( file ) )
147
150
  File.open( file, 'w' ) do |file|
148
151
  file.puts "ch:#{@content_hash}"
@@ -159,10 +162,10 @@ module Awestruct
159
162
  def load!
160
163
  return if page.output_path.nil? || page.output_path == ''
161
164
  file = File.join( @page.site.config.dir, '.awestruct', 'dependency-cache', page.output_path )
162
- #puts "load #{file}"
165
+ $LOG.debug "load #{file}" if $LOG.debug?
163
166
  if ( File.exist?( file ) )
164
167
  File.open( file, 'r' ) do |file|
165
- file.lines.each do |line|
168
+ file.each_line do |line|
166
169
  type, path = line.split(':')
167
170
  path ||= ""
168
171
  path.strip!