middlemac 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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