middlemac 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ ---