middlemac 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (230) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.yardopts +7 -0
  4. data/CHANGELOG.md +43 -0
  5. data/Gemfile +18 -0
  6. data/LICENSE.md +22 -0
  7. data/README.md +225 -0
  8. data/Rakefile +213 -0
  9. data/bin/middlemac +103 -0
  10. data/documentation_project/.gitignore +37 -0
  11. data/documentation_project/Contents/Info.plist.erb +42 -0
  12. data/documentation_project/Contents/Resources/Base.lproj/010_what_is_middlemac/index.html.md.erb +126 -0
  13. data/documentation_project/Contents/Resources/Base.lproj/020_setup_tutorial/index.html.md.erb +168 -0
  14. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/10_markdown_skill.html.md.erb +63 -0
  15. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/20_frontmatter_skill.html.md.erb +54 -0
  16. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/30_middleman_skill.html.md.erb +93 -0
  17. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/40_ruby_skill.html.md.erb +67 -0
  18. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/50_ruby_ecosystem.html.md.erb +136 -0
  19. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/60_filetypes_skill.html.md.erb +165 -0
  20. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/index.html.md.erb +35 -0
  21. data/documentation_project/Contents/Resources/Base.lproj/040_setup/index.html.md.erb +88 -0
  22. data/documentation_project/Contents/Resources/Base.lproj/050_structure/010_directories_and_images.html.md.erb +176 -0
  23. data/documentation_project/Contents/Resources/Base.lproj/050_structure/020_layouts_and_templates.html.md.erb +71 -0
  24. data/documentation_project/Contents/Resources/Base.lproj/050_structure/025_css.html.md.erb +71 -0
  25. data/documentation_project/Contents/Resources/Base.lproj/050_structure/030_groups.html.md.erb +83 -0
  26. data/documentation_project/Contents/Resources/Base.lproj/050_structure/040_breadcrumbs.html.md.erb +43 -0
  27. data/documentation_project/Contents/Resources/Base.lproj/050_structure/050_navigator.html.md.erb +26 -0
  28. data/documentation_project/Contents/Resources/Base.lproj/050_structure/060_targets.html.md.erb +63 -0
  29. data/documentation_project/Contents/Resources/Base.lproj/050_structure/070_features.html.md.erb +122 -0
  30. data/documentation_project/Contents/Resources/Base.lproj/050_structure/index.html.md.erb +21 -0
  31. data/documentation_project/Contents/Resources/Base.lproj/050_structure/not_free.html.md.erb +43 -0
  32. data/documentation_project/Contents/Resources/Base.lproj/050_structure/not_pro.html.md.erb +43 -0
  33. data/documentation_project/Contents/Resources/Base.lproj/060_content/010_frontmatter.html.md.erb +88 -0
  34. data/documentation_project/Contents/Resources/Base.lproj/060_content/030_helpers.html.md.erb +247 -0
  35. data/documentation_project/Contents/Resources/Base.lproj/060_content/040_partials.html.md.erb +121 -0
  36. data/documentation_project/Contents/Resources/Base.lproj/060_content/050_resources.html.md.erb +60 -0
  37. data/documentation_project/Contents/Resources/Base.lproj/060_content/070_including_excluding.html.md.erb +68 -0
  38. data/documentation_project/Contents/Resources/Base.lproj/060_content/080_markdown_links_images.html.md.erb +93 -0
  39. data/documentation_project/Contents/Resources/Base.lproj/060_content/090_css_image_sizes.html.md.erb +90 -0
  40. data/documentation_project/Contents/Resources/Base.lproj/060_content/100_using_local_data.html.md.erb +37 -0
  41. data/documentation_project/Contents/Resources/Base.lproj/060_content/index.html.md.erb +21 -0
  42. data/documentation_project/Contents/Resources/Base.lproj/070_preview_build/index.html.md.erb +78 -0
  43. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/10_apple_help_setup.html.md.erb +110 -0
  44. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/20_xcode_integration.html.md.erb +64 -0
  45. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/index.html.md.erb +25 -0
  46. data/documentation_project/Contents/Resources/Base.lproj/100_reference/10_cli_ref.html.md.erb +72 -0
  47. data/documentation_project/Contents/Resources/Base.lproj/100_reference/20_config_ref.html.md.erb +56 -0
  48. data/documentation_project/Contents/Resources/Base.lproj/100_reference/30_helpers_ext_ref.html.md.erb +51 -0
  49. data/documentation_project/Contents/Resources/Base.lproj/100_reference/40_helpers_ref.html.md.erb +45 -0
  50. data/documentation_project/Contents/Resources/Base.lproj/100_reference/50_resource_ext_ref.html.md.erb +25 -0
  51. data/documentation_project/Contents/Resources/Base.lproj/100_reference/index.html.md.erb +26 -0
  52. data/documentation_project/Contents/Resources/Base.lproj/110_acknowledgements/index.html.md.erb +61 -0
  53. data/documentation_project/Contents/Resources/Base.lproj/120_backwards_compatibility/index.html.md.erb +88 -0
  54. data/documentation_project/Contents/Resources/Base.lproj/130_all_help_content/index.html.md.erb +15 -0
  55. data/documentation_project/Contents/Resources/Base.lproj/InfoPlist.strings.erb +10 -0
  56. data/documentation_project/Contents/Resources/Base.lproj/assets/_data/globals.yml +11 -0
  57. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/layout-html4.haml +22 -0
  58. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/layout-xhtml.haml +28 -0
  59. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-large.haml +30 -0
  60. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-medium.haml +30 -0
  61. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-small.haml +30 -0
  62. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  63. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  64. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.svg +655 -0
  65. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  66. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  67. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  68. data/documentation_project/Contents/Resources/Base.lproj/assets/images/all-sample.png +0 -0
  69. data/documentation_project/Contents/Resources/Base.lproj/assets/images/all-sample@2x.png +0 -0
  70. data/documentation_project/Contents/Resources/Base.lproj/assets/images/free-middlemac-logo-small.png +0 -0
  71. data/documentation_project/Contents/Resources/Base.lproj/assets/images/free-middlemac-logo-small@2x.png +0 -0
  72. data/documentation_project/Contents/Resources/Base.lproj/assets/images/free-middlemac-logo.png +0 -0
  73. data/documentation_project/Contents/Resources/Base.lproj/assets/images/free-middlemac-logo@2x.png +0 -0
  74. data/documentation_project/Contents/Resources/Base.lproj/assets/images/middlemac-logo-small.png +0 -0
  75. data/documentation_project/Contents/Resources/Base.lproj/assets/images/middlemac-logo-small@2x.png +0 -0
  76. data/documentation_project/Contents/Resources/Base.lproj/assets/images/middlemac-logo.png +0 -0
  77. data/documentation_project/Contents/Resources/Base.lproj/assets/images/middlemac-logo@2x.png +0 -0
  78. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras-small.png +0 -0
  79. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras-small@2x.png +0 -0
  80. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras.png +0 -0
  81. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras@2x.png +0 -0
  82. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras-small.png +0 -0
  83. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras-small@2x.png +0 -0
  84. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras.png +0 -0
  85. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras@2x.png +0 -0
  86. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-pagegroups/middleman-pagegroups-small.png +0 -0
  87. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-pagegroups/middleman-pagegroups.png +0 -0
  88. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/free-logo-small.png +0 -0
  89. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/free-logo-small@2x.png +0 -0
  90. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/free-logo.png +0 -0
  91. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/free-logo@2x.png +0 -0
  92. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/pro-logo-small.png +0 -0
  93. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/pro-logo-small@2x.png +0 -0
  94. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/pro-logo.png +0 -0
  95. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-targets/pro-logo@2x.png +0 -0
  96. data/documentation_project/Contents/Resources/Base.lproj/assets/images/pro-middlemac-logo-small.png +0 -0
  97. data/documentation_project/Contents/Resources/Base.lproj/assets/images/pro-middlemac-logo-small@2x.png +0 -0
  98. data/documentation_project/Contents/Resources/Base.lproj/assets/images/pro-middlemac-logo.png +0 -0
  99. data/documentation_project/Contents/Resources/Base.lproj/assets/images/pro-middlemac-logo@2x.png +0 -0
  100. data/documentation_project/Contents/Resources/Base.lproj/assets/javascripts/all.js +1 -0
  101. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs.haml +11 -0
  102. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs_alt.haml +15 -0
  103. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_brethren.haml +18 -0
  104. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_brethren_index.haml +14 -0
  105. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_legitimate_children.haml +16 -0
  106. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_prev_next.haml +21 -0
  107. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_toc_index.haml +21 -0
  108. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_config.erb +200 -0
  109. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_helpers.erb +146 -0
  110. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_helpers_extended.erb +135 -0
  111. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_config.erb +207 -0
  112. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_helpers.erb +297 -0
  113. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_helpers_extended.erb +96 -0
  114. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_config.erb +744 -0
  115. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers.erb +710 -0
  116. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers_css.erb +523 -0
  117. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers_extended.erb +56 -0
  118. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_resources.erb +540 -0
  119. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_targets_config.erb +402 -0
  120. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_targets_helpers.erb +235 -0
  121. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_targets_helpers_extended.erb +138 -0
  122. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_targets_instance.erb +81 -0
  123. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_targets_resources.erb +109 -0
  124. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/_apple_helpbook.scss +946 -0
  125. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/_github.scss +61 -0
  126. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/_normalize.scss +374 -0
  127. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/breadcrumb-separator-light.png +0 -0
  128. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/image_sizes.css.erb +8 -0
  129. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/style.css.scss +4 -0
  130. data/documentation_project/Contents/Resources/Base.lproj/index.html.md.erb +31 -0
  131. data/documentation_project/Contents/Resources/shared/free-icon_256x256.png +0 -0
  132. data/documentation_project/Contents/Resources/shared/free-icon_256x256@2x.png +0 -0
  133. data/documentation_project/Contents/Resources/shared/free-icon_32x32.png +0 -0
  134. data/documentation_project/Contents/Resources/shared/free-icon_32x32@2x.png +0 -0
  135. data/documentation_project/Contents/Resources/shared/icon_256x256.png +0 -0
  136. data/documentation_project/Contents/Resources/shared/icon_256x256@2x.png +0 -0
  137. data/documentation_project/Contents/Resources/shared/icon_32x32.png +0 -0
  138. data/documentation_project/Contents/Resources/shared/icon_32x32@2x.png +0 -0
  139. data/documentation_project/Contents/Resources/shared/pro-icon_256x256.png +0 -0
  140. data/documentation_project/Contents/Resources/shared/pro-icon_256x256@2x.png +0 -0
  141. data/documentation_project/Contents/Resources/shared/pro-icon_32x32.png +0 -0
  142. data/documentation_project/Contents/Resources/shared/pro-icon_32x32@2x.png +0 -0
  143. data/documentation_project/Gemfile +51 -0
  144. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/project.pbxproj +529 -0
  145. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  146. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/Help (free).xcscheme +80 -0
  147. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/HelpViewerApp (free).xcscheme +91 -0
  148. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/HelpViewerApp (pro).xcscheme +91 -0
  149. data/documentation_project/HelpViewerApp/HelpViewerApp/AppDelegate.h +16 -0
  150. data/documentation_project/HelpViewerApp/HelpViewerApp/AppDelegate.m +45 -0
  151. data/documentation_project/HelpViewerApp/HelpViewerApp/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
  152. data/documentation_project/HelpViewerApp/HelpViewerApp/Base.lproj/MainMenu.xib +115 -0
  153. data/documentation_project/HelpViewerApp/HelpViewerApp/Info-free.plist +38 -0
  154. data/documentation_project/HelpViewerApp/HelpViewerApp/Info-pro.plist +38 -0
  155. data/documentation_project/HelpViewerApp/HelpViewerApp/main.m +13 -0
  156. data/documentation_project/HelpViewerApp/README.md +43 -0
  157. data/documentation_project/Middlemac (free).help/.gitignore +3 -0
  158. data/documentation_project/Middlemac (pro).help/.gitignore +3 -0
  159. data/documentation_project/config.rb +309 -0
  160. data/documentation_project/middlemac.webloc +0 -0
  161. data/features/main_features.feature +44 -0
  162. data/features/support/env.rb +20 -0
  163. data/fixtures/middlemac_app/.gitignore +25 -0
  164. data/fixtures/middlemac_app/Contents/Info.plist.erb +42 -0
  165. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/10_hello_world_file.html.md.erb +22 -0
  166. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/20_goodbye_world_file.html.md.erb +22 -0
  167. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/index.html.md.erb +24 -0
  168. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/page_one.html.md.erb +20 -0
  169. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/page_two.html.md.erb +19 -0
  170. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/01_nested_group_example/01_page_one.html.md.erb +18 -0
  171. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/01_nested_group_example/02_pagina_dos.html.md.erb +19 -0
  172. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/01_nested_group_example/03_page_san.html.md.erb +18 -0
  173. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/01_nested_group_example/index.html.md.erb +18 -0
  174. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/02_page_two.html.md.erb +19 -0
  175. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/03_page_three.html.md.erb +19 -0
  176. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/index.html.md.erb +24 -0
  177. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/45_testing_world_file.html.md.erb +55 -0
  178. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/50_entire_world_file.html.md.erb +15 -0
  179. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/InfoPlist.strings.erb +10 -0
  180. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/_new_style_partial.erb +1 -0
  181. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_data/globals.yml +11 -0
  182. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/layout-html4.haml +22 -0
  183. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/layout-xhtml.haml +28 -0
  184. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-large.haml +30 -0
  185. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-medium.haml +30 -0
  186. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-small.haml +30 -0
  187. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  188. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  189. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.svg +655 -0
  190. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  191. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  192. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  193. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/images/_empty_directory.html.md.erb +1 -0
  194. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/javascripts/all.js +1 -0
  195. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs.haml +11 -0
  196. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs_alt.haml +15 -0
  197. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_brethren.haml +18 -0
  198. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_brethren_index.haml +14 -0
  199. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_legitimate_children.haml +16 -0
  200. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_prev_next.haml +21 -0
  201. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_toc_index.haml +21 -0
  202. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_partials_dir_partial.erb +1 -0
  203. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/_apple_helpbook.scss +946 -0
  204. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/_github.scss +61 -0
  205. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/_normalize.scss +374 -0
  206. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/breadcrumb-separator-light.png +0 -0
  207. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/image_sizes.css.erb +8 -0
  208. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/style.css.scss +4 -0
  209. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/index.html.md.erb +17 -0
  210. data/fixtures/middlemac_app/Contents/Resources/shared/icon_256x256.png +0 -0
  211. data/fixtures/middlemac_app/Contents/Resources/shared/icon_256x256@2x.png +0 -0
  212. data/fixtures/middlemac_app/Contents/Resources/shared/icon_32x32.png +0 -0
  213. data/fixtures/middlemac_app/Contents/Resources/shared/icon_32x32@2x.png +0 -0
  214. data/fixtures/middlemac_app/Gemfile +51 -0
  215. data/fixtures/middlemac_app/config.rb +309 -0
  216. data/fixtures/middlemac_app/middlemac.webloc +0 -0
  217. data/lib/middlemac.rb +6 -0
  218. data/lib/middlemac/extension.rb +274 -0
  219. data/lib/middlemac/version.rb +5 -0
  220. data/middlemac.gemspec +38 -0
  221. data/yard/readme.md +9 -0
  222. data/yard/template-grouped/default/module/html/method_details_list.erb +11 -0
  223. data/yard/template-partials/default/method_details/setup.rb +4 -0
  224. data/yard/template-partials/default/module/html/attribute_details.erb +9 -0
  225. data/yard/template-partials/default/module/html/method_details_list.erb +10 -0
  226. data/yard/template-partials/default/module/setup.rb +6 -0
  227. data/yard/template-partials/default/onefile/html/layout.erb +1 -0
  228. data/yard/template-partials/default/onefile/html/setup.rb +4 -0
  229. data/yard/yard_extensions.rb +109 -0
  230. metadata +454 -0
@@ -0,0 +1,63 @@
1
+ ---
2
+ title: Markdown
3
+ blurb: Although you can hand-write all of your documents in HTML, why not take
4
+ advantage of the clarity and ease of use offered by Markdown?
5
+ layout: template-logo-medium
6
+ ---
7
+ <%= md_links %>
8
+ <%= md_images %>
9
+
10
+ <%= current_page.data.title %>
11
+ ==============================
12
+
13
+ <%= current_page.data.blurb %>
14
+
15
+ _Middlemac_ takes care of a lot of the details for generating Apple Help Books,
16
+ and that may be reason enough to use _Middlemac_. However if you decide _not_ to
17
+ use Markdown, then you’re throwing away the single, largest contributor to your
18
+ help file building productivity that there is.
19
+
20
+
21
+ What is Markdown?
22
+ -----------------
23
+
24
+ In the words of the estimable John Gruber (the author of the original Markdown):
25
+
26
+ > Markdown is a text-to-HTML conversion tool for web writers. Markdown allows
27
+ > you to write using an easy-to-read, easy-to-write plain text format, then
28
+ > convert it to structurally valid XHTML (or HTML).
29
+
30
+ This offers the powerful advantage of having text-based source files that are
31
+ themselves very highly legible. For example, this opening of this section of
32
+ the page was written so:
33
+
34
+ ~~~ markdown
35
+ What is Markdown?
36
+ -----------------
37
+
38
+ In the words of the estimable John Gruber (the author of the original Markdown):
39
+
40
+ > Markdown is a text-to-HTML conversion tool for web writers. Markdown allows
41
+ > you to write using an easy-to-read, easy-to-write plain text format, then
42
+ > convert it to structurally valid XHTML (or HTML).
43
+
44
+ This offers the powerful advantage of having text-based source files that are
45
+ themselves very highly legible. For example, this opening of this section of
46
+ the page was written so:
47
+ ~~~
48
+
49
+ As you can see, it’s highly legible and uses a lot of the same text formatting
50
+ idioms with which you are doubtlessly already aware.
51
+
52
+
53
+ Markdown Syntax and Engine
54
+ --------------------------
55
+
56
+ There are several “flavors” of Markdown, but they all adhere to John Gruber’s
57
+ original as a base line and extend it in various ways. For the most part, they
58
+ are all fairly well compatible.
59
+
60
+ _Middlemac_ uses [_Kramdown_](http://kramdown.gettalong.org/) as its Markdown
61
+ engine because that’s what _Middleman_ uses by default. You can read about all
62
+ its features an syntax on its
63
+ [documentation page](http://kramdown.gettalong.org/documentation.html).
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: Front Matter
3
+ blurb: <em>Middleman</em> (and hence <em>Middlemac</em>) source files use
4
+ front matter to control many features of pages.
5
+ layout: template-logo-medium
6
+ ---
7
+ <%= md_links %>
8
+ <%= md_images %>
9
+
10
+ <%= current_page.data.title %>
11
+ ==============================
12
+
13
+ <%= current_page.data.blurb %>
14
+
15
+ Front matter is a document header section that contains key-value data that
16
+ applies to a page. This data can be referred to later for output or control.
17
+ For example, the title of this page was specified with a `title:` key in the
18
+ source document’s front matter, and its layout was specified with a `layout:`
19
+ key.
20
+
21
+ Front matter can also control page order (a feature of _Middleman_’s
22
+ `middleman-pagegroups` gem), inclusion of pages for targets/features (provided
23
+ by the `middleman-targets` gem), and more.
24
+
25
+ Here’s this document’s front matter:
26
+
27
+ ~~~ yaml
28
+ ---
29
+ title: Front Matter
30
+ blurb: <em>Middleman</em> (and hence <em>Middlemac</em>) source files use
31
+ front matter to control a lot of features of pages.
32
+ layout: template-logo-medium
33
+ ---
34
+ ~~~
35
+
36
+ ## Declaring Front Matter
37
+
38
+ Front matter is defined as being delimited at the beginning and end with a line
39
+ consisting of a series of three hyphens (`-`), and this block must appear at the
40
+ top of a document.
41
+
42
+ Although specific front matter keys are discussed elsewhere in this
43
+ documentation it’s worth pointing out that the `title:` and `:blurb` are used
44
+ extensively in _Middlemac_. For example all of the automatic navigation
45
+ features are built using this data, meaning that this data need only appear
46
+ once, here, in this very document.
47
+
48
+ ## Markdown in Front Matter
49
+
50
+ You may have noticed that the front matter contains HTML. Because the front
51
+ matter consists of data rather than content specifically targeted for display,
52
+ it is not processed by the Markdown engine. Front matter is one of the very
53
+ few places in a _Middlemac_ project where you have to revert to using HTML.
54
+
@@ -0,0 +1,93 @@
1
+ ---
2
+ title: Middleman
3
+ blurb: <em>Middleman</em> is the engine that makes <em>Middlemac</em> possible.
4
+ It’s critical to know a little bit about this tool.
5
+ layout: template-logo-medium
6
+ ---
7
+ <%= md_links %>
8
+ <%= md_images %>
9
+
10
+ <%= current_page.data.title %>
11
+ ==============================
12
+
13
+ <%= current_page.data.blurb %>
14
+
15
+ _Middleman_ is a [static site generator using all the shortcuts and tools in
16
+ modern web development](http://middlemanapp.com). It was intended to have been
17
+ a tool to create static websites with most of the dynamism of websites running
18
+ on technologies such as PHP and Ruby on Rails. Static websites are fast and
19
+ secure.
20
+
21
+ Apple Help Books, in their essence, are static websites.
22
+
23
+ _Middleman_ with the help of _Middlemac_ is the perfect tool in your help file
24
+ development toolchain.
25
+
26
+ Builder _and_ server
27
+ --------------------
28
+ _Middleman_ doesn’t merely build final output; it includes a non-configuration
29
+ server that makes it much easier to develop your website or help book. Features
30
+ such as live reload mean that when you change your source file, the site in
31
+ your web browser will update automatically.
32
+
33
+ The server captures changes to most of your source files. However in certain
34
+ circumstances you may have to restart the server to recognize certain changes,
35
+ such as new directories in your source code.
36
+
37
+
38
+ Basic concepts
39
+ --------------
40
+ _Middleman_’s basic concepts are these:
41
+
42
+ - Organize your site in a source directory that mirrors the desired structure
43
+ on the server (or in our case, in our help book).
44
+ - Add file extensions to the source files to indicate the type of pre-processing
45
+ that you want to perform on each of them.
46
+ - Provide the ability to include partials and use helpers to improve your
47
+ content development productivity, while keeping yourself DRY.
48
+ - Provide the ability to use templates and layouts to bring uniformity to your
49
+ website (in our case, to your help book).
50
+ - Act as a server in developer mode, building content dynamically as you develop
51
+ it.
52
+ - Build final output, ready to use wherever you need it.
53
+
54
+
55
+ Using _Middleman_
56
+ -----------------
57
+
58
+ Because _Middlemac_ is an extension to _Middleman_, it’s worth noting that you
59
+ will actually execute `middleman` to serve or to build your projects.
60
+
61
+ To start the built-in server in order to preview your work, simply do:
62
+
63
+ ~~~ bash
64
+ bundle exec middleman serve --target free
65
+ ~~~
66
+
67
+ Instructions for accessing the server (the address and port) will be reported to
68
+ you.
69
+
70
+ Note, too, that `--target` specifies an option; the example about would serve
71
+ the `free` target.
72
+
73
+ To build the `pro` target, you would do this:
74
+
75
+ ~~~ bash
76
+ bundle exec middleman build --target pro
77
+ ~~~
78
+
79
+ And if you wanted to build every target at once, simply this:
80
+
81
+ ~~~ bash
82
+ bundle exec middleman build_all
83
+ ~~~
84
+
85
+
86
+ More about _Middleman_
87
+ ----------------------
88
+
89
+ If you stick to the conventions it’s not necessary to become an expert in
90
+ _Middleman_. However as you grow your skills you may want to consider using
91
+ some of its more advanced features or even add your own extensions. You can
92
+ access _Middleman_’s full documentation on its
93
+ [documentation website](https://middlemanapp.com/basics/install/).
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: Ruby
3
+ blurb: As the language that powers <em>Middlemac</em>, it’s worth taking a
4
+ short look at the Ruby language.
5
+ layout: template-logo-medium
6
+ ---
7
+ <%= md_links %>
8
+ <%= md_images %>
9
+
10
+ <%= current_page.data.title %>
11
+ ==============================
12
+
13
+ <%= current_page.data.blurb %>
14
+
15
+ [Ruby](https://www.ruby-lang.org/en/) is the language that _Middlemac_,
16
+ _Middleman_, and many of the others tools are written with. You do not have to
17
+ learn Ruby to take advantage of _Middlemac_, although some ability to work with
18
+ it will be invaluable to you.
19
+
20
+ Ruby may surprise you
21
+ ---------------------
22
+
23
+ If you’re a software developer, then it’s highly likely that you will be able to
24
+ read most Ruby code immediately. Coming from an Objective-C or Swift background,
25
+ these are a few things that may surprise you.
26
+
27
+ ### Symbols
28
+ Ruby has a type of identifier called a `symbol`. They are used quite extensively
29
+ and look like `:this_symbol`. As identifiers and not variables, you can’t assign
30
+ values to them. Their value is themselves, though they have useful string
31
+ representations (`:this_symbol.to_s`). You can even get the symbol
32
+ representation of `'this_string'.to_sym`. Because they're unique, they make
33
+ excellent array/hash keys and excellent, guaranteed unique values.
34
+
35
+ ### Everything is an object
36
+ Everything is an object, including what are fundamental datatypes in other
37
+ languages. Need to convert the integer `i` to a float? It’s as easy as
38
+ `i.to_f`.
39
+
40
+ ### Everything has a return value
41
+ In Ruby you don’t require `return value`, or `result := value`, or
42
+ `function_name = value`. Just `value`, alone, will return its value. Even `if`
43
+ statements return values:
44
+
45
+ ~~~ ruby
46
+ result = if answer == 'yes'
47
+ "The answer as affirmative."
48
+ else
49
+ "The answer was something else."
50
+ end
51
+ ~~~
52
+
53
+ This example assigns the appropriate string to the variable `result`.
54
+
55
+
56
+ Just enough Ruby
57
+ ----------------
58
+ To work effectively with _Middlemac_ you’ll only have to learn enough Ruby to
59
+ do a few simple things:
60
+
61
+ - Set variables in the `config.rb` file.
62
+ - Use a few helper functions from within files, e.g., `partial 'my_file'`.
63
+ - Use conditionals, if you want them. You know: simply `if/else/end`, or even
64
+ `unless/else/end`.
65
+
66
+ Examples of these last two points can be seen when we take a look at
67
+ [File Types][filetypes_skill].
@@ -0,0 +1,136 @@
1
+ ---
2
+ title: Ruby’s Ecosystem
3
+ blurb: Ruby has a huge ecosystem the can be confusing to new users. This
4
+ article makes a very brief introduction that should shorten the learning
5
+ curve.
6
+ layout: template-logo-medium
7
+ ---
8
+ <%= md_links %>
9
+ <%= md_images %>
10
+
11
+ <%= current_page.data.title %>
12
+ ==============================
13
+
14
+ <%= current_page.data.blurb %>
15
+
16
+ Gems
17
+ ----
18
+
19
+ “Gems” are packages of Ruby or compiled code in a standard format that serve as
20
+ extensions or library additions to Ruby. _Middlemac_ is a system consisting of
21
+ the `middlemac` gem, among others.
22
+
23
+ By default Ruby is configured to fetch gems from
24
+ [rubygems.org](https://rubygems.org/), which is convenient as long as you are
25
+ connected to the internet.
26
+
27
+ Gems, as software, have versions and can have dependencies on other gems. This
28
+ can lead to dependency hell when multiple versions of multiple gems are
29
+ installed having a clash due to mixed dependencies. Luckily this has been mostly
30
+ solved via the use of Bundler.
31
+
32
+ Bundler
33
+ -------
34
+
35
+ Bundler is a gem version management system that ensures that the correct gem
36
+ version is used on a per-project basis, as specified in the `Gemfile` and locked
37
+ in `Gemfile.lock` (more on these below).
38
+
39
+ Using bundler will ensure that gem versions of known compatibility will be used.
40
+ For example, _Middlemac_ requires _Middleman_ version 4.1.7 or higher, which
41
+ itself requires other gems of specific versions. Bundler will ensure that when
42
+ building a _Middlemac_ project, _only_ the correct gems are used.
43
+
44
+ When you see a command such as:
45
+
46
+ ~~~ bash
47
+ bundle exec middleman build
48
+ ~~~
49
+
50
+ …it means that Bundler will execute the `middleman` gem, and will take
51
+ responsibility for ensuring the correct gem versions are used. If we want to
52
+ leave it up to chance, we might try this:
53
+
54
+ ~~~ bash
55
+ middleman build
56
+ ~~~
57
+
58
+ …and this might work, or it might not. Without using Bundler, the default
59
+ versions of gems installed on your system will be used, and they might not be
60
+ compatible the default version of `middleman`.
61
+
62
+ Ruby projects, including _Middlemac_ help book projects, specify gem versions
63
+ using a file in the project directory called `Gemfile`.
64
+
65
+
66
+ `Gemfile` and `Gemfile.lock`
67
+ ----------------------------
68
+
69
+ Your _Middlemac_ project contains this file to specify to Bundler which versions
70
+ of Ruby gems should be used. In general you don't have to bother with this file
71
+ at all. However if you become more advanced and want to use other gems, you’ll
72
+ have to dive into this file eventually.
73
+
74
+ This file contains gems and the versions that are allowed. For example,
75
+ this documentation project’s `Gemfile` contains something similar to this:
76
+
77
+ ~~~ ruby
78
+ gem 'middleman-pagegroups', '~> 1.0.3'
79
+ ~~~
80
+
81
+ This declaration tells Bundler that `middleman-pagegroups` is a gem that is
82
+ required for this project, and that any version greater than 1.0.3 is allowed,
83
+ but only in the `1.0.x` series. The `~>` is called a “pessimistic operator” and
84
+ is used if we don’t trust the `1.1.x` will break nothing.
85
+
86
+ Other operators are available, too, of course, and are a simple web search away.
87
+
88
+ The file `Gemfile.lock` is generated automatically by Bundler, and you should
89
+ never, ever modify this file yourself (you should also exclude it from version
90
+ control). This file is the file that indicates to Bundler the _exact_ versions
91
+ of Gems that will be used. It ensures that the set of gems always stays
92
+ consistent (even if you update gems) unless you deliberately want it to do
93
+ otherwise.
94
+
95
+ ### `bundle install`
96
+
97
+ When you `cd` into a project directory, you can:
98
+
99
+ ~~~ bash
100
+ bundle install
101
+ ~~~
102
+
103
+ This tells Bundler to check the `Gemfile` and install any gems that are required
104
+ but are missing, typically from [rubygems.org](https://rubygems.org/). After
105
+ installing the gems Bundler will also update the `Gemfile.lock`, thereby
106
+ freezing the versions to be used in your project.
107
+
108
+ What happens if I install a newer version of a Ruby gem? For example, if the
109
+ `Gemfile` is configured to use `middleman-pagegroups` 1.0.3 or above, and I’ve
110
+ been building with it for weeks, and then update my gem to 1.0.4? In this case,
111
+ as long as 1.0.3 is still installed on your system, Bundler will still use this
112
+ version.
113
+
114
+ You’ll either have to update the `Gemfile` with 1.0.4 and then `bundle install`
115
+ again, or…
116
+
117
+ ### `bundle update`
118
+
119
+ This tells Bundler to install newer versions of all of your Gems, if available,
120
+ and within the pessimistic version checks in the `Gemfile`, and also updates
121
+ `Gemfile.lock` so that newer versions of the gems will be used.
122
+
123
+ ~~~ bash
124
+ bundle update
125
+ ~~~
126
+
127
+
128
+ `config.rb`
129
+ -----------
130
+
131
+ Nearly every Ruby project, including your _Middlemac_ help book project, follows
132
+ the convention of configuration via a `config.rb` file in the root level of your
133
+ project directory.
134
+
135
+ Information specific to _Middlemac_’s `config.rb` is available in the
136
+ [appropriate section][setup-index] of this documentation.
@@ -0,0 +1,165 @@
1
+ ---
2
+ title: File Types
3
+ blurb: <em>Middleman</em> uses several filetypes to get its job done. An
4
+ understanding of their differences is important to your successful use
5
+ of <em>Middlemac</em>.
6
+ layout: template-logo-medium
7
+ ---
8
+ <%= md_links %>
9
+ <%= md_images %>
10
+
11
+ <%= current_page.data.title %>
12
+ ==============================
13
+
14
+ <%= current_page.data.blurb %>
15
+
16
+ Although you can use static `.html` files to build your help book, you would be
17
+ sacrificing a lot of _Middleman_’s utility to do so, because static html is
18
+ simply copied to your build directory as-is, with no opportunity to take
19
+ advantages of the infrastructure that _Middleman_ and _Middlemac_ offer you.
20
+ Instead you will probably chose a combination of `.haml`, `.md`, and `.erb`
21
+ files, and even combinations of them in a single file!
22
+
23
+ Filetype extensions
24
+ -------------------
25
+ As distributed, _Middleman_ (and thus _Middlemac_) understand several file type
26
+ extensions and will process them accordingly.
27
+
28
+ `.html`
29
+
30
+ : HTML files are regarded as already processed, and they will be copied
31
+ verbatim to the build directory.
32
+
33
+ `.erb`
34
+
35
+ : Embedded Ruby files are files that contain Ruby code embedded in them. This
36
+ is useful for including simple if/else logic and including partials and
37
+ using helpers. Ruby code is delimited within `<%% %>` (generates no output)
38
+ or `<%%= %>` (does generate output) tags.
39
+
40
+ For example, `<%%= "Hello, #{name}! %>` outputs a string into a generated
41
+ HTML document, and you will encounter several more examples within this
42
+ documentation.
43
+
44
+ `.haml`
45
+
46
+ : The “HTML abstraction markup language” excels at enforcing structure in your
47
+ HTML-target documents, and is clutter-free and easy to read. It supports
48
+ many built-in filters for including content in Ruby, Markdown, raw source
49
+ code, and more. _Middlemac_’s templates, layouts, and partials are written
50
+ in HAML.
51
+
52
+ You can learn more about HAML on [its website](http://haml.info/).
53
+
54
+ `.md`
55
+
56
+ : Markdown is a plain-text formatting syntax that is exceedingly easy to read
57
+ and write in its source form, and mostly internally logically consistent.
58
+ _Middlemac_ uses [kramdown](http://kramdown.gettalong.org/) as its
59
+ text-to-HTML engine, and offers several useful features not found in
60
+ plain vanilla Markdown.
61
+
62
+ `.scss`
63
+
64
+ : “Sassy” CSS files use SASS markup and render into standard `.css` files.
65
+ You can use SASS as you see fit; it’s fully compatible with CSS, and all
66
+ CSS is valid SCSS. Why “SASS” and “SCSS”? SASS is the name of the project
67
+ as well as an older, non-CSS compatible format. So, SASS is the project,
68
+ and SCSS is the file format.
69
+
70
+ You can learn more about SASS on [its website](http://sass-lang.com/).
71
+
72
+
73
+ Files with a leading underscore
74
+ -------------------------------
75
+
76
+ Regardless of the file type, files with a leading underscore (“\_”) will be
77
+ processed by _Middleman_ (if it’s a type that _Middleman_ recognizes), but
78
+ _will not_ be copied to your build directory. An example of this type of file
79
+ is a partial, which we want _Middleman_ to process and make ready for use, but
80
+ which we don’t want copied to the output directory because its content will be
81
+ included in other files that need it.
82
+
83
+
84
+ Filetype chaining
85
+ -----------------
86
+ _This_ is what’s cool about the _Middleman_ build system: files are chained
87
+ and processed multiple times by multiple processing systems, with the end
88
+ result of producing the final file format. What does this mean? Let’s look at
89
+ this example:
90
+
91
+ `hello_world.html.erb`
92
+
93
+ Middleman will produce a file (that’s then copied to the build output) named
94
+ `hello_world.html` after processing it as an `.erb` file. For example:
95
+
96
+ ~~~~ erb
97
+ <body>
98
+ <p><%%= hello_world_function %></p>
99
+ </body>
100
+ ~~~~
101
+
102
+ Will produce a `hello_world.html` file containing this (assuming that
103
+ `hello_world_function` exists):
104
+
105
+ ~~~~ erb
106
+ <body>
107
+ <p>Hello, world!</p>
108
+ </body>
109
+ ~~~~
110
+
111
+ What if we try this?
112
+
113
+ `hello_world.html.md.erb`
114
+
115
+ ~~~~ markdown
116
+ # Introduction
117
+ <%%= hello_world_function %>
118
+ ~~~~
119
+
120
+ Accounting for removing all of the HTML head section, etc., we end up with:
121
+
122
+ ~~~~ html
123
+ <body>
124
+ <h1>Introduction</h1>
125
+ <p>Hello, world!</p>
126
+ </body>
127
+ ~~~~
128
+
129
+ It’s important to understand that file type chaining works from right to left.
130
+ The last extension is processed first, then the penultimate extension, then the
131
+ antepenultimate extension, etc.
132
+
133
+ If you try to use a file named `hello_world.html.erb.md` then the results will
134
+ be unexpected. Markdown will encounter `<%% %>` tag-sets and attempt to render
135
+ them in HTML. When the ERB processor is passed the file, it will no longer
136
+ encounter the tag-sets with the embedded Ruby.
137
+
138
+
139
+ HAML rarely needs to be chained
140
+ -------------------------------
141
+
142
+ HAML includes filters and support for Ruby directly, and so it rarely needs to
143
+ be chained. For example:
144
+
145
+ ~~~~ haml
146
+ %h1 Introduction
147
+ %p= hello_world_function
148
+ - if true == true
149
+ %p Well, duh.
150
+ %p
151
+ :markdown
152
+ _Today_a computer told me “Hello, world.” It was **only** addressing me,
153
+ and so I don’t know why it addressed me as the whole world.
154
+ ~~~~
155
+
156
+ The use of `=` in the `%p=` tag is a flag that indicates HAML should be
157
+ expecting Ruby code. Likewise, the solitary `-` indicates Ruby code and will not
158
+ generate output. The use of `:markdown` indicates that Markdown-formatted text
159
+ will be used.
160
+
161
+ This might make you think that HAML is a Swiss Army knife, and why bother with
162
+ other filetypes? Test it: once you’re familiar with the all of the basics,
163
+ try coming back to this page’s source and convert if from `.html.md.erb` to
164
+ `.html.haml`, and then choose whichever works for you.
165
+