middlemac 2.0.0 → 3.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 (497) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/Gemfile +11 -1
  4. data/README.md +38 -6
  5. data/Rakefile +7 -2
  6. data/documentation_project/.gitignore +1 -1
  7. data/documentation_project/Contents/Info.plist.erb +1 -1
  8. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/_data/globals.yml +0 -0
  9. data/documentation_project/Contents/Resources/SharedGlobalAssets/_data/locale-list.json +318 -0
  10. data/documentation_project/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern-aside.haml +19 -0
  11. data/documentation_project/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern.haml +61 -0
  12. data/documentation_project/Contents/Resources/SharedGlobalAssets/_layouts/layout-blank.haml +11 -0
  13. data/documentation_project/Contents/Resources/SharedGlobalAssets/_partials/_yard_middlemac_config.erb +276 -0
  14. data/documentation_project/Contents/Resources/SharedGlobalAssets/_partials/_yard_middlemac_helpers.erb +897 -0
  15. data/documentation_project/Contents/Resources/SharedGlobalAssets/_partials/_yard_middlemac_helpers_extended.erb +369 -0
  16. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_pagegroups_resources.erb → SharedGlobalAssets/_partials/_yard_middlemac_resources.erb} +342 -37
  17. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_config.erb → SharedGlobalAssets/_partials/_yard_mmtargets_config.erb} +15 -110
  18. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_helpers.erb → SharedGlobalAssets/_partials/_yard_mmtargets_helpers.erb} +4 -4
  19. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_helpers_extended.erb → SharedGlobalAssets/_partials/_yard_mmtargets_helpers_extended.erb} +6 -2
  20. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_instance.erb → SharedGlobalAssets/_partials/_yard_mmtargets_instance.erb} +1 -1
  21. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_resources.erb → SharedGlobalAssets/_partials/_yard_mmtargets_resources.erb} +2 -2
  22. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-120x120.png +0 -0
  23. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-152x152.png +0 -0
  24. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-57x57.png +0 -0
  25. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-76x76.png +0 -0
  26. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad.png +0 -0
  27. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad_2x.png +0 -0
  28. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone.png +0 -0
  29. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone_2x.png +0 -0
  30. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256.png +0 -0
  31. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256@2x.png +0 -0
  32. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32.png +0 -0
  33. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32@2x.png +0 -0
  34. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/apple.css +3831 -0
  35. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0200_LeftArrow_2x.png +0 -0
  36. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0201_RightArrow_2x.png +0 -0
  37. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow-blue.svg +1 -0
  38. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow.svg +1 -0
  39. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/ask-siri.svg +1 -0
  40. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-clear-search.png +0 -0
  41. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-2.png +0 -0
  42. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-learnmore.png +0 -0
  43. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close.png +0 -0
  44. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search-small.png +0 -0
  45. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search.png +0 -0
  46. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-rtl.png +0 -0
  47. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small-rtl.png +0 -0
  48. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small.png +0 -0
  49. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle-rtl.png +0 -0
  50. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle.png +0 -0
  51. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc.png +0 -0
  52. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/changelanguage_icon2x.png +0 -0
  53. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/force-click.svg +1 -0
  54. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow-2.svg +1 -0
  55. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow.png +0 -0
  56. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-close.svg +1 -0
  57. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link-lg.png +0 -0
  58. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link.png +0 -0
  59. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-pause.svg +1 -0
  60. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-play.svg +1 -0
  61. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-replay.svg +1 -0
  62. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-black.png +0 -0
  63. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-eu.png +0 -0
  64. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning.png +0 -0
  65. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-120x120.png +0 -0
  66. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-152x152.png +0 -0
  67. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-57x57.png +0 -0
  68. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-76x76.png +0 -0
  69. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad.png +0 -0
  70. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad_2x.png +0 -0
  71. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone.png +0 -0
  72. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone_2x.png +0 -0
  73. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/movie-play_2x.png +0 -0
  74. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-left.svg +1 -0
  75. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-left.png +0 -0
  76. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-right.png +0 -0
  77. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-right.svg +1 -0
  78. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/search_image_large.svg +1 -0
  79. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/tip.svg +1 -0
  80. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_blue_large.svg +1 -0
  81. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_large.svg +1 -0
  82. data/documentation_project/Contents/Resources/{Base.lproj/assets/stylesheets/_github.scss → SharedGlobalAssets/css/middlemac/github.css.scss} +0 -0
  83. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/middlemac.css.scss +129 -0
  84. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/note.svg +19 -0
  85. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/tip.svg +1 -0
  86. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/warning.svg +19 -0
  87. data/documentation_project/Contents/Resources/SharedGlobalAssets/fonts/_dummy.txt +1 -0
  88. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/all-sample.png +0 -0
  89. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/all-sample@2x.png +0 -0
  90. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_256x256.png +0 -0
  91. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_256x256@2x.png +0 -0
  92. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_32x32.png +0 -0
  93. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_32x32@2x.png +0 -0
  94. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo-small.png +0 -0
  95. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo-small@2x.png +0 -0
  96. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo.png +0 -0
  97. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo@2x.png +0 -0
  98. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo-small.png +0 -0
  99. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo-small@2x.png +0 -0
  100. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo.png +0 -0
  101. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo@2x.png +0 -0
  102. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo-small.png +0 -0
  103. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo-small@2x.png +0 -0
  104. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo.png +0 -0
  105. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo@2x.png +0 -0
  106. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo-small.png +0 -0
  107. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo-small@2x.png +0 -0
  108. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo.png +0 -0
  109. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo@2x.png +0 -0
  110. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_256x256.png +0 -0
  111. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_256x256@2x.png +0 -0
  112. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_32x32.png +0 -0
  113. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_32x32@2x.png +0 -0
  114. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo-small.png +0 -0
  115. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo-small@2x.png +0 -0
  116. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo.png +0 -0
  117. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo@2x.png +0 -0
  118. data/documentation_project/Contents/Resources/SharedGlobalAssets/js/app.5.1.27.js +6295 -0
  119. data/documentation_project/Contents/Resources/SharedGlobalAssets/js/middlemac-debug.js +20 -0
  120. data/documentation_project/Contents/Resources/SharedGlobalAssets/js/vendor.js +226 -0
  121. data/documentation_project/Contents/Resources/en.lproj/010_what_is_middlemac/index.html.md.erb +114 -0
  122. data/documentation_project/Contents/Resources/en.lproj/020_apple_help_features/index.html.md.erb +241 -0
  123. data/documentation_project/Contents/Resources/{Base.lproj/020_setup_tutorial/index.html.md.erb → en.lproj/030_get_started/010_set_up_middlemac.html.md.erb} +33 -37
  124. data/documentation_project/Contents/Resources/en.lproj/030_get_started/020_your_first_help_book.html.md.erb +374 -0
  125. data/documentation_project/Contents/Resources/en.lproj/030_get_started/030_serve_your_help_book.html.md.erb +97 -0
  126. data/documentation_project/Contents/Resources/en.lproj/030_get_started/040_build_your_help_book.html.md.erb +56 -0
  127. data/documentation_project/Contents/Resources/{Base.lproj/030_skills_refresher/10_markdown_skill.html.md.erb → en.lproj/030_get_started/050_about_markdown.html.md.erb} +12 -14
  128. data/documentation_project/Contents/Resources/{Base.lproj/030_skills_refresher/30_middleman_skill.html.md.erb → en.lproj/030_get_started/060_about_middleman.html.md.erb} +10 -14
  129. data/documentation_project/Contents/Resources/en.lproj/030_get_started/070_about_ruby.html.md.erb +194 -0
  130. data/documentation_project/Contents/Resources/en.lproj/030_get_started/aside_frontmatter.html.md.erb +64 -0
  131. data/documentation_project/Contents/Resources/en.lproj/030_get_started/index.html.md.erb +4 -0
  132. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/010_setup.html.md.erb +204 -0
  133. data/documentation_project/Contents/Resources/{Base.lproj/030_skills_refresher/60_filetypes_skill.html.md.erb → en.lproj/040_compose_project/020_filetypes.html.md.erb} +7 -11
  134. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/030_directory_conventions.html.md.erb +206 -0
  135. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/040_groups.html.md.erb +96 -0
  136. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/050_targets_and_features.html.md.erb +220 -0
  137. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/060_frontmatter.html.md.erb +98 -0
  138. data/documentation_project/Contents/Resources/{Base.lproj/060_content/100_using_local_data.html.md.erb → en.lproj/040_compose_project/070_local_data.html.md.erb} +22 -9
  139. data/documentation_project/Contents/Resources/{Base.lproj/060_content/030_helpers.html.md.erb → en.lproj/040_compose_project/080_helpers/010_helpers.html.md.erb} +35 -69
  140. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/080_helpers/020_markdown_links.html.md.erb +51 -0
  141. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/080_helpers/030_markdown_images.html.md.erb +52 -0
  142. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/080_helpers/index.html.md.erb +4 -0
  143. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/090_partials.html.md.erb +64 -0
  144. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/100_resources.html.md.erb +36 -0
  145. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/110_implement_features.html.md.erb +197 -0
  146. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/120_preview_build.html.md.erb +85 -0
  147. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/index.html.md.erb +4 -0
  148. data/documentation_project/Contents/Resources/{Base.lproj/050_structure → en.lproj/040_compose_project}/not_free.html.md.erb +4 -11
  149. data/documentation_project/Contents/Resources/{Base.lproj/050_structure → en.lproj/040_compose_project}/not_pro.html.md.erb +4 -11
  150. data/documentation_project/Contents/Resources/en.lproj/100_reference/010_apple_help_books/010_dissect_help_book.html.md.erb +295 -0
  151. data/documentation_project/Contents/Resources/en.lproj/100_reference/010_apple_help_books/020_dissect_modern_help.html.md.erb +246 -0
  152. data/documentation_project/Contents/Resources/en.lproj/100_reference/010_apple_help_books/index.html.md.erb +4 -0
  153. data/documentation_project/Contents/Resources/en.lproj/100_reference/030_backwards_compatibility.html.md.erb +82 -0
  154. data/documentation_project/Contents/Resources/en.lproj/100_reference/040_directory_reference.html.md.erb +260 -0
  155. data/documentation_project/Contents/Resources/en.lproj/100_reference/050_xcode_integration.html.md.erb +165 -0
  156. data/documentation_project/Contents/Resources/{Base.lproj/100_reference/10_cli_ref.html.md.erb → en.lproj/100_reference/060_cli_ref.html.md.erb} +3 -29
  157. data/documentation_project/Contents/Resources/en.lproj/100_reference/080_frontmatter_reference.html.md.erb +111 -0
  158. data/documentation_project/Contents/Resources/en.lproj/100_reference/120_api_reference/070_config_ref.html.md.erb +31 -0
  159. data/documentation_project/Contents/Resources/en.lproj/100_reference/120_api_reference/090_helpers_ref.html.md.erb +20 -0
  160. data/documentation_project/Contents/Resources/{Base.lproj/100_reference/30_helpers_ext_ref.html.md.erb → en.lproj/100_reference/120_api_reference/091_helpers_ext_ref.html.md.erb} +3 -21
  161. data/documentation_project/Contents/Resources/{Base.lproj/100_reference/50_resource_ext_ref.html.md.erb → en.lproj/100_reference/120_api_reference/100_resource_ext_ref.html.md.erb} +3 -8
  162. data/documentation_project/Contents/Resources/en.lproj/100_reference/120_api_reference/index.html.md.erb +4 -0
  163. data/documentation_project/Contents/Resources/en.lproj/100_reference/index.html.md.erb +4 -0
  164. data/documentation_project/Contents/Resources/{Base.lproj → en.lproj}/110_acknowledgements/index.html.md.erb +5 -7
  165. data/documentation_project/Contents/Resources/en.lproj/ExactMatch.plist.erb +15 -0
  166. data/documentation_project/Contents/Resources/{Base.lproj → en.lproj}/InfoPlist.strings.erb +0 -0
  167. data/documentation_project/Contents/Resources/en.lproj/asides/aside_description.html.md.erb +21 -0
  168. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_books_folder_reference.png +0 -0
  169. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_books_project_membership.png +0 -0
  170. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_aside_example.png +0 -0
  171. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_chapter_heading.png +0 -0
  172. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_copyright_footer.png +0 -0
  173. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_landing_links.png +0 -0
  174. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_language_chooser.png +0 -0
  175. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_navigator.png +0 -0
  176. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_see_also.png +0 -0
  177. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_title_icons.png +0 -0
  178. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_universal.png +0 -0
  179. data/documentation_project/Contents/Resources/en.lproj/assets/images/get_started_init_contents.png +0 -0
  180. data/documentation_project/Contents/Resources/en.lproj/assets/images/get_started_init_english.png +0 -0
  181. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_config_sets.png +0 -0
  182. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_plist_definitions.png +0 -0
  183. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_target_dependencies.png +0 -0
  184. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_target_template.png +0 -0
  185. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_tool_configuration.png +0 -0
  186. data/documentation_project/Contents/Resources/{Base.lproj → en.lproj}/index.html.md.erb +3 -13
  187. data/documentation_project/Contents/Resources/en.lproj/locale-info.json.erb +16 -0
  188. data/documentation_project/Contents/Resources/en.lproj/navigation.json.erb +57 -0
  189. data/documentation_project/Contents/Resources/en.lproj/searchTree.json.erb +1 -0
  190. data/documentation_project/Contents/Resources/es.lproj/ExactMatch.plist.erb +15 -0
  191. data/{fixtures/middlemac_app/Contents/Resources/Base.lproj → documentation_project/Contents/Resources/es.lproj}/InfoPlist.strings.erb +0 -0
  192. data/documentation_project/Contents/Resources/es.lproj/index.html.md.erb +27 -0
  193. data/documentation_project/Contents/Resources/es.lproj/locale-info.json.erb +16 -0
  194. data/documentation_project/Contents/Resources/es.lproj/navigation.json.erb +57 -0
  195. data/documentation_project/Contents/Resources/es.lproj/searchTree.json.erb +1 -0
  196. data/documentation_project/Contents/Resources/index.html.erb +118 -0
  197. data/documentation_project/Contents/Resources/locale-list.json.erb +14 -0
  198. data/documentation_project/Gemfile +4 -17
  199. data/documentation_project/HelpViewerApp/HelpViewerApp/AppDelegate.h +1 -0
  200. data/documentation_project/HelpViewerApp/HelpViewerApp/AppDelegate.m +6 -0
  201. data/documentation_project/HelpViewerApp/HelpViewerApp/Base.lproj/MainMenu.xib +39 -10
  202. data/documentation_project/HelpViewerApp/HelpViewerApp/Info-free.plist +4 -4
  203. data/documentation_project/HelpViewerApp/HelpViewerApp/Info-pro.plist +4 -4
  204. data/documentation_project/HelpViewerApp/HelpViewerApp/versions.xcconfig +8 -0
  205. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/project.pbxproj +79 -101
  206. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  207. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/Help (free).xcscheme +11 -6
  208. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/Help (pro).xcscheme +80 -0
  209. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/HelpViewerApp (free).xcscheme +1 -1
  210. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/HelpViewerApp (pro).xcscheme +1 -1
  211. data/documentation_project/HelpViewerApp/README.md +6 -26
  212. data/documentation_project/{Middlemac (free).help → Middlemac_(free).help}/.gitignore +0 -0
  213. data/documentation_project/{Middlemac (pro).help → Middlemac_(pro).help}/.gitignore +0 -0
  214. data/documentation_project/config.rb +68 -100
  215. data/documentation_project/makefile +93 -0
  216. data/documentation_project/middlemac.webloc +0 -0
  217. data/features/helpers_features.feature +59 -0
  218. data/features/main_features.feature +21 -17
  219. data/features/support/env.rb +0 -14
  220. data/fixtures/middlemac_app/.gitignore +0 -1
  221. data/fixtures/middlemac_app/Contents/Info.plist.erb +1 -1
  222. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/_data/globals.yml +0 -0
  223. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_data/locale-list.json +318 -0
  224. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern-aside.haml +19 -0
  225. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern.haml +61 -0
  226. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_layouts/layout-blank.haml +11 -0
  227. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj/assets/partials → SharedGlobalAssets/_partials}/_partials_dir_partial.erb +0 -0
  228. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-120x120.png +0 -0
  229. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-152x152.png +0 -0
  230. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-57x57.png +0 -0
  231. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-76x76.png +0 -0
  232. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad.png +0 -0
  233. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad_2x.png +0 -0
  234. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone.png +0 -0
  235. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone_2x.png +0 -0
  236. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256.png +0 -0
  237. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256@2x.png +0 -0
  238. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32.png +0 -0
  239. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32@2x.png +0 -0
  240. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/apple.css +3831 -0
  241. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0200_LeftArrow_2x.png +0 -0
  242. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0201_RightArrow_2x.png +0 -0
  243. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow-blue.svg +1 -0
  244. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow.svg +1 -0
  245. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/ask-siri.svg +1 -0
  246. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-clear-search.png +0 -0
  247. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-2.png +0 -0
  248. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-learnmore.png +0 -0
  249. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close.png +0 -0
  250. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search-small.png +0 -0
  251. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search.png +0 -0
  252. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-rtl.png +0 -0
  253. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small-rtl.png +0 -0
  254. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small.png +0 -0
  255. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle-rtl.png +0 -0
  256. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle.png +0 -0
  257. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc.png +0 -0
  258. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/changelanguage_icon2x.png +0 -0
  259. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/force-click.svg +1 -0
  260. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow-2.svg +1 -0
  261. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow.png +0 -0
  262. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-close.svg +1 -0
  263. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link-lg.png +0 -0
  264. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link.png +0 -0
  265. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-pause.svg +1 -0
  266. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-play.svg +1 -0
  267. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-replay.svg +1 -0
  268. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-black.png +0 -0
  269. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-eu.png +0 -0
  270. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning.png +0 -0
  271. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-120x120.png +0 -0
  272. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-152x152.png +0 -0
  273. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-57x57.png +0 -0
  274. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-76x76.png +0 -0
  275. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad.png +0 -0
  276. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad_2x.png +0 -0
  277. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone.png +0 -0
  278. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone_2x.png +0 -0
  279. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/movie-play_2x.png +0 -0
  280. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-left.svg +1 -0
  281. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-left.png +0 -0
  282. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-right.png +0 -0
  283. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-right.svg +1 -0
  284. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/search_image_large.svg +1 -0
  285. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/tip.svg +1 -0
  286. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_blue_large.svg +1 -0
  287. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_large.svg +1 -0
  288. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj/assets/stylesheets/_github.scss → SharedGlobalAssets/css/middlemac/github.css.scss} +0 -0
  289. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/middlemac.css.scss +129 -0
  290. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/note.svg +19 -0
  291. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/tip.svg +1 -0
  292. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/warning.svg +19 -0
  293. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/fonts/_dummy.txt +1 -0
  294. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/images/global_thing_32x32.png +0 -0
  295. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/js/app.5.1.27.js +6295 -0
  296. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/js/middlemac-debug.js +20 -0
  297. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/js/vendor.js +226 -0
  298. data/fixtures/middlemac_app/Contents/Resources/en.lproj/10_hello_world_file.html.md.erb +17 -0
  299. data/fixtures/middlemac_app/Contents/Resources/en.lproj/30_sample_group_number_one/index.html.md.erb +8 -0
  300. data/fixtures/middlemac_app/Contents/Resources/en.lproj/30_sample_group_number_one/page_one.html.md.erb +108 -0
  301. data/fixtures/middlemac_app/Contents/Resources/en.lproj/30_sample_group_number_one/page_two.html.md.erb +36 -0
  302. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/40_sample_group_number_two/01_nested_group_example/01_page_one.html.md.erb +0 -5
  303. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/40_sample_group_number_two/01_nested_group_example/02_pagina_dos.html.md.erb +0 -5
  304. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/40_sample_group_number_two/01_nested_group_example/03_page_san.html.md.erb +0 -5
  305. data/fixtures/middlemac_app/Contents/Resources/en.lproj/40_sample_group_number_two/01_nested_group_example/index.html.md.erb +4 -0
  306. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/40_sample_group_number_two/02_page_two.html.md.erb +0 -5
  307. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/40_sample_group_number_two/03_page_three.html.md.erb +0 -5
  308. data/fixtures/middlemac_app/Contents/Resources/en.lproj/40_sample_group_number_two/index.html.md.erb +4 -0
  309. data/fixtures/middlemac_app/Contents/Resources/en.lproj/50_testing_world_file.html.md.erb +58 -0
  310. data/fixtures/middlemac_app/Contents/Resources/en.lproj/60_goodbye_world_file.html.md.erb +203 -0
  311. data/fixtures/middlemac_app/Contents/Resources/en.lproj/ExactMatch.plist.erb +15 -0
  312. data/fixtures/middlemac_app/Contents/Resources/en.lproj/InfoPlist.strings.erb +10 -0
  313. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/_new_style_partial.erb +0 -0
  314. data/fixtures/middlemac_app/Contents/Resources/en.lproj/asides/aside_description.html.md.erb +20 -0
  315. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/_partials/_localized_partials_dir_partial.erb +1 -0
  316. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/all-graphic_32x32.png +0 -0
  317. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/neat_thing_32x32.png +0 -0
  318. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/subdirectory/logo_32x32.png +0 -0
  319. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/subdirectory/pro-image_32x32.png +0 -0
  320. data/fixtures/middlemac_app/Contents/Resources/en.lproj/copyright.html.md.erb +19 -0
  321. data/fixtures/middlemac_app/Contents/Resources/en.lproj/index.html.md.erb +20 -0
  322. data/fixtures/middlemac_app/Contents/Resources/en.lproj/locale-info.json.erb +16 -0
  323. data/fixtures/middlemac_app/Contents/Resources/en.lproj/navigation.json.erb +57 -0
  324. data/fixtures/middlemac_app/Contents/Resources/en.lproj/searchTree.json.erb +1 -0
  325. data/fixtures/middlemac_app/Contents/Resources/es.lproj/10_hola_mundo_file.html.md.erb +15 -0
  326. data/fixtures/middlemac_app/Contents/Resources/es.lproj/60_goodbye_world_file.html.md.erb +193 -0
  327. data/fixtures/middlemac_app/Contents/Resources/es.lproj/ExactMatch.plist.erb +15 -0
  328. data/fixtures/middlemac_app/Contents/Resources/es.lproj/InfoPlist.strings.erb +10 -0
  329. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/all-graphic_32x32.png +0 -0
  330. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/neat_thing_32x32.png +0 -0
  331. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/subdirectory/logo_32x32.png +0 -0
  332. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/subdirectory/pro-image_32x32.png +0 -0
  333. data/fixtures/middlemac_app/Contents/Resources/es.lproj/copyright.html.md.erb +19 -0
  334. data/fixtures/middlemac_app/Contents/Resources/es.lproj/index.html.md.erb +21 -0
  335. data/fixtures/middlemac_app/Contents/Resources/es.lproj/locale-info.json.erb +16 -0
  336. data/fixtures/middlemac_app/Contents/Resources/es.lproj/navigation.json.erb +57 -0
  337. data/fixtures/middlemac_app/Contents/Resources/es.lproj/searchTree.json.erb +1 -0
  338. data/fixtures/middlemac_app/Contents/Resources/index.html.erb +118 -0
  339. data/fixtures/middlemac_app/Contents/Resources/locale-list.json.erb +14 -0
  340. data/fixtures/middlemac_app/Gemfile +4 -17
  341. data/fixtures/middlemac_app/config.rb +71 -100
  342. data/fixtures/middlemac_app/makefile +93 -0
  343. data/fixtures/middlemac_app/middlemac.webloc +0 -0
  344. data/lib/middlemac/extension.rb +123 -211
  345. data/lib/middlemac/helpers.rb +470 -0
  346. data/lib/middlemac/private.rb +494 -0
  347. data/lib/middlemac/sitemap.rb +516 -0
  348. data/lib/middlemac/trie.rb +37 -0
  349. data/lib/middlemac/version.rb +1 -1
  350. data/lib/middlemac.rb +4 -0
  351. data/middlemac.gemspec +7 -6
  352. data/resources/stopwords/ar.plist +206 -0
  353. data/resources/stopwords/ca.plist +0 -0
  354. data/resources/stopwords/cs.plist +30 -0
  355. data/resources/stopwords/da.plist +6 -0
  356. data/resources/stopwords/de.plist +119 -0
  357. data/resources/stopwords/el.plist +0 -0
  358. data/resources/stopwords/en.plist +0 -0
  359. data/resources/stopwords/es.plist +282 -0
  360. data/resources/stopwords/es_419.plist +282 -0
  361. data/resources/stopwords/fi.plist +206 -0
  362. data/resources/stopwords/fr.plist +132 -0
  363. data/resources/stopwords/he.plist +0 -0
  364. data/resources/stopwords/hr.plist +0 -0
  365. data/resources/stopwords/hu.plist +44 -0
  366. data/resources/stopwords/id.plist +6 -0
  367. data/resources/stopwords/it.plist +153 -0
  368. data/resources/stopwords/ja.plist +6 -0
  369. data/resources/stopwords/ko.plist +106 -0
  370. data/resources/stopwords/ms.plist +6 -0
  371. data/resources/stopwords/nl.plist +198 -0
  372. data/resources/stopwords/no.plist +207 -0
  373. data/resources/stopwords/pl.plist +207 -0
  374. data/resources/stopwords/pt.plist +207 -0
  375. data/resources/stopwords/pt_PT.plist +207 -0
  376. data/resources/stopwords/ro.plist +0 -0
  377. data/resources/stopwords/ru.plist +207 -0
  378. data/resources/stopwords/sk.plist +0 -0
  379. data/resources/stopwords/sv.plist +280 -0
  380. data/resources/stopwords/th.plist +56 -0
  381. data/resources/stopwords/tr.plist +200 -0
  382. data/resources/stopwords/uk.plist +764 -0
  383. data/resources/stopwords/vi.plist +6 -0
  384. data/resources/stopwords/zh_CN.plist +207 -0
  385. data/resources/stopwords/zh_TW.plist +207 -0
  386. data/yard/readme.md +4 -4
  387. metadata +394 -219
  388. data/documentation_project/Contents/Resources/Base.lproj/010_what_is_middlemac/index.html.md.erb +0 -126
  389. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/20_frontmatter_skill.html.md.erb +0 -54
  390. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/40_ruby_skill.html.md.erb +0 -67
  391. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/50_ruby_ecosystem.html.md.erb +0 -136
  392. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/index.html.md.erb +0 -35
  393. data/documentation_project/Contents/Resources/Base.lproj/040_setup/index.html.md.erb +0 -88
  394. data/documentation_project/Contents/Resources/Base.lproj/050_structure/010_directories_and_images.html.md.erb +0 -176
  395. data/documentation_project/Contents/Resources/Base.lproj/050_structure/020_layouts_and_templates.html.md.erb +0 -71
  396. data/documentation_project/Contents/Resources/Base.lproj/050_structure/025_css.html.md.erb +0 -71
  397. data/documentation_project/Contents/Resources/Base.lproj/050_structure/030_groups.html.md.erb +0 -83
  398. data/documentation_project/Contents/Resources/Base.lproj/050_structure/040_breadcrumbs.html.md.erb +0 -43
  399. data/documentation_project/Contents/Resources/Base.lproj/050_structure/050_navigator.html.md.erb +0 -26
  400. data/documentation_project/Contents/Resources/Base.lproj/050_structure/060_targets.html.md.erb +0 -63
  401. data/documentation_project/Contents/Resources/Base.lproj/050_structure/070_features.html.md.erb +0 -122
  402. data/documentation_project/Contents/Resources/Base.lproj/050_structure/index.html.md.erb +0 -21
  403. data/documentation_project/Contents/Resources/Base.lproj/060_content/010_frontmatter.html.md.erb +0 -88
  404. data/documentation_project/Contents/Resources/Base.lproj/060_content/040_partials.html.md.erb +0 -121
  405. data/documentation_project/Contents/Resources/Base.lproj/060_content/050_resources.html.md.erb +0 -60
  406. data/documentation_project/Contents/Resources/Base.lproj/060_content/070_including_excluding.html.md.erb +0 -68
  407. data/documentation_project/Contents/Resources/Base.lproj/060_content/080_markdown_links_images.html.md.erb +0 -93
  408. data/documentation_project/Contents/Resources/Base.lproj/060_content/090_css_image_sizes.html.md.erb +0 -90
  409. data/documentation_project/Contents/Resources/Base.lproj/060_content/index.html.md.erb +0 -21
  410. data/documentation_project/Contents/Resources/Base.lproj/070_preview_build/index.html.md.erb +0 -78
  411. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/10_apple_help_setup.html.md.erb +0 -110
  412. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/20_xcode_integration.html.md.erb +0 -64
  413. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/index.html.md.erb +0 -25
  414. data/documentation_project/Contents/Resources/Base.lproj/100_reference/20_config_ref.html.md.erb +0 -56
  415. data/documentation_project/Contents/Resources/Base.lproj/100_reference/40_helpers_ref.html.md.erb +0 -45
  416. data/documentation_project/Contents/Resources/Base.lproj/100_reference/index.html.md.erb +0 -26
  417. data/documentation_project/Contents/Resources/Base.lproj/120_backwards_compatibility/index.html.md.erb +0 -88
  418. data/documentation_project/Contents/Resources/Base.lproj/130_all_help_content/index.html.md.erb +0 -15
  419. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/layout-html4.haml +0 -22
  420. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/layout-xhtml.haml +0 -28
  421. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-large.haml +0 -30
  422. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-medium.haml +0 -30
  423. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-small.haml +0 -30
  424. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  425. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  426. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.svg +0 -655
  427. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  428. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  429. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  430. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras-small.png +0 -0
  431. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras-small@2x.png +0 -0
  432. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras.png +0 -0
  433. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras@2x.png +0 -0
  434. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras-small.png +0 -0
  435. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras-small@2x.png +0 -0
  436. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras.png +0 -0
  437. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras@2x.png +0 -0
  438. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-pagegroups/middleman-pagegroups-small.png +0 -0
  439. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-pagegroups/middleman-pagegroups.png +0 -0
  440. data/documentation_project/Contents/Resources/Base.lproj/assets/javascripts/all.js +0 -1
  441. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs.haml +0 -11
  442. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs_alt.haml +0 -15
  443. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_brethren.haml +0 -18
  444. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_brethren_index.haml +0 -14
  445. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_legitimate_children.haml +0 -16
  446. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_prev_next.haml +0 -21
  447. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_toc_index.haml +0 -21
  448. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_config.erb +0 -200
  449. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_helpers.erb +0 -146
  450. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_helpers_extended.erb +0 -135
  451. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_config.erb +0 -207
  452. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_helpers.erb +0 -297
  453. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_helpers_extended.erb +0 -96
  454. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_config.erb +0 -744
  455. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers.erb +0 -710
  456. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers_css.erb +0 -523
  457. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers_extended.erb +0 -56
  458. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/_apple_helpbook.scss +0 -946
  459. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/_normalize.scss +0 -374
  460. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/breadcrumb-separator-light.png +0 -0
  461. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/image_sizes.css.erb +0 -8
  462. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/style.css.scss +0 -4
  463. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/10_hello_world_file.html.md.erb +0 -22
  464. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/20_goodbye_world_file.html.md.erb +0 -22
  465. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/index.html.md.erb +0 -24
  466. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/page_one.html.md.erb +0 -20
  467. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/page_two.html.md.erb +0 -19
  468. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/01_nested_group_example/index.html.md.erb +0 -18
  469. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/index.html.md.erb +0 -24
  470. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/45_testing_world_file.html.md.erb +0 -55
  471. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/50_entire_world_file.html.md.erb +0 -15
  472. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/layout-html4.haml +0 -22
  473. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/layout-xhtml.haml +0 -28
  474. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-large.haml +0 -30
  475. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-medium.haml +0 -30
  476. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-small.haml +0 -30
  477. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  478. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  479. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.svg +0 -655
  480. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  481. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  482. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  483. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/images/_empty_directory.html.md.erb +0 -1
  484. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/javascripts/all.js +0 -1
  485. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs.haml +0 -11
  486. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs_alt.haml +0 -15
  487. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_brethren.haml +0 -18
  488. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_brethren_index.haml +0 -14
  489. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_legitimate_children.haml +0 -16
  490. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_prev_next.haml +0 -21
  491. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_toc_index.haml +0 -21
  492. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/_apple_helpbook.scss +0 -946
  493. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/_normalize.scss +0 -374
  494. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/breadcrumb-separator-light.png +0 -0
  495. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/image_sizes.css.erb +0 -8
  496. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/style.css.scss +0 -4
  497. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/index.html.md.erb +0 -17
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Compose a Middlemac Project
3
+ layout: layout-blank
4
+ ---
@@ -1,18 +1,13 @@
1
1
  ---
2
- title: Invisible On Free
3
- blurb: This page is not available for target `:free`, as a demonstration of
4
- the use of targets.
5
- layout: template-logo-small
6
- navigator: false
2
+ title: Invisible On Free
3
+ blurb: This page is not available for target `:free`, as a demonstration
4
+ of the use of targets.
7
5
  exclude:
8
6
  - :free
9
7
  ---
10
8
  <%= md_links %>
11
9
  <%= md_images %>
12
10
 
13
- <%= current_page.data.title %>
14
- ==============================
15
-
16
11
  <%= current_page.data.blurb %>
17
12
 
18
13
 
@@ -28,8 +23,6 @@ build output.
28
23
  title: Invisible On Free
29
24
  blurb: This page is not available for target `:free`, as a demonstration of
30
25
  the use of targets.
31
- layout: template-logo-small
32
- navigator: false
33
26
  exclude:
34
27
  - :free
35
28
  ---
@@ -40,4 +33,4 @@ included in the target list will be included in _Middlemac_ navigation.
40
33
  Using `exclude` overrides `target`.
41
34
 
42
35
  Note that `target` and `exclude` are lists; you can specify multiple targets and
43
- [features][features_overview] (which also can be used).
36
+ features (which also can be used).
@@ -1,18 +1,13 @@
1
1
  ---
2
- title: Invisible On Pro
3
- blurb: This page is not available for target `:pro`, as a demonstration of
4
- the use of targets.
5
- layout: template-logo-small
6
- navigator: false
2
+ title: Invisible On Pro
3
+ blurb: This page is not available for target `:pro`, as a demonstration of
4
+ the use of targets.
7
5
  exclude:
8
6
  - :pro
9
7
  ---
10
8
  <%= md_links %>
11
9
  <%= md_images %>
12
10
 
13
- <%= current_page.data.title %>
14
- ==============================
15
-
16
11
  <%= current_page.data.blurb %>
17
12
 
18
13
 
@@ -28,8 +23,6 @@ build output.
28
23
  title: Invisible On Pro
29
24
  blurb: This page is not available for target `:pro`, as a demonstration of
30
25
  the use of targets.
31
- layout: template-logo-small
32
- navigator: false
33
26
  exclude:
34
27
  - :pro
35
28
  ---
@@ -40,4 +33,4 @@ included in the target list will be included in _Middlemac_ navigation.
40
33
  Using `exclude` overrides `target`.
41
34
 
42
35
  Note that `target` and `exclude` are lists; you can specify multiple targets and
43
- [features][features_overview] (which also can be used).
36
+ features (which also can be used).
@@ -0,0 +1,295 @@
1
+ ---
2
+ title: Apple Help Book Structure
3
+ blurb: What is an Apple Help Book composed from, anyway? Why are they so hard
4
+ to write, and why are they such a mystery?
5
+ ---
6
+ <%= md_links %>
7
+ <%= md_images %>
8
+
9
+ <%= current_page.data.blurb %>
10
+
11
+ Apple’s [Authoring Apple Help][1] documentation, while still accurate, is
12
+ horribly outdated and a little bit misleading at times. There are countless
13
+ Stack Overflow and Apple Support forum posts requesting help for developing
14
+ Help Books, and several blog posts with instructions on how to build a working
15
+ Help Book (and some of this advice doesn’t always work).
16
+
17
+ In essence, though, Help Books are just websites put into Apple’s bundle
18
+ format, and registered with macOS via a Cocoa application’s `Info.plist` file
19
+ and matching Help Book bundle `Info.plist` file. Help Books also have a help
20
+ index file so that your Help Book can be searched (even when not running your
21
+ application).
22
+
23
+ In this topic, we’ll examine some of these inconsistencies, and look at the
24
+ minimum requirements to build a valid Apple Help Book.
25
+
26
+
27
+ Inconsistencies
28
+ ---------------
29
+
30
+ Inconsistencies in Apple’s documentation make it burdensome to create Apple
31
+ Help Books. For example, this [Authoring Help Pages][1] paragraph states:
32
+
33
+ > After you have identified the subjects covered in your help book, you need
34
+ to create HTML files for your help pages. To ensure that your help displays
35
+ properly in Help Viewer, _your help files should comply with the HTML 4.01
36
+ specification_.
37
+
38
+ And then:
39
+
40
+ > _Your main file—which contains the AppleTitle meta tag—should conform to
41
+ the XHTML 1.0 specification_.
42
+
43
+ Later:
44
+
45
+ > Most of the metadata recognized by Help Viewer is optional. However, you
46
+ must include the AppleTitle meta tag on one page in the root of your help
47
+ book for Help Viewer to properly identify and display your help book.
48
+
49
+ These are nonsense! Apple’s own Help Files have been written in HTML5
50
+ since at least macOS 10.10, and none of them contain some mystical
51
+ `AppleTitle` meta tag.
52
+
53
+ Others have tried to demystify the creation of Help Books, too, but they tend to
54
+ muddy the waters. Without embarrassing anyone, a highly-ranked blog article
55
+ states:
56
+
57
+ > The second thing to note is that in spite of the documentation implying that
58
+ you can use your help bundle identifier to refer to your help bundle (which
59
+ would, admittedly, make sense), you can’t. You need to use the `HPDBookTitle`
60
+ value.
61
+
62
+ The `HPDBookTitle` doesn’t work. Or perhaps it did before macOS 10.10, but on
63
+ all of my test systems going back to 10.10, the use of the Help Book’s
64
+ `CFBundleIdentifier` is required to be referenced in your application’s
65
+ `Info.plist` file.
66
+
67
+ The same article goes on to state:
68
+
69
+ > The third thing relates to `HPDBookAccessPath`. The file referred to there
70
+ must be a valid XHTML file. In particular, it cannot be an HTML5 document —
71
+ that will simply not work, and the error messages you get on the system
72
+ console are completely uninformative.
73
+
74
+ Again, this might have been true in the old days (_Middlemac_ 2.0 and earlier
75
+ made pains to follow this rule), but this hasn’t been the case since at least
76
+ macOS 10.10. Apple’s own help ships with HTML5 files at the `HPDAccessPath`.
77
+
78
+
79
+ Working Help Books, Made Simple
80
+ -------------------------------
81
+
82
+ The make a working Help Book for any macOS Cocoa application, you need simply
83
+ three things:
84
+
85
+ <% helpbook_task "help_archi_1", "A valid macOS bundle containing your help contents…" do %>
86
+
87
+
88
+ Bundles in macOS nearly always have the same structure:
89
+
90
+ ~~~
91
+ Contents/
92
+ Info.plist
93
+ {stuff}
94
+ ~~~
95
+
96
+ An application or extension might look like this:
97
+
98
+ ~~~
99
+ Contents/
100
+ Info.plist
101
+ MacOS/
102
+ Resources/
103
+ ~~~
104
+
105
+ A Help Bundle should look like similar to an application bundle, but given
106
+ that it has no executable code (in the `MacOS` directory), it will contain
107
+ only resources:
108
+
109
+ ~~~
110
+ Contents/
111
+ Info.plist
112
+ Resources/
113
+ index.html
114
+ ~~~
115
+
116
+ If we put an HTML file into `Resources/` and configure the `.plist` files
117
+ correctly, this will produce a working Help Book. However, bundles can be
118
+ localized, and support for localized resources is built into the operating
119
+ system. Thus, a help bundle should look like this:
120
+
121
+ ~~~
122
+ Contents/
123
+ Info.plist
124
+ Resources/
125
+ en.lproj/
126
+ {non-localized resources}
127
+ ~~~
128
+
129
+ These “non-localized resources” can be loose files or directories, having any
130
+ name allowed by the operating system.
131
+
132
+ A Help Book consisting of multiple languages might look like this:
133
+
134
+ ~~~
135
+ Contents/
136
+ Info.plist
137
+ Resources/
138
+ en.lproj/
139
+ es.lproj/
140
+ ru.lrpoj/
141
+ logo.png
142
+ shared_resources/
143
+ ~~~
144
+
145
+ Now all we have to do is ensure that our valid bundle is truly valid is ensure
146
+ that its `Info.plist` identifies it as a proper bundle, and points the Apple
147
+ help system toward the correct resources.
148
+
149
+ In contrary to [Apple’s documentation][1], this table only shows keys that are
150
+ used and relevant today:
151
+
152
+ | Raw Key Name | Sample Value (bold values must be as shown) | Comments
153
+ |-------------------------------|---------------------------------------------|---------
154
+ | CFBundleDevelopmentRegion | en-us | Note the use of a hyphen, whereas Apple demonstrates an underscore.
155
+ | CFBundleIdentifier | com.balthisar.middlemac.free.help | To be used in your application’a `CFBundleHelpBookName`.
156
+ | CFBundleInfoDictionaryVersion | **6.0** | Required as is.
157
+ | CFBundleName | Middlemac | This name can be localized.
158
+ | CFBundlePackageType | **BNDL** | Required as is.
159
+ | CFBundleShortVersionString | 3.0.0 | Short version of your version string.
160
+ | CFBundleSignature | **hbwr** | Required as is.
161
+ | CFBundleVersion | 3.0.0 | Long version of your version string.
162
+ | HPDBookAccessPath | index.html | The file that should be loaded when Apple Help Viewer starts.
163
+ | HPDBookIconPath | SharedGlobalArt/free-icon_32x32@2x.png | Icon used to represent the Help Book, especially during system-wide searches.
164
+ | HPDBookIndexPath | Middlemac.helpindex | The name of your index file, relative to your `.lproj` directory.
165
+ | HPDBookTitle | Middlemac Help | The title of the Help Book, and it can be localized.
166
+ | HPDBookType | **3** | Required as is.
167
+
168
+
169
+ <% end %>
170
+ <% helpbook_task "help_archi_2", "Located in the Resources/ directory of your application, and…" do %>
171
+
172
+
173
+ The requirement is satisfied by putting the help bundle into your application
174
+ here:
175
+
176
+ ~~~
177
+ YourApp.app/
178
+ Contents/
179
+ Resources/
180
+ YourHelpFile.help/
181
+ ~~~
182
+
183
+ Do _not_ put a help bundle into your localized resources folder in your
184
+ application, even if it’s a `Base.lproj`. It may look like it works for
185
+ your development language, but it will break on other Macs operating with
186
+ different locales:
187
+
188
+ ~~~
189
+ YourApp.app/
190
+ Contents/
191
+ Resources/
192
+ Base.lproj/
193
+ YourHelpFile.help/ <- don't do this!
194
+ en.lproj/
195
+ YourHelpFile.help/ <- don't do this!
196
+ YourHelpFile.help/ <- this is correct
197
+ Contents/
198
+ Resources/
199
+ en.lproj/
200
+ es.lproj/
201
+ ru.lrpoj/
202
+ ~~~
203
+
204
+ To ensure that your Help Book ends up in the correct directory when you build
205
+ your application, make sure you import it to your project as a
206
+ _folder reference_; if it’s shown in the organizer with a disclosure triangle
207
+ that lets you browse the contents, then you’ve done it wrong, and it will not
208
+ copy properly during your “Copy Resources” build phase!
209
+
210
+ ![Import as folder reference][apple_help_books_folder_reference]
211
+
212
+ Additionally, make sure that the Help Book has the correct target membership,
213
+ in order to ensure that it will be copied during the “Copy Resources” build
214
+ phase, _and_ do _not_ localize this file. It’s already localized internally
215
+ by virtue of being a localized bundle.
216
+
217
+ ![Correct project membership][apple_help_books_project_membership]
218
+
219
+
220
+ <% end %>
221
+ <% helpbook_task "help_archi_3", "Two correct keys in your application’s Info.plist" do %>
222
+
223
+
224
+ This last point is satisfied by ensuring that your application’s `Info.plist`
225
+ points to the correct help bundle and knows the bundle ID of the bundle.
226
+
227
+ `CFBundleHelpBookFolder`
228
+
229
+ : What’s the name of your help bundle in the file system? In the examples
230
+ above, we’ve been showing `YourHelpFile.help`. This is the only value
231
+ you need to specify in your application. No paths are needed; Cocoa knows
232
+ how to find resources, such as your help bundle, within its own bundle.
233
+
234
+ `CFBundleHelpBookName`
235
+
236
+ : What’s the `CFBundleIdentifier` of the bundle that you want to use for
237
+ your application’s help? This is specified in your help bundle’s
238
+ `Info.plist` file.
239
+
240
+ <% end %>
241
+
242
+
243
+ Special Features
244
+ ----------------
245
+
246
+ Although principally a glorified web browser, Apple Help Viewer and Help Books
247
+ do provide a couple of advantages not enjoyed by standard browser-based systems:
248
+
249
+ - Anchor-based navigation using Apple’s `NSHelpManager` methods, as well as
250
+ special anchor `href` values, if desired.
251
+ - The ability to search your Help Book within Apple Help Viewer.
252
+ - The ability for your application’s Help Book to be searched and display
253
+ results while searching from within another Help Book.
254
+
255
+ This is all enabled by including a `.helpindex` file within your Help Book,
256
+ and can be supplemented by including an `ExactMatch.plist` file to aid in
257
+ searching.
258
+
259
+ The fact is, Apple's `helpd` (Help Data) daemon will create this help index for
260
+ you automatically if you fail to include one, and it will be kept for handy
261
+ reference in its caches. However, you have much more fine-grained control over
262
+ the indexing process if you use `hiutil` yourself in order to create these
263
+ indexes to your own specifications.
264
+ {: .note .callout}
265
+
266
+ The help index contains, among other things, a list of all of the files and
267
+ anchors in your Help Book and some word frequency lists that provided weighted
268
+ results for searching. In addition, this index contains summary information for
269
+ each of the pages, and some additional metadata. You can use `hiutil` to
270
+ examine most of the contents of a help index, and use a tool such as
271
+ [`hiextract`][2] to examine the word frequency lists.
272
+
273
+ If you’re using _Middlemac_ on a macOS computer, then `hiutil` will
274
+ be handled automatically for you, and `ExactMatch.plist` will be created for
275
+ you, too.
276
+ {: .tip .callout}
277
+
278
+
279
+
280
+ Style and Functionality
281
+ -----------------------
282
+
283
+ While these few, simple requirements produce a working Help Book, they won’t
284
+ produce a very pretty or usable one. Like any complex or simple web site,
285
+ everything else is typically up to you. Navigation, styles, JavaScripts,
286
+ correct `<HEAD>` information, and so on. Apple Help Viewer is simply a
287
+ browser with a couple of added features, after all.
288
+
289
+ And certainly you’re interested in using a tool like _Middlemac_ so that you
290
+ can avoid all of that hassle. If you’re interested in how modern Apple Help
291
+ Books work, though, continue on to the [next section][dissect_modern_help].
292
+
293
+
294
+ [1]: https://developer.apple.com/library/content/documentation/Carbon/Conceptual/ProvidingUserAssitAppleHelp/authoring_help/authoring_help_book.html
295
+ [2]: https://github.com/balthisar/hiextract
@@ -0,0 +1,246 @@
1
+ ---
2
+ title: Modern Apple Help Books
3
+ blurb: Apple doesn’t showcase it, but it provides the tools to build their
4
+ Help Books with every shipping version of macOS.
5
+ ---
6
+ <%= md_links %>
7
+ <%= md_images %>
8
+
9
+ <%= current_page.data.blurb %>
10
+
11
+ Since macOS 10.10 (“Yosemite”), Apple has been using a JavaScript-based
12
+ Help Book engine named “Eagle,” and has been gradually updating most of their
13
+ application and macOS documentation to take advantage of it. You can find
14
+ all of this engine located in `/Library/Documentation/Resources/Eagle/` on
15
+ macOS 10.10 through macOS 10.13 (macOS 10.14 doesn’t seem to include it).
16
+
17
+ This engine provides a common look, feel, and experience across all of Apple’s
18
+ Help Books, and by taking advantage of Eagle, _Middlemac_ ensures that your
19
+ own Help Books enjoy this same consistency.
20
+
21
+
22
+ “Modern” Help
23
+ -----------
24
+
25
+ Modern Help Books are the Help Books you’ve seen on macOS Help, built-in
26
+ application Help, and Apple software Help since macOS 10.10 was released. The
27
+ term “modern” is only as valid as the term “next gen,” in that something newer
28
+ always comes along.
29
+
30
+ So it is with Apple, in that starting with macOS 10.13, some of the built in
31
+ applications have been shipping with Help Books using their new “Harrier”
32
+ Help Book development system. It’s likely that over time, shipping applications
33
+ will be migrated toward this new look, too.
34
+
35
+ _Middlemac_ will try to keep up with Apple Help technologies, and in the
36
+ meantime, version 3.0 produces Help Books meeting the same standards as current,
37
+ shipping Apple Products.
38
+
39
+
40
+ Modern Help Universal Deployment
41
+ --------------------------------
42
+
43
+ With Eagle, Apple has strived towards universal deployment of its Help Books,
44
+ meaning that they are just as functional when served to a browser as they are
45
+ when used in Apple Help Viewer. This also means that Apple strives to provide
46
+ visual and functional consistency from Help Book to Help Book. This means that
47
+ when served to a browser:
48
+
49
+ - You have the same navigation menu that you would have in Apple Help Viewer.
50
+ - You have the ability to search your Help Book within the browser environment,
51
+ just as you do within Apple Help Viewer.
52
+ - The pages have the same appearance and behavior in the browser as they do in
53
+ Apple Help Viewer.
54
+ - Certain features are automatic if the right conditions exist for them to
55
+ exist, such as Copyright Pages, navigation, Copyright Notices, and so on.
56
+ - A single Help Book can provide its content in multiple languages, just as it
57
+ would in the browser.
58
+
59
+ In short, an Eagle Help Book (or a Help Book produced by _Middlemac_) will work
60
+ equally well when used in Apple Help Viewer as it does in a browser. And I mean
61
+ the same Help Book; there’s no need to generate separate “Help Viewer” and
62
+ “browser” versions.
63
+
64
+
65
+ Eagle’s Heart
66
+ -------------
67
+
68
+ A modern Help Book is operated completely from a single HTML file within the
69
+ Help Book. The `Resources/index.html` file uses JavaScript to load the content
70
+ from your HTML files (in any localized directory) and presents them to the
71
+ viewer. It also handles loading of all styles, operates special features such
72
+ as tasks, performs searching, generates the navigation sidebar, and enables
73
+ Copyright Pages, loads asides, and so on.
74
+
75
+ All of these functions fall into three broad categories:
76
+
77
+ <% helpbook_task "help_modern_1", "Navigation" do %>
78
+
79
+ “Navigation” encompasses things such a providing a nested menu structure for the
80
+ Table of Contents, and enabling links to Copyright pages, if provided. The
81
+ structure, depth, and relationships between Help Book pages which is required to
82
+ provide this functionality is defined in the `navigation.json` file, which
83
+ _Middlemac_ builds for you automatically based on your sitemap and the data that
84
+ you provide in frontmatter.
85
+
86
+ Using this Help Book’s `free` target `navigation.json` as an example (with much
87
+ of the content stripped away for brevity), we can examine how Eagle constructs
88
+ its navigation.
89
+
90
+ | Key | Sample Value (bold values static) | Comments
91
+ |----------------------------------------------------|-------------------------------------|----------
92
+ | birdseed_version | **5** | Probably an internal Apple framework version.
93
+ | build_id | "3.0.0" | Doesn’t affect Help Book.
94
+ | build_date | "2018.06.09-16:00:31" | Doesn’t affect Help Book.
95
+ | collect_feedback | **false** | Probably refers to Apple’s "Was this page helpful?" feature. Unused by _Middlemac_.
96
+ | copyright | "topic-en.lproj/-acknowledgements" | This is the `$topic_id` of the page to be used as the Copyright Page.
97
+ | copyright_text | "© 2018 Jim Derry." | Displayed on every page when viewed in browser, or when Help Viewer prints output.
98
+ | css | **""** | Unknown. Seems to have no effect on Help Book.
99
+ | enable_tracking | **false** | Probably an Apple tracking system. Unused by _Middlemac_.
100
+ | framework | "middlemac-3.0.0" | Probably an internal Apple framework reference.
101
+ | icon | "SharedGlobalArt/icon_32x32@2x.png" | Icon for the book. Unsure why this is different than the .plist’s HPDBookIconPath.
102
+ | landing | "topic-Resources-en.lproj/" | This is the `$topic_id` of the page to be used as the Landing Page.
103
+ | locale | "en" | The locale of the JSON file.
104
+ | platform | **"mac"** | Probably because iTunes also supports Windows.
105
+ | printable_page | **""** | Unknown.
106
+ | product | "Middlemac" | Seems to be inactive.
107
+ | quick_links | **[]** | Unknown.
108
+ | sections | [Array] | Sections appear in the TOC with their given childen. Child order is important, but order of the sections in this array is not.
109
+ | &nbsp;&nbsp;$section_id | "section-compose_project-helpers" | Specify a $section_id for this section. Used to build the TOC.
110
+ | &nbsp;&nbsp;&nbsp;&nbsp;name | "Helpers" | The name of the section as it will appear in the TOC.
111
+ | &nbsp;&nbsp;&nbsp;&nbsp;children | [Array] | An array of `$topic_id` indicating the pages that constitute this section.
112
+ | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$topic_id | "topic-helpers-helpers" | An element of the `$topic_id` list.
113
+ | show_previous_next | false | When set to true, enables previous and next page navigators.
114
+ | source_schema | **"apd-schema"** | Unknown.
115
+ | title | "Middlemac Help" | This will be used as the `<title>` of your landing page, reguardless of the `<title>` you set in the HTML document. Of course, it’s also used in the Help Viewer title bar and browser title banner.
116
+ | toc | [Array] | This array of `$topic_id` or `$section_id` defines the table of contents used in the sidebar.
117
+ | &nbsp;&nbsp;$topic_id -or- $section_id | "section-en.lproj/-reference" | An element of the list.
118
+ | topics | [Array] | An array of `$topic_id`, as defined below.
119
+ | &nbsp;&nbsp;$topic_id | "topic-asides-aside_description" | Specify a `$topic_id` to represent a particular page.
120
+ | &nbsp;&nbsp;&nbsp;&nbsp;name | "What is an aside?" | The name of the topic. Will be used in the TOC.
121
+ | &nbsp;&nbsp;&nbsp;&nbsp;summary | "A short article describing…" | The summary is shown in search results.
122
+ | &nbsp;&nbsp;&nbsp;&nbsp;href | "asides/aside_description.html" | The lproj-relative path of the file.
123
+ | &nbsp;&nbsp;&nbsp;&nbsp;categories | [Array] | An array of `$category_name`; these will be applied as body classes when the document it loaded. Some categories have special purposes in Eagle, such a `aside` and `copyright`.
124
+ | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$category_name | "aside" | An element of the list.
125
+ | urls | **{}** | Unknown.
126
+ | version | "3.0.0" | Probably the application version, but it’s not known where this is used in the Help Book.
127
+
128
+
129
+ _Middlemac_ build this file for you automatically based on the `.lproj/` language,
130
+ settings from your `config.rb` file, and page data including the overall site
131
+ map as well as data from the pages’ frontmatter. If you feel like
132
+ reverse-engineering Apple’s feedback and tracking mechanisms, then feel free
133
+ to modify this file to your liking.
134
+
135
+
136
+ <% end %>
137
+ <% helpbook_task "help_modern_2", "Search" do %>
138
+
139
+ When viewing a Help Book in Apple Help Viewer, the `.helpindex` file generated
140
+ by `hiutil` is used. However this is a file produced by the old, deprecated
141
+ `NSArchiver`, and is a binary format that JavaScript cannot parse or
142
+ understand. Thus Eagle Help Books when viewed in the web browser refer to a
143
+ different file in order to provide search results: `searchTree.json`.
144
+
145
+ This file is a trie in JSON format, which is a very efficient structure for
146
+ searching words.
147
+
148
+ Apple _probably_ builds this file from the word frequency information gathered
149
+ by `hiutil`, but because unarchiving the `.helpindex` requires the use of
150
+ private Apple API’s, _Middlemac_ will generate this file from the contents of
151
+ your pages itself. Thus there's the possibility that if Apple were to generate
152
+ this file for you, there might be differences; however Apple is unlikely to
153
+ perform this service for you.
154
+
155
+ Words encountered as frontmatter `keywords` are given extra weight, and words
156
+ encountered as frontmatter `exactmatch` are given a _lot_ of extra weight. The
157
+ same list of stopwords (words ignored for searches) is used to build this file
158
+ as to build the `.helpindex`.
159
+
160
+ ##### Search Redirects
161
+
162
+ Both Apple’s `hiutil` and _Middlemac_’s `searchTree.json` indexer index
163
+ individual pages. Search results link to those individual pages. However, recall
164
+ that an Eagle Help Book never displays those pages directly; every page is
165
+ loaded via JSON by the main `index.html` file, which is the only real “page”
166
+ ever displayed.
167
+
168
+ This means that when a page is listed as a search result, the link will
169
+ attempt to deliver that specific page to you. That specific page is not
170
+ `index.html`, and so there’s no loaded JavaScript or CSS. That’s not a good
171
+ experience for users, and so _Middlemac_ addresses this issue by adding
172
+ JavaScript to each of these individual pages which directs to the main
173
+ `index.html`, including the correct URL query to load the desired page. By
174
+ placing this redirect in the `<head>`, it’s usually fast enough to prevent
175
+ loading the entire page into Apple Help Viewer, thus avoiding temporarily
176
+ displaying unstyled pages.
177
+
178
+ Apple’s JavaScript, of course, strips everything from the `<head>`, so when
179
+ the file is ultimately AJAX-loaded into `index.html`, no circular refresh
180
+ loops occur.
181
+
182
+
183
+ <% end %>
184
+ <% helpbook_task "help_modern_3", "Localization" do %>
185
+
186
+ Eagle also provides localization features for browser-served pages that are
187
+ handled automatically by Apple Help Viewer. For example, Apple Help Viewer
188
+ knows that the OS is configured for Spanish, and will use the `Spanish.lproj/`
189
+ or `es.lproj/` directory contents automatically. Apple Help Viewer will also
190
+ fall back to `Base.lproj/` or `en.lproj/` if the localized directories are not
191
+ part of the Help Book.
192
+
193
+ Browsers, while they can provide the locale, aren’t nearly so smart about
194
+ selecting paths properly, so Apple’s JavaScripts assume this role. The only
195
+ caveat is that these JavaScripts don’t honor any type of `Base.lproj/`
196
+ directory and `CFBundleDevelopmentRegion`. And because the browser is unable
197
+ to select a proper `.lproj/` on its own, we have to provide some data that
198
+ allows the JavaScript to select the proper folder.
199
+
200
+ Additionally, because the locale determined by the browser is potentially not
201
+ accurate for a variety of reasons, Apple’s JavaScripts present a language
202
+ switcher on your Help Book’s landing page, if your project is multilingual.
203
+
204
+ Thus, to make multilingual Help Books work in Apple Help Viewer, simply place a
205
+ localized `.lproj/` for each language you support into the Help Book. To make
206
+ multilingual Help Books work in the browser, though, we need to specify some
207
+ additional metadata files: `Resources/locale-info.json` and
208
+ `*.lproj/locale-list.json`.
209
+
210
+ Of course, _Middlemac_ handles these two files for you, as long as you use the
211
+ correct `.lproj/` directory name per
212
+ `SharedGlobalAssets/_data/locale-list.json`, which is Apple’s standard locale
213
+ list file. The [Directory Conventions][directory_conventions] topic shows which
214
+ locales are supported out of the box.
215
+ {: .tip .callout}
216
+
217
+ Each `.lproj/` directory must contain a `locale-info.json`, which simply
218
+ indicates some basic data about the locale present in that particular directory.
219
+
220
+ More importantly, the site root must contain a `locale-list.json` which
221
+ indicates all of the locales in the present Help Book, and, importantly, which
222
+ `.lproj/` directory the contents can be found.
223
+
224
+ The `_data/locale-list.json` serves as a master list of all of the possible
225
+ localizations. It may not be all inclusive, so feel free to add additional
226
+ localizations if not already covered by this file. The
227
+ `Resources/locale-list.json`, generated by _Middlemac_, contains _only_ the
228
+ locales used in the current project.
229
+ {: .tip .callout}
230
+
231
+
232
+ <% end %>
233
+
234
+
235
+ ## Middlemac and Eagle
236
+
237
+ _Middlemac_ builds Eagle Help Books. Apple’s JavaScript has been modified
238
+ slightly to provide support for non-flat file structures, and support for
239
+ `<image>` tag `srcset` attributes.
240
+
241
+ Some of Apple’s CSS has been overridden with more specificity to provide
242
+ improvements to things such as `<dl>` that Apple doesn’t use often, but are
243
+ critical for certain workflows.
244
+
245
+ When you use _Middlemac_, you are building a real, true, Eagle Help Book, and
246
+ not a copy, clone, or simulation.
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: Apple Help Books
3
+ layout: layout-blank
4
+ ---