middleman-core 3.4.1 → 4.0.0.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (507) hide show
  1. checksums.yaml +4 -4
  2. data/{fixtures/asciidoc-app/config.rb → .gemtest} +0 -0
  3. data/.yardopts +2 -6
  4. data/Rakefile +5 -1
  5. data/features/asset_hash.feature +32 -61
  6. data/features/asset_host.feature +11 -23
  7. data/features/builder.feature +2 -0
  8. data/features/cache_buster.feature +1 -1
  9. data/features/chained_templates.feature +2 -92
  10. data/features/clean_build.feature +0 -18
  11. data/features/cli_init.feature +17 -111
  12. data/features/content_type.feature +2 -5
  13. data/features/custom_layouts.feature +24 -20
  14. data/features/data.feature +0 -28
  15. data/features/directory_index.feature +9 -9
  16. data/features/front-matter-neighbor.feature +0 -32
  17. data/features/front-matter.feature +0 -17
  18. data/features/helpers_content_tag.feature +2 -2
  19. data/features/helpers_form_tag.feature +4 -4
  20. data/features/helpers_link_to.feature +11 -29
  21. data/features/helpers_url_for.feature +11 -11
  22. data/features/i18n_builder.feature +5 -5
  23. data/features/i18n_preview.feature +8 -8
  24. data/features/markdown_kramdown.feature +1 -1
  25. data/features/markdown_kramdown_in_haml.feature +1 -2
  26. data/features/markdown_redcarpet.feature +23 -23
  27. data/features/minify_css.feature +9 -75
  28. data/features/minify_javascript.feature +12 -65
  29. data/features/mount_rack.feature +2 -4
  30. data/features/multiple-sources.feature +27 -0
  31. data/features/proxy_pages.feature +0 -10
  32. data/features/redirects.feature +6 -7
  33. data/features/relative_assets.feature +21 -66
  34. data/features/slim.feature +11 -7
  35. data/features/stylus.feature +1 -1
  36. data/features/support/env.rb +4 -4
  37. data/fixtures/asset-hash-app/config.rb +0 -2
  38. data/fixtures/asset-hash-app/source/index.html.erb +1 -1
  39. data/fixtures/asset-hash-host-app/config.rb +1 -3
  40. data/fixtures/asset-host-app/source/asset_host.html.erb +20 -1
  41. data/fixtures/asset-host-app/source/stylesheets/asset_host.css.sass +47 -2
  42. data/fixtures/auto-css-app/config.rb +8 -10
  43. data/fixtures/auto-js-app/config.rb +8 -10
  44. data/fixtures/basic-data-app/config.rb +2 -4
  45. data/fixtures/cache-buster-app/source/stylesheets/relative_assets.css.sass +0 -1
  46. data/fixtures/cache-buster-app/source/stylesheets/site.css.sass +3 -1
  47. data/fixtures/capture-html-app/config.rb +3 -5
  48. data/fixtures/clean-app/config-complications.rb +4 -6
  49. data/fixtures/clean-app/config.rb +4 -6
  50. data/fixtures/content-for-app/config.rb +3 -5
  51. data/fixtures/custom-layout-app/config.rb +1 -1
  52. data/fixtures/data-app/config.rb +1 -1
  53. data/fixtures/dynamic-pages-app/config.rb +20 -42
  54. data/fixtures/dynamic-pages-app/source/real/index.html.erb +3 -3
  55. data/fixtures/ember-cli-app/config.rb +5 -0
  56. data/fixtures/{compass-sprites-app/config.rb → ember-cli-app/source/javascripts/file.js} +0 -0
  57. data/fixtures/ember-cli-app/test-app/.bowerrc +3 -0
  58. data/fixtures/ember-cli-app/test-app/.gitignore +17 -0
  59. data/fixtures/ember-cli-app/test-app/.jshintrc +32 -0
  60. data/fixtures/ember-cli-app/test-app/Brocfile.js +20 -0
  61. data/fixtures/ember-cli-app/test-app/README.md +25 -0
  62. data/fixtures/ember-cli-app/test-app/app/app.js +14 -0
  63. data/fixtures/{implied-extensions-app/config.rb → ember-cli-app/test-app/app/components/.gitkeep} +0 -0
  64. data/fixtures/{javascript-app/config.rb → ember-cli-app/test-app/app/controllers/.gitkeep} +0 -0
  65. data/fixtures/{more-implied-extensions-app/config.rb → ember-cli-app/test-app/app/helpers/.gitkeep} +0 -0
  66. data/fixtures/ember-cli-app/test-app/app/index.html +26 -0
  67. data/fixtures/{partial-chained_templates-app/config.rb → ember-cli-app/test-app/app/models/.gitkeep} +0 -0
  68. data/fixtures/ember-cli-app/test-app/app/router.js +10 -0
  69. data/fixtures/{preview-server-app/config-empty.rb → ember-cli-app/test-app/app/routes/.gitkeep} +0 -0
  70. data/fixtures/{request-app/config.rb → ember-cli-app/test-app/app/styles/.gitkeep} +0 -0
  71. data/fixtures/ember-cli-app/test-app/app/styles/app.css +3 -0
  72. data/fixtures/{traversal-app/source/.htaccess → ember-cli-app/test-app/app/templates/.gitkeep} +0 -0
  73. data/fixtures/ember-cli-app/test-app/app/templates/application.hbs +3 -0
  74. data/{lib/middleman-core/templates/html5/source/img/.gitignore → fixtures/ember-cli-app/test-app/app/templates/components/.gitkeep} +0 -0
  75. data/{lib/middleman-core/templates/mobile/source/js/script.js → fixtures/ember-cli-app/test-app/app/views/.gitkeep} +0 -0
  76. data/fixtures/ember-cli-app/test-app/bower.json +16 -0
  77. data/fixtures/ember-cli-app/test-app/config/environment.js +38 -0
  78. data/fixtures/ember-cli-app/test-app/package.json +31 -0
  79. data/fixtures/ember-cli-app/test-app/public/.gitkeep +0 -0
  80. data/fixtures/ember-cli-app/test-app/testem.json +6 -0
  81. data/fixtures/ember-cli-app/test-app/tests/.jshintrc +73 -0
  82. data/fixtures/ember-cli-app/test-app/tests/helpers/resolver.js +9 -0
  83. data/fixtures/ember-cli-app/test-app/tests/helpers/start-app.js +30 -0
  84. data/fixtures/ember-cli-app/test-app/tests/index.html +50 -0
  85. data/fixtures/ember-cli-app/test-app/tests/test-helper.js +6 -0
  86. data/fixtures/ember-cli-app/test-app/tests/unit/.gitkeep +0 -0
  87. data/fixtures/env-app/config.rb +0 -0
  88. data/fixtures/env-app/environments/development.rb +1 -0
  89. data/fixtures/env-app/environments/production.rb +2 -0
  90. data/fixtures/env-app/source/index.html.erb +3 -0
  91. data/fixtures/env-app/source/stylesheets/site.css.scss +3 -0
  92. data/fixtures/external-helpers/config.rb +1 -1
  93. data/fixtures/feature-params-app/config.rb +10 -6
  94. data/fixtures/feature-params-app/source/index.html.erb +2 -3
  95. data/fixtures/fonts-app/source/stylesheets/fonts.css.scss +6 -0
  96. data/fixtures/frontmatter-neighbor-app/config.rb +30 -0
  97. data/fixtures/frontmatter-settings-app/config.rb +2 -2
  98. data/fixtures/frontmatter-settings-neighbor-app/config.rb +33 -3
  99. data/fixtures/generator-test/config.rb +5 -10
  100. data/fixtures/glob-app/config.rb +1 -1
  101. data/fixtures/i18n-force-locale/config.rb +2 -4
  102. data/fixtures/i18n-force-locale/source/{index.haml → index.html.haml} +0 -0
  103. data/fixtures/i18n-test-app/source/localizable/{one.en.md → one.en.html.md} +0 -0
  104. data/fixtures/i18n-test-app/source/localizable/{one.es.md → one.es.html.md} +0 -0
  105. data/fixtures/indexable-app/config.rb +2 -2
  106. data/fixtures/indexable-app/source/evil spaces.html +1 -1
  107. data/fixtures/large-build-app/config.rb +1 -5
  108. data/fixtures/large-build-app/source/spaces in file.html.erb +1 -1
  109. data/fixtures/manual-layout-override/config.rb +1 -1
  110. data/fixtures/markdown-app/config.rb +1 -1
  111. data/fixtures/markdown-frontmatter-options-app/config.rb +1 -1
  112. data/fixtures/minify-css-app/source/stylesheets/site.css.sass +3 -1
  113. data/fixtures/more-frontmatter-settings-app/config.rb +1 -1
  114. data/fixtures/more-markdown-app/source/{with_layout.markdown → with_layout.html.markdown} +0 -0
  115. data/fixtures/more-markdown-app/source/{with_layout_erb.markdown.erb → with_layout_erb.html.markdown.erb} +0 -0
  116. data/fixtures/more-traversal-app/config.rb +4 -4
  117. data/fixtures/more-traversal-app/source/layout.erb +1 -1
  118. data/fixtures/multiple-data-sources-app/config.rb +3 -0
  119. data/fixtures/multiple-data-sources-app/data/data.yml +1 -0
  120. data/fixtures/multiple-data-sources-app/data/two.yml +1 -0
  121. data/fixtures/multiple-data-sources-app/data0/one.yml +1 -0
  122. data/fixtures/multiple-data-sources-app/data1/data1.yml +1 -0
  123. data/fixtures/multiple-data-sources-app/data1/one.yml +1 -0
  124. data/fixtures/multiple-data-sources-app/data2/data2.yml +1 -0
  125. data/fixtures/multiple-data-sources-app/data2/two.yml +1 -0
  126. data/fixtures/multiple-data-sources-app/source/index.html.erb +10 -0
  127. data/fixtures/multiple-sources-app/config.rb +3 -0
  128. data/fixtures/multiple-sources-app/source/index.html.erb +1 -0
  129. data/fixtures/multiple-sources-app/source/override-in-two.html.erb +1 -0
  130. data/fixtures/multiple-sources-app/source0/override-in-one.html.erb +1 -0
  131. data/fixtures/multiple-sources-app/source1/index1.html.erb +1 -0
  132. data/fixtures/multiple-sources-app/source1/override-in-one.html.erb +1 -0
  133. data/fixtures/multiple-sources-app/source2/index2.html.erb +1 -0
  134. data/fixtures/multiple-sources-app/source2/override-in-two.html.erb +1 -0
  135. data/fixtures/padrino-helpers-app/source/former_padrino_test.html.erb +3 -3
  136. data/fixtures/page-classes-app/config.rb +2 -4
  137. data/fixtures/page-classes-app/source/2-starts-with-numeric-custom.html.erb +1 -1
  138. data/fixtures/page-helper-layout-block-app/config.rb +1 -1
  139. data/fixtures/partials-app/source/locals.html.erb +1 -1
  140. data/fixtures/partials-app/source/shared/{snippet.erb → _snippet.html.erb} +0 -0
  141. data/fixtures/partials-app/source/sub/index.html.erb +1 -1
  142. data/fixtures/passthrough-app/source/stylesheets/site.css.sass +5 -1
  143. data/fixtures/proxy-pages-app/config.rb +12 -15
  144. data/fixtures/relative-app/source/stylesheets/relative_assets.css.sass +1 -2
  145. data/fixtures/relative-assets-app/source/javascripts/application.js +8 -0
  146. data/fixtures/relative-assets-app/source/relative_image.html.erb +0 -1
  147. data/fixtures/relative-assets-app/source/stylesheets/relative_assets.css.sass +1 -2
  148. data/fixtures/scss-app/source/stylesheets/site_scss.css.scss +3 -1
  149. data/fixtures/stylus-preview-app/source/content.html.erb +4 -0
  150. data/fixtures/traversal-app/config.rb +4 -4
  151. data/fixtures/traversal-app/source/layout.erb +1 -1
  152. data/fixtures/v4-extension-callbacks/config.rb +21 -5
  153. data/fixtures/wildcard-app/config.rb +1 -1
  154. data/fixtures/wildcard-directory-index-app/config.rb +1 -1
  155. data/lib/middleman-core.rb +5 -2
  156. data/lib/middleman-core/application.rb +212 -131
  157. data/lib/middleman-core/builder.rb +255 -0
  158. data/lib/middleman-core/config_context.rb +103 -0
  159. data/lib/middleman-core/configuration.rb +15 -92
  160. data/lib/middleman-core/contracts.rb +149 -0
  161. data/lib/middleman-core/core_extensions.rb +86 -45
  162. data/lib/middleman-core/core_extensions/data.rb +82 -72
  163. data/lib/{middleman-more → middleman-core}/core_extensions/default_helpers.rb +34 -140
  164. data/lib/middleman-core/core_extensions/external_helpers.rb +23 -27
  165. data/lib/middleman-core/core_extensions/file_watcher.rb +59 -169
  166. data/lib/middleman-core/core_extensions/front_matter.rb +72 -131
  167. data/lib/middleman-core/core_extensions/i18n.rb +186 -0
  168. data/lib/middleman-core/core_extensions/rendering.rb +45 -533
  169. data/lib/middleman-core/core_extensions/routing.rb +53 -51
  170. data/lib/middleman-core/core_extensions/show_exceptions.rb +11 -18
  171. data/lib/middleman-core/extension.rb +183 -56
  172. data/lib/middleman-core/extension_manager.rb +80 -0
  173. data/lib/middleman-core/extensions.rb +96 -67
  174. data/lib/middleman-core/extensions/asset_hash.rb +92 -0
  175. data/lib/middleman-core/extensions/asset_host.rb +37 -0
  176. data/lib/{middleman-more → middleman-core}/extensions/automatic_alt_tags.rb +6 -5
  177. data/lib/{middleman-more → middleman-core}/extensions/automatic_image_sizes.rb +9 -13
  178. data/lib/middleman-core/extensions/cache_buster.rb +27 -0
  179. data/lib/{middleman-more → middleman-core}/extensions/directory_indexes.rb +9 -7
  180. data/lib/middleman-core/extensions/external_pipeline.rb +37 -0
  181. data/lib/{middleman-more → middleman-core}/extensions/gzip.rb +10 -3
  182. data/lib/{middleman-more → middleman-core}/extensions/lorem.rb +2 -2
  183. data/lib/middleman-core/extensions/minify_css.rb +86 -0
  184. data/lib/middleman-core/extensions/minify_javascript.rb +93 -0
  185. data/lib/middleman-core/extensions/relative_assets.rb +38 -0
  186. data/lib/middleman-core/file_renderer.rb +139 -0
  187. data/lib/middleman-core/load_paths.rb +21 -28
  188. data/lib/middleman-core/meta_pages.rb +9 -9
  189. data/lib/middleman-core/meta_pages/sitemap_resource.rb +3 -6
  190. data/lib/middleman-core/meta_pages/sitemap_tree.rb +1 -1
  191. data/lib/middleman-core/middleware/inline_url_rewriter.rb +96 -0
  192. data/lib/middleman-core/preview_server.rb +65 -196
  193. data/lib/middleman-core/profiling.rb +14 -15
  194. data/lib/middleman-core/rack.rb +138 -0
  195. data/lib/middleman-core/renderers/coffee_script.rb +10 -13
  196. data/lib/middleman-core/renderers/erb.rb +3 -15
  197. data/lib/middleman-core/renderers/haml.rb +33 -18
  198. data/lib/middleman-core/renderers/kramdown.rb +6 -4
  199. data/lib/middleman-core/renderers/less.rb +12 -18
  200. data/lib/middleman-core/renderers/liquid.rb +22 -18
  201. data/lib/middleman-core/renderers/markdown.rb +36 -49
  202. data/lib/middleman-core/renderers/redcarpet.rb +11 -4
  203. data/lib/middleman-core/renderers/sass.rb +36 -27
  204. data/lib/middleman-core/renderers/sass_functions.rb +116 -0
  205. data/lib/middleman-core/renderers/slim.rb +19 -26
  206. data/lib/middleman-core/renderers/stylus.rb +4 -14
  207. data/lib/middleman-core/sitemap/extensions/ignores.rb +35 -73
  208. data/lib/middleman-core/sitemap/extensions/on_disk.rb +29 -48
  209. data/lib/middleman-core/sitemap/extensions/proxies.rb +111 -133
  210. data/lib/middleman-core/sitemap/extensions/redirects.rb +68 -102
  211. data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +59 -83
  212. data/lib/middleman-core/sitemap/extensions/traversal.rb +14 -15
  213. data/lib/middleman-core/sitemap/resource.rb +99 -71
  214. data/lib/middleman-core/sitemap/store.rb +79 -132
  215. data/lib/middleman-core/sources.rb +310 -0
  216. data/lib/middleman-core/sources/source_watcher.rb +268 -0
  217. data/lib/middleman-core/step_definitions.rb +2 -3
  218. data/lib/middleman-core/step_definitions/builder_steps.rb +15 -13
  219. data/lib/middleman-core/step_definitions/middleman_steps.rb +2 -18
  220. data/lib/middleman-core/step_definitions/server_steps.rb +43 -77
  221. data/lib/middleman-core/template_context.rb +181 -0
  222. data/lib/middleman-core/template_renderer.rb +213 -0
  223. data/lib/middleman-core/util.rb +319 -241
  224. data/lib/middleman-core/util/hash_with_indifferent_access.rb +103 -0
  225. data/lib/middleman-core/version.rb +1 -1
  226. data/lib/middleman/rack.rb +0 -1
  227. data/middleman-core.gemspec +36 -28
  228. data/spec/middleman-core/path_match_spec.rb +37 -0
  229. data/spec/spec_helper.rb +2 -25
  230. metadata +237 -454
  231. data/bin/middleman +0 -18
  232. data/cucumber.yml +0 -2
  233. data/features/asciidoc.feature +0 -155
  234. data/features/cli/preview_server-hook.feature +0 -17
  235. data/features/cli/preview_server.feature +0 -532
  236. data/features/compass-sprites.feature +0 -6
  237. data/features/console.feature +0 -10
  238. data/features/current_page_request_path_backwards.feature +0 -6
  239. data/features/fonts.feature +0 -15
  240. data/features/i18n_link_to.feature +0 -209
  241. data/features/image_srcset_paths.feature +0 -7
  242. data/features/implied_extensions.feature +0 -69
  243. data/features/instance_vars.feature +0 -9
  244. data/features/javascript-testing.feature +0 -18
  245. data/features/more-implied_extensions.feature +0 -44
  246. data/features/partials_dir.feature +0 -30
  247. data/features/queryable.feature +0 -35
  248. data/features/request_params.feature +0 -6
  249. data/features/static_server.feature +0 -6
  250. data/features/step_definitions/page_layout_steps.rb +0 -15
  251. data/features/step_definitions/queryable_steps.rb +0 -212
  252. data/features/support/preserve_mime_types.rb +0 -7
  253. data/features/v3_extensions.feature +0 -20
  254. data/features/working_directory.feature +0 -33
  255. data/fixtures/asciidoc-app/source/_include.adoc +0 -1
  256. data/fixtures/asciidoc-app/source/code.adoc +0 -3
  257. data/fixtures/asciidoc-app/source/custom-attribute.adoc +0 -3
  258. data/fixtures/asciidoc-app/source/gallery.adoc +0 -1
  259. data/fixtures/asciidoc-app/source/hello-no-layout.adoc +0 -2
  260. data/fixtures/asciidoc-app/source/hello-with-front-matter.adoc +0 -5
  261. data/fixtures/asciidoc-app/source/hello-with-layout.adoc +0 -2
  262. data/fixtures/asciidoc-app/source/hello-with-title.adoc +0 -5
  263. data/fixtures/asciidoc-app/source/hello.adoc +0 -4
  264. data/fixtures/asciidoc-app/source/images/tiger.gif +0 -0
  265. data/fixtures/asciidoc-app/source/layouts/default.erb +0 -9
  266. data/fixtures/asciidoc-app/source/master.adoc +0 -3
  267. data/fixtures/asset-hash-app/source/api.json.erb +0 -1
  268. data/fixtures/asset-hash-app/source/fonts/fontawesome-webfont.woff +0 -0
  269. data/fixtures/asset-hash-app/source/fonts/fontawesome-webfont.woff2 +0 -0
  270. data/fixtures/asset-hash-app/source/images/200px.jpg +0 -0
  271. data/fixtures/asset-hash-app/source/images/300px.jpg +0 -0
  272. data/fixtures/asset-hash-app/source/slim.html.slim +0 -8
  273. data/fixtures/asset-hash-app/source/stylesheets/uses_fonts.css +0 -4
  274. data/fixtures/asset-hash-app/source/subdir/api.json.erb +0 -1
  275. data/fixtures/chained-app/source/test.erb.combobreaker.str.erb +0 -8
  276. data/fixtures/clean-app/config-hidden-dir-after.rb +0 -5
  277. data/fixtures/clean-app/config-hidden-dir-before.rb +0 -1
  278. data/fixtures/compass-sprites-app/source/images/icon/arrow_down.png +0 -0
  279. data/fixtures/compass-sprites-app/source/images/icon/arrow_left.png +0 -0
  280. data/fixtures/compass-sprites-app/source/images/icon/arrow_right.png +0 -0
  281. data/fixtures/compass-sprites-app/source/images/icon/arrow_up.png +0 -0
  282. data/fixtures/compass-sprites-app/source/stylesheets/site.css.scss +0 -3
  283. data/fixtures/content-type-app/source/index.php +0 -1
  284. data/fixtures/current-page-app/config.rb +0 -3
  285. data/fixtures/current-page-app/source/request-path.html.erb +0 -1
  286. data/fixtures/default-partials-dir-app/source/_partial.html.erb +0 -1
  287. data/fixtures/default-partials-dir-app/source/index.html.erb +0 -2
  288. data/fixtures/fonts-app/source/stylesheets/fonts.css.sass +0 -5
  289. data/fixtures/frontmatter-app/source/front-matter-auto.erb +0 -6
  290. data/fixtures/frontmatter-app/source/front-matter-pandoc.html.md.erb +0 -13
  291. data/fixtures/frontmatter-app/source/json-front-matter-auto.erb +0 -6
  292. data/fixtures/frontmatter-neighbor-app/source/front-matter-auto.erb +0 -1
  293. data/fixtures/frontmatter-neighbor-app/source/front-matter-auto.erb.frontmatter +0 -4
  294. data/fixtures/frontmatter-neighbor-app/source/json-front-matter-auto.erb +0 -1
  295. data/fixtures/frontmatter-neighbor-app/source/json-front-matter-auto.erb.frontmatter +0 -4
  296. data/fixtures/image-srcset-paths-app/image-srcset-paths.html.erb +0 -1
  297. data/fixtures/image-srcset-paths-app/images/blank.gif +0 -0
  298. data/fixtures/implied-extensions-app/source/index.erb +0 -1
  299. data/fixtures/instance-vars-app/config.rb +0 -7
  300. data/fixtures/instance-vars-app/source/content.html.erb +0 -2
  301. data/fixtures/instance-vars-app/source/layout.erb +0 -1
  302. data/fixtures/javascript-app/source/index.html +0 -17
  303. data/fixtures/minify-css-app/source/inline-css.php +0 -8
  304. data/fixtures/minify-css-app/source/stylesheets/site.xcss.sass +0 -5
  305. data/fixtures/minify-js-app/source/inline-js.php +0 -22
  306. data/fixtures/minify-js-app/source/javascripts/js_test.xjs +0 -8
  307. data/fixtures/more-implied-extensions-app/source/javascripts/app.coffee +0 -1
  308. data/fixtures/more-implied-extensions-app/source/layouts/layout.erb +0 -3
  309. data/fixtures/more-implied-extensions-app/source/stylesheets/style.scss +0 -3
  310. data/fixtures/more-implied-extensions-app/source/stylesheets/style2.sass +0 -3
  311. data/fixtures/more-implied-extensions-app/source/test.haml +0 -4
  312. data/fixtures/more-implied-extensions-app/source/test2.markdown +0 -3
  313. data/fixtures/more-implied-extensions-app/source/test3.slim +0 -3
  314. data/fixtures/more-implied-extensions-app/source/test4.liquid +0 -1
  315. data/fixtures/partials-dir-app/source/index.html.erb +0 -2
  316. data/fixtures/partials-dir-app/source/nested/partials/_partial.html.erb +0 -1
  317. data/fixtures/partials-dir-app/source/partials/_partial.html.erb +0 -1
  318. data/fixtures/plain-app/index.html +0 -1
  319. data/fixtures/preview-server-app/bin/dns_server.rb +0 -33
  320. data/fixtures/preview-server-app/config-complications.rb +0 -11
  321. data/fixtures/preview-server-app/config.rb +0 -11
  322. data/fixtures/preview-server-app/source/index.html.erb +0 -1
  323. data/fixtures/preview-server-app/source/layout.erb +0 -9
  324. data/fixtures/preview-server-app/source/layouts/custom.erb +0 -8
  325. data/fixtures/preview-server-app/source/real.html +0 -1
  326. data/fixtures/preview-server-app/source/real/index.html.erb +0 -5
  327. data/fixtures/preview-server-app/source/should_be_ignored.html +0 -1
  328. data/fixtures/preview-server-app/source/should_be_ignored2.html +0 -1
  329. data/fixtures/preview-server-app/source/should_be_ignored3.html +0 -1
  330. data/fixtures/preview-server-app/source/static.html +0 -1
  331. data/fixtures/preview-server-hook-app/config.rb +0 -19
  332. data/fixtures/preview-server-hook-app/source/index.html.erb +0 -9
  333. data/fixtures/proxy-pages-app/source/real/index-ivars.html.erb +0 -6
  334. data/fixtures/relative-assets-app/source/absolute_image_relative_css.html.erb +0 -9
  335. data/fixtures/relative-assets-app/source/javascripts/app.js +0 -3
  336. data/fixtures/relative-assets-app/source/relative_image_absolute_css.html.erb +0 -9
  337. data/fixtures/request-app/source/index.html.erb +0 -3
  338. data/fixtures/stylus-preview-app/source/layout.erb +0 -1
  339. data/lib/middleman-core/cli.rb +0 -88
  340. data/lib/middleman-core/cli/build.rb +0 -300
  341. data/lib/middleman-core/cli/bundler.rb +0 -39
  342. data/lib/middleman-core/cli/console.rb +0 -52
  343. data/lib/middleman-core/cli/extension.rb +0 -47
  344. data/lib/middleman-core/cli/init.rb +0 -71
  345. data/lib/middleman-core/cli/server.rb +0 -99
  346. data/lib/middleman-core/core_extensions/data/file_loader.rb +0 -71
  347. data/lib/middleman-core/core_extensions/extensions.rb +0 -197
  348. data/lib/middleman-core/core_extensions/request.rb +0 -312
  349. data/lib/middleman-core/dns_resolver.rb +0 -73
  350. data/lib/middleman-core/dns_resolver/basic_network_resolver.rb +0 -52
  351. data/lib/middleman-core/dns_resolver/hosts_resolver.rb +0 -63
  352. data/lib/middleman-core/dns_resolver/local_link_resolver.rb +0 -44
  353. data/lib/middleman-core/dns_resolver/network_resolver.rb +0 -42
  354. data/lib/middleman-core/preview_server/checks.rb +0 -81
  355. data/lib/middleman-core/preview_server/information.rb +0 -273
  356. data/lib/middleman-core/preview_server/network_interface_inventory.rb +0 -65
  357. data/lib/middleman-core/preview_server/server_hostname.rb +0 -39
  358. data/lib/middleman-core/preview_server/server_information.rb +0 -153
  359. data/lib/middleman-core/preview_server/server_information_callback_proxy.rb +0 -35
  360. data/lib/middleman-core/preview_server/server_information_validator.rb +0 -18
  361. data/lib/middleman-core/preview_server/server_ip_address.rb +0 -55
  362. data/lib/middleman-core/preview_server/server_url.rb +0 -63
  363. data/lib/middleman-core/preview_server/tcp_port_prober.rb +0 -29
  364. data/lib/middleman-core/renderers/asciidoc.rb +0 -58
  365. data/lib/middleman-core/sitemap.rb +0 -76
  366. data/lib/middleman-core/sitemap/extensions/content_type.rb +0 -16
  367. data/lib/middleman-core/sitemap/queryable.rb +0 -151
  368. data/lib/middleman-core/step_definitions/commandline_steps.rb +0 -88
  369. data/lib/middleman-core/templates.rb +0 -101
  370. data/lib/middleman-core/templates/default.rb +0 -37
  371. data/lib/middleman-core/templates/default/source/images/background.png +0 -0
  372. data/lib/middleman-core/templates/default/source/images/middleman.png +0 -0
  373. data/lib/middleman-core/templates/default/source/index.html.erb +0 -10
  374. data/lib/middleman-core/templates/default/source/javascripts/all.js +0 -1
  375. data/lib/middleman-core/templates/default/source/layouts/layout.erb +0 -19
  376. data/lib/middleman-core/templates/default/source/stylesheets/all.css +0 -55
  377. data/lib/middleman-core/templates/default/source/stylesheets/normalize.css +0 -375
  378. data/lib/middleman-core/templates/empty.rb +0 -22
  379. data/lib/middleman-core/templates/empty/Gemfile.tt +0 -6
  380. data/lib/middleman-core/templates/extension/Gemfile +0 -18
  381. data/lib/middleman-core/templates/extension/Rakefile +0 -14
  382. data/lib/middleman-core/templates/extension/features/support/env.rb +0 -4
  383. data/lib/middleman-core/templates/extension/gemspec +0 -24
  384. data/lib/middleman-core/templates/extension/gitignore +0 -5
  385. data/lib/middleman-core/templates/extension/lib/lib.rb +0 -38
  386. data/lib/middleman-core/templates/extension/lib/middleman_extension.rb +0 -1
  387. data/lib/middleman-core/templates/html5.rb +0 -29
  388. data/lib/middleman-core/templates/html5/source/.htaccess +0 -542
  389. data/lib/middleman-core/templates/html5/source/404.html +0 -157
  390. data/lib/middleman-core/templates/html5/source/LICENSE.md +0 -19
  391. data/lib/middleman-core/templates/html5/source/README.md +0 -63
  392. data/lib/middleman-core/templates/html5/source/apple-touch-icon-114x114-precomposed.png +0 -0
  393. data/lib/middleman-core/templates/html5/source/apple-touch-icon-144x144-precomposed.png +0 -0
  394. data/lib/middleman-core/templates/html5/source/apple-touch-icon-57x57-precomposed.png +0 -0
  395. data/lib/middleman-core/templates/html5/source/apple-touch-icon-72x72-precomposed.png +0 -0
  396. data/lib/middleman-core/templates/html5/source/apple-touch-icon-precomposed.png +0 -0
  397. data/lib/middleman-core/templates/html5/source/apple-touch-icon.png +0 -0
  398. data/lib/middleman-core/templates/html5/source/crossdomain.xml +0 -15
  399. data/lib/middleman-core/templates/html5/source/css/main.css +0 -298
  400. data/lib/middleman-core/templates/html5/source/css/normalize.css +0 -504
  401. data/lib/middleman-core/templates/html5/source/favicon.ico +0 -0
  402. data/lib/middleman-core/templates/html5/source/humans.txt +0 -15
  403. data/lib/middleman-core/templates/html5/source/index.html.erb +0 -6
  404. data/lib/middleman-core/templates/html5/source/js/main.js +0 -1
  405. data/lib/middleman-core/templates/html5/source/js/plugins.js +0 -14
  406. data/lib/middleman-core/templates/html5/source/js/vendor/jquery-1.8.0.min.js +0 -2
  407. data/lib/middleman-core/templates/html5/source/js/vendor/modernizr-2.6.1.min.js +0 -4
  408. data/lib/middleman-core/templates/html5/source/layouts/layout.erb +0 -40
  409. data/lib/middleman-core/templates/html5/source/robots.txt +0 -3
  410. data/lib/middleman-core/templates/local.rb +0 -27
  411. data/lib/middleman-core/templates/mobile.rb +0 -24
  412. data/lib/middleman-core/templates/mobile/source/404.html +0 -37
  413. data/lib/middleman-core/templates/mobile/source/README.markdown +0 -21
  414. data/lib/middleman-core/templates/mobile/source/crossdomain.xml +0 -25
  415. data/lib/middleman-core/templates/mobile/source/css/style.css +0 -315
  416. data/lib/middleman-core/templates/mobile/source/humans.txt +0 -43
  417. data/lib/middleman-core/templates/mobile/source/img/h/apple-touch-icon.png +0 -0
  418. data/lib/middleman-core/templates/mobile/source/img/h/splash.png +0 -0
  419. data/lib/middleman-core/templates/mobile/source/img/l/apple-touch-icon-precomposed.png +0 -0
  420. data/lib/middleman-core/templates/mobile/source/img/l/apple-touch-icon.png +0 -0
  421. data/lib/middleman-core/templates/mobile/source/img/l/splash.png +0 -0
  422. data/lib/middleman-core/templates/mobile/source/img/m/apple-touch-icon.png +0 -0
  423. data/lib/middleman-core/templates/mobile/source/index.html +0 -92
  424. data/lib/middleman-core/templates/mobile/source/js/libs/modernizr-custom.js +0 -14
  425. data/lib/middleman-core/templates/mobile/source/js/libs/respond.min.js +0 -7
  426. data/lib/middleman-core/templates/mobile/source/js/mylibs/helper.js +0 -171
  427. data/lib/middleman-core/templates/mobile/source/js/plugins.js +0 -20
  428. data/lib/middleman-core/templates/mobile/source/robots.txt +0 -4
  429. data/lib/middleman-core/templates/mobile/source/sitemap.xml +0 -9
  430. data/lib/middleman-core/templates/mobile/source/test/index.html +0 -31
  431. data/lib/middleman-core/templates/mobile/source/test/qunit/qunit.css +0 -148
  432. data/lib/middleman-core/templates/mobile/source/test/qunit/qunit.js +0 -1265
  433. data/lib/middleman-core/templates/mobile/source/test/tests.js +0 -21
  434. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/Readme.PDF +0 -0
  435. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx1.snippet +0 -31
  436. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/aspx/aspx2.snippet +0 -2
  437. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/aspx/ga.aspx +0 -195
  438. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/aspx/sample.aspx +0 -44
  439. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/jsp/ga.jsp +0 -225
  440. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp1.snippet +0 -35
  441. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/jsp/jsp2.snippet +0 -2
  442. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/jsp/sample.jsp +0 -51
  443. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/php/ga.php +0 -176
  444. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/php/php1.snippet +0 -30
  445. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/php/php2.snippet +0 -4
  446. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/php/sample.php +0 -44
  447. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/pl/ga.pl +0 -195
  448. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/pl/perl1.snippet +0 -27
  449. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/pl/perl2.snippet +0 -1
  450. data/lib/middleman-core/templates/mobile/source/tools/googleanalyticsformobile/pl/sample.pl +0 -38
  451. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/COPYING +0 -202
  452. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/bookmark_bubble.js +0 -559
  453. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/example/example.html +0 -43
  454. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/example/example.js +0 -57
  455. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/images/arrow.png +0 -0
  456. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/images/close.png +0 -0
  457. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/images/generate_base64_images +0 -33
  458. data/lib/middleman-core/templates/mobile/source/tools/mobile-bookmark-bubble/images/icon_calendar.png +0 -0
  459. data/lib/middleman-core/templates/mobile/source/tools/wspl/README +0 -27
  460. data/lib/middleman-core/templates/mobile/source/tools/wspl/databasefactory.js +0 -45
  461. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbworker.js +0 -324
  462. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbworker_test.html +0 -393
  463. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbworkerstarter.js +0 -32
  464. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbwrapper_gears.js +0 -595
  465. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbwrapper_gears_test.html +0 -404
  466. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbwrapper_html5.js +0 -203
  467. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbwrapper_html5_test.html +0 -468
  468. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbwrapperapi.js +0 -202
  469. data/lib/middleman-core/templates/mobile/source/tools/wspl/dbwrapperapi_test.html +0 -51
  470. data/lib/middleman-core/templates/mobile/source/tools/wspl/gears_resultset.js +0 -71
  471. data/lib/middleman-core/templates/mobile/source/tools/wspl/gears_resultset_test.html +0 -86
  472. data/lib/middleman-core/templates/mobile/source/tools/wspl/gears_transaction.js +0 -196
  473. data/lib/middleman-core/templates/mobile/source/tools/wspl/gears_transaction_test.html +0 -221
  474. data/lib/middleman-core/templates/mobile/source/tools/wspl/gearsutils.js +0 -94
  475. data/lib/middleman-core/templates/mobile/source/tools/wspl/gearsutils_test.html +0 -84
  476. data/lib/middleman-core/templates/mobile/source/tools/wspl/global_functions.js +0 -72
  477. data/lib/middleman-core/templates/mobile/source/tools/wspl/simplenotes/index.html +0 -347
  478. data/lib/middleman-core/templates/mobile/source/tools/wspl/simplenotes/simplenotes.js +0 -503
  479. data/lib/middleman-core/templates/mobile/source/tools/wspl/simplenotes/styles.css +0 -66
  480. data/lib/middleman-core/templates/mobile/source/tools/wspl/simplenotes/template.js +0 -75
  481. data/lib/middleman-core/templates/shared/Gemfile.tt +0 -14
  482. data/lib/middleman-core/templates/shared/config.ru +0 -3
  483. data/lib/middleman-core/templates/shared/config.tt +0 -87
  484. data/lib/middleman-core/templates/shared/gitignore +0 -21
  485. data/lib/middleman-more/core_extensions/compass.rb +0 -75
  486. data/lib/middleman-more/core_extensions/i18n.rb +0 -312
  487. data/lib/middleman-more/extensions/asset_hash.rb +0 -128
  488. data/lib/middleman-more/extensions/asset_host.rb +0 -50
  489. data/lib/middleman-more/extensions/cache_buster.rb +0 -55
  490. data/lib/middleman-more/extensions/minify_css.rb +0 -112
  491. data/lib/middleman-more/extensions/minify_javascript.rb +0 -120
  492. data/lib/middleman-more/extensions/relative_assets.rb +0 -24
  493. data/lib/middleman-more/templates/smacss.rb +0 -29
  494. data/lib/middleman-more/templates/smacss/source/_footer.haml +0 -1
  495. data/lib/middleman-more/templates/smacss/source/index.html.haml +0 -1
  496. data/lib/middleman-more/templates/smacss/source/layouts/layout.haml +0 -13
  497. data/lib/middleman-more/templates/smacss/source/stylesheets/base/README.markdown +0 -11
  498. data/lib/middleman-more/templates/smacss/source/stylesheets/base/base.scss +0 -1
  499. data/lib/middleman-more/templates/smacss/source/stylesheets/base/normalize.scss +0 -375
  500. data/lib/middleman-more/templates/smacss/source/stylesheets/layout/README.markdown +0 -9
  501. data/lib/middleman-more/templates/smacss/source/stylesheets/modules/README.markdown +0 -9
  502. data/lib/middleman-more/templates/smacss/source/stylesheets/states/README.markdown +0 -12
  503. data/lib/middleman-more/templates/smacss/source/stylesheets/style.css.scss +0 -12
  504. data/lib/vendored-middleman-deps/fastimage.rb +0 -287
  505. data/spec/middleman-core/dns_resolver_spec.rb +0 -118
  506. data/spec/middleman-core/preview_server/server_hostname_spec.rb +0 -39
  507. data/spec/middleman-core/preview_server/server_ip_address_spec.rb +0 -43
@@ -1,99 +0,0 @@
1
- # CLI Module
2
- module Middleman::Cli
3
- # Server thor task
4
- class Server < Thor
5
- check_unknown_options!
6
-
7
- namespace :server
8
-
9
- desc 'server [options]', 'Start the preview server'
10
- method_option :environment,
11
- aliases: '-e',
12
- default: ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
13
- desc: 'The environment Middleman will run under'
14
- method_option :port,
15
- aliases: '-p',
16
- desc: 'The port Middleman will listen on'
17
- method_option :server_name,
18
- aliases: '-s',
19
- desc: 'The server name Middleman will use'
20
- method_option :bind_address,
21
- aliases: '-b',
22
- desc: 'The bind address Middleman will listen on'
23
- method_option :https,
24
- type: :boolean,
25
- desc: 'Serve the preview server over SSL/TLS'
26
- method_option :ssl_certificate,
27
- desc: 'Path to an X.509 certificate to use for the preview server'
28
- method_option :ssl_private_key,
29
- desc: "Path to an RSA private key for the preview server's certificate"
30
- method_option :verbose,
31
- type: :boolean,
32
- default: false,
33
- desc: 'Print debug messages'
34
- method_option :instrument,
35
- type: :string,
36
- default: false,
37
- desc: 'Print instrument messages'
38
- method_option :disable_watcher,
39
- type: :boolean,
40
- default: false,
41
- desc: 'Disable the file change and delete watcher process'
42
- method_option :profile,
43
- type: :boolean,
44
- default: false,
45
- desc: 'Generate profiling report for server startup'
46
- method_option :reload_paths,
47
- type: :string,
48
- default: false,
49
- desc: 'Additional paths to auto-reload when files change'
50
- method_option :force_polling,
51
- type: :boolean,
52
- default: false,
53
- desc: 'Force file watcher into polling mode'
54
- method_option :latency,
55
- type: :numeric,
56
- aliases: '-l',
57
- default: 0.25,
58
- desc: 'Set file watcher latency, in seconds'
59
-
60
- # Start the server
61
- def server
62
- require 'middleman-core'
63
- require 'middleman-core/preview_server'
64
-
65
- unless ENV['MM_ROOT']
66
- puts '== Could not find a Middleman project config.rb'
67
- puts '== Treating directory as a static site to be served'
68
- ENV['MM_ROOT'] = ::Middleman::Util.current_directory
69
- ENV['MM_SOURCE'] = ''
70
- end
71
-
72
- params = {
73
- port: options['port'],
74
- bind_address: options['bind_address'],
75
- https: options['https'],
76
- server_name: options['server_name'],
77
- ssl_certificate: options['ssl_certificate'],
78
- ssl_private_key: options['ssl_private_key'],
79
- environment: options['environment'],
80
- debug: options['verbose'],
81
- instrumenting: options['instrument'],
82
- disable_watcher: options['disable_watcher'],
83
- reload_paths: options['reload_paths'],
84
- force_polling: options['force_polling'],
85
- latency: options['latency']
86
- }
87
-
88
- puts '== The Middleman is loading'
89
- ::Middleman::PreviewServer.start(params)
90
- end
91
- end
92
-
93
- def self.exit_on_failure?
94
- true
95
- end
96
-
97
- # Map "s" to "server"
98
- Base.map('s' => 'server')
99
- end
@@ -1,71 +0,0 @@
1
- require 'yaml'
2
- require 'json'
3
-
4
- module Middleman
5
- module CoreExtensions
6
- module Data
7
- # Load data files
8
- class FileLoader
9
- # No parser available
10
- class NoFileLoaderFoundError < StandardError; end
11
-
12
- # Load yaml files
13
- class YamlFileLoader
14
- def match?(file)
15
- %w(.yaml .yml).include? File.extname(file)
16
- end
17
-
18
- # @param [Pathname] file
19
- def load(file)
20
- YAML.load_file(file)
21
- rescue Psych::SyntaxError, StandardError => e
22
- $stderr.puts %(Loading data file "#{file}" failed due to an error: #{e.message})
23
- {}
24
- end
25
- end
26
-
27
- # Load json files
28
- class JsonFileLoader
29
- def match?(file)
30
- '.json' == File.extname(file)
31
- end
32
-
33
- # @param [Pathname] file
34
- def load(file)
35
- JSON.parse(file.read)
36
- rescue => e
37
- $stderr.puts %(Loading data file "#{file}" failed due to an error: #{e.message})
38
- {}
39
- end
40
- end
41
-
42
- # Default loader
43
- #
44
- # Always fails
45
- class NilFileLoader
46
- def match?(file)
47
- raise NoFileLoaderFoundError
48
- end
49
- end
50
-
51
- private
52
-
53
- attr_reader :loaders
54
-
55
- public
56
-
57
- def initialize
58
- @loaders = []
59
- @loaders << YamlFileLoader.new
60
- @loaders << JsonFileLoader.new
61
- @loaders << NilFileLoader.new
62
- end
63
-
64
- # Load file using loader
65
- def load(file)
66
- loaders.find { |l| l.match? file }.load(file)
67
- end
68
- end
69
- end
70
- end
71
- end
@@ -1,197 +0,0 @@
1
- # Middleman provides an extension API which allows you to hook into the
2
- # lifecycle of a page request, or static build, and manipulate the output.
3
- # Internal to Middleman, these extensions are called "features," but we use
4
- # the exact same API as is made available to the public.
5
- #
6
- # A Middleman extension looks like this:
7
- #
8
- # module MyExtension
9
- # class << self
10
- # def registered(app)
11
- # # My Code
12
- # end
13
- # end
14
- # end
15
- #
16
- # In your `config.rb`, you must load your extension (if it is not defined in
17
- # that file) and call `activate`.
18
- #
19
- # require "my_extension"
20
- # activate MyExtension
21
- #
22
- # This will call the `registered` method in your extension and provide you
23
- # with the `app` parameter which is a Middleman::Application context. From here
24
- # you can choose to respond to requests for certain paths or simply attach
25
- # Rack middleware to the stack.
26
- #
27
- # The built-in features cover a wide range of functions. Some provide helper
28
- # methods to use in your views. Some modify the output on-the-fly. And some
29
- # apply computationally-intensive changes to your final build files.
30
-
31
- # Namespace extensions module
32
- module Middleman
33
- module CoreExtensions
34
- module Extensions
35
- # Register extension
36
- class << self
37
- # @private
38
- def registered(app)
39
- app.define_hook :initialized
40
- app.define_hook :instance_available
41
- app.define_hook :after_configuration
42
- app.define_hook :before_configuration
43
- app.define_hook :build_config
44
- app.define_hook :development_config
45
-
46
- app.config.define_setting :autoload_sprockets, true, 'Automatically load sprockets at startup?'
47
- app.config[:autoload_sprockets] = (ENV['AUTOLOAD_SPROCKETS'] == 'true') if ENV['AUTOLOAD_SPROCKETS']
48
-
49
- app.extend ClassMethods
50
- app.send :include, InstanceMethods
51
- app.delegate :configure, to: :"self.class"
52
- end
53
- alias_method :included, :registered
54
- end
55
-
56
- # Class methods
57
- module ClassMethods
58
- # Add a callback to run in a specific environment
59
- #
60
- # @param [String, Symbol] env The environment to run in
61
- # @return [void]
62
- def configure(env, &block)
63
- send("#{env}_config", &block)
64
- end
65
-
66
- # Register a new extension
67
- #
68
- # @param [Module] extension Extension modules to register
69
- # @param [Hash] options Per-extension options hash
70
- # @return [void]
71
- def register(extension, options={}, &block)
72
- if extension.instance_of?(Class) && extension.ancestors.include?(::Middleman::Extension)
73
- extension.new(self, options, &block)
74
- else
75
- extend extension
76
- if extension.respond_to?(:registered)
77
- if extension.method(:registered).arity == 1
78
- extension.registered(self, &block)
79
- else
80
- extension.registered(self, options, &block)
81
- end
82
- end
83
- extension
84
- end
85
- end
86
- end
87
-
88
- # Instance methods
89
- module InstanceMethods
90
- # This method is available in the project's `config.rb`.
91
- # It takes a underscore-separated symbol, finds the appropriate
92
- # feature module and includes it.
93
- #
94
- # activate :lorem
95
- #
96
- # @param [Symbol, Module] ext Which extension to activate
97
- # @return [void]
98
- # rubocop:disable BlockNesting
99
- def activate(ext, options={}, &block)
100
- ext_module = if ext.is_a?(Module)
101
- ext
102
- else
103
- ::Middleman::Extensions.load(ext)
104
- end
105
-
106
- if ext_module.nil?
107
- logger.error "== Unknown Extension: #{ext}"
108
- else
109
- logger.debug "== Activating: #{ext}"
110
-
111
- if ext_module.instance_of? Module
112
- extensions[ext] = self.class.register(ext_module, options, &block)
113
- elsif ext_module.instance_of?(Class) && ext_module.ancestors.include?(::Middleman::Extension)
114
- if ext_module.supports_multiple_instances?
115
- extensions[ext] ||= {}
116
- key = "instance_#{extensions[ext].keys.length}"
117
- extensions[ext][key] = ext_module.new(self.class, options, &block)
118
- else
119
- if extensions[ext]
120
- logger.error "== #{ext} already activated."
121
- else
122
- extensions[ext] = ext_module.new(self.class, options, &block)
123
- end
124
- end
125
- end
126
- end
127
- end
128
-
129
- # Access activated extensions
130
- #
131
- # @return [Hash<Symbol,Middleman::Extension|Module>]
132
- def extensions
133
- @extensions ||= {}
134
- end
135
-
136
- # Load features before starting server
137
- def initialize
138
- super
139
-
140
- self.class.inst = self
141
-
142
- # Search the root of the project for required files
143
- $LOAD_PATH.unshift(root)
144
-
145
- ::Middleman::Extension.clear_after_extension_callbacks
146
- run_hook :initialized
147
-
148
- if config[:autoload_sprockets]
149
- begin
150
- require 'middleman-sprockets'
151
- activate(:sprockets)
152
- rescue LoadError
153
- end
154
- end
155
-
156
- run_hook :before_configuration
157
-
158
- # Check for and evaluate local configuration
159
- local_config = File.join(root, 'config.rb')
160
- if File.exist? local_config
161
- logger.debug '== Reading: Local config'
162
- instance_eval File.read(local_config), local_config, 1
163
- end
164
-
165
- run_hook :build_config if build?
166
- run_hook :development_config if development?
167
-
168
- run_hook :instance_available
169
-
170
- # This is for making the tests work - since the tests
171
- # don't completely reload middleman, I18n.load_path can get
172
- # polluted with paths from other test app directories that don't
173
- # exist anymore.
174
- if ENV['TEST']
175
- ::I18n.load_path.delete_if { |path| path =~ %r{tmp/aruba} }
176
- ::I18n.reload!
177
- end
178
-
179
- run_hook :after_configuration
180
-
181
- logger.debug 'Loaded extensions:'
182
- extensions.each do |ext, klass|
183
- if ext.is_a?(Hash)
184
- ext.each do |k, _|
185
- logger.debug "== Extension: #{k}"
186
- end
187
- else
188
- logger.debug "== Extension: #{ext}"
189
- end
190
-
191
- ::Middleman::Extension.activated_extension(klass) if klass.is_a?(::Middleman::Extension)
192
- end
193
- end
194
- end
195
- end
196
- end
197
- end
@@ -1,312 +0,0 @@
1
- # Built on Rack
2
- require 'rack'
3
- require 'rack/file'
4
- require 'rack/lint'
5
- require 'rack/head'
6
-
7
- require 'middleman-core/application'
8
- require 'middleman-core/util'
9
-
10
- module Middleman
11
- module CoreExtensions
12
- # Base helper to manipulate asset paths
13
- module Request
14
- # Extension registered
15
- class << self
16
- # @private
17
- def registered(app)
18
- # CSSPIE HTC File
19
- ::Rack::Mime::MIME_TYPES['.htc'] = 'text/x-component'
20
-
21
- # Let's serve all HTML as UTF-8
22
- ::Rack::Mime::MIME_TYPES['.html'] = 'text/html; charset=utf-8'
23
- ::Rack::Mime::MIME_TYPES['.htm'] = 'text/html; charset=utf-8'
24
-
25
- # Sourcemap format
26
- ::Rack::Mime::MIME_TYPES['.map'] = 'application/json; charset=utf-8'
27
-
28
- # Create a MIME type for PHP files (for detection by extensions)
29
- ::Rack::Mime::MIME_TYPES['.php'] = 'text/php'
30
-
31
- app.extend ClassMethods
32
- app.extend ServerMethods
33
-
34
- Middleman.extend CompatibleClassMethods
35
-
36
- # Include instance methods
37
- app.send :include, InstanceMethods
38
- end
39
- alias_method :included, :registered
40
- end
41
-
42
- module ClassMethods
43
- # Reset Rack setup
44
- #
45
- # @private
46
- def reset!
47
- @rack_app = nil
48
- end
49
-
50
- # Get the static instance
51
- #
52
- # @private
53
- # @return [Middleman::Application]
54
- def inst(&block)
55
- @inst ||= begin
56
- mm = new(&block)
57
- mm.run_hook :ready
58
- mm
59
- end
60
- end
61
-
62
- # Set the shared instance
63
- #
64
- # @private
65
- # @param [Middleman::Application] inst
66
- # @return [void]
67
- attr_writer :inst
68
-
69
- # Return built Rack app
70
- #
71
- # @private
72
- # @return [Rack::Builder]
73
- def to_rack_app(&block)
74
- @rack_app ||= begin
75
- app = ::Rack::Builder.new
76
- app.use Rack::Lint
77
- app.use Rack::Head
78
-
79
- Array(@middleware).each do |klass, options, middleware_block|
80
- app.use(klass, *options, &middleware_block)
81
- end
82
-
83
- inner_app = inst(&block)
84
- app.map('/') { run inner_app }
85
-
86
- Array(@mappings).each do |path, map_block|
87
- app.map(path, &map_block)
88
- end
89
-
90
- app
91
- end
92
- end
93
-
94
- # Prototype app. Used in config.ru
95
- #
96
- # @private
97
- # @return [Rack::Builder]
98
- def prototype
99
- reset!
100
- to_rack_app
101
- end
102
-
103
- # Call prototype, use in config.ru
104
- #
105
- # @private
106
- def call(env)
107
- prototype.call(env)
108
- end
109
-
110
- # Use Rack middleware
111
- #
112
- # @param [Class] middleware Middleware module
113
- # @return [void]
114
- def use(middleware, *args, &block)
115
- @middleware ||= []
116
- @middleware << [middleware, args, block]
117
- end
118
-
119
- # Add Rack App mapped to specific path
120
- #
121
- # @param [String] map Path to map
122
- # @return [void]
123
- def map(map, &block)
124
- @mappings ||= []
125
- @mappings << [map, block]
126
- end
127
- end
128
-
129
- module ServerMethods
130
- # Create a new Class which is based on Middleman::Application
131
- # Used to create a safe sandbox into which extensions and
132
- # configuration can be included later without impacting
133
- # other classes and instances.
134
- #
135
- # rubocop:disable ClassVars
136
- # @return [Class]
137
- def server(&block)
138
- @@servercounter ||= 0
139
- @@servercounter += 1
140
- const_set("MiddlemanApplication#{@@servercounter}", Class.new(Middleman::Application, &block))
141
- end
142
- end
143
-
144
- module CompatibleClassMethods
145
- # Create a new Class which is based on Middleman::Application
146
- # Used to create a safe sandbox into which extensions and
147
- # configuration can be included later without impacting
148
- # other classes and instances.
149
- #
150
- # @return [Class]
151
- def server(&block)
152
- ::Middleman::Application.server(&block)
153
- end
154
- end
155
-
156
- # Methods to be mixed-in to Middleman::Application
157
- module InstanceMethods
158
- # Backwards-compatibility with old request.path signature
159
- def request
160
- Thread.current[:legacy_request]
161
- end
162
-
163
- # Accessor for current path
164
- # @return [String]
165
- def current_path
166
- Thread.current[:current_path]
167
- end
168
-
169
- # Set the current path
170
- #
171
- # @param [String] path The new current path
172
- # @return [void]
173
- def current_path=(path)
174
- Thread.current[:current_path] = path
175
- Thread.current[:legacy_request] = ::Thor::CoreExt::HashWithIndifferentAccess.new(
176
- path: path,
177
- params: req ? ::Thor::CoreExt::HashWithIndifferentAccess.new(req.params) : {}
178
- )
179
- end
180
-
181
- delegate :use, to: :"self.class"
182
- delegate :map, to: :"self.class"
183
-
184
- # Rack request
185
- # @return [Rack::Request]
186
- def req
187
- Thread.current[:req]
188
- end
189
-
190
- def req=(value)
191
- Thread.current[:req] = value
192
- end
193
-
194
- def call(env)
195
- dup.call!(env)
196
- end
197
-
198
- # Rack Interface
199
- #
200
- # @param env Rack environment
201
- def call!(env)
202
- # Store environment, request and response for later
203
- self.req = req = ::Rack::Request.new(env)
204
- res = ::Rack::Response.new
205
-
206
- logger.debug "== Request: #{env['PATH_INFO']}"
207
-
208
- # Catch :halt exceptions and use that response if given
209
- catch(:halt) do
210
- process_request(env, req, res)
211
-
212
- res.status = 404
213
-
214
- res.finish
215
- end
216
- end
217
-
218
- # Halt the current request and return a response
219
- #
220
- # @param [String] response Response value
221
- def halt(response)
222
- throw :halt, response
223
- end
224
-
225
- # Core response method. We process the request, check with
226
- # the sitemap, and return the correct file, response or status
227
- # message.
228
- #
229
- # @param env
230
- # @param [Rack::Request] req
231
- # @param [Rack::Response] res
232
- def process_request(env, req, res)
233
- start_time = Time.now
234
- current_path = nil
235
-
236
- request_path = URI.decode(env['PATH_INFO'].dup)
237
- if request_path.respond_to? :force_encoding
238
- request_path.force_encoding('UTF-8')
239
- end
240
- request_path = ::Middleman::Util.full_path(request_path, self)
241
-
242
- # Run before callbacks
243
- run_hook :before
244
-
245
- # Get the resource object for this path
246
- resource = sitemap.find_resource_by_destination_path(request_path)
247
-
248
- # Return 404 if not in sitemap
249
- return not_found(res, request_path) unless resource && !resource.ignored?
250
-
251
- # If this path is a binary file, send it immediately
252
- return send_file(resource, env) if resource.binary?
253
-
254
- current_path = resource.destination_path
255
-
256
- res['Content-Type'] = resource.content_type || 'text/plain'
257
-
258
- begin
259
- # Write out the contents of the page
260
- output = resource.render do
261
- self.req = req
262
- self.current_path = current_path
263
- end
264
-
265
- res.write output
266
- # Valid content is a 200 status
267
- res.status = 200
268
- rescue Middleman::CoreExtensions::Rendering::TemplateNotFound => e
269
- res.write "Error: #{e.message}"
270
- res.status = 500
271
- end
272
-
273
- # End the request
274
- logger.debug "== Finishing Request: #{current_path} (#{(Time.now - start_time).round(2)}s)"
275
- halt res.finish
276
- end
277
-
278
- # Add a new mime-type for a specific extension
279
- #
280
- # @param [Symbol] type File extension
281
- # @param [String] value Mime type
282
- # @return [void]
283
- def mime_type(type, value)
284
- type = ".#{type}" unless type.to_s[0] == '.'
285
- ::Rack::Mime::MIME_TYPES[type] = value
286
- end
287
-
288
- # Halt request and return 404
289
- def not_found(res, path)
290
- res.status = 404
291
- res.write "<html><head></head><body><h1>File Not Found</h1><p>#{path}</p></body></html>"
292
- res.finish
293
- end
294
-
295
- # Immediately send static file
296
- def send_file(resource, env)
297
- file = ::Rack::File.new nil
298
- file.path = resource.source_file
299
- response = file.serving(env)
300
- status = response[0]
301
- response[1]['Content-Encoding'] = 'gzip' if %w(.svgz .gz).include?(resource.ext)
302
- # Do not set Content-Type if status is 1xx, 204, 205 or 304, otherwise
303
- # Rack will throw an error (500)
304
- if !(100..199).include?(status) && ![204, 205, 304].include?(status)
305
- response[1]['Content-Type'] = resource.content_type || 'application/octet-stream'
306
- end
307
- halt response
308
- end
309
- end
310
- end
311
- end
312
- end