awestruct 0.4.8 → 0.5.0.cr

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.
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!