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,17 @@
1
+ ---
2
+ title: Middlemac Project
3
+ layout: template-logo-large
4
+ xhtml: true
5
+ ---
6
+
7
+ <%= product_name %>
8
+ ===================
9
+
10
+ This is a blank project. It's got a couple of groups already set up.
11
+
12
+ * * *
13
+
14
+ <%= nav_legitimate_children %>
15
+
16
+ * * *
17
+
@@ -0,0 +1,51 @@
1
+ ##############################################################################
2
+ # Gemfile (and Gemfile.lock)
3
+ #
4
+ # This file contains the Ruby gem manifest for Middlemac's dependencies.
5
+ #
6
+ # To ensure that the correct gems are installed, do `bundle install`.
7
+ #
8
+ # Note that Gemfile.lock is under version control; `bundle install` will
9
+ # ensure that the correct gem versions are used when this repository is
10
+ # checked out. To update to newer gems and update Gemfile.lock, use
11
+ # `bundle update`.
12
+ ##############################################################################
13
+
14
+ source 'https://rubygems.org'
15
+
16
+
17
+ #######################################
18
+ # Middlemac, natch.
19
+ #######################################
20
+ gem 'middlemac', '~> 2.0.0'
21
+ gem 'middlemac-extras', '~> 1.0.8'
22
+ gem 'middleman-targets', '~> 1.0.7'
23
+ gem 'middleman-pagegroups', '~> 1.0.4'
24
+
25
+
26
+ #######################################
27
+ # Core gems
28
+ #######################################
29
+ gem 'middleman', '~> 4.1.7'
30
+ gem 'middleman-core'
31
+ gem 'middleman-cli'
32
+ gem 'middleman-livereload' # Live-reloading plugin
33
+ gem 'middleman-syntax' # Syntax Highlighting
34
+
35
+
36
+ #######################################
37
+ # Style and fonts
38
+ #######################################
39
+ gem 'middleman-compass'
40
+ gem 'font-awesome-sass'
41
+
42
+
43
+ #######################################
44
+ # Utilities and tools
45
+ #######################################
46
+
47
+
48
+ #######################################
49
+ # Core gems
50
+ #######################################
51
+ gem 'tzinfo-data', platforms: [:mswin, :mingw] # Time zone data for Windows
@@ -0,0 +1,309 @@
1
+ ################################################################################
2
+ # config.rb
3
+ # Configure Middleman to generate Apple HelpBook containers for multiple
4
+ # targets.
5
+ ################################################################################
6
+
7
+ ##########################################################################
8
+ # Targets Configuration
9
+ # Middlemac is capable of building multiple targets for variants of your
10
+ # application using the `middleman-targets` gem. Activate it and change
11
+ # the option values here to suit your needs. Note that middleman-targets
12
+ # adds configuration parameters to the base Middleman application; these
13
+ # are *not* extension options.
14
+ ##########################################################################
15
+ activate :MiddlemanTargets
16
+
17
+ # Set the default target, i.e, the target that is used automatically when you
18
+ # `middleman build` or `middleman server` without the `targets` CLI option.
19
+ config[:target] = :pro
20
+
21
+ # Targets
22
+
23
+ # NOTE: Ruby has a type of variable called a `symbol`, which are used below
24
+ # quite extensively and look like :this_symbol. Except they’re not really
25
+ # variables; you can’t assign values to them. Their value is themselves,
26
+ # though they have useful string representations (:this_symbol.to_s). You
27
+ # can even get the symbol representation of this_string.to_sym. Because
28
+ # they're unique, they make excellent array/hash keys and excellent,
29
+ # guaranteed unique values.
30
+
31
+ # :CFBundleID
32
+ # Just as different versions of your app must have different bundle identifiers
33
+ # so the OS can distinguish them, their help files must have unique bundle IDs,
34
+ # too. Your application specifies the help file `CFBundleID` in its
35
+ # `CFBundleHelpBookName` entry. Therefore for each target, ensure that your
36
+ # application has a `CFBundleHelpBookName` that matches the `CFBundleID` that
37
+ # you will set here.
38
+
39
+ # :HPDBookIconPath
40
+ # If specified a target-specific icon will be used as the help book icon by
41
+ # Apple’s help viewer. This path must be relative to the location of the
42
+ # `Resources` directory per Apple’s specification. If `nil` (or not present)
43
+ # then the default `shared/icon_32x32@2x.png` will be used.
44
+
45
+ # :CFBundleName
46
+ # This value will be used for correct .plists and .strings setup, and will
47
+ # determine final .help directory name. All targets should use the same
48
+ # :CFBundleName. Built targets will be named `CFBundleName (target).help`.
49
+ # This is *not* intended to be a product name, which is defined below.
50
+
51
+ # :ProductName
52
+ # You can specify different product names for each build target. The product
53
+ # name for the current target will be available via the `product_name` helper.
54
+
55
+ # :ProductVersion
56
+ # You can specify different product versions for each build target. The
57
+ # product version for the current target will be available via the
58
+ # `product_version` helper.
59
+
60
+ # :ProductURI
61
+ # You can specify different product URIs for each build target. The URI
62
+ # for the current target will be available via the `product_uri` helper.
63
+
64
+ # (other)
65
+ # You can specify additional .plist and .strings keys here, too. Have a look
66
+ # at `Info.plist.erb` and `InfoPlist.strings.erb`; simply use the exact key
67
+ # name and they will be supported. This is probably unneeded unless you are
68
+ # implementing advanced help book features.
69
+
70
+ # :Features
71
+ # A hash of features that a particular target supports or doesn't support.
72
+ # The `has_feature` function and several helpers will use the true/false value
73
+ # of these features in order to conditionally include content.
74
+
75
+ config[:targets] = {
76
+ :free =>
77
+ {
78
+ :CFBundleID => 'com.sample.project.free.help',
79
+ :HPDBookIconPath => nil,
80
+ :CFBundleName => 'New Project',
81
+ :ProductName => 'New Project',
82
+ :ProductVersion => '2.0.0',
83
+ :ProductURI => 'http://www.sample.com',
84
+ :features =>
85
+ {
86
+ :feature_advertise_pro => true,
87
+ :feature_performs_miracles => false,
88
+ :feature_insults_user => true,
89
+ :feature_shows_pink_rectangle => true,
90
+ }
91
+ },
92
+
93
+ :pro =>
94
+ {
95
+ :CFBundleID => 'com.sample.project.pro.help',
96
+ :HPDBookIconPath => nil,
97
+ :CFBundleName => 'New Project',
98
+ :ProductName => 'New Project Pro',
99
+ :ProductVersion => '2.0.0',
100
+ :ProductURI => 'http://www.sample.com',
101
+ :features =>
102
+ {
103
+ :feature_advertise_pro => false,
104
+ :feature_performs_miracles => true,
105
+ :feature_insults_user => false,
106
+ :feature_shows_pink_rectangle => true,
107
+ }
108
+ },
109
+
110
+ } # targets
111
+
112
+ # By enabling :target_magic_images, target specific images will be used instead
113
+ # of the image you specify if it'ss prefixed with :target_magic_word. For
114
+ # example, you might request "all-my_image.png", and "pro-my_image.png" (if it
115
+ # exists) will be used in your :pro target instead.
116
+ #
117
+ # Important: when this is enabled, images from *other* targets will *not* be
118
+ # included in the build! In the example above, *any* image prefixed with "free-"
119
+ # would not be included in the output directory.
120
+ config[:target_magic_images] = true
121
+ config[:target_magic_word] = 'all'
122
+
123
+
124
+ ################################################################
125
+ # Page Groups Configuration
126
+ # Middlemac uses the `middleman-pagegroups` gem in order to
127
+ # automate nearly all of the navigation in your help book
128
+ # project.
129
+ ################################################################
130
+ activate :MiddlemanPageGroups do |config|
131
+
132
+ # Indicate whether or not numeric file name prefixes used for sorting
133
+ # pages should be eliminated during output. This results in cleaner
134
+ # URI's. Helpers such as `page_name` and Middleman helpers such as
135
+ # `page_class` will reflect the pretty name.
136
+ config.strip_file_prefixes = true
137
+
138
+ # Indicates whether or not Middleman's built-in `page_class` helper is
139
+ # extended to include the page_group and page_name.
140
+ config.extend_page_class = true
141
+
142
+ # the following options provide defaults for the built-in helpers and
143
+ # sample partials. They'll also work in your own partials and helpers.
144
+
145
+ config.nav_breadcrumbs_class = 'breadcrumbs'
146
+ config.nav_breadcrumbs_alt_class = 'breadcrumbs'
147
+ config.nav_breadcrumbs_alt_label = 'Current page'
148
+ config.nav_brethren_class = 'table_contents'
149
+ config.nav_brethren_index_class = 'related-topics'
150
+ config.nav_legitimate_children_class = 'table_contents'
151
+ config.nav_prev_next_class = 'navigate_prev_next'
152
+ config.nav_prev_next_label_prev = 'Previous'
153
+ config.nav_prev_next_label_next = 'Next'
154
+ config.nav_toc_index_class = 'help_map'
155
+
156
+ end
157
+
158
+
159
+ ################################################################
160
+ # Extras Configuration
161
+ # Middlemac uses the `middlemac-extras` gem in order to
162
+ # provide other useful tools. They can be configured here.
163
+ ################################################################
164
+ activate :MiddlemacExtras do |config|
165
+
166
+ # If set to true, then the enhanced image_tag helper will be used
167
+ # to include @2x srcset automatically, if the image asset exists.
168
+ config.retina_srcset = true
169
+
170
+ # If set to true then the `image_tag` helper will work for images even
171
+ # if you don't specify an extension, but only if a file exists on disk
172
+ # that has one of the extensions in :img_auto_extensions_order.
173
+ config.img_auto_extensions = true
174
+
175
+ # Set this to an array of extensions in the order of precedence for
176
+ # using `image_tag` without file extensions.
177
+ config.img_auto_extensions_order = %w(.svg .png .jpg .jpeg .gif .tiff .tif)
178
+
179
+ end
180
+
181
+
182
+ ################################################################
183
+ # Configuration
184
+ # Change the option values to suit your needs.
185
+ ################################################################
186
+ activate :Middlemac do |options|
187
+
188
+ # Directory where finished .help bundle should go. It should be relative
189
+ # to this file, or make nil to leave in this help project directory. The
190
+ # *actual* output directory will be an Apple Help bundle at this location
191
+ # named in the form `#{CFBundleName} (target).help`. You might want to target
192
+ # the `Resources` directory of your XCode project so that your XCode project
193
+ # is always up to date.
194
+ options.Help_Output_Location = nil
195
+
196
+ # Indicates the name of the breadcrumbs helper to use for breadcrumbs.
197
+ # Built-in breadcrumbs are "nav_breadcrumbs" and "nav_breadcrumbs_alt".
198
+ # Change to `nil` to disable breadcrumbs completely.
199
+ options.Breadcrumbs = 'nav_breadcrumbs'
200
+
201
+ # This was removed in Middleman version 4.0. We are reintroducing it
202
+ # as a Middlemac feature.
203
+ options.partials_dir = 'Resources/Base.lproj/assets/partials'
204
+
205
+ end #activate
206
+
207
+
208
+ ################################################################
209
+ # STOP! There's nothing below here that you should have to
210
+ # change. Just follow the conventions and framework provided.
211
+ ################################################################
212
+
213
+
214
+ #===============================================================
215
+ # Setup directories to mirror Help Book directory layout.
216
+ #===============================================================
217
+ set :source, 'Contents'
218
+ set :build_dir, 'Contents (build)'
219
+
220
+ set :fonts_dir, 'Resources/Base.lproj/assets/fonts'
221
+ set :images_dir, 'Resources/Base.lproj/assets/images'
222
+ set :js_dir, 'Resources/Base.lproj/assets/javascripts'
223
+ set :css_dir, 'Resources/Base.lproj/assets/stylesheets'
224
+
225
+ set :layouts_dir, 'Resources/Base.lproj/assets/_layouts'
226
+ set :data_dir, 'Contents/Resources/Base.lproj/assets/_data'
227
+
228
+
229
+ #===============================================================
230
+ # Ignore items we don't want copied to the destination
231
+ #===============================================================
232
+ #ignore 'data/*'
233
+
234
+
235
+ #===============================================================
236
+ # All of our links and assets must be relative to the file
237
+ # location, and never absolute. However we will *use* absolute
238
+ # paths with root being the source directory; they will be
239
+ # converted to relative paths at build.
240
+ #===============================================================
241
+ set :strip_index_file, false
242
+ set :relative_links, true
243
+ activate :relative_assets do |options|
244
+ options.rewrite_ignore = [/image_sizes\.css/]
245
+ end
246
+
247
+
248
+ #===============================================================
249
+ # Default to Apple-recommended HTML 4.01 layout.
250
+ #===============================================================
251
+ set :haml, :format => :html4
252
+ page 'Resources/Base.lproj/*.html', :layout => :'layout-html4'
253
+
254
+
255
+ #===============================================================
256
+ # Add-on features
257
+ #===============================================================
258
+ activate :syntax
259
+
260
+
261
+ ################################################################################
262
+ # Helpers
263
+ ################################################################################
264
+
265
+
266
+ #===============================================================
267
+ # Methods defined in this helpers block are available in
268
+ # templates.
269
+ #===============================================================
270
+ helpers do
271
+
272
+ # no helpers here, but the Middlemac class offers quite a few,
273
+ # or you can add your own.
274
+
275
+ end #helpers
276
+
277
+
278
+ ################################################################################
279
+ # Build-specific configurations
280
+ ################################################################################
281
+
282
+
283
+ #===============================================================
284
+ # :server - the server is running and watching files.
285
+ #===============================================================
286
+ configure :server do
287
+
288
+ # Reload the browser automatically whenever files change
289
+ # activate :livereload, :host => '127.0.0.1'
290
+
291
+ compass_config do |config|
292
+ config.output_style = :expanded
293
+ config.sass_options = { :line_comments => true }
294
+ end
295
+
296
+ end #configure
297
+
298
+
299
+ #===============================================================
300
+ # :build - build is executed specifically.
301
+ #===============================================================
302
+ configure :build do
303
+
304
+ compass_config do |config|
305
+ config.output_style = :expanded
306
+ config.sass_options = { :line_comments => false }
307
+ end
308
+
309
+ end #configure
@@ -0,0 +1,6 @@
1
+ require 'middleman-core'
2
+
3
+ Middleman::Extensions.register :Middlemac, :before_configuration do
4
+ require_relative 'middlemac/extension'
5
+ Middlemac
6
+ end
@@ -0,0 +1,274 @@
1
+ require 'middleman-core'
2
+
3
+
4
+ ################################################################################
5
+ # **Middlemac** (an extension to **Middleman**) is a tool to build Mac OS X
6
+ # application help book files from simple source documents. It handles all of
7
+ # the esoteric details for you, and provides easy-to-use helpers for working
8
+ # with multiple versions of your application (e.g., pro and free versions)
9
+ # while minimizing source code.
10
+ # @author Jim Derry <balthisar@gmail.com>
11
+ ################################################################################
12
+ class Middlemac < ::Middleman::Extension
13
+
14
+
15
+ ############################################################
16
+ # Define the options that are to be set within `config.rb`
17
+ # as extension options.
18
+ ############################################################
19
+ option :Help_Output_Location, nil, 'Directory to place the built helpbook.'
20
+ option :Breadcrumbs, 'breadcrumbs', 'The name of the breadcrumbs helper to use for breadcrumbs.'
21
+ option :partials_dir, 'Resources/Base.lproj/assets/partials', 'A convenient shortcut to common partials.'
22
+
23
+
24
+ # @!group Extension Configuration
25
+
26
+ # @!attribute [rw] options[:Help_Output_Location]=
27
+ # Specifies the directory where the finished `.help` bundle should go. It
28
+ # must be relative to your `config.rb` file, or set it to `nil` to leave the
29
+ # output in the default location (in the help project directory). The *actual*
30
+ # output directory will be an Apple Help bundle at this location named in the
31
+ # form `#{CFBundleName} (target).help`. By targeting the `Resources` directory
32
+ # of your XCode project with this option, it’s possible to ensure that an
33
+ # Xcode project is automatically up to date every time a help project is
34
+ # built.
35
+ # @param [String] value The directory where the final help bundle will be
36
+ # built.
37
+ # @return [String] Returns the current value of this option.
38
+
39
+ # @!attribute [rw] options[:Breadcrumbs]=
40
+ # Indicates the name of the breadcrumbs helper to use for breadcrumbs.
41
+ # Built-in breadcrumbs are "nav_breadcrumbs" and "nav_breadcrumbs_alt".
42
+ # Change to `nil` to disable breadcrumbs completely. Breadcrumbs helpers are
43
+ # part of the `middleman-pagegroups` extension (which is a component of this
44
+ # extension).
45
+ # @param [String] value The name of the breadcrumbs helper to use.
46
+ # @return [String] Returns the current value of this option.
47
+
48
+ # @!attribute [rw] options[:partials_dir]=
49
+ # Specifies the default location for partials. Prior to **Middleman** 4.0,
50
+ # all partials were kept in a common directory. **Middlemac** restores this
51
+ # previous behavior by allowing all partials to be grouped in a common
52
+ # directory. When using the `partial` helper, this directory will be checked
53
+ # first for the existence of a partial; if not found then the default, built
54
+ # in behavior will take over.
55
+ # @param [String] value The directory to search for partials.
56
+ # @return [String] Returns the current value of this option.
57
+
58
+ # @!endgroup
59
+
60
+
61
+ ############################################################
62
+ # initialize
63
+ # @visibility private
64
+ ############################################################
65
+ def initialize(app, options_hash={}, &block)
66
+
67
+ super
68
+
69
+ end # initialize
70
+
71
+
72
+ ############################################################
73
+ # after_configuration
74
+ # Callback occurs before `before_build`.
75
+ # @visibility private
76
+ #############################################################
77
+ def after_configuration
78
+
79
+ # Set the correct :build_dir based on the options.
80
+
81
+ dir = options[:Help_Output_Location] || File.expand_path('./')
82
+ cf_bundle_name = app.config[:targets][app.config[:target]][:CFBundleName]
83
+ target = app.config[:target]
84
+
85
+ app.config[:build_dir] = File.join(dir, "#{cf_bundle_name} (#{target}).help", 'Contents')
86
+
87
+ end
88
+
89
+
90
+ ############################################################
91
+ # after_build
92
+ # Callback occurs one time after the build.
93
+ # @visibility private
94
+ ############################################################
95
+ def after_build(builder)
96
+
97
+ run_help_indexer
98
+
99
+ end # after_build
100
+
101
+
102
+ ############################################################
103
+ # Helpers
104
+ # Methods defined in this helpers block are available in
105
+ # templates.
106
+ ############################################################
107
+
108
+ helpers do
109
+
110
+ #--------------------------------------------------------
111
+ # This helper returns the name of the breadcrumbs
112
+ # partial configured to be used in your project, i.e.,
113
+ # the value of `options[:Breadcrumbs]`.
114
+ # @return [String] The name of the configured breadcrumbs
115
+ # partial.
116
+ #--------------------------------------------------------
117
+ def breadcrumbs
118
+ extensions[:Middlemac].options[:Breadcrumbs]
119
+ end
120
+
121
+
122
+ #--------------------------------------------------------
123
+ # Returns the name of the configured partials directory
124
+ # to use by default with the `partials` helper, i.e., the
125
+ # value of `options[:partials_dir]`.
126
+ # @return [String] The path of the configured default
127
+ # partials directory.
128
+ #--------------------------------------------------------
129
+ def partials_dir
130
+ extensions[:Middlemac].options[:partials_dir]
131
+ end
132
+
133
+
134
+ #--------------------------------------------------------
135
+ # Returns the product `CFBundleIdentifier` for the
136
+ # current target as configured in your `config.rb`.
137
+ # @return [String] The `cfBundleIdentifier`.
138
+ #--------------------------------------------------------
139
+ def cfBundleIdentifier
140
+ config[:targets][config[:target]][:CFBundleID]
141
+ end
142
+
143
+
144
+ #--------------------------------------------------------
145
+ # Returns the product `CFBundleName` for the current
146
+ # target as configured in your `config.rb`.
147
+ # @return [String] The `CFBundleName`.
148
+ #--------------------------------------------------------
149
+ def cfBundleName
150
+ config[:targets][config[:target]][:CFBundleName]
151
+ end
152
+
153
+
154
+ #--------------------------------------------------------
155
+ # Returns the `ProductName` for the current target
156
+ # as configured in your `config.rb`.
157
+ # @return [String] The `ProductName`.
158
+ #--------------------------------------------------------
159
+ def product_name
160
+ config[:targets][config[:target]][:ProductName]
161
+ end
162
+
163
+
164
+ #--------------------------------------------------------
165
+ # Returns the `ProductVersion` for the current target
166
+ # as configured in your `config.rb`.
167
+ # @return [String] The `ProductVersion`.
168
+ #--------------------------------------------------------
169
+ def product_version
170
+ config[:targets][config[:target]][:ProductVersion]
171
+ end
172
+
173
+
174
+ #--------------------------------------------------------
175
+ # Returns the `ProductURI` for the current target
176
+ # as configured in your `config.rb`.
177
+ # @return [String] The `ProductURI`.
178
+ #--------------------------------------------------------
179
+ def product_uri
180
+ config[:targets][config[:target]][:ProductURI]
181
+ end
182
+
183
+
184
+ #--------------------------------------------------------
185
+ # Extends the built-in `partials` helper to allow the
186
+ # use of a default partials directory as configured with
187
+ # `options[:partials_dir]`. Middleman 4.0 removed the
188
+ # option `partials_dir` which increased flexibility a
189
+ # lot, but hurt backwards compatibility. When used the
190
+ # default location will be searched first for the
191
+ # specified partial; if not found then the built-in
192
+ # behavior will be used.
193
+ # @param [String] template The partial file to use.
194
+ # @param [Hash] opts Options to use for the partial.
195
+ # Consult **Middleman**’s documentation for possible
196
+ # options.
197
+ # @param [Block] &block An option block as per the
198
+ # default implementation by **Middleman**.
199
+ # @group Extended Helpers
200
+ #--------------------------------------------------------
201
+ def partial(template, opts={}, &block)
202
+ file_check = File.join(extensions[:Middlemac].options[:partials_dir], "_#{template}")
203
+ if ::Middleman::TemplateRenderer.resolve_template( @app, file_check)
204
+ super(file_check, opts, &block)
205
+ else
206
+ super(template, opts, &block)
207
+ end
208
+ end
209
+
210
+
211
+ end #helpers
212
+
213
+
214
+ ############################################################
215
+ # Instance Methods
216
+ # @!group Instance Methods
217
+ ############################################################
218
+
219
+
220
+ #########################################################
221
+ # Runs Apple’s the help indexer if it is available on
222
+ # the system.
223
+ # @return [Void]
224
+ #########################################################
225
+ def run_help_indexer
226
+
227
+ cf_bundle_name = app.config[:targets][app.config[:target]][:CFBundleName]
228
+ target = app.config[:target]
229
+
230
+ # see whether a help indexer is available.
231
+ `command -v hiutil > /dev/null`
232
+ if $?.success?
233
+
234
+ index_dir = File.expand_path(File.join(app.config[:build_dir], 'Resources/', 'Base.lproj/'))
235
+ index_dst = File.expand_path(File.join(index_dir, "#{cf_bundle_name}.helpindex"))
236
+
237
+ say "'…#{index_dir.split(//).last(60).join}' (indexing)", :cyan
238
+ say "'…#{index_dst.split(//).last(60).join}' (final file)", :cyan
239
+
240
+ `hiutil -Cf "#{index_dst}" "#{index_dir}"`
241
+ else
242
+ say "NOTE: `hiutil` is not found, so no index will exist for target '#{target}'.", :red
243
+ end
244
+
245
+ end #run_help_indexer
246
+
247
+
248
+ #########################################################
249
+ # Output colored messages using ANSI codes.
250
+ # @param [String] message The message to output to the
251
+ # console.
252
+ # @param [Symbol] color The color in which to display
253
+ # the message.
254
+ # @returns [Void]
255
+ # @!visibility private
256
+ #########################################################
257
+ def say(message = '', color = :reset)
258
+ colors = { :blue => "\033[34m",
259
+ :cyan => "\033[36m",
260
+ :green => "\033[32m",
261
+ :red => "\033[31m",
262
+ :yellow => "\033[33m",
263
+ :reset => "\033[0m",
264
+ }
265
+
266
+ if RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/
267
+ puts message
268
+ else
269
+ puts colors[color] + message + colors[:reset]
270
+ end
271
+ end # say
272
+
273
+
274
+ end # class MiddlemacExtras