middlemac 2.0.0 → 3.1.2

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 (518) hide show
  1. checksums.yaml +5 -5
  2. data/.gitattributes +5 -0
  3. data/.gitignore +6 -0
  4. data/CHANGELOG.md +44 -10
  5. data/Gemfile +11 -1
  6. data/README.md +38 -6
  7. data/Rakefile +20 -4
  8. data/documentation_project/.gitignore +1 -1
  9. data/documentation_project/Contents/Info.plist.erb +5 -3
  10. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/_data/globals.yml +0 -0
  11. data/documentation_project/Contents/Resources/SharedGlobalAssets/_data/locale-list.json +318 -0
  12. data/documentation_project/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern-aside.haml +19 -0
  13. data/documentation_project/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern.haml +61 -0
  14. data/documentation_project/Contents/Resources/SharedGlobalAssets/_layouts/layout-blank.haml +11 -0
  15. data/documentation_project/Contents/Resources/SharedGlobalAssets/_layouts/layout-hpd.haml +14 -0
  16. data/documentation_project/Contents/Resources/SharedGlobalAssets/_partials/_yard_middlemac_config.erb +366 -0
  17. data/documentation_project/Contents/Resources/SharedGlobalAssets/_partials/_yard_middlemac_helpers.erb +897 -0
  18. data/documentation_project/Contents/Resources/SharedGlobalAssets/_partials/_yard_middlemac_helpers_extended.erb +369 -0
  19. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_pagegroups_resources.erb → SharedGlobalAssets/_partials/_yard_middlemac_resources.erb} +342 -37
  20. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_config.erb → SharedGlobalAssets/_partials/_yard_mmtargets_config.erb} +15 -110
  21. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_helpers.erb → SharedGlobalAssets/_partials/_yard_mmtargets_helpers.erb} +4 -4
  22. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_helpers_extended.erb → SharedGlobalAssets/_partials/_yard_mmtargets_helpers_extended.erb} +6 -2
  23. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_instance.erb → SharedGlobalAssets/_partials/_yard_mmtargets_instance.erb} +1 -1
  24. data/documentation_project/Contents/Resources/{Base.lproj/assets/partials/_yard_targets_resources.erb → SharedGlobalAssets/_partials/_yard_mmtargets_resources.erb} +2 -2
  25. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-120x120.png +0 -0
  26. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-152x152.png +0 -0
  27. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-57x57.png +0 -0
  28. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-76x76.png +0 -0
  29. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad.png +0 -0
  30. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad_2x.png +0 -0
  31. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone.png +0 -0
  32. data/documentation_project/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone_2x.png +0 -0
  33. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256.png +0 -0
  34. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256@2x.png +0 -0
  35. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32.png +0 -0
  36. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32@2x.png +0 -0
  37. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/apple.css +3831 -0
  38. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0200_LeftArrow_2x.png +0 -0
  39. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0201_RightArrow_2x.png +0 -0
  40. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow-blue.svg +1 -0
  41. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow.svg +1 -0
  42. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/ask-siri.svg +1 -0
  43. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-clear-search.png +0 -0
  44. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-2.png +0 -0
  45. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-learnmore.png +0 -0
  46. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close.png +0 -0
  47. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search-small.png +0 -0
  48. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search.png +0 -0
  49. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-rtl.png +0 -0
  50. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small-rtl.png +0 -0
  51. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small.png +0 -0
  52. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle-rtl.png +0 -0
  53. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle.png +0 -0
  54. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc.png +0 -0
  55. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/changelanguage_icon2x.png +0 -0
  56. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/force-click.svg +1 -0
  57. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow-2.svg +1 -0
  58. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow.png +0 -0
  59. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-close.svg +1 -0
  60. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link-lg.png +0 -0
  61. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link.png +0 -0
  62. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-pause.svg +1 -0
  63. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-play.svg +1 -0
  64. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-replay.svg +1 -0
  65. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-black.png +0 -0
  66. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-eu.png +0 -0
  67. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning.png +0 -0
  68. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-120x120.png +0 -0
  69. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-152x152.png +0 -0
  70. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-57x57.png +0 -0
  71. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-76x76.png +0 -0
  72. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad.png +0 -0
  73. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad_2x.png +0 -0
  74. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone.png +0 -0
  75. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone_2x.png +0 -0
  76. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/movie-play_2x.png +0 -0
  77. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-left.svg +1 -0
  78. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-left.png +0 -0
  79. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-right.png +0 -0
  80. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-right.svg +1 -0
  81. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/search_image_large.svg +1 -0
  82. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/tip.svg +1 -0
  83. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_blue_large.svg +1 -0
  84. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_large.svg +1 -0
  85. data/documentation_project/Contents/Resources/{Base.lproj/assets/stylesheets/_github.scss → SharedGlobalAssets/css/middlemac/github.css.scss} +0 -0
  86. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/middlemac.css.scss +129 -0
  87. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/note.svg +19 -0
  88. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/tip.svg +1 -0
  89. data/documentation_project/Contents/Resources/SharedGlobalAssets/css/middlemac/warning.svg +19 -0
  90. data/documentation_project/Contents/Resources/SharedGlobalAssets/fonts/_dummy.txt +1 -0
  91. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/all-sample.png +0 -0
  92. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/all-sample@2x.png +0 -0
  93. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_256x256.png +0 -0
  94. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_256x256@2x.png +0 -0
  95. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_32x32.png +0 -0
  96. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/free-icon_32x32@2x.png +0 -0
  97. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo-small.png +0 -0
  98. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo-small@2x.png +0 -0
  99. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo.png +0 -0
  100. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/free-middlemac-logo@2x.png +0 -0
  101. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo-small.png +0 -0
  102. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo-small@2x.png +0 -0
  103. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo.png +0 -0
  104. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/middlemac-logo@2x.png +0 -0
  105. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo-small.png +0 -0
  106. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo-small@2x.png +0 -0
  107. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo.png +0 -0
  108. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/free-logo@2x.png +0 -0
  109. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo-small.png +0 -0
  110. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo-small@2x.png +0 -0
  111. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo.png +0 -0
  112. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/mm-targets/pro-logo@2x.png +0 -0
  113. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_256x256.png +0 -0
  114. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_256x256@2x.png +0 -0
  115. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_32x32.png +0 -0
  116. data/documentation_project/Contents/Resources/{shared → SharedGlobalAssets/images}/pro-icon_32x32@2x.png +0 -0
  117. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo-small.png +0 -0
  118. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo-small@2x.png +0 -0
  119. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo.png +0 -0
  120. data/documentation_project/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/images/pro-middlemac-logo@2x.png +0 -0
  121. data/documentation_project/Contents/Resources/SharedGlobalAssets/js/app.5.1.27.js +6295 -0
  122. data/documentation_project/Contents/Resources/SharedGlobalAssets/js/middlemac-debug.js +20 -0
  123. data/documentation_project/Contents/Resources/SharedGlobalAssets/js/vendor.js +226 -0
  124. data/documentation_project/Contents/Resources/en.lproj/010_what_is_middlemac/index.html.md.erb +114 -0
  125. data/documentation_project/Contents/Resources/en.lproj/020_apple_help_features/index.html.md.erb +241 -0
  126. 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
  127. data/documentation_project/Contents/Resources/en.lproj/030_get_started/020_your_first_help_book.html.md.erb +374 -0
  128. data/documentation_project/Contents/Resources/en.lproj/030_get_started/030_serve_your_help_book.html.md.erb +97 -0
  129. data/documentation_project/Contents/Resources/en.lproj/030_get_started/040_build_your_help_book.html.md.erb +56 -0
  130. 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
  131. 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
  132. data/documentation_project/Contents/Resources/en.lproj/030_get_started/070_about_ruby.html.md.erb +194 -0
  133. data/documentation_project/Contents/Resources/en.lproj/030_get_started/aside_frontmatter.html.md.erb +64 -0
  134. data/documentation_project/Contents/Resources/en.lproj/030_get_started/index.html.md.erb +4 -0
  135. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/010_setup.html.md.erb +204 -0
  136. 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
  137. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/030_directory_conventions.html.md.erb +206 -0
  138. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/040_groups.html.md.erb +96 -0
  139. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/050_targets_and_features.html.md.erb +220 -0
  140. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/060_frontmatter.html.md.erb +98 -0
  141. 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
  142. 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
  143. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/080_helpers/020_markdown_links.html.md.erb +51 -0
  144. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/080_helpers/030_markdown_images.html.md.erb +52 -0
  145. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/080_helpers/index.html.md.erb +4 -0
  146. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/090_partials.html.md.erb +64 -0
  147. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/100_resources.html.md.erb +36 -0
  148. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/110_implement_features.html.md.erb +197 -0
  149. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/120_preview_build.html.md.erb +86 -0
  150. data/documentation_project/Contents/Resources/en.lproj/040_compose_project/index.html.md.erb +4 -0
  151. data/documentation_project/Contents/Resources/{Base.lproj/050_structure → en.lproj/040_compose_project}/not_free.html.md.erb +4 -11
  152. data/documentation_project/Contents/Resources/{Base.lproj/050_structure → en.lproj/040_compose_project}/not_pro.html.md.erb +4 -11
  153. data/documentation_project/Contents/Resources/en.lproj/100_reference/010_apple_help_books/010_dissect_help_book.html.md.erb +296 -0
  154. data/documentation_project/Contents/Resources/en.lproj/100_reference/010_apple_help_books/020_dissect_modern_help.html.md.erb +246 -0
  155. data/documentation_project/Contents/Resources/en.lproj/100_reference/010_apple_help_books/index.html.md.erb +4 -0
  156. data/documentation_project/Contents/Resources/en.lproj/100_reference/030_backwards_compatibility.html.md.erb +82 -0
  157. data/documentation_project/Contents/Resources/en.lproj/100_reference/040_directory_reference.html.md.erb +276 -0
  158. data/documentation_project/Contents/Resources/en.lproj/100_reference/050_xcode_integration.html.md.erb +165 -0
  159. 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
  160. data/documentation_project/Contents/Resources/en.lproj/100_reference/080_frontmatter_reference.html.md.erb +111 -0
  161. data/documentation_project/Contents/Resources/en.lproj/100_reference/120_api_reference/070_config_ref.html.md.erb +31 -0
  162. data/documentation_project/Contents/Resources/en.lproj/100_reference/120_api_reference/090_helpers_ref.html.md.erb +20 -0
  163. 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
  164. 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
  165. data/documentation_project/Contents/Resources/en.lproj/100_reference/120_api_reference/index.html.md.erb +4 -0
  166. data/documentation_project/Contents/Resources/en.lproj/100_reference/index.html.md.erb +4 -0
  167. data/documentation_project/Contents/Resources/{Base.lproj → en.lproj}/110_acknowledgements/index.html.md.erb +5 -7
  168. data/documentation_project/Contents/Resources/en.lproj/ExactMatch.plist.erb +15 -0
  169. data/documentation_project/Contents/Resources/{Base.lproj → en.lproj}/InfoPlist.strings.erb +0 -0
  170. data/documentation_project/Contents/Resources/en.lproj/asides/aside_description.html.md.erb +21 -0
  171. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_books_folder_reference.png +0 -0
  172. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_books_project_membership.png +0 -0
  173. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_aside_example.png +0 -0
  174. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_chapter_heading.png +0 -0
  175. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_copyright_footer.png +0 -0
  176. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_landing_links.png +0 -0
  177. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_language_chooser.png +0 -0
  178. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_navigator.png +0 -0
  179. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_see_also.png +0 -0
  180. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_title_icons.png +0 -0
  181. data/documentation_project/Contents/Resources/en.lproj/assets/images/apple_help_features_universal.png +0 -0
  182. data/documentation_project/Contents/Resources/en.lproj/assets/images/get_started_init_contents.png +0 -0
  183. data/documentation_project/Contents/Resources/en.lproj/assets/images/get_started_init_english.png +0 -0
  184. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_config_sets.png +0 -0
  185. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_plist_definitions.png +0 -0
  186. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_target_dependencies.png +0 -0
  187. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_target_template.png +0 -0
  188. data/documentation_project/Contents/Resources/en.lproj/assets/images/xcode_integration_tool_configuration.png +0 -0
  189. data/documentation_project/Contents/Resources/{Base.lproj → en.lproj}/index.html.md.erb +3 -13
  190. data/documentation_project/Contents/Resources/en.lproj/index_hpd.html.md.erb +4 -0
  191. data/documentation_project/Contents/Resources/en.lproj/locale-info.json.erb +16 -0
  192. data/documentation_project/Contents/Resources/en.lproj/navigation.json.erb +57 -0
  193. data/documentation_project/Contents/Resources/en.lproj/searchTree.json.erb +1 -0
  194. data/documentation_project/Contents/Resources/es.lproj/ExactMatch.plist.erb +15 -0
  195. data/{fixtures/middlemac_app/Contents/Resources/Base.lproj → documentation_project/Contents/Resources/es.lproj}/InfoPlist.strings.erb +0 -0
  196. data/documentation_project/Contents/Resources/es.lproj/index.html.md.erb +27 -0
  197. data/documentation_project/Contents/Resources/es.lproj/index_hpd.html.md.erb +4 -0
  198. data/documentation_project/Contents/Resources/es.lproj/locale-info.json.erb +16 -0
  199. data/documentation_project/Contents/Resources/es.lproj/navigation.json.erb +57 -0
  200. data/documentation_project/Contents/Resources/es.lproj/searchTree.json.erb +1 -0
  201. data/documentation_project/Contents/Resources/index.html.erb +118 -0
  202. data/documentation_project/Contents/Resources/locale-list.json.erb +14 -0
  203. data/documentation_project/Gemfile +4 -17
  204. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/project.pbxproj +79 -101
  205. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  206. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/Help (free).xcscheme +11 -6
  207. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/Help (pro).xcscheme +80 -0
  208. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/HelpViewerApp (free).xcscheme +1 -1
  209. data/documentation_project/HelpViewerApp/HelpViewerApp.xcodeproj/xcshareddata/xcschemes/HelpViewerApp (pro).xcscheme +1 -1
  210. data/documentation_project/HelpViewerApp/HelpViewerApp/AppDelegate.h +1 -0
  211. data/documentation_project/HelpViewerApp/HelpViewerApp/AppDelegate.m +6 -0
  212. data/documentation_project/HelpViewerApp/HelpViewerApp/Base.lproj/MainMenu.xib +39 -10
  213. data/documentation_project/HelpViewerApp/HelpViewerApp/Info-free.plist +4 -4
  214. data/documentation_project/HelpViewerApp/HelpViewerApp/Info-pro.plist +4 -4
  215. data/documentation_project/HelpViewerApp/HelpViewerApp/versions.xcconfig +8 -0
  216. data/documentation_project/HelpViewerApp/README.md +6 -26
  217. data/documentation_project/{Middlemac (free).help → Middlemac_(free).help}/.gitignore +0 -0
  218. data/documentation_project/{Middlemac (pro).help → Middlemac_(pro).help}/.gitignore +0 -0
  219. data/documentation_project/config.rb +83 -100
  220. data/documentation_project/makefile +93 -0
  221. data/documentation_project/middlemac.webloc +0 -0
  222. data/ext/trie/darray.c +673 -0
  223. data/ext/trie/darray.h +233 -0
  224. data/ext/trie/extconf.rb +23 -0
  225. data/ext/trie/fileutils.c +151 -0
  226. data/ext/trie/fileutils.h +36 -0
  227. data/ext/trie/tail.c +340 -0
  228. data/ext/trie/tail.h +207 -0
  229. data/ext/trie/trie-private.c +299 -0
  230. data/ext/trie/trie-private.h +31 -0
  231. data/ext/trie/trie.c +628 -0
  232. data/ext/trie/trie.h +40 -0
  233. data/ext/trie/triedefs.h +73 -0
  234. data/ext/trie/typedefs.h +117 -0
  235. data/features/helpers_features.feature +58 -0
  236. data/features/main_features.feature +23 -19
  237. data/features/support/env.rb +0 -14
  238. data/fixtures/middlemac_app/.gitignore +0 -1
  239. data/fixtures/middlemac_app/Contents/Info.plist.erb +5 -3
  240. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj/assets → SharedGlobalAssets}/_data/globals.yml +0 -0
  241. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_data/locale-list.json +318 -0
  242. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern-aside.haml +19 -0
  243. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_layouts/layout-apple-modern.haml +61 -0
  244. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_layouts/layout-blank.haml +11 -0
  245. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/_layouts/layout-hpd.haml +14 -0
  246. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj/assets/partials → SharedGlobalAssets/_partials}/_partials_dir_partial.erb +0 -0
  247. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-120x120.png +0 -0
  248. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-152x152.png +0 -0
  249. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-57x57.png +0 -0
  250. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-76x76.png +0 -0
  251. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad.png +0 -0
  252. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-ipad_2x.png +0 -0
  253. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone.png +0 -0
  254. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/convention/icon-webclip-iphone_2x.png +0 -0
  255. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256.png +0 -0
  256. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_256x256@2x.png +0 -0
  257. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32.png +0 -0
  258. data/fixtures/middlemac_app/Contents/Resources/{shared → SharedGlobalAssets/convention}/icon_32x32@2x.png +0 -0
  259. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/apple.css +3831 -0
  260. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0200_LeftArrow_2x.png +0 -0
  261. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/L0201_RightArrow_2x.png +0 -0
  262. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow-blue.svg +1 -0
  263. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/arrow.svg +1 -0
  264. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/ask-siri.svg +1 -0
  265. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-clear-search.png +0 -0
  266. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-2.png +0 -0
  267. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close-learnmore.png +0 -0
  268. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-close.png +0 -0
  269. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search-small.png +0 -0
  270. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-search.png +0 -0
  271. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-rtl.png +0 -0
  272. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small-rtl.png +0 -0
  273. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-small.png +0 -0
  274. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle-rtl.png +0 -0
  275. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc-toggle.png +0 -0
  276. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/button-toc.png +0 -0
  277. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/changelanguage_icon2x.png +0 -0
  278. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/force-click.svg +1 -0
  279. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow-2.svg +1 -0
  280. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-arrow.png +0 -0
  281. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-close.svg +1 -0
  282. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link-lg.png +0 -0
  283. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-external-link.png +0 -0
  284. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-pause.svg +1 -0
  285. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-play.svg +1 -0
  286. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-replay.svg +1 -0
  287. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-black.png +0 -0
  288. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning-eu.png +0 -0
  289. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-warning.png +0 -0
  290. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-120x120.png +0 -0
  291. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-152x152.png +0 -0
  292. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-57x57.png +0 -0
  293. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-76x76.png +0 -0
  294. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad.png +0 -0
  295. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-ipad_2x.png +0 -0
  296. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone.png +0 -0
  297. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/icon-webclip-iphone_2x.png +0 -0
  298. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/movie-play_2x.png +0 -0
  299. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-left.svg +1 -0
  300. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-left.png +0 -0
  301. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-paddle-right.png +0 -0
  302. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/nav-right.svg +1 -0
  303. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/search_image_large.svg +1 -0
  304. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/tip.svg +1 -0
  305. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_blue_large.svg +1 -0
  306. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/apple/css/img/toc_large.svg +1 -0
  307. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj/assets/stylesheets/_github.scss → SharedGlobalAssets/css/middlemac/github.css.scss} +0 -0
  308. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/middlemac.css.scss +129 -0
  309. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/note.svg +19 -0
  310. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/tip.svg +1 -0
  311. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/css/middlemac/warning.svg +19 -0
  312. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/fonts/_dummy.txt +1 -0
  313. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/images/global_thing_32x32.png +0 -0
  314. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/js/app.5.1.27.js +6295 -0
  315. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/js/middlemac-debug.js +20 -0
  316. data/fixtures/middlemac_app/Contents/Resources/SharedGlobalAssets/js/vendor.js +226 -0
  317. data/fixtures/middlemac_app/Contents/Resources/en.lproj/10_hello_world_file.html.md.erb +17 -0
  318. data/fixtures/middlemac_app/Contents/Resources/en.lproj/30_sample_group_number_one/index.html.md.erb +8 -0
  319. data/fixtures/middlemac_app/Contents/Resources/en.lproj/30_sample_group_number_one/page_one.html.md.erb +108 -0
  320. data/fixtures/middlemac_app/Contents/Resources/en.lproj/30_sample_group_number_one/page_two.html.md.erb +36 -0
  321. 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
  322. 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
  323. 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
  324. data/fixtures/middlemac_app/Contents/Resources/en.lproj/40_sample_group_number_two/01_nested_group_example/index.html.md.erb +4 -0
  325. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/40_sample_group_number_two/02_page_two.html.md.erb +0 -5
  326. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/40_sample_group_number_two/03_page_three.html.md.erb +0 -5
  327. data/fixtures/middlemac_app/Contents/Resources/en.lproj/40_sample_group_number_two/index.html.md.erb +4 -0
  328. data/fixtures/middlemac_app/Contents/Resources/en.lproj/50_testing_world_file.html.md.erb +58 -0
  329. data/fixtures/middlemac_app/Contents/Resources/en.lproj/60_goodbye_world_file.html.md.erb +203 -0
  330. data/fixtures/middlemac_app/Contents/Resources/en.lproj/ExactMatch.plist.erb +15 -0
  331. data/fixtures/middlemac_app/Contents/Resources/en.lproj/InfoPlist.strings.erb +10 -0
  332. data/fixtures/middlemac_app/Contents/Resources/{Base.lproj → en.lproj}/_new_style_partial.erb +0 -0
  333. data/fixtures/middlemac_app/Contents/Resources/en.lproj/asides/aside_description.html.md.erb +20 -0
  334. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/_partials/_localized_partials_dir_partial.erb +1 -0
  335. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/all-graphic_32x32.png +0 -0
  336. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/neat_thing_32x32.png +0 -0
  337. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/subdirectory/logo_32x32.png +0 -0
  338. data/fixtures/middlemac_app/Contents/Resources/en.lproj/assets/images/subdirectory/pro-image_32x32.png +0 -0
  339. data/fixtures/middlemac_app/Contents/Resources/en.lproj/copyright.html.md.erb +19 -0
  340. data/fixtures/middlemac_app/Contents/Resources/en.lproj/index.html.md.erb +20 -0
  341. data/fixtures/middlemac_app/Contents/Resources/en.lproj/index_hpd.html.md.erb +4 -0
  342. data/fixtures/middlemac_app/Contents/Resources/en.lproj/locale-info.json.erb +16 -0
  343. data/fixtures/middlemac_app/Contents/Resources/en.lproj/navigation.json.erb +57 -0
  344. data/fixtures/middlemac_app/Contents/Resources/en.lproj/searchTree.json.erb +1 -0
  345. data/fixtures/middlemac_app/Contents/Resources/es.lproj/10_hola_mundo_file.html.md.erb +15 -0
  346. data/fixtures/middlemac_app/Contents/Resources/es.lproj/60_goodbye_world_file.html.md.erb +193 -0
  347. data/fixtures/middlemac_app/Contents/Resources/es.lproj/ExactMatch.plist.erb +15 -0
  348. data/fixtures/middlemac_app/Contents/Resources/es.lproj/InfoPlist.strings.erb +10 -0
  349. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/all-graphic_32x32.png +0 -0
  350. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/neat_thing_32x32.png +0 -0
  351. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/subdirectory/logo_32x32.png +0 -0
  352. data/fixtures/middlemac_app/Contents/Resources/es.lproj/assets/images/subdirectory/pro-image_32x32.png +0 -0
  353. data/fixtures/middlemac_app/Contents/Resources/es.lproj/copyright.html.md.erb +19 -0
  354. data/fixtures/middlemac_app/Contents/Resources/es.lproj/index.html.md.erb +21 -0
  355. data/fixtures/middlemac_app/Contents/Resources/es.lproj/index_hpd.html.md.erb +4 -0
  356. data/fixtures/middlemac_app/Contents/Resources/es.lproj/locale-info.json.erb +16 -0
  357. data/fixtures/middlemac_app/Contents/Resources/es.lproj/navigation.json.erb +57 -0
  358. data/fixtures/middlemac_app/Contents/Resources/es.lproj/searchTree.json.erb +1 -0
  359. data/fixtures/middlemac_app/Contents/Resources/index.html.erb +118 -0
  360. data/fixtures/middlemac_app/Contents/Resources/locale-list.json.erb +14 -0
  361. data/fixtures/middlemac_app/Gemfile +4 -17
  362. data/fixtures/middlemac_app/config.rb +82 -99
  363. data/fixtures/middlemac_app/makefile +93 -0
  364. data/fixtures/middlemac_app/middlemac.webloc +0 -0
  365. data/lib/middlemac.rb +4 -0
  366. data/lib/middlemac/extension.rb +152 -211
  367. data/lib/middlemac/helpers.rb +470 -0
  368. data/lib/middlemac/private.rb +497 -0
  369. data/lib/middlemac/sitemap.rb +516 -0
  370. data/lib/middlemac/trie-extension.rb +37 -0
  371. data/lib/middlemac/version.rb +1 -1
  372. data/middlemac.gemspec +25 -6
  373. data/resources/stopwords/ar.plist +206 -0
  374. data/resources/stopwords/ca.plist +0 -0
  375. data/resources/stopwords/cs.plist +30 -0
  376. data/resources/stopwords/da.plist +6 -0
  377. data/resources/stopwords/de.plist +119 -0
  378. data/resources/stopwords/el.plist +0 -0
  379. data/resources/stopwords/en.plist +0 -0
  380. data/resources/stopwords/es.plist +282 -0
  381. data/resources/stopwords/es_419.plist +282 -0
  382. data/resources/stopwords/fi.plist +206 -0
  383. data/resources/stopwords/fr.plist +132 -0
  384. data/resources/stopwords/he.plist +0 -0
  385. data/resources/stopwords/hr.plist +0 -0
  386. data/resources/stopwords/hu.plist +44 -0
  387. data/resources/stopwords/id.plist +6 -0
  388. data/resources/stopwords/it.plist +153 -0
  389. data/resources/stopwords/ja.plist +6 -0
  390. data/resources/stopwords/ko.plist +106 -0
  391. data/resources/stopwords/ms.plist +6 -0
  392. data/resources/stopwords/nl.plist +198 -0
  393. data/resources/stopwords/no.plist +207 -0
  394. data/resources/stopwords/pl.plist +207 -0
  395. data/resources/stopwords/pt.plist +207 -0
  396. data/resources/stopwords/pt_PT.plist +207 -0
  397. data/resources/stopwords/ro.plist +0 -0
  398. data/resources/stopwords/ru.plist +207 -0
  399. data/resources/stopwords/sk.plist +0 -0
  400. data/resources/stopwords/sv.plist +280 -0
  401. data/resources/stopwords/th.plist +56 -0
  402. data/resources/stopwords/tr.plist +200 -0
  403. data/resources/stopwords/uk.plist +764 -0
  404. data/resources/stopwords/vi.plist +6 -0
  405. data/resources/stopwords/zh_CN.plist +207 -0
  406. data/resources/stopwords/zh_TW.plist +207 -0
  407. data/yard/readme.md +4 -4
  408. metadata +423 -225
  409. data/documentation_project/Contents/Resources/Base.lproj/010_what_is_middlemac/index.html.md.erb +0 -126
  410. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/20_frontmatter_skill.html.md.erb +0 -54
  411. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/40_ruby_skill.html.md.erb +0 -67
  412. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/50_ruby_ecosystem.html.md.erb +0 -136
  413. data/documentation_project/Contents/Resources/Base.lproj/030_skills_refresher/index.html.md.erb +0 -35
  414. data/documentation_project/Contents/Resources/Base.lproj/040_setup/index.html.md.erb +0 -88
  415. data/documentation_project/Contents/Resources/Base.lproj/050_structure/010_directories_and_images.html.md.erb +0 -176
  416. data/documentation_project/Contents/Resources/Base.lproj/050_structure/020_layouts_and_templates.html.md.erb +0 -71
  417. data/documentation_project/Contents/Resources/Base.lproj/050_structure/025_css.html.md.erb +0 -71
  418. data/documentation_project/Contents/Resources/Base.lproj/050_structure/030_groups.html.md.erb +0 -83
  419. data/documentation_project/Contents/Resources/Base.lproj/050_structure/040_breadcrumbs.html.md.erb +0 -43
  420. data/documentation_project/Contents/Resources/Base.lproj/050_structure/050_navigator.html.md.erb +0 -26
  421. data/documentation_project/Contents/Resources/Base.lproj/050_structure/060_targets.html.md.erb +0 -63
  422. data/documentation_project/Contents/Resources/Base.lproj/050_structure/070_features.html.md.erb +0 -122
  423. data/documentation_project/Contents/Resources/Base.lproj/050_structure/index.html.md.erb +0 -21
  424. data/documentation_project/Contents/Resources/Base.lproj/060_content/010_frontmatter.html.md.erb +0 -88
  425. data/documentation_project/Contents/Resources/Base.lproj/060_content/040_partials.html.md.erb +0 -121
  426. data/documentation_project/Contents/Resources/Base.lproj/060_content/050_resources.html.md.erb +0 -60
  427. data/documentation_project/Contents/Resources/Base.lproj/060_content/070_including_excluding.html.md.erb +0 -68
  428. data/documentation_project/Contents/Resources/Base.lproj/060_content/080_markdown_links_images.html.md.erb +0 -93
  429. data/documentation_project/Contents/Resources/Base.lproj/060_content/090_css_image_sizes.html.md.erb +0 -90
  430. data/documentation_project/Contents/Resources/Base.lproj/060_content/index.html.md.erb +0 -21
  431. data/documentation_project/Contents/Resources/Base.lproj/070_preview_build/index.html.md.erb +0 -78
  432. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/10_apple_help_setup.html.md.erb +0 -110
  433. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/20_xcode_integration.html.md.erb +0 -64
  434. data/documentation_project/Contents/Resources/Base.lproj/090_build_application/index.html.md.erb +0 -25
  435. data/documentation_project/Contents/Resources/Base.lproj/100_reference/20_config_ref.html.md.erb +0 -56
  436. data/documentation_project/Contents/Resources/Base.lproj/100_reference/40_helpers_ref.html.md.erb +0 -45
  437. data/documentation_project/Contents/Resources/Base.lproj/100_reference/index.html.md.erb +0 -26
  438. data/documentation_project/Contents/Resources/Base.lproj/120_backwards_compatibility/index.html.md.erb +0 -88
  439. data/documentation_project/Contents/Resources/Base.lproj/130_all_help_content/index.html.md.erb +0 -15
  440. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/layout-html4.haml +0 -22
  441. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/layout-xhtml.haml +0 -28
  442. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-large.haml +0 -30
  443. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-medium.haml +0 -30
  444. data/documentation_project/Contents/Resources/Base.lproj/assets/_layouts/template-logo-small.haml +0 -30
  445. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  446. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  447. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.svg +0 -655
  448. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  449. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  450. data/documentation_project/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  451. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras-small.png +0 -0
  452. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras-small@2x.png +0 -0
  453. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras.png +0 -0
  454. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/middlemac-extras@2x.png +0 -0
  455. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras-small.png +0 -0
  456. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras-small@2x.png +0 -0
  457. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras.png +0 -0
  458. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-extras/sub_images/middlemac-extras@2x.png +0 -0
  459. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-pagegroups/middleman-pagegroups-small.png +0 -0
  460. data/documentation_project/Contents/Resources/Base.lproj/assets/images/mm-pagegroups/middleman-pagegroups.png +0 -0
  461. data/documentation_project/Contents/Resources/Base.lproj/assets/javascripts/all.js +0 -1
  462. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs.haml +0 -11
  463. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs_alt.haml +0 -15
  464. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_brethren.haml +0 -18
  465. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_brethren_index.haml +0 -14
  466. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_legitimate_children.haml +0 -16
  467. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_prev_next.haml +0 -21
  468. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_nav_toc_index.haml +0 -21
  469. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_config.erb +0 -200
  470. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_helpers.erb +0 -146
  471. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_extras_helpers_extended.erb +0 -135
  472. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_config.erb +0 -207
  473. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_helpers.erb +0 -297
  474. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_middlemac_helpers_extended.erb +0 -96
  475. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_config.erb +0 -744
  476. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers.erb +0 -710
  477. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers_css.erb +0 -523
  478. data/documentation_project/Contents/Resources/Base.lproj/assets/partials/_yard_pagegroups_helpers_extended.erb +0 -56
  479. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/_apple_helpbook.scss +0 -946
  480. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/_normalize.scss +0 -374
  481. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/breadcrumb-separator-light.png +0 -0
  482. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/image_sizes.css.erb +0 -8
  483. data/documentation_project/Contents/Resources/Base.lproj/assets/stylesheets/style.css.scss +0 -4
  484. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/10_hello_world_file.html.md.erb +0 -22
  485. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/20_goodbye_world_file.html.md.erb +0 -22
  486. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/index.html.md.erb +0 -24
  487. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/page_one.html.md.erb +0 -20
  488. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/30_sample_group_number_one/page_two.html.md.erb +0 -19
  489. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/01_nested_group_example/index.html.md.erb +0 -18
  490. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/40_sample_group_number_two/index.html.md.erb +0 -24
  491. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/45_testing_world_file.html.md.erb +0 -55
  492. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/50_entire_world_file.html.md.erb +0 -15
  493. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/layout-html4.haml +0 -22
  494. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/layout-xhtml.haml +0 -28
  495. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-large.haml +0 -30
  496. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-medium.haml +0 -30
  497. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/_layouts/template-logo-small.haml +0 -30
  498. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/FontAwesome.otf +0 -0
  499. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
  500. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.svg +0 -655
  501. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
  502. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
  503. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
  504. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/images/_empty_directory.html.md.erb +0 -1
  505. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/javascripts/all.js +0 -1
  506. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs.haml +0 -11
  507. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_breadcrumbs_alt.haml +0 -15
  508. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_brethren.haml +0 -18
  509. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_brethren_index.haml +0 -14
  510. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_legitimate_children.haml +0 -16
  511. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_prev_next.haml +0 -21
  512. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/partials/_nav_toc_index.haml +0 -21
  513. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/_apple_helpbook.scss +0 -946
  514. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/_normalize.scss +0 -374
  515. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/breadcrumb-separator-light.png +0 -0
  516. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/image_sizes.css.erb +0 -8
  517. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/assets/stylesheets/style.css.scss +0 -4
  518. data/fixtures/middlemac_app/Contents/Resources/Base.lproj/index.html.md.erb +0 -17
@@ -0,0 +1,93 @@
1
+ ###############################################################################
2
+ # Building from make rather than the previous shell script gives us a lot of
3
+ # flexibility and is a bit simpler to integrate with Xcode.
4
+ #
5
+ # Usage:
6
+ # make build|clean TARGET=target
7
+ # Specifying a target is required.
8
+ #
9
+ # Make will assume that this makefile is in the root of your project, at the
10
+ # same level as your source Contents/ directory. To use this file from Xcode,
11
+ # create an External Build System target, and specify `/usr/bin/make` as the
12
+ # build tool, `$(ACTION) TARGET=your_target_or_variable` as the arguments,
13
+ # and for Directory, a path to this file, e.g., `$(PROJECT_DIR)/path/to/me`.
14
+ ###############################################################################
15
+
16
+
17
+ #====================================================================
18
+ # Prerequisites:
19
+ # - Ensure that a TARGET is specified.
20
+ # - Make sure Middlemac is installed and reachable. Although we
21
+ # could do that in a recipe, we need to discover our BUILD_DIR,
22
+ # which cannot be done in a recipe.
23
+ # - Discover our BUILD_DIR, by asking Middleman for the build
24
+ # directory for the specified target.
25
+ # Output will be provided in a target recipe if these conditions
26
+ # cannot be met.
27
+ #====================================================================
28
+
29
+ ifdef TARGET
30
+ MM_EXISTS := $(shell [[ -s "$(HOME)/.rvm/environments/default" ]] && source "$(HOME)/.rvm/environments/default" ; which middlemac)
31
+ endif
32
+ ifdef MM_EXISTS
33
+ BUILD_DIR := $(shell export LANG=en_US.UTF-8 && [[ -s "$(HOME)/.rvm/environments/default" ]] && source "$(HOME)/.rvm/environments/default" ; bundle exec middleman list_all | grep "$(TARGET)," | cut -d\ -f2- )
34
+ endif
35
+
36
+
37
+ #====================================================================
38
+ # "Source" files to monitor for changes. If any of these change,
39
+ # then they will have a new file modification date than the
40
+ # $(BUILD_DIR), causing the action to execute.
41
+ #====================================================================
42
+ SRC_FILES = $(shell find Contents)
43
+ SRC_FILES += config.rb Gemfile Gemfile.lock
44
+
45
+ #====================================================================
46
+ # The default action, will build the specified TARGET using
47
+ # Middleman, by depending on the $(BUILD_DIR).
48
+ #====================================================================
49
+ .PHONY: build
50
+ build: check_prerequisites $(BUILD_DIR)
51
+
52
+
53
+ #====================================================================
54
+ # The action that will actually perform the building of the help
55
+ # book. If the directory specified by $(BUILD_DIR) is older than
56
+ # any of the given source files, then this action will be executed.
57
+ # NOTE: make does NOT work with spaces in filenames.
58
+ #====================================================================
59
+ $(BUILD_DIR): $(SRC_FILES)
60
+ @echo "Make will have Middleman build target '$(TARGET)'"
61
+ # @echo "RECIPE AS KNOWN TO MAKE: $@"
62
+ # @echo " ACTUAL BUILD_DIR: $(BUILD_DIR)"
63
+ # @echo " EXECUTION REASON: $?"
64
+ @export LANG=en_US.UTF-8 && \
65
+ [[ -s "$(HOME)/.rvm/environments/default" ]] && source "$(HOME)/.rvm/environments/default" ; \
66
+ bundle exec middleman build --target "$(TARGET)"
67
+ @touch "$(BUILD_DIR)"
68
+
69
+
70
+ #====================================================================
71
+ # Clean the given target.
72
+ #====================================================================
73
+ .PHONY: clean
74
+ clean: check_prerequisites
75
+ @echo "Cleaning $(BUILD_DIR)…"
76
+ @rm -rf "$(BUILD_DIR)"
77
+
78
+
79
+ #====================================================================
80
+ # Ensure that we have everything that we need to proceed with doing
81
+ # something with Middlemac and with the target.
82
+ #====================================================================
83
+ .PHONY: check_prerequisites
84
+ check_prerequisites:
85
+ ifndef TARGET
86
+ $(error "ERROR: It's required to specify a target macro, e.g., TARGET=default.")
87
+ endif
88
+ ifndef MM_EXISTS
89
+ $(error "ERROR: Middlemac was not found, and is required to continue.")
90
+ endif
91
+ ifndef BUILD_DIR
92
+ $(error "ERROR: Target ${TARGET} was specified, but Middlemac did not find any valid targets.")
93
+ endif
Binary file
data/ext/trie/darray.c ADDED
@@ -0,0 +1,673 @@
1
+ /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
+ /*
3
+ * darray.c - Double-array trie structure
4
+ * Created: 2006-08-13
5
+ * Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
6
+ */
7
+
8
+ #include <string.h>
9
+ #include <stdlib.h>
10
+ #include <stdio.h>
11
+
12
+ #include "trie-private.h"
13
+ #include "darray.h"
14
+ #include "fileutils.h"
15
+
16
+ /*----------------------------------*
17
+ * INTERNAL TYPES DECLARATIONS *
18
+ *----------------------------------*/
19
+
20
+ typedef struct _Symbols Symbols;
21
+
22
+ struct _Symbols {
23
+ short num_symbols;
24
+ TrieChar symbols[256];
25
+ };
26
+
27
+ static Symbols * symbols_new ();
28
+ static void symbols_free (Symbols *syms);
29
+ static void symbols_add (Symbols *syms, TrieChar c);
30
+
31
+ #define symbols_num(s) ((s)->num_symbols)
32
+ #define symbols_get(s,i) ((s)->symbols[i])
33
+ #define symbols_add_fast(s,c) ((s)->symbols[(s)->num_symbols++] = c)
34
+
35
+ /*-----------------------------------*
36
+ * PRIVATE METHODS DECLARATIONS *
37
+ *-----------------------------------*/
38
+
39
+ #define da_get_free_list(d) (1)
40
+
41
+ static Bool da_check_free_cell (DArray *d,
42
+ TrieIndex s);
43
+
44
+ static Bool da_has_children (DArray *d,
45
+ TrieIndex s);
46
+
47
+ static Symbols * da_output_symbols (const DArray *d,
48
+ TrieIndex s);
49
+
50
+ static TrieChar * da_get_state_key (const DArray *d,
51
+ TrieIndex state);
52
+
53
+ static TrieIndex da_find_free_base (DArray *d,
54
+ const Symbols *symbols);
55
+
56
+ static Bool da_fit_symbols (DArray *d,
57
+ TrieIndex base,
58
+ const Symbols *symbols);
59
+
60
+ static void da_relocate_base (DArray *d,
61
+ TrieIndex s,
62
+ TrieIndex new_base);
63
+
64
+ static Bool da_extend_pool (DArray *d,
65
+ TrieIndex to_index);
66
+
67
+ static void da_alloc_cell (DArray *d,
68
+ TrieIndex cell);
69
+
70
+ static void da_free_cell (DArray *d,
71
+ TrieIndex cell);
72
+
73
+ static Bool da_enumerate_recursive (const DArray *d,
74
+ TrieIndex state,
75
+ DAEnumFunc enum_func,
76
+ void *user_data);
77
+
78
+ /* ==================== BEGIN IMPLEMENTATION PART ==================== */
79
+
80
+ /*------------------------------------*
81
+ * INTERNAL TYPES IMPLEMENTATIONS *
82
+ *------------------------------------*/
83
+
84
+ static Symbols *
85
+ symbols_new ()
86
+ {
87
+ Symbols *syms;
88
+
89
+ syms = (Symbols *) malloc (sizeof (Symbols));
90
+
91
+ if (!syms)
92
+ return NULL;
93
+
94
+ syms->num_symbols = 0;
95
+
96
+ return syms;
97
+ }
98
+
99
+ static void
100
+ symbols_free (Symbols *syms)
101
+ {
102
+ free (syms);
103
+ }
104
+
105
+ static void
106
+ symbols_add (Symbols *syms, TrieChar c)
107
+ {
108
+ short lower, upper;
109
+
110
+ lower = 0;
111
+ upper = syms->num_symbols;
112
+ while (lower < upper) {
113
+ short middle;
114
+
115
+ middle = (lower + upper)/2;
116
+ if (c > syms->symbols[middle])
117
+ lower = middle + 1;
118
+ else if (c < syms->symbols[middle])
119
+ upper = middle;
120
+ else
121
+ return;
122
+ }
123
+ if (lower < syms->num_symbols) {
124
+ memmove (syms->symbols + lower + 1, syms->symbols + lower,
125
+ syms->num_symbols - lower);
126
+ }
127
+ syms->symbols[lower] = c;
128
+ syms->num_symbols++;
129
+ }
130
+
131
+ /*------------------------------*
132
+ * PRIVATE DATA DEFINITONS *
133
+ *------------------------------*/
134
+
135
+ typedef struct {
136
+ TrieIndex base;
137
+ TrieIndex check;
138
+ } DACell;
139
+
140
+ struct _DArray {
141
+ TrieIndex num_cells;
142
+ DACell *cells;
143
+ };
144
+
145
+ /*-----------------------------*
146
+ * METHODS IMPLEMENTAIONS *
147
+ *-----------------------------*/
148
+
149
+ #define DA_SIGNATURE 0xDAFCDAFC
150
+
151
+ /* DA Header:
152
+ * - Cell 0: SIGNATURE, number of cells
153
+ * - Cell 1: free circular-list pointers
154
+ * - Cell 2: root node
155
+ * - Cell 3: DA pool begin
156
+ */
157
+ #define DA_POOL_BEGIN 3
158
+
159
+ DArray *
160
+ da_new ()
161
+ {
162
+ DArray *d;
163
+
164
+ d = (DArray *) malloc (sizeof (DArray));
165
+ if (!d)
166
+ return NULL;
167
+
168
+ d->num_cells = DA_POOL_BEGIN;
169
+ d->cells = (DACell *) malloc (d->num_cells * sizeof (DACell));
170
+ if (!d->cells)
171
+ goto exit_da_created;
172
+ d->cells[0].base = DA_SIGNATURE;
173
+ d->cells[0].check = d->num_cells;
174
+ d->cells[1].base = -1;
175
+ d->cells[1].check = -1;
176
+ d->cells[2].base = DA_POOL_BEGIN;
177
+ d->cells[2].check = 0;
178
+
179
+ return d;
180
+
181
+ exit_da_created:
182
+ free (d);
183
+ return NULL;
184
+ }
185
+
186
+ DArray *
187
+ da_read (FILE *file)
188
+ {
189
+ long save_pos;
190
+ DArray *d = NULL;
191
+ TrieIndex n;
192
+
193
+ /* check signature */
194
+ save_pos = ftell (file);
195
+ if (!file_read_int32 (file, &n) || DA_SIGNATURE != (uint32) n) {
196
+ fseek (file, save_pos, SEEK_SET);
197
+ return NULL;
198
+ }
199
+
200
+ d = (DArray *) malloc (sizeof (DArray));
201
+ if (!d)
202
+ return NULL;
203
+
204
+ /* read number of cells */
205
+ file_read_int32 (file, &d->num_cells);
206
+ d->cells = (DACell *) malloc (d->num_cells * sizeof (DACell));
207
+ if (!d->cells)
208
+ goto exit_da_created;
209
+ d->cells[0].base = DA_SIGNATURE;
210
+ d->cells[0].check= d->num_cells;
211
+ for (n = 1; n < d->num_cells; n++) {
212
+ file_read_int32 (file, &d->cells[n].base);
213
+ file_read_int32 (file, &d->cells[n].check);
214
+ }
215
+
216
+ return d;
217
+
218
+ exit_da_created:
219
+ free (d);
220
+ return NULL;
221
+ }
222
+
223
+ void
224
+ da_free (DArray *d)
225
+ {
226
+ free (d->cells);
227
+ free (d);
228
+ }
229
+
230
+ int
231
+ da_write (const DArray *d, FILE *file)
232
+ {
233
+ TrieIndex i;
234
+
235
+ for (i = 0; i < d->num_cells; i++) {
236
+ if (!file_write_int32 (file, d->cells[i].base) ||
237
+ !file_write_int32 (file, d->cells[i].check))
238
+ {
239
+ return -1;
240
+ }
241
+ }
242
+
243
+ return 0;
244
+ }
245
+
246
+
247
+ TrieIndex
248
+ da_get_root (const DArray *d)
249
+ {
250
+ /* can be calculated value for multi-index trie */
251
+ return 2;
252
+ }
253
+
254
+
255
+ TrieIndex
256
+ da_get_base (const DArray *d, TrieIndex s)
257
+ {
258
+ return (0 <= s && s < d->num_cells) ? d->cells[s].base : TRIE_INDEX_ERROR;
259
+ }
260
+
261
+ TrieIndex
262
+ da_get_check (const DArray *d, TrieIndex s)
263
+ {
264
+ return (0 <= s && s < d->num_cells) ? d->cells[s].check : TRIE_INDEX_ERROR;
265
+ }
266
+
267
+
268
+ void
269
+ da_set_base (DArray *d, TrieIndex s, TrieIndex val)
270
+ {
271
+ if (0 <= s && s < d->num_cells) {
272
+ d->cells[s].base = val;
273
+ }
274
+ }
275
+
276
+ void
277
+ da_set_check (DArray *d, TrieIndex s, TrieIndex val)
278
+ {
279
+ if (0 <= s && s < d->num_cells) {
280
+ d->cells[s].check = val;
281
+ }
282
+ }
283
+
284
+ Bool
285
+ da_walk (const DArray *d, TrieIndex *s, TrieChar c)
286
+ {
287
+ TrieIndex next;
288
+
289
+ next = da_get_base (d, *s) + c;
290
+ if (da_get_check (d, next) == *s) {
291
+ *s = next;
292
+ return TRUE;
293
+ }
294
+ return FALSE;
295
+ }
296
+
297
+ TrieIndex
298
+ da_insert_branch (DArray *d, TrieIndex s, TrieChar c)
299
+ {
300
+ TrieIndex base, next;
301
+
302
+ base = da_get_base (d, s);
303
+
304
+ if (base > 0) {
305
+ next = base + c;
306
+
307
+ /* if already there, do not actually insert */
308
+ if (da_get_check (d, next) == s)
309
+ return next;
310
+
311
+ /* if (base + c) > TRIE_INDEX_MAX which means 'next' is overflow,
312
+ * or cell [next] is not free, relocate to a free slot
313
+ */
314
+ if (base > TRIE_INDEX_MAX - c || !da_check_free_cell (d, next)) {
315
+ Symbols *symbols;
316
+ TrieIndex new_base;
317
+
318
+ /* relocate BASE[s] */
319
+ symbols = da_output_symbols (d, s);
320
+ symbols_add (symbols, c);
321
+ new_base = da_find_free_base (d, symbols);
322
+ symbols_free (symbols);
323
+
324
+ if (TRIE_INDEX_ERROR == new_base)
325
+ return TRIE_INDEX_ERROR;
326
+
327
+ da_relocate_base (d, s, new_base);
328
+ next = new_base + c;
329
+ }
330
+ } else {
331
+ Symbols *symbols;
332
+ TrieIndex new_base;
333
+
334
+ symbols = symbols_new ();
335
+ symbols_add (symbols, c);
336
+ new_base = da_find_free_base (d, symbols);
337
+ symbols_free (symbols);
338
+
339
+ if (TRIE_INDEX_ERROR == new_base)
340
+ return TRIE_INDEX_ERROR;
341
+
342
+ da_set_base (d, s, new_base);
343
+ next = new_base + c;
344
+ }
345
+ da_alloc_cell (d, next);
346
+ da_set_check (d, next, s);
347
+
348
+ return next;
349
+ }
350
+
351
+ static Bool
352
+ da_check_free_cell (DArray *d,
353
+ TrieIndex s)
354
+ {
355
+ return da_extend_pool (d, s) && da_get_check (d, s) < 0;
356
+ }
357
+
358
+ static Bool
359
+ da_has_children (DArray *d,
360
+ TrieIndex s)
361
+ {
362
+ TrieIndex base;
363
+ TrieIndex c, max_c;
364
+
365
+ base = da_get_base (d, s);
366
+ if (TRIE_INDEX_ERROR == base || base < 0)
367
+ return FALSE;
368
+
369
+ max_c = MIN_VAL (TRIE_CHAR_MAX, TRIE_INDEX_MAX - base);
370
+ for (c = 0; c < max_c; c++) {
371
+ if (da_get_check (d, base + c) == s)
372
+ return TRUE;
373
+ }
374
+
375
+ return FALSE;
376
+ }
377
+
378
+ static Symbols *
379
+ da_output_symbols (const DArray *d,
380
+ TrieIndex s)
381
+ {
382
+ Symbols *syms;
383
+ TrieIndex base;
384
+ TrieIndex c, max_c;
385
+
386
+ syms = symbols_new ();
387
+
388
+ base = da_get_base (d, s);
389
+ max_c = MIN_VAL (TRIE_CHAR_MAX, TRIE_INDEX_MAX - base);
390
+ for (c = 0; c < max_c; c++) {
391
+ if (da_get_check (d, base + c) == s)
392
+ symbols_add_fast (syms, (TrieChar) c);
393
+ }
394
+
395
+ return syms;
396
+ }
397
+
398
+ static TrieChar *
399
+ da_get_state_key (const DArray *d,
400
+ TrieIndex state)
401
+ {
402
+ TrieChar *key;
403
+ int key_size, key_length;
404
+ int i;
405
+
406
+ key_size = 20;
407
+ key_length = 0;
408
+ key = (TrieChar *) malloc (key_size);
409
+
410
+ /* trace back to root */
411
+ while (da_get_root (d) != state) {
412
+ TrieIndex parent;
413
+
414
+ if (key_length + 1 >= key_size) {
415
+ key_size += 20;
416
+ key = (TrieChar *) realloc (key, key_size);
417
+ }
418
+ parent = da_get_check (d, state);
419
+ key[key_length++] = (TrieChar) (state - da_get_base (d, parent));
420
+ state = parent;
421
+ }
422
+ key[key_length] = '\0';
423
+
424
+ /* reverse the string */
425
+ for (i = 0; i < --key_length; i++) {
426
+ TrieChar temp;
427
+
428
+ temp = key[i];
429
+ key[i] = key[key_length];
430
+ key[key_length] = temp;
431
+ }
432
+
433
+ return key;
434
+ }
435
+
436
+ static TrieIndex
437
+ da_find_free_base (DArray *d,
438
+ const Symbols *symbols)
439
+ {
440
+ TrieChar first_sym;
441
+ TrieIndex s;
442
+
443
+ /* find first free cell that is beyond the first symbol */
444
+ first_sym = symbols_get (symbols, 0);
445
+ s = -da_get_check (d, da_get_free_list (d));
446
+ while (s != da_get_free_list (d)
447
+ && s < (TrieIndex) first_sym + DA_POOL_BEGIN)
448
+ {
449
+ s = -da_get_check (d, s);
450
+ }
451
+ if (s == da_get_free_list (d)) {
452
+ for (s = first_sym + DA_POOL_BEGIN; ; ++s) {
453
+ if (!da_extend_pool (d, s))
454
+ return TRIE_INDEX_ERROR;
455
+ if (da_get_check (d, s) < 0)
456
+ break;
457
+ }
458
+ }
459
+
460
+ /* search for next free cell that fits the symbols set */
461
+ while (!da_fit_symbols (d, s - first_sym, symbols)) {
462
+ /* extend pool before getting exhausted */
463
+ if (-da_get_check (d, s) == da_get_free_list (d)) {
464
+ if (!da_extend_pool (d, d->num_cells))
465
+ return TRIE_INDEX_ERROR;
466
+ }
467
+
468
+ s = -da_get_check (d, s);
469
+ }
470
+
471
+ return s - first_sym;
472
+ }
473
+
474
+ static Bool
475
+ da_fit_symbols (DArray *d,
476
+ TrieIndex base,
477
+ const Symbols *symbols)
478
+ {
479
+ int i;
480
+
481
+ for (i = 0; i < symbols_num (symbols); i++) {
482
+ TrieChar sym = symbols_get (symbols, i);
483
+
484
+ /* if (base + sym) > TRIE_INDEX_MAX which means it's overflow,
485
+ * or cell [base + sym] is not free, the symbol is not fit.
486
+ */
487
+ if (base > TRIE_INDEX_MAX - sym || !da_check_free_cell (d, base + sym))
488
+ return FALSE;
489
+ }
490
+ return TRUE;
491
+ }
492
+
493
+ static void
494
+ da_relocate_base (DArray *d,
495
+ TrieIndex s,
496
+ TrieIndex new_base)
497
+ {
498
+ TrieIndex old_base;
499
+ Symbols *symbols;
500
+ int i;
501
+
502
+ old_base = da_get_base (d, s);
503
+ symbols = da_output_symbols (d, s);
504
+
505
+ for (i = 0; i < symbols_num (symbols); i++) {
506
+ TrieIndex old_next, new_next, old_next_base;
507
+
508
+ old_next = old_base + symbols_get (symbols, i);
509
+ new_next = new_base + symbols_get (symbols, i);
510
+ old_next_base = da_get_base (d, old_next);
511
+
512
+ /* allocate new next node and copy BASE value */
513
+ da_alloc_cell (d, new_next);
514
+ da_set_check (d, new_next, s);
515
+ da_set_base (d, new_next, old_next_base);
516
+
517
+ /* old_next node is now moved to new_next
518
+ * so, all cells belonging to old_next
519
+ * must be given to new_next
520
+ */
521
+ /* preventing the case of TAIL pointer */
522
+ if (old_next_base > 0) {
523
+ TrieIndex c, max_c;
524
+
525
+ max_c = MIN_VAL (TRIE_CHAR_MAX, TRIE_INDEX_MAX - old_next_base);
526
+ for (c = 0; c < max_c; c++) {
527
+ if (da_get_check (d, old_next_base + c) == old_next)
528
+ da_set_check (d, old_next_base + c, new_next);
529
+ }
530
+ }
531
+
532
+ /* free old_next node */
533
+ da_free_cell (d, old_next);
534
+ }
535
+
536
+ symbols_free (symbols);
537
+
538
+ /* finally, make BASE[s] point to new_base */
539
+ da_set_base (d, s, new_base);
540
+ }
541
+
542
+ static Bool
543
+ da_extend_pool (DArray *d,
544
+ TrieIndex to_index)
545
+ {
546
+ TrieIndex new_begin;
547
+ TrieIndex i;
548
+ TrieIndex free_tail;
549
+
550
+ if (to_index <= 0 || TRIE_INDEX_MAX <= to_index)
551
+ return FALSE;
552
+
553
+ if (to_index < d->num_cells)
554
+ return TRUE;
555
+
556
+ d->cells = (DACell *) realloc (d->cells, (to_index + 1) * sizeof (DACell));
557
+ new_begin = d->num_cells;
558
+ d->num_cells = to_index + 1;
559
+
560
+ /* initialize new free list */
561
+ for (i = new_begin; i < to_index; i++) {
562
+ da_set_check (d, i, -(i + 1));
563
+ da_set_base (d, i + 1, -i);
564
+ }
565
+
566
+ /* merge the new circular list to the old */
567
+ free_tail = -da_get_base (d, da_get_free_list (d));
568
+ da_set_check (d, free_tail, -new_begin);
569
+ da_set_base (d, new_begin, -free_tail);
570
+ da_set_check (d, to_index, -da_get_free_list (d));
571
+ da_set_base (d, da_get_free_list (d), -to_index);
572
+
573
+ /* update header cell */
574
+ d->cells[0].check = d->num_cells;
575
+
576
+ return TRUE;
577
+ }
578
+
579
+ void
580
+ da_prune (DArray *d, TrieIndex s)
581
+ {
582
+ da_prune_upto (d, da_get_root (d), s);
583
+ }
584
+
585
+ void
586
+ da_prune_upto (DArray *d, TrieIndex p, TrieIndex s)
587
+ {
588
+ while (p != s && !da_has_children (d, s)) {
589
+ TrieIndex parent;
590
+
591
+ parent = da_get_check (d, s);
592
+ da_free_cell (d, s);
593
+ s = parent;
594
+ }
595
+ }
596
+
597
+ static void
598
+ da_alloc_cell (DArray *d,
599
+ TrieIndex cell)
600
+ {
601
+ TrieIndex prev, next;
602
+
603
+ prev = -da_get_base (d, cell);
604
+ next = -da_get_check (d, cell);
605
+
606
+ /* remove the cell from free list */
607
+ da_set_check (d, prev, -next);
608
+ da_set_base (d, next, -prev);
609
+ }
610
+
611
+ static void
612
+ da_free_cell (DArray *d,
613
+ TrieIndex cell)
614
+ {
615
+ TrieIndex i, prev;
616
+
617
+ /* find insertion point */
618
+ i = -da_get_check (d, da_get_free_list (d));
619
+ while (i != da_get_free_list (d) && i < cell)
620
+ i = -da_get_check (d, i);
621
+
622
+ prev = -da_get_base (d, i);
623
+
624
+ /* insert cell before i */
625
+ da_set_check (d, cell, -i);
626
+ da_set_base (d, cell, -prev);
627
+ da_set_check (d, prev, -cell);
628
+ da_set_base (d, i, -cell);
629
+ }
630
+
631
+ Bool
632
+ da_enumerate (const DArray *d, DAEnumFunc enum_func, void *user_data)
633
+ {
634
+ return da_enumerate_recursive (d, da_get_root (d), enum_func, user_data);
635
+ }
636
+
637
+ static Bool
638
+ da_enumerate_recursive (const DArray *d,
639
+ TrieIndex state,
640
+ DAEnumFunc enum_func,
641
+ void *user_data)
642
+ {
643
+ Bool ret;
644
+ TrieIndex base;
645
+
646
+ base = da_get_base (d, state);
647
+
648
+ if (base < 0) {
649
+ TrieChar *key;
650
+
651
+ key = da_get_state_key (d, state);
652
+ ret = (*enum_func) (key, state, user_data);
653
+ free (key);
654
+ } else {
655
+ Symbols *symbols;
656
+ int i;
657
+
658
+ ret = TRUE;
659
+ symbols = da_output_symbols (d, state);
660
+ for (i = 0; ret && i < symbols_num (symbols); i++) {
661
+ ret = da_enumerate_recursive (d, base + symbols_get (symbols, i),
662
+ enum_func, user_data);
663
+ }
664
+
665
+ symbols_free (symbols);
666
+ }
667
+
668
+ return ret;
669
+ }
670
+
671
+ /*
672
+ vi:ts=4:ai:expandtab
673
+ */