summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-15 05:52:03 +0000
committerkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-15 05:52:03 +0000
commite7f8d747180c8330f1dd78a97dd3a91c03d4f7ad (patch)
tree466ba6aaa314a471fd6b5a56da030221306cd6d1
parent165fc2a9ebf72b9a8ca9f2b2a61173902a7addd7 (diff)
downloadchromium_src-e7f8d747180c8330f1dd78a97dd3a91c03d4f7ad.zip
chromium_src-e7f8d747180c8330f1dd78a97dd3a91c03d4f7ad.tar.gz
chromium_src-e7f8d747180c8330f1dd78a97dd3a91c03d4f7ad.tar.bz2
Docserver: Update to the latest version of handlebar. Lots of re-syntaxifying.
BUG=293678 R=mkearney@chromium.org Review URL: https://codereview.chromium.org/61733018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@235292 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/common/extensions/docs/server2/api_list_data_source.py2
-rw-r--r--chrome/common/extensions/docs/server2/app.yaml2
-rw-r--r--chrome/common/extensions/docs/server2/cron.yaml2
-rw-r--r--chrome/common/extensions/docs/server2/test_data/rietveld_patcher/expected/test_foo.html2
-rw-r--r--chrome/common/extensions/docs/server2/test_data/rietveld_patcher/tarball/14096030/22002.tar.bz2bin5842 -> 6086 bytes
-rw-r--r--chrome/common/extensions/docs/server2/test_data/template_data_source/partials/test_tmpl.html2
-rw-r--r--chrome/common/extensions/docs/templates/articles/api_index.html6
-rw-r--r--chrome/common/extensions/docs/templates/articles/declare_permissions.html8
-rw-r--r--chrome/common/extensions/docs/templates/articles/experimental.html2
-rw-r--r--chrome/common/extensions/docs/templates/articles/manifest.html2
-rw-r--r--chrome/common/extensions/docs/templates/articles/manifest/externally_connectable.html2
-rw-r--r--chrome/common/extensions/docs/templates/articles/private_apis.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/api_property.html24
-rw-r--r--chrome/common/extensions/docs/templates/private/api_reference.html26
-rw-r--r--chrome/common/extensions/docs/templates/private/api_table.html15
-rw-r--r--chrome/common/extensions/docs/templates/private/api_title.html1
-rw-r--r--chrome/common/extensions/docs/templates/private/callback.html8
-rw-r--r--chrome/common/extensions/docs/templates/private/dom_event.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/enum_descriptions.html16
-rw-r--r--chrome/common/extensions/docs/templates/private/event.html20
-rw-r--r--chrome/common/extensions/docs/templates/private/filter_item.html2
-rw-r--r--chrome/common/extensions/docs/templates/private/function.html9
-rw-r--r--chrome/common/extensions/docs/templates/private/function_details.html39
-rw-r--r--chrome/common/extensions/docs/templates/private/function_signature.html2
-rw-r--r--chrome/common/extensions/docs/templates/private/intro_table.html20
-rw-r--r--chrome/common/extensions/docs/templates/private/intro_tables/stable_message.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/manifest_example.html8
-rw-r--r--chrome/common/extensions/docs/templates/private/manifest_property.html12
-rw-r--r--chrome/common/extensions/docs/templates/private/parameter_full.html16
-rw-r--r--chrome/common/extensions/docs/templates/private/parameter_item.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/property.html10
-rw-r--r--chrome/common/extensions/docs/templates/private/ref_link.html2
-rw-r--r--chrome/common/extensions/docs/templates/private/sample_item.html18
-rw-r--r--chrome/common/extensions/docs/templates/private/samples.html14
-rw-r--r--chrome/common/extensions/docs/templates/private/sidenav.html2
-rw-r--r--chrome/common/extensions/docs/templates/private/sidenav_item.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/sidenav_items.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/standard_apps_api.html31
-rw-r--r--chrome/common/extensions/docs/templates/private/standard_apps_article.html20
-rw-r--r--chrome/common/extensions/docs/templates/private/standard_extensions_api.html31
-rw-r--r--chrome/common/extensions/docs/templates/private/standard_extensions_article.html20
-rw-r--r--chrome/common/extensions/docs/templates/private/table_of_contents.html46
-rw-r--r--chrome/common/extensions/docs/templates/private/title.html3
-rw-r--r--chrome/common/extensions/docs/templates/private/toc_dom_events.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/toc_events.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/toc_functions.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/toc_properties.html22
-rw-r--r--chrome/common/extensions/docs/templates/private/toc_types.html17
-rw-r--r--chrome/common/extensions/docs/templates/private/type.html16
-rw-r--r--chrome/common/extensions/docs/templates/private/type_item.html4
-rw-r--r--chrome/common/extensions/docs/templates/private/type_name.html2
-rw-r--r--chrome/common/extensions/docs/templates/private/variable_type.html14
-rw-r--r--chrome/common/extensions/docs/templates/private/warning_deprecated.html11
-rw-r--r--chrome/common/extensions/docs/templates/public/404.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/404.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/a11y.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/about_apps.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/alarms.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/analytics.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/angular_framework.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/api_index.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/api_other.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_architecture.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab1_setup.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab2_basic.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab3_mvc.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab5_data.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab6_lifecycle.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab7_useridentification.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab8_webresources.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_codelab_10_publishing.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_deprecated.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_external.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_frameworks.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_identity.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_intents.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_lifecycle.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_network.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_runtime.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_serial.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_storage.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_usb.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/app_window.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/audio.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/autoupdate.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/background_pages.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/bluetooth.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/cloudMessaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/contentSecurityPolicy.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/content_scripts.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/contextMenus.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/crx.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/declare_permissions.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/desktop_notifications.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/develop_apps.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/devtools.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/event_pages.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/events.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental.html4
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_contextMenus.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_devtools_inspectedWindow.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_devtools_network.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_devtools_panels.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_devtools_resources.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_identity.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_inputUI.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_storage.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_webInspector.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_audits.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_panels.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_resources.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/external_extensions.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/faq.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/fileSystem.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/first_app.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/gcm_server.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/gcm_tos.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/google_wallet.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/hosting.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/i18n-messages.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/i18n.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/identity.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/idle.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/location.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/app.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/default_locale.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/description.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/externally_connectable.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/file_handlers.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/icons.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/key.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/kiosk_enabled.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/manifest_version.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/minimum_chrome_version.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/nacl_modules.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/name.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/offline_enabled.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/requirements.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/sandbox.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/url_handlers.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifest/version.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/manifestVersion.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/match_patterns.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/mediaGalleries.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/messaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/notifications.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/npapi.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/offline_apps.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/packaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/permission_warnings.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/permissions.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/power.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/private_apis.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/publish_app.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/pushMessaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/runtime.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/samples.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/sandboxingEval.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/sencha_framework.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/serial.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/socket.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/storage.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/syncFileSystem.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/system_cpu.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/system_display.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/system_memory.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/system_storage.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/tags/webview.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/themes.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/tts.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/tut_debugging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/tut_oauth.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/types.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/usb.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/webstore.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/apps/xhr.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/404.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/a11y.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/activeTab.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/alarms.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/api_index.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/api_other.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/app_identity.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/apps.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/autoupdate.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/background_pages.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/bookmarks.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/browserAction.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/browsingData.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/cloudMessaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/commands.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/contentSecurityPolicy.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/contentSettings.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/content_scripts.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/contextMenus.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/cookies.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/crx.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/debugger.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/declarativeContent.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/declarativeWebRequest.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/declare_permissions.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/desktopCapture.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/desktop_notifications.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/devguide.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/devtools.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/devtools_inspectedWindow.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/devtools_network.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/devtools_panels.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/downloads.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/event_pages.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/events.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental.html4
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_browsingData.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_contentSettings.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_contextMenus.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_cookies.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_devtools.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_audits.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_console.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_inspectedWindow.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_network.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_panels.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_resources.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_discovery.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_history.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_identity.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_inputUI.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_privacy.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_storage.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_audits.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_panels.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_resources.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/experimental_webRequest.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/extension.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/external_extensions.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/faq.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/feedbackPrivate.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/fileBrowserHandler.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/fontSettings.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/gcm_server.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/gcm_tos.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/getstarted.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/hangoutsPrivate.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/history.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/hosting.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/i18n-messages.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/i18n.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/identity.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/idle.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/index.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/infobars.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/input_ime.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/location.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/management.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/default_locale.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/description.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/externally_connectable.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/homepage_url.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/icons.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/incognito.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/key.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/manifest_version.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/minimum_chrome_version.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/nacl_modules.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/name.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/offline_enabled.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/requirements.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/sandbox.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/version.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifest/web_accessible_resources.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/manifestVersion.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/match_patterns.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/messaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/notifications.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/npapi.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/omnibox.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/options.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/override.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/overview.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/packaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/pageAction.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/pageCapture.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/permission_warnings.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/permissions.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/power.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/privacy.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/private_apis.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/processes.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/proxy.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/pushMessaging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/runtime.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/samples.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/sandboxingEval.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/scriptBadge.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/sessions.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/signedInDevices.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/storage.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/system_cpu.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/system_memory.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/system_storage.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tabCapture.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tabs.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/themes.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/topSites.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tts.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/ttsEngine.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tut_analytics.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tut_debugging.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tut_migration_to_manifest_v2.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tut_oauth.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/tutorials.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/types.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/webNavigation.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/webRequest.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/webstore.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/whats_new.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/windows.html2
-rw-r--r--chrome/common/extensions/docs/templates/public/extensions/xhr.html2
-rw-r--r--third_party/handlebar/README.chromium4
-rw-r--r--third_party/handlebar/README.md100
-rw-r--r--third_party/handlebar/handlebar.py594
325 files changed, 917 insertions, 890 deletions
diff --git a/chrome/common/extensions/docs/server2/api_list_data_source.py b/chrome/common/extensions/docs/server2/api_list_data_source.py
index 217d1a5..ace6161 100644
--- a/chrome/common/extensions/docs/server2/api_list_data_source.py
+++ b/chrome/common/extensions/docs/server2/api_list_data_source.py
@@ -8,6 +8,7 @@ import posixpath
import docs_server_utils as utils
from branch_utility import ChannelInfo
+from environment import IsPreviewServer
from extensions_paths import PUBLIC_TEMPLATES
from file_system import FileNotFoundError
@@ -75,6 +76,7 @@ class APIListDataSource(object):
documented_apis = self._cache.GetFromFileListing(PUBLIC_TEMPLATES).Get()
def _GetChannelInfo(api_name):
+ if IsPreviewServer(): return ChannelInfo('dev', 'dev', 1000)
return self._availability_finder.GetApiAvailability(api_name)
def _GetApiPlatform(api_name):
diff --git a/chrome/common/extensions/docs/server2/app.yaml b/chrome/common/extensions/docs/server2/app.yaml
index cc47e65..97b55c9 100644
--- a/chrome/common/extensions/docs/server2/app.yaml
+++ b/chrome/common/extensions/docs/server2/app.yaml
@@ -1,5 +1,5 @@
application: chrome-apps-doc
-version: 2-41-2
+version: 2-42-0
runtime: python27
api_version: 1
threadsafe: false
diff --git a/chrome/common/extensions/docs/server2/cron.yaml b/chrome/common/extensions/docs/server2/cron.yaml
index 818e426..be2199c 100644
--- a/chrome/common/extensions/docs/server2/cron.yaml
+++ b/chrome/common/extensions/docs/server2/cron.yaml
@@ -2,4 +2,4 @@ cron:
- description: Repopulates all cached data.
url: /_cron
schedule: every 5 minutes
- target: 2-41-2
+ target: 2-42-0
diff --git a/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/expected/test_foo.html b/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/expected/test_foo.html
index 8c0470c..dd9e169 100644
--- a/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/expected/test_foo.html
+++ b/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/expected/test_foo.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.test_foo}}
+{{+partials.standard_extensions_article article:intros.test_foo/}}
diff --git a/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/tarball/14096030/22002.tar.bz2 b/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/tarball/14096030/22002.tar.bz2
index e66bec5..fad29ec 100644
--- a/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/tarball/14096030/22002.tar.bz2
+++ b/chrome/common/extensions/docs/server2/test_data/rietveld_patcher/tarball/14096030/22002.tar.bz2
Binary files differ
diff --git a/chrome/common/extensions/docs/server2/test_data/template_data_source/partials/test_tmpl.html b/chrome/common/extensions/docs/server2/test_data/template_data_source/partials/test_tmpl.html
index f755402..e52904b 100644
--- a/chrome/common/extensions/docs/server2/test_data/template_data_source/partials/test_tmpl.html
+++ b/chrome/common/extensions/docs/server2/test_data/template_data_source/partials/test_tmpl.html
@@ -1 +1 @@
-Hello {{+name_tmpl}} how is your {{part}}?
+Hello {{+name_tmpl/}} how is your {{part}}?
diff --git a/chrome/common/extensions/docs/templates/articles/api_index.html b/chrome/common/extensions/docs/templates/articles/api_index.html
index 1cf1a10..a677652 100644
--- a/chrome/common/extensions/docs/templates/articles/api_index.html
+++ b/chrome/common/extensions/docs/templates/articles/api_index.html
@@ -7,21 +7,21 @@ Chrome provides {{platform}}s with many special-purpose APIs like
{{?stable_apis}}
<h2 id="stable_apis">Stable APIs</h2>
<p>
-{{+partials.api_table apis:stable_apis is_stable:true}}
+{{+partials.api_table apis:stable_apis is_stable:true/}}
</p>
{{/stable_apis}}
{{?beta_apis}}
<h2 id="beta_apis">Beta APIs</h2>
<p>These APIs are only available in the Chrome Beta and Dev channels:
-{{+partials.api_table apis:beta_apis is_stable:false}}
+{{+partials.api_table apis:beta_apis is_stable:false/}}
</p>
{{/beta_apis}}
{{?dev_apis}}
<h2 id="dev_apis">Dev APIs</h2>
<p>These APIs are only available in the Chrome Dev channel:
-{{+partials.api_table apis:dev_apis is_stable:false}}
+{{+partials.api_table apis:dev_apis is_stable:false/}}
</p>
{{/dev_apis}}
diff --git a/chrome/common/extensions/docs/templates/articles/declare_permissions.html b/chrome/common/extensions/docs/templates/articles/declare_permissions.html
index a63cd52..a32a64f 100644
--- a/chrome/common/extensions/docs/templates/articles/declare_permissions.html
+++ b/chrome/common/extensions/docs/templates/articles/declare_permissions.html
@@ -58,13 +58,13 @@ The following table lists the currently available permissions:
<th>Permission</th>
<th>Description</th>
</tr>
- {{#permissions}}
- <tr id="{{anchor}}">
+ {{#p:permissions}}
+ <tr id="{{p.anchor}}">
<td>
- <code>"{{name}}"</code>
+ <code>"{{p.name}}"</code>
</td>
<td>
- {{+description platform:platform name:name}}
+ {{+p.description platform:platform name:p.name/}}
</td>
</tr>
{{/permissions}}
diff --git a/chrome/common/extensions/docs/templates/articles/experimental.html b/chrome/common/extensions/docs/templates/articles/experimental.html
index bde7d7d..54ab09f 100644
--- a/chrome/common/extensions/docs/templates/articles/experimental.html
+++ b/chrome/common/extensions/docs/templates/articles/experimental.html
@@ -11,7 +11,7 @@ on the following experimental APIs:
</p>
{{/is_apps}}
-{{+partials.api_table apis:apis is_stable:false}}
+{{+partials.api_table apis:apis is_stable:false/}}
{{^is_apps}}
<p class="doc-family extensions">
diff --git a/chrome/common/extensions/docs/templates/articles/manifest.html b/chrome/common/extensions/docs/templates/articles/manifest.html
index 550b55a..ddfee6f 100644
--- a/chrome/common/extensions/docs/templates/articles/manifest.html
+++ b/chrome/common/extensions/docs/templates/articles/manifest.html
@@ -17,4 +17,4 @@ The only fields that are always required
are <b>name</b> and <b>version</b>.
</p>
-{{+partials.manifest_example manifest_source:manifest_source}}
+{{+partials.manifest_example manifest_source:manifest_source/}}
diff --git a/chrome/common/extensions/docs/templates/articles/manifest/externally_connectable.html b/chrome/common/extensions/docs/templates/articles/manifest/externally_connectable.html
index a2015ae..d07d97c 100644
--- a/chrome/common/extensions/docs/templates/articles/manifest/externally_connectable.html
+++ b/chrome/common/extensions/docs/templates/articles/manifest/externally_connectable.html
@@ -48,5 +48,5 @@ If <code>externally_connectable</code> is not declared in your {{platform}}'s ma
<h2 id="reference">Reference</h2>
<p class="api_reference">
-{{+partials.type @:apis.manifestTypes.byName.ExternallyConnectable}}
+{{+partials.type type:apis.manifestTypes.byName.ExternallyConnectable/}}
</p>
diff --git a/chrome/common/extensions/docs/templates/articles/private_apis.html b/chrome/common/extensions/docs/templates/articles/private_apis.html
index 6c5fba6..7a5f4ad 100644
--- a/chrome/common/extensions/docs/templates/articles/private_apis.html
+++ b/chrome/common/extensions/docs/templates/articles/private_apis.html
@@ -4,8 +4,8 @@
<ul>
{{?is_apps}}
-{{+partials.api_table apis:api_list.apps.private is_stable:false}}
+{{+partials.api_table apis:api_list.apps.private is_stable:false/}}
{{:is_apps}}
-{{+partials.api_table apis:api_list.extensions.private is_stable:false}}
+{{+partials.api_table apis:api_list.extensions.private is_stable:false/}}
{{/is_apps}}
</ul>
diff --git a/chrome/common/extensions/docs/templates/private/api_property.html b/chrome/common/extensions/docs/templates/private/api_property.html
index 0acf063..918d9ff 100644
--- a/chrome/common/extensions/docs/templates/private/api_property.html
+++ b/chrome/common/extensions/docs/templates/private/api_property.html
@@ -1,28 +1,30 @@
+{{#property}}
<div>
<h3 id="{{id}}">{{name}}</h3>
<div class="summary">
- <div class="line">{{+partials.api_namespace api:api}}{{name}}</div>
+ <div class="line">{{+partials.api_namespace api:api/}}{{name}}</div>
</div>
<div>
- <dt><span class="property">{{name}}</span> {{+partials.type_name link:link @:property}}</dt>
+ <dt><span class="property">{{name}}</span> {{+partials.type_name link:link type:property/}}</dt>
{{?description}}<dd>
{{{description}}}
</dd>{{/description}}
{{?properties}}
- <h4 id="{{property.name}}-properties">
- Properties of <a href="#property-{{property.name}}">{{property.name}}</a>
+ <h4 id="{{name}}-properties">
+ Properties of <a href="#property-{{name}}">{{name}}</a>
</h4>
- <dd><dl>{{#properties}}
- {{+partials.parameter_full}}
- {{/}}</dl></dd>
+ <dd><dl>{{#p:properties}}
+ {{+partials.parameter_full parameter:p parentName:false/}}
+ {{/properties}}</dl></dd>
{{/properties}}
{{?functions}}
- <h4 id="{{property.name}}-functions">
- Methods of <a href="#property-{{property.name}}">{{property.name}}</a>
+ <h4 id="{{name}}-functions">
+ Methods of <a href="#property-{{name}}">{{name}}</a>
</h4>
- <dd><dl>{{#functions}}
- {{+partials.function @:@}}
+ <dd><dl>{{#f:functions}}
+ {{+partials.function function:f parentName:false/}}
{{/}}</dl></dd>
{{/functions}}
</div>
</div>
+{{/property}}
diff --git a/chrome/common/extensions/docs/templates/private/api_reference.html b/chrome/common/extensions/docs/templates/private/api_reference.html
index 72bcb56..e619fd3 100644
--- a/chrome/common/extensions/docs/templates/private/api_reference.html
+++ b/chrome/common/extensions/docs/templates/private/api_reference.html
@@ -1,27 +1,27 @@
-<h1 id="apiReference">{{+partials.api_title api:api}} reference</h1>
+<h1 id="apiReference">{{+partials.api_title api:api/}} reference</h1>
<div class="api_reference">
{{?api.types}}
<h2 id="types">Types</h2>
- {{#api.types}}
- {{+partials.type display_name:name}}
+ {{#t:api.types}}
+ {{+partials.type display_name:t.name type:t/}}
{{/}}
{{/api.types}}
{{?api.properties}}
<h2 id="properties">Properties</h2>
- {{#api.properties}}
- {{+partials.api_property api:api property:@}}
+ {{#p:api.properties}}
+ {{+partials.api_property api:api property:p/}}
{{/}}
{{/api.properties}}
{{?api.functions}}
<h2 id="methods">Methods</h2>
- {{#api.functions}}
- {{+partials.function @:@ api:api}}
+ {{#f:api.functions}}
+ {{+partials.function function:f api:api parentName:false/}}
{{/}}
{{/api.functions}}
{{?api.events}}
<h2 id="events">Events</h2>
- {{#api.events}}
- {{+partials.event @:@ api:api}}
+ {{#e:api.events}}
+ {{+partials.event event:e api:api/}}
{{/}}
{{/api.events}}
{{?api.domEvents}}
@@ -31,16 +31,16 @@
<a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener">addEventListener</a>
API. Listeners receive a custom <code>Event</code> object which can have
additional properties as listed with each event.</dd>
- {{#api.domEvents}}
- {{+partials.dom_event display_name:name @:@ api:api}}
+ {{#e:api.domEvents}}
+ {{+partials.dom_event display_name:e.name event:e api:api/}}
{{/api.domEvents}}
{{/api.domEvents}}
</div>
{{?samples_list}}
<h2 id="samples">Sample {{title}} that use chrome.{{api.name}}</h2>
<ul>
- {{#samples_list}}
- <li><strong><a href="samples.html#{{id}}">{{name}}</a></strong>
+ {{#sample:samples_list}}
+ <li><strong><a href="samples.html#{{sample.id}}">{{sample.name}}</a></strong>
{{?description}}
&ndash; {{description}}
{{/description}}</li>
diff --git a/chrome/common/extensions/docs/templates/private/api_table.html b/chrome/common/extensions/docs/templates/private/api_table.html
index 3db1d44..8800d95 100644
--- a/chrome/common/extensions/docs/templates/private/api_table.html
+++ b/chrome/common/extensions/docs/templates/private/api_table.html
@@ -1,15 +1,12 @@
<table>
<tr><th>Name</th><th>Description</th>{{?is_stable}}<th>Since</th>{{/}}</tr>
- {{#apis}}
+ {{#a:apis}}
<tr>
- <td><a href="{{name}}.html">{{name}}</a></td>
- <td>{{{description}}}</td>
- {{?is_stable}}
- <td>{{version}}</td>
- {{/}}
+ <td><a href="{{a.name}}.html">{{a.name}}</a></td>
+ <td>{{{a.description}}}</td>
+ {{?a.is_stable}}
+ <td>{{a.version}}</td>
+ {{/a.is_stable}}
</tr>
{{/apis}}
</table>
-
-
-
diff --git a/chrome/common/extensions/docs/templates/private/api_title.html b/chrome/common/extensions/docs/templates/private/api_title.html
index 99982f1..e2d84cb 100644
--- a/chrome/common/extensions/docs/templates/private/api_title.html
+++ b/chrome/common/extensions/docs/templates/private/api_title.html
@@ -1 +1,2 @@
+{{!api The API}}
{{?api.documentationOptions.title}}{{api.documentationOptions.title}}{{:}}chrome.{{api.name}}{{/}}
diff --git a/chrome/common/extensions/docs/templates/private/callback.html b/chrome/common/extensions/docs/templates/private/callback.html
index aaeb361..2c1d73e 100644
--- a/chrome/common/extensions/docs/templates/private/callback.html
+++ b/chrome/common/extensions/docs/templates/private/callback.html
@@ -1,3 +1,4 @@
+{{#callback}}
<h4>Callback</h4>
<p>
{{?optional}}
@@ -8,7 +9,7 @@
that looks like this:
{{/optional}}
</p>
-<pre>function({{#parameters}}{{+partials.variable_type}} {{name}}{{^last}}, {{/}}{{/}}) <span class="subdued">{...}</span>;</pre>
+<pre>function({{#p:parameters}}{{+partials.variable_type type:p/}} {{p.name}}{{^p.last}}, {{/}}{{/}}) <span class="subdued">{...}</span>;</pre>
{{?description}}
<p>
{{{description}}}
@@ -16,8 +17,9 @@
{{/description}}
{{?parameters}}
<dl>
- {{#parameters}}
- {{+partials.parameter_full}}
+ {{#p:parameters}}
+ {{+partials.parameter_full parameter:p/}}
{{/parameters}}
</dl>
{{/parameters}}
+{{/callback}}
diff --git a/chrome/common/extensions/docs/templates/private/dom_event.html b/chrome/common/extensions/docs/templates/private/dom_event.html
index aa95a61..bff0e83 100644
--- a/chrome/common/extensions/docs/templates/private/dom_event.html
+++ b/chrome/common/extensions/docs/templates/private/dom_event.html
@@ -1,3 +1,4 @@
+{{#event}}
<div>
<h4 id="{{id}}">{{name}}</h4>
<div class="description">
@@ -6,7 +7,8 @@
</p>{{/description}}
{{?properties}}
{{+partials.type_item items:properties
- item_partial:partials.parameter_full}}
+ item_partial:partials.parameter_full/}}
{{/properties}}
</div>
</div>
+{{/event}}
diff --git a/chrome/common/extensions/docs/templates/private/enum_descriptions.html b/chrome/common/extensions/docs/templates/private/enum_descriptions.html
index 9bbe4f5..832ad44 100644
--- a/chrome/common/extensions/docs/templates/private/enum_descriptions.html
+++ b/chrome/common/extensions/docs/templates/private/enum_descriptions.html
@@ -1,12 +1,12 @@
-{{?values}}
- {{#values}}
- {{?@.description}}
+{{?enums}}
+ {{#enum:enums}}
+ {{?enum.description}}
<dl>
- <dt>{{name}}</dt>
+ <dt>{{enum.name}}</dt>
<dd>
- {{{description}}}
+ {{{enum.description}}}
</dd>
</dl>
- {{/@.description}}
- {{/values}}
-{{/values}}
+ {{/enum.description}}
+ {{/enums}}
+{{/enums}}
diff --git a/chrome/common/extensions/docs/templates/private/event.html b/chrome/common/extensions/docs/templates/private/event.html
index 28ef58b..db0b114 100644
--- a/chrome/common/extensions/docs/templates/private/event.html
+++ b/chrome/common/extensions/docs/templates/private/event.html
@@ -1,6 +1,7 @@
+{{#event}}
<div>
<h4 id="{{id}}">{{name}}</h4>
- {{+partials.warning_deprecated item:@}}
+ {{+partials.warning_deprecated item:event/}}
<div class="description">
{{?description}}<p>
{{{description}}}
@@ -13,38 +14,39 @@
<div class="summary">
{{+partials.function_signature function:byName.addRules
parentName:name
- api:api}}
+ api:api/}}
{{+partials.function_signature function:byName.removeRules
parentName:name
- api:api}}
+ api:api/}}
{{+partials.function_signature function:byName.getRules
parentName:name
- api:api}}
+ api:api/}}
</div>
{{?conditions}}
<h4>Supported conditions</h4>
<ul>
- {{#conditions}}<div><li>{{+partials.ref_link}}</li></div>{{/}}
+ {{#c:conditions}}<div><li>{{+partials.ref_link link:c/}}</li></div>{{/}}
</ul>
{{/conditions}}
{{?actions}}
<h4>Supported actions</h4>
<ul>
- {{#actions}}<div><li>{{+partials.ref_link}}</li></div>{{/}}
+ {{#a:actions}}<div><li>{{+partials.ref_link link:a/}}</li></div>{{/}}
</ul>
{{/actions}}
{{/supportsRules}}
{{?filters}}
<h4>Filters</h4>
<dl>
- {{#filters}}{{+partials.parameter_full}}{{/}}
+ {{#f:filters +partials.parameter_full parameter:f/}}
</dl>
{{/filters}}
{{?supportsListeners}}
- {{+partials.function @:byName.addListener
+ {{+partials.function function:byName.addListener
parentName:name
api:api
- parentId:id}}
+ parentId:id/}}
{{/supportsListeners}}
</div>
</div>
+{{/event}}
diff --git a/chrome/common/extensions/docs/templates/private/filter_item.html b/chrome/common/extensions/docs/templates/private/filter_item.html
index 570feaf..709dbb8 100644
--- a/chrome/common/extensions/docs/templates/private/filter_item.html
+++ b/chrome/common/extensions/docs/templates/private/filter_item.html
@@ -1 +1 @@
-<span><a href="javascript:void(0)">{{name}}</a>{{^last}} | {{/}}</span>
+<span><a href="javascript:void(0)">{{item.name}}</a>{{^item.last}} | {{/}}</span>
diff --git a/chrome/common/extensions/docs/templates/private/function.html b/chrome/common/extensions/docs/templates/private/function.html
index 472ad0e..f295ead 100644
--- a/chrome/common/extensions/docs/templates/private/function.html
+++ b/chrome/common/extensions/docs/templates/private/function.html
@@ -1,7 +1,8 @@
+{{!function The function to render}}
<div>
- <h4 id="{{?id}}{{id}}{{:}}{{?parentId}}{{parentId}}-{{name}}{{/}}{{/}}">
- {{name}}
+ <h4 id="{{?function.id}}{{function.id}}{{:}}{{?parentId}}{{parentId}}-{{function.name}}{{/}}{{/}}">
+ {{function.name}}
</h4>
- {{+partials.warning_deprecated item:@}}
- {{+partials.function_details function:@ parentName:parentName api:api}}
+ {{+partials.warning_deprecated item:function/}}
+ {{+partials.function_details function:function parentName:parentName api:api/}}
</div>
diff --git a/chrome/common/extensions/docs/templates/private/function_details.html b/chrome/common/extensions/docs/templates/private/function_details.html
index 9b50e07..c52f59c 100644
--- a/chrome/common/extensions/docs/templates/private/function_details.html
+++ b/chrome/common/extensions/docs/templates/private/function_details.html
@@ -1,32 +1,29 @@
-{{- Parameters:
- |api|: the schema for the API that the function belongs to
- |function|: the schema for the function
- |parentName|: name of the parent object of the function
--}}
-<div class="summary{{^function.returns}}{{?api}} uncapitalize{{/}}{{/}}">
+{{#function}}
+<div class="summary{{^returns}}{{?api}} uncapitalize{{/}}{{/}}">
{{+partials.function_signature function:function
parentName:parentName
- api:api}}
+ api:api/}}
</div>
<div class="description">
- {{?function.description}}
+ {{?description}}
<p>
- {{{function.description}}}
+ {{{description}}}
</p>
- {{/function.description}}
- {{?function.parameters}}
+ {{/description}}
+ {{?parameters}}
<h4>Parameters</h4>
<dl>
- {{#function.parameters}}
- {{+partials.parameter_full}}
- {{/function.parameters}}
+ {{#p:parameters}}
+ {{+partials.parameter_full parameter:p/}}
+ {{/parameters}}
</dl>
- {{/function.parameters}}
- {{?function.callback}}
- {{+partials.callback}}
- {{/function.callback}}
- {{?function.returns.is_object}}
+ {{/parameters}}
+ {{?callback}}
+ {{+partials.callback callback:callback/}}
+ {{/callback}}
+ {{?returns.is_object}}
<h4>Properties of return type</h4>
- {{+partials.type @:function.returns}}
- {{/function.returns.is_object}}
+ {{+partials.type type:returns/}}
+ {{/returns.is_object}}
</div>
+{{/function}}
diff --git a/chrome/common/extensions/docs/templates/private/function_signature.html b/chrome/common/extensions/docs/templates/private/function_signature.html
index 38f550b..4a47160 100644
--- a/chrome/common/extensions/docs/templates/private/function_signature.html
+++ b/chrome/common/extensions/docs/templates/private/function_signature.html
@@ -4,5 +4,5 @@
|parentName|: name of the parent object of the function
-}}
<div class="line">
-<span>{{?function.returns}}{{+partials.variable_type}} {{/}}{{?api}}{{+partials.api_namespace api:api}}{{/}}{{?parentName}}{{parentName}}.{{/}}{{function.name}}</span>({{#function.parameters}}{{+partials.parameter_item}}{{^last}}, {{/}}{{/}})
+<span>{{?r:function.returns}}{{+partials.variable_type type:r/}} {{/}}{{?api}}{{+partials.api_namespace api:api/}}{{/}}{{?parentName}}{{parentName}}.{{/}}{{function.name}}</span>({{#p:function.parameters}}{{+partials.parameter_item parameter:p/}}{{^p.last}}, {{/}}{{/}})
</div>
diff --git a/chrome/common/extensions/docs/templates/private/intro_table.html b/chrome/common/extensions/docs/templates/private/intro_table.html
index 4a9f3c5..fad9a93 100644
--- a/chrome/common/extensions/docs/templates/private/intro_table.html
+++ b/chrome/common/extensions/docs/templates/private/intro_table.html
@@ -1,17 +1,17 @@
<table class="intro" id="intro">
- {{#api.introList}}
+ {{#item:api.introList}}
<tr>
- <td class="title">{{title}}:</td>
+ <td class="title">{{item.title}}:</td>
<td>
- {{#content}}
- {{?link}}<a href="{{link}}">{{/link}}
- {{?class}}<span class="{{class}}">{{/class}}
- {{?text}}{{{text}}}{{/text}}
- {{?partial}}{{+partial content:content}}{{/partial}}
- {{?class}}</span>{{/class}}
- {{?link}}</a>{{/link}}
+ {{#c:item.content}}
+ {{?c.link}}<a href="{{c.link}}">{{/c.link}}
+ {{?c.class}}<span class="{{c.class}}">{{/c.class}}
+ {{?c.text}}{{{c.text}}}{{/c.text}}
+ {{?c.partial +c.partial content:c/}}
+ {{?c.class}}</span>{{/c.class}}
+ {{?c.link}}</a>{{/c.link}}
<br>
- {{/content}}
+ {{/item.content}}
</td>
</tr>
{{/api.introList}}
diff --git a/chrome/common/extensions/docs/templates/private/intro_tables/stable_message.html b/chrome/common/extensions/docs/templates/private/intro_tables/stable_message.html
index 800d1ba..1c05df8 100644
--- a/chrome/common/extensions/docs/templates/private/intro_tables/stable_message.html
+++ b/chrome/common/extensions/docs/templates/private/intro_tables/stable_message.html
@@ -1,4 +1,2 @@
{{- TODO(epeterson): link to the entry in What's New page once it's generated. -}}
-{{#content}}
- Stable since Chrome {{version}}.
-{{/content}}
+Stable since Chrome {{content.version}}.
diff --git a/chrome/common/extensions/docs/templates/private/manifest_example.html b/chrome/common/extensions/docs/templates/private/manifest_example.html
index 05a60d8..6bc9cff 100644
--- a/chrome/common/extensions/docs/templates/private/manifest_example.html
+++ b/chrome/common/extensions/docs/templates/private/manifest_example.html
@@ -1,11 +1,11 @@
<pre>
{
<em>// Required</em>
- {{#manifest_source}}
- {{?annotations}}
+ {{#mp:manifest_source}}
+ {{?mp.annotations}}
- {{/annotations}}
- {{+partials.manifest_property}}
+ {{/mp.annotations}}
+ {{+partials.manifest_property property:mp/}}
{{/manifest_source}}
}
</pre>
diff --git a/chrome/common/extensions/docs/templates/private/manifest_property.html b/chrome/common/extensions/docs/templates/private/manifest_property.html
index fa312d9..f62a98a 100644
--- a/chrome/common/extensions/docs/templates/private/manifest_property.html
+++ b/chrome/common/extensions/docs/templates/private/manifest_property.html
@@ -1,13 +1,15 @@
+{{#property}}
{{?annotations}}
-{{#annotations}}
-<em>// {{@}}</em>
+{{#a:annotations}}
+<em>// {{a}}</em>
{{/annotations}}
{{/annotations}}
{{?documentation}}
"<a href="{{documentation}}">{{name}}</a>":{{:documentation}}
"{{name}}":{{^children}}{{^has_example}} ...{{/}}{{/}}{{/documentation}}
{{?children}} {
-{{#children}}
- {{+partials.manifest_property}}
-{{/}}
+{{#c:children}}
+ {{+partials.manifest_property property:c/}}
+{{/children}}
}{{:children}}{{?has_example}} {{example}}{{/}}{{/}}{{^is_last}},{{/}}
+{{/property}}
diff --git a/chrome/common/extensions/docs/templates/private/parameter_full.html b/chrome/common/extensions/docs/templates/private/parameter_full.html
index 7d8baff..3ddab15 100644
--- a/chrome/common/extensions/docs/templates/private/parameter_full.html
+++ b/chrome/common/extensions/docs/templates/private/parameter_full.html
@@ -1,15 +1,14 @@
+{{#parameter}}
<div>
{{?parentName}}<a name="{{id}}"></a>{{/}}
<dl>
- {{+partials.property @:@ property:@}}
+ {{+partials.property property:parameter/}}
</dl>
{{?properties}}
<dd>
<h5>Properties of <span class="variable">{{name}}</span></h5>
<dl>
- {{#properties}}
- {{+partials.parameter_full}}
- {{/properties}}
+ {{#p:properties +partials.parameter_full parameter:p/}}
</dl>
</dd>
{{/properties}}
@@ -17,20 +16,19 @@
<dd>
<dl>
<h5>Parameters</h5>
- {{#parameters}}
- {{+partials.parameter_full}}
- {{/}}
+ {{#p:parameters +partials.parameter_full parameter:p/}}
</dl>
- {{?callback}}{{+partials.callback}}{{/}}
+ {{?callback +partials.callback callback:callback/}}
</dd>
{{/parameters}}
{{?returns}}
<dd>
<dl>
<dt>Returns<span class="property">
- {{+partials.variable_type}}
+ {{+partials.variable_type type:returns/}}
</span></dt>
</dl>
</dd>
{{/returns}}
</div>
+{{/parameter}}
diff --git a/chrome/common/extensions/docs/templates/private/parameter_item.html b/chrome/common/extensions/docs/templates/private/parameter_item.html
index 8214388..ff044ce 100644
--- a/chrome/common/extensions/docs/templates/private/parameter_item.html
+++ b/chrome/common/extensions/docs/templates/private/parameter_item.html
@@ -1 +1,3 @@
-<span{{?optional}} class="optional"{{/}}>{{+partials.variable_type}} <span class="variable">{{name}}</span></span>
+{{#parameter}}
+<span{{?optional}} class="optional"{{/}}>{{+partials.variable_type type:parameter/}} <span class="variable">{{name}}</span></span>
+{{/parameter}}
diff --git a/chrome/common/extensions/docs/templates/private/property.html b/chrome/common/extensions/docs/templates/private/property.html
index 78a4030..e068247 100644
--- a/chrome/common/extensions/docs/templates/private/property.html
+++ b/chrome/common/extensions/docs/templates/private/property.html
@@ -1,24 +1,26 @@
+{{#property}}
<dt>
<span class="variable">{{name}}</span>
<span class="property">
(
{{?optional}}<span class="optional">optional</span>{{/}}
- {{+partials.variable_type}}
+ {{+partials.variable_type type:property/}}
)
</span>
</dt>
<dd>
{{?deprecated}}
- {{+partials.warning_deprecated item:property}}
+ {{+partials.warning_deprecated item:property/}}
{{/deprecated}}
{{?description}}
{{{description}}}
{{/description}}
-{{+partials.enum_descriptions values:enum_values}}
+{{+partials.enum_descriptions enums:enum_values/}}
{{?array.is_object}}
<h5>Properties of each object in <span class="variable">{{name}}</span></h5>
<dl>
- {{+partials.type @:array}}
+ {{+partials.type type:array/}}
</dl>
{{/array.is_object}}
</dd>
+{{/property}}
diff --git a/chrome/common/extensions/docs/templates/private/ref_link.html b/chrome/common/extensions/docs/templates/private/ref_link.html
index 58873ef..98408be 100644
--- a/chrome/common/extensions/docs/templates/private/ref_link.html
+++ b/chrome/common/extensions/docs/templates/private/ref_link.html
@@ -1 +1 @@
-<a href="{{href}}">{{text}}</a>
+<a href="{{link.href}}">{{link.text}}</a>
diff --git a/chrome/common/extensions/docs/templates/private/sample_item.html b/chrome/common/extensions/docs/templates/private/sample_item.html
index ee2b6bc..2096aa2 100644
--- a/chrome/common/extensions/docs/templates/private/sample_item.html
+++ b/chrome/common/extensions/docs/templates/private/sample_item.html
@@ -1,23 +1,23 @@
+{{#sample}}
<div class="sample" tags="{{#api_calls}}chrome.{{name}} {{/}}">
<img class="icon" src="{{icon}}">
<h2 id="{{id}}"><a href="{{download_url}}">{{name}}</a></h2>
- {{?description}}
- {{description}}
- {{/description}}
+ {{?description description/}}
<div>
<span class="label">Calls:</span>
<ul>
- {{#api_calls}}
- <li><code><a href="{{link}}">{{name}}</a></code></li>
- {{/}}
+ {{#call:api_calls}}
+ <li><code><a href="{{call.link}}">{{call.name}}</a></code></li>
+ {{/api_calls}}
</ul>
</div>
<div>
<span class="label">Source Files:</span>
<ul>
- {{#files}}
- <li><code><a href="{{url}}/{{@}}">{{@}}</a></code></li>
- {{/}}
+ {{#f:files}}
+ <li><code><a href="{{url}}/{{f}}">{{f}}</a></code></li>
+ {{/files}}
</ul>
</div>
</div>
+{{/sample}}
diff --git a/chrome/common/extensions/docs/templates/private/samples.html b/chrome/common/extensions/docs/templates/private/samples.html
index 30dd7c2..1d0769ad 100644
--- a/chrome/common/extensions/docs/templates/private/samples.html
+++ b/chrome/common/extensions/docs/templates/private/samples.html
@@ -5,14 +5,14 @@
<!DOCTYPE html>
<html>
<head>
- {{+partials.header_head}}
+ {{+partials.header_head/}}
<link href="{{static}}/css/samples.css" rel="stylesheet" type="text/css">
<title>Sample {{title}} - Google Chrome {{title}}</title>
</head>
<body>
- {{+partials.header_body}}
+ {{+partials.header_body platform:platform title:title/}}
<div id="gc-container">
- {{+partials.sidenav items:sidenav}}
+ {{+partials.sidenav items:sidenav/}}
<div id="gc-pagecontent">
<h1 class="page_title">Sample {{title}}</h1>
<div id="controls">
@@ -25,16 +25,14 @@
<td class="label">Filter by API:</td>
<td>
<div id="api_filter_items">
- {{#filter_list.all}}{{+partials.filter_item}}{{/}}<br>
+ {{#filter:filter_list.all +partials.filter_item item:filter/}}<br>
</div>
</td>
</tr>
</table>
</div>
{{?samples_list}}
- {{#samples_list}}
- {{+partials.sample_item}}
- {{/samples_list}}
+ {{#s:samples_list +partials.sample_item sample:s/}}
{{:samples_list}}
<p>There was a problem fetching the sample {{title}}, but they may be
available directly from the <a href="{{samples_url}}">source</a>.</p>
@@ -42,6 +40,6 @@
</div>
</div>
</body>
- {{+partials.footer}}
+ {{+partials.footer/}}
<script src="{{static}}/js/samples.js" type="text/javascript"></script>
</html>
diff --git a/chrome/common/extensions/docs/templates/private/sidenav.html b/chrome/common/extensions/docs/templates/private/sidenav.html
index c104ad3..6b07c8a 100644
--- a/chrome/common/extensions/docs/templates/private/sidenav.html
+++ b/chrome/common/extensions/docs/templates/private/sidenav.html
@@ -1,3 +1,3 @@
<div id="gc-sidebar">
- {{+partials.sidenav_items items:items parent:false}}
+ {{+partials.sidenav_items items:items parent:false/}}
</div>
diff --git a/chrome/common/extensions/docs/templates/private/sidenav_item.html b/chrome/common/extensions/docs/templates/private/sidenav_item.html
index b70abaf..ad6f060 100644
--- a/chrome/common/extensions/docs/templates/private/sidenav_item.html
+++ b/chrome/common/extensions/docs/templates/private/sidenav_item.html
@@ -11,7 +11,5 @@
<span class="level{{item.level}}">{{item.title}}</span>
{{/item.href}}
{{/item.toggleable}}
- {{?item.items}}
- {{+partials.sidenav_items items:item.items parent:item}}
- {{/item.items}}
+ {{?item.items +partials.sidenav_items items:item.items parent:item/}}
</li>
diff --git a/chrome/common/extensions/docs/templates/private/sidenav_items.html b/chrome/common/extensions/docs/templates/private/sidenav_items.html
index 34ff082..a3fd3e6 100644
--- a/chrome/common/extensions/docs/templates/private/sidenav_items.html
+++ b/chrome/common/extensions/docs/templates/private/sidenav_items.html
@@ -1,6 +1,4 @@
<ul {{?parent.toggleable}}toggleable{{/}}
class="{{?parent.level}}level{{parent.level}}{{:}}level1{{/}} {{?parent.toggleable}}{{^parent.child_selected}}hidden{{/}}{{/}}">
-{{#items}}
- {{+partials.sidenav_item item:@}}
-{{/items}}
+{{#i:items +partials.sidenav_item item:i/}}
</ul>
diff --git a/chrome/common/extensions/docs/templates/private/standard_apps_api.html b/chrome/common/extensions/docs/templates/private/standard_apps_api.html
index 206163d..25bd07f 100644
--- a/chrome/common/extensions/docs/templates/private/standard_apps_api.html
+++ b/chrome/common/extensions/docs/templates/private/standard_apps_api.html
@@ -1,39 +1,38 @@
<!DOCTYPE html>
<html>
<head>
- {{+partials.header_head}}
- {{+partials.title}}
+ {{+partials.header_head/}}
+ {{+partials.title api:api/}}
</head>
<body>
- {{+partials.header_body title:strings.apps_title platform:strings.app}}
+ {{+partials.header_body title:strings.apps_title platform:strings.app/}}
<div id="gc-container">
- {{+partials.sidenav items:sidenavs.apps}}
+ {{+partials.sidenav items:sidenavs.apps/}}
<div id="gc-pagecontent">
- <h1 class="page_title">{{+partials.api_title api:api}}</h1>
- {{?api.channelWarning.trunk}}{{+partials.warning_trunk}}{{/}}
- {{?api.channelWarning.dev}}{{+partials.warning_dev}}{{/}}
- {{?api.channelWarning.beta}}{{+partials.warning_beta}}{{/}}
+ <h1 class="page_title">{{+partials.api_title api:api/}}</h1>
+ {{?api.channelWarning.trunk +partials.warning_trunk/}}
+ {{?api.channelWarning.dev +partials.warning_dev/}}
+ {{?api.channelWarning.beta +partials.warning_beta/}}
{{?intro.apps_toc}}
{{+partials.table_of_contents toc_items:intro.apps_toc
has_toc:true
api:api
samples_list:api.samples.apps
- title:strings.apps_title}}
+ title:strings.apps_title/}}
{{:intro.apps_toc}}
{{+partials.table_of_contents has_toc:false
api:api
samples_list:api.samples.apps
- title:strings.apps_title}}
+ title:strings.apps_title/}}
{{/intro.apps_toc}}
- {{+partials.intro_table}}
+ {{+partials.intro_table api:api/}}
{{- This is unindented because it contains <pre> tags -}}
-{{?intro}}
-{{+intro is_apps:true}}
-{{/intro}}
+{{?intro +intro.intro is_apps:true/}}
{{+partials.api_reference samples_list:api.samples.apps
- title:strings.apps_title}}
+ title:strings.apps_title
+ api:api/}}
</div>
</div>
</body>
- {{+partials.footer}}
+ {{+partials.footer/}}
</html>
diff --git a/chrome/common/extensions/docs/templates/private/standard_apps_article.html b/chrome/common/extensions/docs/templates/private/standard_apps_article.html
index 3f880d5..b25e2e1 100644
--- a/chrome/common/extensions/docs/templates/private/standard_apps_article.html
+++ b/chrome/common/extensions/docs/templates/private/standard_apps_article.html
@@ -1,24 +1,32 @@
<!DOCTYPE html>
<html>
<head>
- {{+partials.header_head}}
+ {{+partials.header_head/}}
<title>{{article.title}} - Google Chrome</title>
</head>
<body>
- {{+partials.header_body title:strings.apps_title platform:strings.app}}
+ {{+partials.header_body title:strings.apps_title platform:strings.app/}}
<div id="gc-container">
- {{+partials.sidenav items:sidenavs.apps}}
+ {{+partials.sidenav items:sidenavs.apps/}}
<div id="gc-pagecontent">
<h1 class="page_title">{{article.title}}</h1>
{{?article.apps_toc}}
{{+partials.table_of_contents toc_items:article.apps_toc
has_toc:true
- title:strings.apps_title}}
+ title:strings.apps_title/}}
{{/article.apps_toc}}
{{- This may contain <pre> tags so it is not indented -}}
-{{+article.intro platform:strings.app is_apps:true}}
+{{+article.intro
+ apis:apis
+ beta_apis:beta_apis
+ dev_apis:dev_apis
+ manifest_source:manifest_source
+ permissions:permissions
+ platform:strings.app
+ stable_apis:stable_apis
+ is_apps:true/}}
</div>
</div>
</body>
- {{+partials.footer}}
+ {{+partials.footer/}}
</html>
diff --git a/chrome/common/extensions/docs/templates/private/standard_extensions_api.html b/chrome/common/extensions/docs/templates/private/standard_extensions_api.html
index 4134313..f13769f 100644
--- a/chrome/common/extensions/docs/templates/private/standard_extensions_api.html
+++ b/chrome/common/extensions/docs/templates/private/standard_extensions_api.html
@@ -1,39 +1,38 @@
<!DOCTYPE html>
<html>
<head>
- {{+partials.header_head}}
- {{+partials.title}}
+ {{+partials.header_head/}}
+ {{+partials.title api:api/}}
</head>
<body>
- {{+partials.header_body title:strings.extensions_title platform:strings.extension}}
+ {{+partials.header_body title:strings.extensions_title platform:strings.extension/}}
<div id="gc-container">
- {{+partials.sidenav items:sidenavs.extensions}}
+ {{+partials.sidenav items:sidenavs.extensions/}}
<div id="gc-pagecontent">
- <h1 class="page_title">{{+partials.api_title api:api}}</h1>
- {{?api.channelWarning.trunk}}{{+partials.warning_trunk}}{{/}}
- {{?api.channelWarning.dev}}{{+partials.warning_dev}}{{/}}
- {{?api.channelWarning.beta}}{{+partials.warning_beta}}{{/}}
+ <h1 class="page_title">{{+partials.api_title api:api/}}</h1>
+ {{?api.channelWarning.trunk +partials.warning_trunk/}}
+ {{?api.channelWarning.dev +partials.warning_dev/}}
+ {{?api.channelWarning.beta +partials.warning_beta/}}
{{?intro.extensions_toc}}
{{+partials.table_of_contents toc_items:intro.extensions_toc
has_toc:true
api:api
samples_list:api.samples.extensions
- title:strings.extensions_title}}
+ title:strings.extensions_title/}}
{{:intro.extensions_toc}}
{{+partials.table_of_contents has_toc:false
api:api
samples_list:api.samples.extensions
- title:strings.extensions_title}}
+ title:strings.extensions_title/}}
{{/intro.extensions_toc}}
- {{+partials.intro_table}}
+ {{+partials.intro_table api:api/}}
{{- This is unindented because it contains <pre> tags -}}
-{{?intro}}
-{{+intro is_apps:false}}
-{{/intro}}
+{{?intro +intro.intro is_apps:false/}}
{{+partials.api_reference samples_list:api.samples.extensions
- title:strings.extensions_title}}
+ title:strings.extensions_title
+ api:api/}}
</div>
</div>
</body>
- {{+partials.footer}}
+ {{+partials.footer/}}
</html>
diff --git a/chrome/common/extensions/docs/templates/private/standard_extensions_article.html b/chrome/common/extensions/docs/templates/private/standard_extensions_article.html
index 9c3188e..491c0c9 100644
--- a/chrome/common/extensions/docs/templates/private/standard_extensions_article.html
+++ b/chrome/common/extensions/docs/templates/private/standard_extensions_article.html
@@ -1,24 +1,32 @@
<!DOCTYPE html>
<html>
<head>
- {{+partials.header_head}}
+ {{+partials.header_head/}}
<title>{{article.title}} - Google Chrome</title>
</head>
<body>
- {{+partials.header_body title:strings.extensions_title platform:strings.extension}}
+ {{+partials.header_body title:strings.extensions_title platform:strings.extension/}}
<div id="gc-container">
- {{+partials.sidenav items:sidenavs.extensions}}
+ {{+partials.sidenav items:sidenavs.extensions/}}
<div id="gc-pagecontent">
<h1 class="page_title">{{article.title}}</h1>
{{?article.extensions_toc}}
{{+partials.table_of_contents toc_items:article.extensions_toc
has_toc:true
- title:strings.extensions_title}}
+ title:strings.extensions_title/}}
{{/article.extensions_toc}}
{{- This may contain <pre> tags so it is not indented -}}
-{{+article.intro platform:strings.extension is_apps:false}}
+{{+article.intro
+ apis:apis
+ beta_apis:beta_apis
+ dev_apis:dev_apis
+ manifest_source:manifest_source
+ permissions:permissions
+ platform:strings.extension
+ stable_apis:stable_apis
+ is_apps:false/}}
</div>
</div>
</body>
- {{+partials.footer}}
+ {{+partials.footer/}}
</html>
diff --git a/chrome/common/extensions/docs/templates/private/table_of_contents.html b/chrome/common/extensions/docs/templates/private/table_of_contents.html
index ad13933..bf1aef2 100644
--- a/chrome/common/extensions/docs/templates/private/table_of_contents.html
+++ b/chrome/common/extensions/docs/templates/private/table_of_contents.html
@@ -1,12 +1,12 @@
<div id="toc">
<ol>
{{?has_toc}}
- {{#toc_items}}
+ {{#i:toc_items}}
<li>
- <a href="#{{link}}">{{{title}}}</a>
- {{?subheadings}}
+ <a href="#{{i.link}}">{{{i.title}}}</a>
+ {{?i.subheadings}}
<ol>
- {{#subheadings}}<li><a href="#{{link}}">{{{title}}}</a></li>{{/}}
+ {{#sh:i.subheadings}}<li><a href="#{{sh.link}}">{{{sh.title}}}</a></li>{{/}}
</ol>
{{/}}
</li>
@@ -17,37 +17,37 @@
<li>
<a href="#apiReference">Reference</a>
<ol>
- {{#api}}
- {{?types}}
+ {{#a:api}}
+ {{?a.types}}
<li>
- {{+partials.toc_types types:types}}
+ {{+partials.toc_types types:a.types/}}
</li>
- {{/types}}
- {{?properties}}
+ {{/a.types}}
+ {{?a.properties}}
<li>
- {{+partials.toc_properties properties:properties}}
+ {{+partials.toc_properties properties:a.properties/}}
</li>
- {{/properties}}
- {{?functions}}
+ {{/a.properties}}
+ {{?a.functions}}
<li>
- {{+partials.toc_functions functions:functions}}
+ {{+partials.toc_functions functions:a.functions/}}
</li>
- {{/functions}}
- {{?events}}
+ {{/a.functions}}
+ {{?a.events}}
<li>
- {{+partials.toc_events events:events}}
+ {{+partials.toc_events events:a.events/}}
</li>
- {{/events}}
- {{?domEvents}}
+ {{/a.events}}
+ {{?a.domEvents}}
<li>
- {{+partials.toc_dom_events domEvents:domEvents}}
+ {{+partials.toc_dom_events domEvents:a.domEvents/}}
</li>
- {{/domEvents}}
- {{?samples_list}}
+ {{/a.domEvents}}
+ {{?a.samples_list}}
<li>
- {{+partials.toc_samples title:title}}
+ {{+partials.toc_samples title:a.title/}}
</li>
- {{/samples_list}}
+ {{/a.samples_list}}
{{/api}}
</ol>
</li>
diff --git a/chrome/common/extensions/docs/templates/private/title.html b/chrome/common/extensions/docs/templates/private/title.html
index 5c55f4a..7176bec 100644
--- a/chrome/common/extensions/docs/templates/private/title.html
+++ b/chrome/common/extensions/docs/templates/private/title.html
@@ -1 +1,2 @@
-<title>{{+partials.api_title api:api}} - Google Chrome</title>
+{{!api The API}}
+<title>{{+partials.api_title api:api/}} - Google Chrome</title>
diff --git a/chrome/common/extensions/docs/templates/private/toc_dom_events.html b/chrome/common/extensions/docs/templates/private/toc_dom_events.html
index 1af4645..1c79a88 100644
--- a/chrome/common/extensions/docs/templates/private/toc_dom_events.html
+++ b/chrome/common/extensions/docs/templates/private/toc_dom_events.html
@@ -1,6 +1,6 @@
<a href="#dom_events">DOM Events</a>
<ol>
- {{#domEvents}}
- <li><a href="#{{id}}">{{name}}</a></li>
+ {{#e:domEvents}}
+ <li><a href="#{{e.id}}">{{e.name}}</a></li>
{{/domEvents}}
</ol>
diff --git a/chrome/common/extensions/docs/templates/private/toc_events.html b/chrome/common/extensions/docs/templates/private/toc_events.html
index dd5d4be..e37bac3 100644
--- a/chrome/common/extensions/docs/templates/private/toc_events.html
+++ b/chrome/common/extensions/docs/templates/private/toc_events.html
@@ -1,6 +1,6 @@
<a href="#{{?parentName}}{{parentName}}-{{/}}events">Events</a>
<ol>
- {{#events}}
- <li><a href="#{{id}}">{{name}}</a></li>
+ {{#e:events}}
+ <li><a href="#{{e.id}}">{{e.name}}</a></li>
{{/events}}
</ol>
diff --git a/chrome/common/extensions/docs/templates/private/toc_functions.html b/chrome/common/extensions/docs/templates/private/toc_functions.html
index 23d3995..9ee0130 100644
--- a/chrome/common/extensions/docs/templates/private/toc_functions.html
+++ b/chrome/common/extensions/docs/templates/private/toc_functions.html
@@ -1,6 +1,6 @@
<a href="#{{?parentName}}{{parentName}}-{{/}}methods">Methods</a>
<ol>
- {{#functions}}
- <li><a href="#{{id}}">{{name}}</a></li>
+ {{#f:functions}}
+ <li><a href="#{{f.id}}">{{f.name}}</a></li>
{{/functions}}
</ol>
diff --git a/chrome/common/extensions/docs/templates/private/toc_properties.html b/chrome/common/extensions/docs/templates/private/toc_properties.html
index 02f76c3..84da36c 100644
--- a/chrome/common/extensions/docs/templates/private/toc_properties.html
+++ b/chrome/common/extensions/docs/templates/private/toc_properties.html
@@ -1,17 +1,17 @@
<a href="#{{?parentName}}{{parentName}}-{{/}}properties">Properties</a>
<ol>
- {{#properties}}
+ {{#p:properties}}
<li>
- <a href="#{{id}}">{{name}}</a>
- {{?functions}}<ol><li>
- {{+partials.toc_functions parentName:name functions:functions}}
- </li></ol>{{/functions}}
- {{?events}}<ol><li>
- {{+partials.toc_events parentName:name events:events}}
- </li></ol>{{/events}}
- {{?properties}}<ol><li>
- {{+partials.toc_properties parentName:name properties:properties}}
- </li></ol>{{/properties}}
+ <a href="#{{p.id}}">{{p.name}}</a>
+ {{?p.functions}}<ol><li>
+ {{+partials.toc_functions parentName:name functions:p.functions/}}
+ </li></ol>{{/p.functions}}
+ {{?p.events}}<ol><li>
+ {{+partials.toc_events parentName:p.name events:p.events/}}
+ </li></ol>{{/p.events}}
+ {{?p.properties}}<ol><li>
+ {{+partials.toc_properties parentName:p.name properties:p.properties/}}
+ </li></ol>{{/p.properties}}
</li>
{{/}}
</ol>
diff --git a/chrome/common/extensions/docs/templates/private/toc_types.html b/chrome/common/extensions/docs/templates/private/toc_types.html
index 1bfdd2b..99a5add 100644
--- a/chrome/common/extensions/docs/templates/private/toc_types.html
+++ b/chrome/common/extensions/docs/templates/private/toc_types.html
@@ -1,14 +1,15 @@
+{{!types Types in the TOC}}
<a href="#{{?parentName}}{{parentName}}-{{/}}types">Types</a>
<ol>
- {{#types}}
+ {{#t:types}}
<li>
- <a href="#{{id}}">{{name}}</a>
- {{?functions}}<ol><li>
- {{+partials.toc_functions parentName:name functions:functions}}
- </li></ol>{{/}}
- {{?events}}<ol><li>
- {{+partials.toc_events parentName:name events:events}}
+ <a href="#{{t.id}}">{{t.name}}</a>
+ {{?t.functions}}<ol><li>
+ {{+partials.toc_functions parentName:t.name functions:t.functions/}}
</li></ol>{{/}}
+ {{?t.events}}<ol><li>
+ {{+partials.toc_events parentName:t.name events:t.events/}}
+ </li></ol>{{/t.events}}
</li>
- {{/}}
+ {{/types}}
</ol>
diff --git a/chrome/common/extensions/docs/templates/private/type.html b/chrome/common/extensions/docs/templates/private/type.html
index 12c3b90..df786d0 100644
--- a/chrome/common/extensions/docs/templates/private/type.html
+++ b/chrome/common/extensions/docs/templates/private/type.html
@@ -1,3 +1,4 @@
+{{#type}}
<div>
{{?display_name}}
<h3 id="{{id}}">{{display_name}}</h3>
@@ -6,37 +7,38 @@
{{^is_object}}
{{?enum_values}}
<dd>enum of
- {{#enum_values}}
- {{?@.last}}or {{/}}<code>"{{name}}"</code>{{^@.last}}, {{/}}
+ {{#e:enum_values}}
+ {{?e.last}}or {{/}}<code>"{{name}}"</code>{{^e.last}}, {{/}}
{{/enum_values}}
</dd>
{{:enum_values}}
<dd>
- {{+partials.variable_type}}
+ {{+partials.variable_type type:type/}}
</dd>
{{/enum_values}}
{{/is_object}}
{{?description}}
<dd>{{{description}}}</dd>
{{/description}}
- {{+partials.enum_descriptions values:enum_values}}
+ {{+partials.enum_descriptions values:enum_values/}}
{{?properties}}
{{+partials.type_item title:strings.properties
display_name:display_name
items:properties
- item_partial:partials.parameter_full}}
+ item_partial:partials.parameter_full/}}
{{/properties}}
{{?functions}}
{{+partials.type_item title:strings.methods
display_name:display_name
items:functions
- item_partial:partials.function}}
+ item_partial:partials.function/}}
{{/functions}}
{{?events}}
{{+partials.type_item title:strings.events
display_name:display_name
items:events
- item_partial:partials.event}}
+ item_partial:partials.event/}}
{{/events}}
</div>
</div>
+{{/type}}
diff --git a/chrome/common/extensions/docs/templates/private/type_item.html b/chrome/common/extensions/docs/templates/private/type_item.html
index 6c18127..2d88500 100644
--- a/chrome/common/extensions/docs/templates/private/type_item.html
+++ b/chrome/common/extensions/docs/templates/private/type_item.html
@@ -5,8 +5,6 @@
{{/display_name}}
<dd>
<dl>
- {{#items}}
- {{+item_partial @:@}}
- {{/items}}
+ {{#i:items +item_partial parameter:i property:i event:i function:i/}}
</dl>
</dd>
diff --git a/chrome/common/extensions/docs/templates/private/type_name.html b/chrome/common/extensions/docs/templates/private/type_name.html
index d3c9415..76836fa 100644
--- a/chrome/common/extensions/docs/templates/private/type_name.html
+++ b/chrome/common/extensions/docs/templates/private/type_name.html
@@ -1,6 +1,6 @@
<span class="type_name">
(
{{?optional}}<span class="optional">optional</span>{{/}}
- {{+partials.variable_type}}
+ {{+partials.variable_type type:type/}}
)
</span>
diff --git a/chrome/common/extensions/docs/templates/private/variable_type.html b/chrome/common/extensions/docs/templates/private/variable_type.html
index 708da88..0117f2e 100644
--- a/chrome/common/extensions/docs/templates/private/variable_type.html
+++ b/chrome/common/extensions/docs/templates/private/variable_type.html
@@ -1,20 +1,20 @@
-{{?link}}
-{{+partials.ref_link}}
-{{/link}}
+{{#type}}
+{{?link +partials.ref_link link:link/}}
{{?choices}}
-{{#choices}}
-{{+partials.variable_type}}{{^@.last}} or {{/}}
+{{#c:choices}}
+{{+partials.variable_type type:c/}}{{^c.last}} or {{/}}
{{/choices}}
{{/choices}}
{{?array}}
-array of {{+partials.variable_type}}
+array of {{+partials.variable_type type:array/}}
{{/array}}
{{?simple_type}}
{{simple_type}}
{{/simple_type}}
{{?enum_values}}
-enum of {{#enum_values}}{{?@.last}}or {{/}}<code>"{{name}}"</code>{{^@.last}}, {{/}}{{/}}
+enum of {{#e:enum_values}}{{?e.last}}or {{/}}<code>"{{name}}"</code>{{^e.last}}, {{/}}{{/}}
{{/enum_values}}
{{?value}}
<code>{{value}}</code>
{{/value}}
+{{/type}}
diff --git a/chrome/common/extensions/docs/templates/private/warning_deprecated.html b/chrome/common/extensions/docs/templates/private/warning_deprecated.html
index 47b0bd7..7df12ac 100644
--- a/chrome/common/extensions/docs/templates/private/warning_deprecated.html
+++ b/chrome/common/extensions/docs/templates/private/warning_deprecated.html
@@ -1,8 +1,7 @@
-{{- Parameters:
- |item|: the schema for the item
--}}
-{{?item.deprecated}}
+{{#item}}
+{{?deprecated}}
<p class="warning">
- {{item.name}} is deprecated. {{{item.deprecated}}}
+ {{name}} is deprecated. {{{deprecated}}}
</p>
-{{/item.deprecated}} \ No newline at end of file
+{{/deprecated}}
+{{/item}}
diff --git a/chrome/common/extensions/docs/templates/public/404.html b/chrome/common/extensions/docs/templates/public/404.html
index 9acb80e..d6e3916 100644
--- a/chrome/common/extensions/docs/templates/public/404.html
+++ b/chrome/common/extensions/docs/templates/public/404.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.404}}
+{{+partials.standard_extensions_article article:intros.404/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/404.html b/chrome/common/extensions/docs/templates/public/apps/404.html
index d9b9a45..8991d13 100644
--- a/chrome/common/extensions/docs/templates/public/apps/404.html
+++ b/chrome/common/extensions/docs/templates/public/apps/404.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.404}}
+{{+partials.standard_apps_article article:intros.404/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/a11y.html b/chrome/common/extensions/docs/templates/public/apps/a11y.html
index 5014292..2f67bb3 100644
--- a/chrome/common/extensions/docs/templates/public/apps/a11y.html
+++ b/chrome/common/extensions/docs/templates/public/apps/a11y.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.a11y}}
+{{+partials.standard_apps_article article:intros.a11y/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/about_apps.html b/chrome/common/extensions/docs/templates/public/apps/about_apps.html
index 134924c..6e824e9 100644
--- a/chrome/common/extensions/docs/templates/public/apps/about_apps.html
+++ b/chrome/common/extensions/docs/templates/public/apps/about_apps.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.about_apps}}
+{{+partials.standard_apps_article article:intros.about_apps/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/alarms.html b/chrome/common/extensions/docs/templates/public/apps/alarms.html
index d37eda395..9175605 100644
--- a/chrome/common/extensions/docs/templates/public/apps/alarms.html
+++ b/chrome/common/extensions/docs/templates/public/apps/alarms.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.alarms}}
+{{+partials.standard_apps_api api:apis.alarms/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/analytics.html b/chrome/common/extensions/docs/templates/public/apps/analytics.html
index b747699..e9fbcd5 100644
--- a/chrome/common/extensions/docs/templates/public/apps/analytics.html
+++ b/chrome/common/extensions/docs/templates/public/apps/analytics.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.analytics}}
+{{+partials.standard_apps_article article:intros.analytics/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/angular_framework.html b/chrome/common/extensions/docs/templates/public/apps/angular_framework.html
index 292c852..3d21e33 100644
--- a/chrome/common/extensions/docs/templates/public/apps/angular_framework.html
+++ b/chrome/common/extensions/docs/templates/public/apps/angular_framework.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.angular_framework}}
+{{+partials.standard_apps_article article:intros.angular_framework/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/api_index.html b/chrome/common/extensions/docs/templates/public/apps/api_index.html
index 153eae1..5af332d 100644
--- a/chrome/common/extensions/docs/templates/public/apps/api_index.html
+++ b/chrome/common/extensions/docs/templates/public/apps/api_index.html
@@ -3,4 +3,4 @@
is_apps:true
stable_apis:api_list.apps.chrome.stable
beta_apis:api_list.apps.chrome.beta
- dev_apis:api_list.apps.chrome.dev}}
+ dev_apis:api_list.apps.chrome.dev/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/api_other.html b/chrome/common/extensions/docs/templates/public/apps/api_other.html
index b665d61..16d883c 100644
--- a/chrome/common/extensions/docs/templates/public/apps/api_other.html
+++ b/chrome/common/extensions/docs/templates/public/apps/api_other.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.api_other}}
+{{+partials.standard_apps_article article:intros.api_other/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_architecture.html b/chrome/common/extensions/docs/templates/public/apps/app_architecture.html
index 0e30758..ce8d91a 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_architecture.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_architecture.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_architecture}}
+{{+partials.standard_apps_article article:intros.app_architecture/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab.html
index 0160be7..af77750 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab}}
+{{+partials.standard_apps_article article:intros.app_codelab/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab1_setup.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab1_setup.html
index 5c22182..5cf92e0 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab1_setup.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab1_setup.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab1_setup}}
+{{+partials.standard_apps_article article:intros.app_codelab1_setup/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab2_basic.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab2_basic.html
index 2c6b025..a536c0d 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab2_basic.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab2_basic.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab2_basic}}
+{{+partials.standard_apps_article article:intros.app_codelab2_basic/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab3_mvc.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab3_mvc.html
index bee8628..4646f67 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab3_mvc.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab3_mvc.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab3_mvc}}
+{{+partials.standard_apps_article article:intros.app_codelab3_mvc/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab5_data.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab5_data.html
index 1d4885a..6b7df84 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab5_data.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab5_data.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab5_data}}
+{{+partials.standard_apps_article article:intros.app_codelab5_data/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab6_lifecycle.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab6_lifecycle.html
index 353e67a..e5f6e61c 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab6_lifecycle.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab6_lifecycle.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab6_lifecycle}}
+{{+partials.standard_apps_article article:intros.app_codelab6_lifecycle/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab7_useridentification.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab7_useridentification.html
index 6b10f34..75c1a31 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab7_useridentification.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab7_useridentification.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab7_useridentification}}
+{{+partials.standard_apps_article article:intros.app_codelab7_useridentification/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab8_webresources.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab8_webresources.html
index bec4e3a..023c8bd 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab8_webresources.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab8_webresources.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab8_webresources}}
+{{+partials.standard_apps_article article:intros.app_codelab8_webresources/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_codelab_10_publishing.html b/chrome/common/extensions/docs/templates/public/apps/app_codelab_10_publishing.html
index 2565567..088be20 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_codelab_10_publishing.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_codelab_10_publishing.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_codelab_10_publishing}}
+{{+partials.standard_apps_article article:intros.app_codelab_10_publishing/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_deprecated.html b/chrome/common/extensions/docs/templates/public/apps/app_deprecated.html
index c9fa3b6..0981266 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_deprecated.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_deprecated.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_deprecated}}
+{{+partials.standard_apps_article article:intros.app_deprecated/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_external.html b/chrome/common/extensions/docs/templates/public/apps/app_external.html
index d493284..52032d2 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_external.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_external.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_external}}
+{{+partials.standard_apps_article article:intros.app_external/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_frameworks.html b/chrome/common/extensions/docs/templates/public/apps/app_frameworks.html
index af5c77d2..7e75084 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_frameworks.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_frameworks.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_frameworks}}
+{{+partials.standard_apps_article article:intros.app_frameworks/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_identity.html b/chrome/common/extensions/docs/templates/public/apps/app_identity.html
index ce60fa5..ef180c60 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_identity.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_identity.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_identity}}
+{{+partials.standard_apps_article article:intros.app_identity/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_intents.html b/chrome/common/extensions/docs/templates/public/apps/app_intents.html
index e2d4c67..0eededb 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_intents.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_intents.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_intents}}
+{{+partials.standard_apps_article article:intros.app_intents/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_lifecycle.html b/chrome/common/extensions/docs/templates/public/apps/app_lifecycle.html
index 6b39b869..b1d132e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_lifecycle.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_lifecycle.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_lifecycle}}
+{{+partials.standard_apps_article article:intros.app_lifecycle/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_network.html b/chrome/common/extensions/docs/templates/public/apps/app_network.html
index 72d47bb..54d420f 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_network.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_network.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_network}}
+{{+partials.standard_apps_article article:intros.app_network/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_runtime.html b/chrome/common/extensions/docs/templates/public/apps/app_runtime.html
index c3bb6ca..63a307f 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_runtime.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_runtime.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.app_runtime}}
+{{+partials.standard_apps_api api:apis.app_runtime/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_serial.html b/chrome/common/extensions/docs/templates/public/apps/app_serial.html
index add73b6..85d6227 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_serial.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_serial.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_serial}}
+{{+partials.standard_apps_article article:intros.app_serial/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_storage.html b/chrome/common/extensions/docs/templates/public/apps/app_storage.html
index ecc8a1f..953963e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_storage.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_storage.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_storage}}
+{{+partials.standard_apps_article article:intros.app_storage/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_usb.html b/chrome/common/extensions/docs/templates/public/apps/app_usb.html
index 7518e18..6d59d59 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_usb.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_usb.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_usb}}
+{{+partials.standard_apps_article article:intros.app_usb/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/app_window.html b/chrome/common/extensions/docs/templates/public/apps/app_window.html
index 2bb1aa5..a64dc2d 100644
--- a/chrome/common/extensions/docs/templates/public/apps/app_window.html
+++ b/chrome/common/extensions/docs/templates/public/apps/app_window.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.app_window}}
+{{+partials.standard_apps_api api:apis.app_window/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/audio.html b/chrome/common/extensions/docs/templates/public/apps/audio.html
index fc8642d..45052c6 100644
--- a/chrome/common/extensions/docs/templates/public/apps/audio.html
+++ b/chrome/common/extensions/docs/templates/public/apps/audio.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.audio}}
+{{+partials.standard_apps_api api:apis.audio/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/autoupdate.html b/chrome/common/extensions/docs/templates/public/apps/autoupdate.html
index 84551bc..0c1a232 100644
--- a/chrome/common/extensions/docs/templates/public/apps/autoupdate.html
+++ b/chrome/common/extensions/docs/templates/public/apps/autoupdate.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.autoupdate}}
+{{+partials.standard_apps_article article:intros.autoupdate/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/background_pages.html b/chrome/common/extensions/docs/templates/public/apps/background_pages.html
index f2d6f84..c39a2d56 100644
--- a/chrome/common/extensions/docs/templates/public/apps/background_pages.html
+++ b/chrome/common/extensions/docs/templates/public/apps/background_pages.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.background_pages}}
+{{+partials.standard_apps_article article:intros.background_pages/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/bluetooth.html b/chrome/common/extensions/docs/templates/public/apps/bluetooth.html
index 45ab21d..895b636 100644
--- a/chrome/common/extensions/docs/templates/public/apps/bluetooth.html
+++ b/chrome/common/extensions/docs/templates/public/apps/bluetooth.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.bluetooth}}
+{{+partials.standard_apps_api api:apis.bluetooth/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/cloudMessaging.html b/chrome/common/extensions/docs/templates/public/apps/cloudMessaging.html
index 16ea61b..aba16d5 100644
--- a/chrome/common/extensions/docs/templates/public/apps/cloudMessaging.html
+++ b/chrome/common/extensions/docs/templates/public/apps/cloudMessaging.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.cloudMessaging}}
+{{+partials.standard_apps_article article:intros.cloudMessaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/contentSecurityPolicy.html b/chrome/common/extensions/docs/templates/public/apps/contentSecurityPolicy.html
index d9e4ab0..361312f 100644
--- a/chrome/common/extensions/docs/templates/public/apps/contentSecurityPolicy.html
+++ b/chrome/common/extensions/docs/templates/public/apps/contentSecurityPolicy.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_csp}}
+{{+partials.standard_apps_article article:intros.app_csp/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/content_scripts.html b/chrome/common/extensions/docs/templates/public/apps/content_scripts.html
index 80f1fbc..8193105 100644
--- a/chrome/common/extensions/docs/templates/public/apps/content_scripts.html
+++ b/chrome/common/extensions/docs/templates/public/apps/content_scripts.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.content_scripts}}
+{{+partials.standard_apps_article article:intros.content_scripts/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/contextMenus.html b/chrome/common/extensions/docs/templates/public/apps/contextMenus.html
index c8e3649..b9542ea 100644
--- a/chrome/common/extensions/docs/templates/public/apps/contextMenus.html
+++ b/chrome/common/extensions/docs/templates/public/apps/contextMenus.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.context_menus intro:intros.contextMenus}}
+{{+partials.standard_apps_api api:apis.context_menus intro:intros.contextMenus/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/crx.html b/chrome/common/extensions/docs/templates/public/apps/crx.html
index d7c5b69..0697406 100644
--- a/chrome/common/extensions/docs/templates/public/apps/crx.html
+++ b/chrome/common/extensions/docs/templates/public/apps/crx.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.crx}}
+{{+partials.standard_apps_article article:intros.crx/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/declare_permissions.html b/chrome/common/extensions/docs/templates/public/apps/declare_permissions.html
index 66e2ecd..460617e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/declare_permissions.html
+++ b/chrome/common/extensions/docs/templates/public/apps/declare_permissions.html
@@ -1,2 +1,2 @@
{{+partials.standard_apps_article article:intros.declare_permissions
- permissions:permissions.declare_apps}}
+ permissions:permissions.declare_apps/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/desktop_notifications.html b/chrome/common/extensions/docs/templates/public/apps/desktop_notifications.html
index ba65a0c..2b303ad 100644
--- a/chrome/common/extensions/docs/templates/public/apps/desktop_notifications.html
+++ b/chrome/common/extensions/docs/templates/public/apps/desktop_notifications.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.desktop_notifications}}
+{{+partials.standard_apps_article article:intros.desktop_notifications/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/develop_apps.html b/chrome/common/extensions/docs/templates/public/apps/develop_apps.html
index 0c86785..699d60ec 100644
--- a/chrome/common/extensions/docs/templates/public/apps/develop_apps.html
+++ b/chrome/common/extensions/docs/templates/public/apps/develop_apps.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.develop_apps}}
+{{+partials.standard_apps_article article:intros.develop_apps/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/devtools.html b/chrome/common/extensions/docs/templates/public/apps/devtools.html
index 06ec7a8..bdd9a2c 100644
--- a/chrome/common/extensions/docs/templates/public/apps/devtools.html
+++ b/chrome/common/extensions/docs/templates/public/apps/devtools.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.devtools}}
+{{+partials.standard_apps_article article:intros.devtools/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/event_pages.html b/chrome/common/extensions/docs/templates/public/apps/event_pages.html
index d75de6f..9af84ac 100644
--- a/chrome/common/extensions/docs/templates/public/apps/event_pages.html
+++ b/chrome/common/extensions/docs/templates/public/apps/event_pages.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.event_pages}}
+{{+partials.standard_apps_article article:intros.event_pages/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/events.html b/chrome/common/extensions/docs/templates/public/apps/events.html
index 69899cf..c949636c 100644
--- a/chrome/common/extensions/docs/templates/public/apps/events.html
+++ b/chrome/common/extensions/docs/templates/public/apps/events.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.events intro:intros.events}}
+{{+partials.standard_apps_api api:apis.events intro:intros.events/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental.html b/chrome/common/extensions/docs/templates/public/apps/experimental.html
index f67bce4..2723ca1 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental.html
@@ -1 +1,3 @@
-{{+partials.standard_apps_article article:intros.experimental apis:api_list.apps.experimental}}
+{{+partials.standard_apps_article
+ article:intros.experimental
+ apis:api_list.apps.experimental/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_contextMenus.html b/chrome/common/extensions/docs/templates/public/apps/experimental_contextMenus.html
index 4a6c637..02b50ad 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_contextMenus.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_contextMenus.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_contextMenus}}
+{{+partials.standard_apps_article article:intros.experimental_contextMenus/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_inspectedWindow.html b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_inspectedWindow.html
index aac2044..ac1ba99 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_inspectedWindow.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_inspectedWindow.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_devtools_inspectedWindow}}
+{{+partials.standard_apps_article article:intros.experimental_devtools_inspectedWindow/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_network.html b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_network.html
index 67ea061..0b02aae 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_network.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_network.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_devtools_network}}
+{{+partials.standard_apps_article article:intros.experimental_devtools_network/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_panels.html b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_panels.html
index 4beef46..c684bac 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_panels.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_panels.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_devtools_panels}}
+{{+partials.standard_apps_article article:intros.experimental_devtools_panels/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_resources.html b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_resources.html
index f9bf1ae..279c17d 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_resources.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_devtools_resources.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_devtools_resources}}
+{{+partials.standard_apps_article article:intros.experimental_devtools_resources/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_identity.html b/chrome/common/extensions/docs/templates/public/apps/experimental_identity.html
index cad7b5d..8fea69e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_identity.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_identity.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_identity}}
+{{+partials.standard_apps_article article:intros.experimental_identity/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_inputUI.html b/chrome/common/extensions/docs/templates/public/apps/experimental_inputUI.html
index 79a28ce..9530a33 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_inputUI.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_inputUI.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_inputUI}}
+{{+partials.standard_apps_article article:intros.experimental_inputUI/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_storage.html b/chrome/common/extensions/docs/templates/public/apps/experimental_storage.html
index 69dda53..8c4e464 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_storage.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_storage.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_storage}}
+{{+partials.standard_apps_article article:intros.experimental_storage/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector.html b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector.html
index 549aeb8..18c0d80 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_webInspector}}
+{{+partials.standard_apps_article article:intros.experimental_webInspector/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_audits.html b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_audits.html
index c00981d..f7adf84 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_audits.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_audits.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_webInspector_audits}}
+{{+partials.standard_apps_article article:intros.experimental_webInspector_audits/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_panels.html b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_panels.html
index 6541843..01196a6 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_panels.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_panels.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_webInspector_panels}}
+{{+partials.standard_apps_article article:intros.experimental_webInspector_panels/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_resources.html b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_resources.html
index 96ea172..1427b6b 100644
--- a/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_resources.html
+++ b/chrome/common/extensions/docs/templates/public/apps/experimental_webInspector_resources.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.experimental_webInspector_resources}}
+{{+partials.standard_apps_article article:intros.experimental_webInspector_resources/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/external_extensions.html b/chrome/common/extensions/docs/templates/public/apps/external_extensions.html
index 715bc1b..3d99f9e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/external_extensions.html
+++ b/chrome/common/extensions/docs/templates/public/apps/external_extensions.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.external_extensions}}
+{{+partials.standard_apps_article article:intros.external_extensions/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/faq.html b/chrome/common/extensions/docs/templates/public/apps/faq.html
index 84fe405..d64e7aa 100644
--- a/chrome/common/extensions/docs/templates/public/apps/faq.html
+++ b/chrome/common/extensions/docs/templates/public/apps/faq.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.faq}}
+{{+partials.standard_apps_article article:intros.faq/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/fileSystem.html b/chrome/common/extensions/docs/templates/public/apps/fileSystem.html
index c5062ef..5a98edc 100644
--- a/chrome/common/extensions/docs/templates/public/apps/fileSystem.html
+++ b/chrome/common/extensions/docs/templates/public/apps/fileSystem.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.file_system}}
+{{+partials.standard_apps_api api:apis.file_system/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/first_app.html b/chrome/common/extensions/docs/templates/public/apps/first_app.html
index 664a89b..fc1e255 100644
--- a/chrome/common/extensions/docs/templates/public/apps/first_app.html
+++ b/chrome/common/extensions/docs/templates/public/apps/first_app.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.first_app}}
+{{+partials.standard_apps_article article:intros.first_app/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/gcm_server.html b/chrome/common/extensions/docs/templates/public/apps/gcm_server.html
index e74254a..dd960e7 100644
--- a/chrome/common/extensions/docs/templates/public/apps/gcm_server.html
+++ b/chrome/common/extensions/docs/templates/public/apps/gcm_server.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.gcm_server}}
+{{+partials.standard_apps_article article:intros.gcm_server/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/gcm_tos.html b/chrome/common/extensions/docs/templates/public/apps/gcm_tos.html
index 02a71c2..78f0acc 100644
--- a/chrome/common/extensions/docs/templates/public/apps/gcm_tos.html
+++ b/chrome/common/extensions/docs/templates/public/apps/gcm_tos.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.gcm_tos}}
+{{+partials.standard_apps_article article:intros.gcm_tos/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/google_wallet.html b/chrome/common/extensions/docs/templates/public/apps/google_wallet.html
index 484746c..e4ca7f9 100644
--- a/chrome/common/extensions/docs/templates/public/apps/google_wallet.html
+++ b/chrome/common/extensions/docs/templates/public/apps/google_wallet.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.google_wallet}}
+{{+partials.standard_apps_article article:intros.google_wallet/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/hosting.html b/chrome/common/extensions/docs/templates/public/apps/hosting.html
index 7947899..4098a47 100644
--- a/chrome/common/extensions/docs/templates/public/apps/hosting.html
+++ b/chrome/common/extensions/docs/templates/public/apps/hosting.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.hosting}}
+{{+partials.standard_apps_article article:intros.hosting/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/i18n-messages.html b/chrome/common/extensions/docs/templates/public/apps/i18n-messages.html
index ff5c891..ab4d247 100644
--- a/chrome/common/extensions/docs/templates/public/apps/i18n-messages.html
+++ b/chrome/common/extensions/docs/templates/public/apps/i18n-messages.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.i18n-messages}}
+{{+partials.standard_apps_article article:intros.i18n-messages/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/i18n.html b/chrome/common/extensions/docs/templates/public/apps/i18n.html
index 1b82694..0ae465e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/i18n.html
+++ b/chrome/common/extensions/docs/templates/public/apps/i18n.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.i18n intro:intros.i18n}}
+{{+partials.standard_apps_api api:apis.i18n intro:intros.i18n/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/identity.html b/chrome/common/extensions/docs/templates/public/apps/identity.html
index aa29dfa..2c2ab1e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/identity.html
+++ b/chrome/common/extensions/docs/templates/public/apps/identity.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.identity}}
+{{+partials.standard_apps_api api:apis.identity/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/idle.html b/chrome/common/extensions/docs/templates/public/apps/idle.html
index 1ed9950..69c4a7d 100644
--- a/chrome/common/extensions/docs/templates/public/apps/idle.html
+++ b/chrome/common/extensions/docs/templates/public/apps/idle.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.idle intro:intros.idle}}
+{{+partials.standard_apps_api api:apis.idle intro:intros.idle/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/location.html b/chrome/common/extensions/docs/templates/public/apps/location.html
index 3666d4c..e5564ba 100644
--- a/chrome/common/extensions/docs/templates/public/apps/location.html
+++ b/chrome/common/extensions/docs/templates/public/apps/location.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.location intro:intros.location}}
+{{+partials.standard_apps_api api:apis.location intro:intros.location/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest.html b/chrome/common/extensions/docs/templates/public/apps/manifest.html
index 31d7c10..d974393 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest.html
@@ -1,2 +1,2 @@
{{+partials.standard_apps_article article:intros.manifest
- manifest_source:manifest_source.apps}}
+ manifest_source:manifest_source.apps/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/app.html b/chrome/common/extensions/docs/templates/public/apps/manifest/app.html
index 73b8600..cc0f193 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/app.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/app.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/app}}
+{{+partials.standard_apps_article article:intros.manifest/app/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/default_locale.html b/chrome/common/extensions/docs/templates/public/apps/manifest/default_locale.html
index 1f20876..f266866 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/default_locale.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/default_locale.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/default_locale}}
+{{+partials.standard_apps_article article:intros.manifest/default_locale/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/description.html b/chrome/common/extensions/docs/templates/public/apps/manifest/description.html
index 8f8f0526..ab53ddb 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/description.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/description.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/description}}
+{{+partials.standard_apps_article article:intros.manifest/description/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/externally_connectable.html b/chrome/common/extensions/docs/templates/public/apps/manifest/externally_connectable.html
index 5d3cfbc..bfc1bfef 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/externally_connectable.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/externally_connectable.html
@@ -1,2 +1,2 @@
{{+partials.standard_apps_article
- article:intros.manifest/externally_connectable}}
+ article:intros.manifest/externally_connectable/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/file_handlers.html b/chrome/common/extensions/docs/templates/public/apps/manifest/file_handlers.html
index fd2d5b0..5740ef0 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/file_handlers.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/file_handlers.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/file_handlers}}
+{{+partials.standard_apps_article article:intros.manifest/file_handlers/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/icons.html b/chrome/common/extensions/docs/templates/public/apps/manifest/icons.html
index b7bfdaa..ba5e883 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/icons.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/icons.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/icons}}
+{{+partials.standard_apps_article article:intros.manifest/icons/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/key.html b/chrome/common/extensions/docs/templates/public/apps/manifest/key.html
index ca347ab..3d3c8a6 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/key.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/key.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/key}}
+{{+partials.standard_apps_article article:intros.manifest/key/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/kiosk_enabled.html b/chrome/common/extensions/docs/templates/public/apps/manifest/kiosk_enabled.html
index 51ddd9e..1282bc0 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/kiosk_enabled.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/kiosk_enabled.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/kiosk_enabled}}
+{{+partials.standard_apps_article article:intros.manifest/kiosk_enabled/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/manifest_version.html b/chrome/common/extensions/docs/templates/public/apps/manifest/manifest_version.html
index c9ee93e..91c7c2c 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/manifest_version.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/manifest_version.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/manifest_version}}
+{{+partials.standard_apps_article article:intros.manifest/manifest_version/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/minimum_chrome_version.html b/chrome/common/extensions/docs/templates/public/apps/manifest/minimum_chrome_version.html
index 895ee0f..9bca3cd 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/minimum_chrome_version.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/minimum_chrome_version.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/minimum_chrome_version}}
+{{+partials.standard_apps_article article:intros.manifest/minimum_chrome_version/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/nacl_modules.html b/chrome/common/extensions/docs/templates/public/apps/manifest/nacl_modules.html
index 8634f80..6b3ac20 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/nacl_modules.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/nacl_modules.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/nacl_modules}}
+{{+partials.standard_apps_article article:intros.manifest/nacl_modules/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/name.html b/chrome/common/extensions/docs/templates/public/apps/manifest/name.html
index 02d7631..4989d17 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/name.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/name.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/name}}
+{{+partials.standard_apps_article article:intros.manifest/name/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/offline_enabled.html b/chrome/common/extensions/docs/templates/public/apps/manifest/offline_enabled.html
index d4629ab..80f30f7 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/offline_enabled.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/offline_enabled.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/offline_enabled}}
+{{+partials.standard_apps_article article:intros.manifest/offline_enabled/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/requirements.html b/chrome/common/extensions/docs/templates/public/apps/manifest/requirements.html
index bec86f6..1022459 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/requirements.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/requirements.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/requirements}}
+{{+partials.standard_apps_article article:intros.manifest/requirements/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/sandbox.html b/chrome/common/extensions/docs/templates/public/apps/manifest/sandbox.html
index b287fcb..2f7b9a2 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/sandbox.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/sandbox.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/sandbox}}
+{{+partials.standard_apps_article article:intros.manifest/sandbox/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/url_handlers.html b/chrome/common/extensions/docs/templates/public/apps/manifest/url_handlers.html
index 1f3c663..c90e82a 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/url_handlers.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/url_handlers.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/url_handlers}}
+{{+partials.standard_apps_article article:intros.manifest/url_handlers/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifest/version.html b/chrome/common/extensions/docs/templates/public/apps/manifest/version.html
index d8283d9..1987bb3 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifest/version.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifest/version.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.manifest/version}}
+{{+partials.standard_apps_article article:intros.manifest/version/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/manifestVersion.html b/chrome/common/extensions/docs/templates/public/apps/manifestVersion.html
index 3ab65907..be4d833 100644
--- a/chrome/common/extensions/docs/templates/public/apps/manifestVersion.html
+++ b/chrome/common/extensions/docs/templates/public/apps/manifestVersion.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.app_manifestVersion}}
+{{+partials.standard_apps_article article:intros.app_manifestVersion/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/match_patterns.html b/chrome/common/extensions/docs/templates/public/apps/match_patterns.html
index f327243..55bfd72 100644
--- a/chrome/common/extensions/docs/templates/public/apps/match_patterns.html
+++ b/chrome/common/extensions/docs/templates/public/apps/match_patterns.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.match_patterns}}
+{{+partials.standard_apps_article article:intros.match_patterns/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/mediaGalleries.html b/chrome/common/extensions/docs/templates/public/apps/mediaGalleries.html
index 6468eb2..0cf45987 100644
--- a/chrome/common/extensions/docs/templates/public/apps/mediaGalleries.html
+++ b/chrome/common/extensions/docs/templates/public/apps/mediaGalleries.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.media_galleries intro:intros.mediaGalleries}}
+{{+partials.standard_apps_api api:apis.media_galleries intro:intros.mediaGalleries/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/messaging.html b/chrome/common/extensions/docs/templates/public/apps/messaging.html
index e4c18e3..0acfb18 100644
--- a/chrome/common/extensions/docs/templates/public/apps/messaging.html
+++ b/chrome/common/extensions/docs/templates/public/apps/messaging.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.messaging}}
+{{+partials.standard_apps_article article:intros.messaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/notifications.html b/chrome/common/extensions/docs/templates/public/apps/notifications.html
index b4f7d25..8c6fadb 100644
--- a/chrome/common/extensions/docs/templates/public/apps/notifications.html
+++ b/chrome/common/extensions/docs/templates/public/apps/notifications.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.notifications intro:intros.notifications}}
+{{+partials.standard_apps_api api:apis.notifications intro:intros.notifications/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/npapi.html b/chrome/common/extensions/docs/templates/public/apps/npapi.html
index 51eddac..3476104 100644
--- a/chrome/common/extensions/docs/templates/public/apps/npapi.html
+++ b/chrome/common/extensions/docs/templates/public/apps/npapi.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.npapi}}
+{{+partials.standard_apps_article article:intros.npapi/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/offline_apps.html b/chrome/common/extensions/docs/templates/public/apps/offline_apps.html
index dafda5c..e443e69 100644
--- a/chrome/common/extensions/docs/templates/public/apps/offline_apps.html
+++ b/chrome/common/extensions/docs/templates/public/apps/offline_apps.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.offline_apps}}
+{{+partials.standard_apps_article article:intros.offline_apps/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/packaging.html b/chrome/common/extensions/docs/templates/public/apps/packaging.html
index c8d7fac..8076d7d 100644
--- a/chrome/common/extensions/docs/templates/public/apps/packaging.html
+++ b/chrome/common/extensions/docs/templates/public/apps/packaging.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.packaging}}
+{{+partials.standard_apps_article article:intros.packaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/permission_warnings.html b/chrome/common/extensions/docs/templates/public/apps/permission_warnings.html
index 54248d6..682614f 100644
--- a/chrome/common/extensions/docs/templates/public/apps/permission_warnings.html
+++ b/chrome/common/extensions/docs/templates/public/apps/permission_warnings.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.permission_warnings}}
+{{+partials.standard_apps_article article:intros.permission_warnings/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/permissions.html b/chrome/common/extensions/docs/templates/public/apps/permissions.html
index 85a114f..a351539 100644
--- a/chrome/common/extensions/docs/templates/public/apps/permissions.html
+++ b/chrome/common/extensions/docs/templates/public/apps/permissions.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.permissions intro:intros.permissions}}
+{{+partials.standard_apps_api api:apis.permissions intro:intros.permissions/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/power.html b/chrome/common/extensions/docs/templates/public/apps/power.html
index 851b3d9..ec18760 100644
--- a/chrome/common/extensions/docs/templates/public/apps/power.html
+++ b/chrome/common/extensions/docs/templates/public/apps/power.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.power intro:intros.power}}
+{{+partials.standard_apps_api api:apis.power intro:intros.power/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/private_apis.html b/chrome/common/extensions/docs/templates/public/apps/private_apis.html
index 0e15873..8b5adc87 100644
--- a/chrome/common/extensions/docs/templates/public/apps/private_apis.html
+++ b/chrome/common/extensions/docs/templates/public/apps/private_apis.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.private_apis is_apps:true}}
+{{+partials.standard_apps_article article:intros.private_apis is_apps:true/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/publish_app.html b/chrome/common/extensions/docs/templates/public/apps/publish_app.html
index d3b94c24..5f93757 100644
--- a/chrome/common/extensions/docs/templates/public/apps/publish_app.html
+++ b/chrome/common/extensions/docs/templates/public/apps/publish_app.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.publish_app}}
+{{+partials.standard_apps_article article:intros.publish_app/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/pushMessaging.html b/chrome/common/extensions/docs/templates/public/apps/pushMessaging.html
index 92e6d73..17aaa37 100644
--- a/chrome/common/extensions/docs/templates/public/apps/pushMessaging.html
+++ b/chrome/common/extensions/docs/templates/public/apps/pushMessaging.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.push_messaging intro:intros.pushMessaging}}
+{{+partials.standard_apps_api api:apis.push_messaging intro:intros.pushMessaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/runtime.html b/chrome/common/extensions/docs/templates/public/apps/runtime.html
index f7d5626..f38ea14 100644
--- a/chrome/common/extensions/docs/templates/public/apps/runtime.html
+++ b/chrome/common/extensions/docs/templates/public/apps/runtime.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.runtime}}
+{{+partials.standard_apps_api api:apis.runtime/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/samples.html b/chrome/common/extensions/docs/templates/public/apps/samples.html
index a9d915b..68b1e82 100644
--- a/chrome/common/extensions/docs/templates/public/apps/samples.html
+++ b/chrome/common/extensions/docs/templates/public/apps/samples.html
@@ -3,4 +3,4 @@
samples_list:samples.apps
samples_url:apps_samples_url
title:strings.apps_title
- platform:strings.app}}
+ platform:strings.app/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/sandboxingEval.html b/chrome/common/extensions/docs/templates/public/apps/sandboxingEval.html
index 3e0c1e3..94510c4 100644
--- a/chrome/common/extensions/docs/templates/public/apps/sandboxingEval.html
+++ b/chrome/common/extensions/docs/templates/public/apps/sandboxingEval.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.sandboxingEval}}
+{{+partials.standard_apps_article article:intros.sandboxingEval/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/sencha_framework.html b/chrome/common/extensions/docs/templates/public/apps/sencha_framework.html
index 3fb3ddd..b3ba0e0 100644
--- a/chrome/common/extensions/docs/templates/public/apps/sencha_framework.html
+++ b/chrome/common/extensions/docs/templates/public/apps/sencha_framework.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.sencha_framework}}
+{{+partials.standard_apps_article article:intros.sencha_framework/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/serial.html b/chrome/common/extensions/docs/templates/public/apps/serial.html
index de040bf..d3c15dc 100644
--- a/chrome/common/extensions/docs/templates/public/apps/serial.html
+++ b/chrome/common/extensions/docs/templates/public/apps/serial.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.serial}}
+{{+partials.standard_apps_api api:apis.serial/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/socket.html b/chrome/common/extensions/docs/templates/public/apps/socket.html
index d5602e8..6111501 100644
--- a/chrome/common/extensions/docs/templates/public/apps/socket.html
+++ b/chrome/common/extensions/docs/templates/public/apps/socket.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.socket}}
+{{+partials.standard_apps_api api:apis.socket/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/storage.html b/chrome/common/extensions/docs/templates/public/apps/storage.html
index 90c3fc2..f5f570b 100644
--- a/chrome/common/extensions/docs/templates/public/apps/storage.html
+++ b/chrome/common/extensions/docs/templates/public/apps/storage.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.storage intro:intros.storage}}
+{{+partials.standard_apps_api api:apis.storage intro:intros.storage/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/syncFileSystem.html b/chrome/common/extensions/docs/templates/public/apps/syncFileSystem.html
index de05597..fbbcfc7 100644
--- a/chrome/common/extensions/docs/templates/public/apps/syncFileSystem.html
+++ b/chrome/common/extensions/docs/templates/public/apps/syncFileSystem.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.sync_file_system}}
+{{+partials.standard_apps_api api:apis.sync_file_system/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/system_cpu.html b/chrome/common/extensions/docs/templates/public/apps/system_cpu.html
index 996fc61..903a034 100644
--- a/chrome/common/extensions/docs/templates/public/apps/system_cpu.html
+++ b/chrome/common/extensions/docs/templates/public/apps/system_cpu.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.system_cpu}}
+{{+partials.standard_apps_api api:apis.system_cpu/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/system_display.html b/chrome/common/extensions/docs/templates/public/apps/system_display.html
index 0ee722f..1728f3c 100644
--- a/chrome/common/extensions/docs/templates/public/apps/system_display.html
+++ b/chrome/common/extensions/docs/templates/public/apps/system_display.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.system_display}}
+{{+partials.standard_apps_api api:apis.system_display/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/system_memory.html b/chrome/common/extensions/docs/templates/public/apps/system_memory.html
index 0691784..61ecd98 100644
--- a/chrome/common/extensions/docs/templates/public/apps/system_memory.html
+++ b/chrome/common/extensions/docs/templates/public/apps/system_memory.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.system_memory}}
+{{+partials.standard_apps_api api:apis.system_memory/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/system_storage.html b/chrome/common/extensions/docs/templates/public/apps/system_storage.html
index 549148f..864ddb8 100644
--- a/chrome/common/extensions/docs/templates/public/apps/system_storage.html
+++ b/chrome/common/extensions/docs/templates/public/apps/system_storage.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.system_storage}}
+{{+partials.standard_apps_api api:apis.system_storage/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/tags/webview.html b/chrome/common/extensions/docs/templates/public/apps/tags/webview.html
index 1ada231..ed22417 100644
--- a/chrome/common/extensions/docs/templates/public/apps/tags/webview.html
+++ b/chrome/common/extensions/docs/templates/public/apps/tags/webview.html
@@ -1 +1 @@
-{{+partials.standard_apps_api intro:intros.webview_tag api:apis.webview_tag}}
+{{+partials.standard_apps_api intro:intros.webview_tag api:apis.webview_tag/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/themes.html b/chrome/common/extensions/docs/templates/public/apps/themes.html
index ee72c5d..87c5e1a 100644
--- a/chrome/common/extensions/docs/templates/public/apps/themes.html
+++ b/chrome/common/extensions/docs/templates/public/apps/themes.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.themes}}
+{{+partials.standard_apps_article article:intros.themes/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/tts.html b/chrome/common/extensions/docs/templates/public/apps/tts.html
index 6913c00..1905e81 100644
--- a/chrome/common/extensions/docs/templates/public/apps/tts.html
+++ b/chrome/common/extensions/docs/templates/public/apps/tts.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.tts intro:intros.tts}}
+{{+partials.standard_apps_api api:apis.tts intro:intros.tts/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/tut_debugging.html b/chrome/common/extensions/docs/templates/public/apps/tut_debugging.html
index d9051b0..7d96d5f 100644
--- a/chrome/common/extensions/docs/templates/public/apps/tut_debugging.html
+++ b/chrome/common/extensions/docs/templates/public/apps/tut_debugging.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.tut_debugging}}
+{{+partials.standard_apps_article article:intros.tut_debugging/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/tut_oauth.html b/chrome/common/extensions/docs/templates/public/apps/tut_oauth.html
index 8a360bf..1d4cb28 100644
--- a/chrome/common/extensions/docs/templates/public/apps/tut_oauth.html
+++ b/chrome/common/extensions/docs/templates/public/apps/tut_oauth.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.tut_oauth}}
+{{+partials.standard_apps_article article:intros.tut_oauth/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/types.html b/chrome/common/extensions/docs/templates/public/apps/types.html
index 3023505..84e448f 100644
--- a/chrome/common/extensions/docs/templates/public/apps/types.html
+++ b/chrome/common/extensions/docs/templates/public/apps/types.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.types intro:intros.types}}
+{{+partials.standard_apps_api api:apis.types intro:intros.types/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/usb.html b/chrome/common/extensions/docs/templates/public/apps/usb.html
index e540bcc..f07cf0e 100644
--- a/chrome/common/extensions/docs/templates/public/apps/usb.html
+++ b/chrome/common/extensions/docs/templates/public/apps/usb.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.usb}}
+{{+partials.standard_apps_api api:apis.usb/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/webstore.html b/chrome/common/extensions/docs/templates/public/apps/webstore.html
index f7cfb28..6628aa9 100644
--- a/chrome/common/extensions/docs/templates/public/apps/webstore.html
+++ b/chrome/common/extensions/docs/templates/public/apps/webstore.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.webstore}}
+{{+partials.standard_apps_api api:apis.webstore/}}
diff --git a/chrome/common/extensions/docs/templates/public/apps/xhr.html b/chrome/common/extensions/docs/templates/public/apps/xhr.html
index 34be1c2..5226e40 100644
--- a/chrome/common/extensions/docs/templates/public/apps/xhr.html
+++ b/chrome/common/extensions/docs/templates/public/apps/xhr.html
@@ -1 +1 @@
-{{+partials.standard_apps_article article:intros.xhr}}
+{{+partials.standard_apps_article article:intros.xhr/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/404.html b/chrome/common/extensions/docs/templates/public/extensions/404.html
index 9acb80e..d6e3916 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/404.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/404.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.404}}
+{{+partials.standard_extensions_article article:intros.404/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/a11y.html b/chrome/common/extensions/docs/templates/public/extensions/a11y.html
index ffa8b22..348d730 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/a11y.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/a11y.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.a11y}}
+{{+partials.standard_extensions_article article:intros.a11y/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/activeTab.html b/chrome/common/extensions/docs/templates/public/extensions/activeTab.html
index 61f1820..7d57a60 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/activeTab.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/activeTab.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.activeTab}}
+{{+partials.standard_extensions_article article:intros.activeTab/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/alarms.html b/chrome/common/extensions/docs/templates/public/extensions/alarms.html
index 855b4b9..5c0c890 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/alarms.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/alarms.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.alarms}}
+{{+partials.standard_extensions_api api:apis.alarms/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/api_index.html b/chrome/common/extensions/docs/templates/public/extensions/api_index.html
index 8cac6e8..8b6c749 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/api_index.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/api_index.html
@@ -2,4 +2,4 @@
article:intros.api_index
stable_apis:api_list.extensions.chrome.stable
beta_apis:api_list.extensions.chrome.beta
- dev_apis:api_list.extensions.chrome.dev}}
+ dev_apis:api_list.extensions.chrome.dev/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/api_other.html b/chrome/common/extensions/docs/templates/public/extensions/api_other.html
index 3072c0b..91d6cf48 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/api_other.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/api_other.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.api_other}}
+{{+partials.standard_extensions_article article:intros.api_other/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/app_identity.html b/chrome/common/extensions/docs/templates/public/extensions/app_identity.html
index ee3c4e5..3334bf5 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/app_identity.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/app_identity.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.app_identity}}
+{{+partials.standard_extensions_article article:intros.app_identity/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/apps.html b/chrome/common/extensions/docs/templates/public/extensions/apps.html
index 898f3fc..03790ac 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/apps.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/apps.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.apps}}
+{{+partials.standard_extensions_article article:intros.apps/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/autoupdate.html b/chrome/common/extensions/docs/templates/public/extensions/autoupdate.html
index 7ad2b5d..e4ce6d3 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/autoupdate.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/autoupdate.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.autoupdate}}
+{{+partials.standard_extensions_article article:intros.autoupdate/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/background_pages.html b/chrome/common/extensions/docs/templates/public/extensions/background_pages.html
index 4f70c7d..c44c534 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/background_pages.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/background_pages.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.background_pages}}
+{{+partials.standard_extensions_article article:intros.background_pages/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/bookmarks.html b/chrome/common/extensions/docs/templates/public/extensions/bookmarks.html
index d2a36f6..5955c6c 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/bookmarks.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/bookmarks.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.bookmarks intro:intros.bookmarks}}
+{{+partials.standard_extensions_api api:apis.bookmarks intro:intros.bookmarks/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/browserAction.html b/chrome/common/extensions/docs/templates/public/extensions/browserAction.html
index ae1b726..8ff826a 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/browserAction.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/browserAction.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.browser_action intro:intros.browserAction}}
+{{+partials.standard_extensions_api api:apis.browser_action intro:intros.browserAction/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/browsingData.html b/chrome/common/extensions/docs/templates/public/extensions/browsingData.html
index 18db5c8..cf574e3 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/browsingData.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/browsingData.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.browsing_data intro:intros.browsingData}}
+{{+partials.standard_extensions_api api:apis.browsing_data intro:intros.browsingData/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/cloudMessaging.html b/chrome/common/extensions/docs/templates/public/extensions/cloudMessaging.html
index 3a79880..7a6bc59 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/cloudMessaging.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/cloudMessaging.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.cloudMessaging}}
+{{+partials.standard_extensions_article article:intros.cloudMessaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/commands.html b/chrome/common/extensions/docs/templates/public/extensions/commands.html
index 99189c9..2e3a392 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/commands.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/commands.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.commands intro:intros.commands}}
+{{+partials.standard_extensions_api api:apis.commands intro:intros.commands/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/contentSecurityPolicy.html b/chrome/common/extensions/docs/templates/public/extensions/contentSecurityPolicy.html
index 46abbdc..61e3de1 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/contentSecurityPolicy.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/contentSecurityPolicy.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.contentSecurityPolicy}}
+{{+partials.standard_extensions_article article:intros.contentSecurityPolicy/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/contentSettings.html b/chrome/common/extensions/docs/templates/public/extensions/contentSettings.html
index 5aac9c9..047ad609 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/contentSettings.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/contentSettings.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.content_settings intro:intros.contentSettings}}
+{{+partials.standard_extensions_api api:apis.content_settings intro:intros.contentSettings/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/content_scripts.html b/chrome/common/extensions/docs/templates/public/extensions/content_scripts.html
index dfb657f5..998cac9 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/content_scripts.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/content_scripts.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.content_scripts}}
+{{+partials.standard_extensions_article article:intros.content_scripts/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/contextMenus.html b/chrome/common/extensions/docs/templates/public/extensions/contextMenus.html
index 075a30e..00c3830 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/contextMenus.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/contextMenus.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.context_menus intro:intros.contextMenus}}
+{{+partials.standard_extensions_api api:apis.context_menus intro:intros.contextMenus/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/cookies.html b/chrome/common/extensions/docs/templates/public/extensions/cookies.html
index c1d4a42..1f9d963 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/cookies.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/cookies.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.cookies intro:intros.cookies}}
+{{+partials.standard_extensions_api api:apis.cookies intro:intros.cookies/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/crx.html b/chrome/common/extensions/docs/templates/public/extensions/crx.html
index ad07520..235c494 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/crx.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/crx.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.crx}}
+{{+partials.standard_extensions_article article:intros.crx/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/debugger.html b/chrome/common/extensions/docs/templates/public/extensions/debugger.html
index d3d4a09..e8854ce 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/debugger.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/debugger.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.debugger intro:intros.debugger}}
+{{+partials.standard_extensions_api api:apis.debugger intro:intros.debugger/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/declarativeContent.html b/chrome/common/extensions/docs/templates/public/extensions/declarativeContent.html
index c8c45b5..92963d9 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/declarativeContent.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/declarativeContent.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.declarative_content intro:intros.declarativeContent}}
+{{+partials.standard_extensions_api api:apis.declarative_content intro:intros.declarativeContent/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/declarativeWebRequest.html b/chrome/common/extensions/docs/templates/public/extensions/declarativeWebRequest.html
index 839bd55..21ba85e 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/declarativeWebRequest.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/declarativeWebRequest.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.declarative_web_request intro:intros.declarativeWebRequest}}
+{{+partials.standard_extensions_api api:apis.declarative_web_request intro:intros.declarativeWebRequest/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/declare_permissions.html b/chrome/common/extensions/docs/templates/public/extensions/declare_permissions.html
index 20524c4..01a70a5 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/declare_permissions.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/declare_permissions.html
@@ -1,2 +1,2 @@
{{+partials.standard_extensions_article article:intros.declare_permissions
- permissions:permissions.declare_extensions}}
+ permissions:permissions.declare_extensions/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/desktopCapture.html b/chrome/common/extensions/docs/templates/public/extensions/desktopCapture.html
index 0de6f23..4237f2f 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/desktopCapture.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/desktopCapture.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.desktop_capture}}
+{{+partials.standard_extensions_api api:apis.desktop_capture/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/desktop_notifications.html b/chrome/common/extensions/docs/templates/public/extensions/desktop_notifications.html
index 3d54dbd..b6320b2 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/desktop_notifications.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/desktop_notifications.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.desktop_notifications}}
+{{+partials.standard_extensions_article article:intros.desktop_notifications/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/devguide.html b/chrome/common/extensions/docs/templates/public/extensions/devguide.html
index fc0357e..c7f2fcd 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/devguide.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/devguide.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.devguide}}
+{{+partials.standard_extensions_article article:intros.devguide/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/devtools.html b/chrome/common/extensions/docs/templates/public/extensions/devtools.html
index 7d763cb..af2f57877 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/devtools.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/devtools.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.devtools}}
+{{+partials.standard_extensions_article article:intros.devtools/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/devtools_inspectedWindow.html b/chrome/common/extensions/docs/templates/public/extensions/devtools_inspectedWindow.html
index 459e573..8f2f662 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/devtools_inspectedWindow.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/devtools_inspectedWindow.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.devtools/inspected_window intro:intros.devtools_inspectedWindow}}
+{{+partials.standard_extensions_api api:apis.devtools/inspected_window intro:intros.devtools_inspectedWindow/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/devtools_network.html b/chrome/common/extensions/docs/templates/public/extensions/devtools_network.html
index 985744d..57e7175 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/devtools_network.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/devtools_network.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.devtools/network intro:intros.devtools_network}}
+{{+partials.standard_extensions_api api:apis.devtools/network intro:intros.devtools_network/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/devtools_panels.html b/chrome/common/extensions/docs/templates/public/extensions/devtools_panels.html
index 0d7fae8..9ccdd23 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/devtools_panels.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/devtools_panels.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.devtools/panels intro:intros.devtools_panels}}
+{{+partials.standard_extensions_api api:apis.devtools/panels intro:intros.devtools_panels/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/downloads.html b/chrome/common/extensions/docs/templates/public/extensions/downloads.html
index 909d110..565dcb5 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/downloads.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/downloads.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.downloads intro:intros.downloads}}
+{{+partials.standard_extensions_api api:apis.downloads intro:intros.downloads/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/event_pages.html b/chrome/common/extensions/docs/templates/public/extensions/event_pages.html
index e205377..3afa028 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/event_pages.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/event_pages.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.event_pages}}
+{{+partials.standard_extensions_article article:intros.event_pages/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/events.html b/chrome/common/extensions/docs/templates/public/extensions/events.html
index d1eb774..83ac7f7 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/events.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/events.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.events intro:intros.events}}
+{{+partials.standard_extensions_api api:apis.events intro:intros.events/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental.html b/chrome/common/extensions/docs/templates/public/extensions/experimental.html
index 59d606a..520182a7 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental.html
@@ -1 +1,3 @@
-{{+partials.standard_extensions_article article:intros.experimental apis:api_list.extensions.experimental}}
+{{+partials.standard_extensions_article
+ article:intros.experimental
+ apis:api_list.extensions.experimental/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_browsingData.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_browsingData.html
index db17845..562a0f1 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_browsingData.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_browsingData.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_browsingData}}
+{{+partials.standard_extensions_article article:intros.experimental_browsingData/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_contentSettings.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_contentSettings.html
index dfd3f8e..6b5a514 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_contentSettings.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_contentSettings.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_contentSettings}}
+{{+partials.standard_extensions_article article:intros.experimental_contentSettings/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_contextMenus.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_contextMenus.html
index 697a8ad..5d7b110 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_contextMenus.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_contextMenus.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_contextMenus}}
+{{+partials.standard_extensions_article article:intros.experimental_contextMenus/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_cookies.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_cookies.html
index baad5da..eb40815 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_cookies.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_cookies.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_cookies}}
+{{+partials.standard_extensions_article article:intros.experimental_cookies/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools.html
index 6d2581a..a16df59 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_devtools}}
+{{+partials.standard_extensions_article article:intros.experimental_devtools/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_audits.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_audits.html
index eca386d..5dd35056 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_audits.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_audits.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.devtools/experimental_audits intro:intros.experimental_devtools_audits}}
+{{+partials.standard_extensions_api api:apis.devtools/experimental_audits intro:intros.experimental_devtools_audits/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_console.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_console.html
index 5e9e474..56329ad 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_console.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_console.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.devtools/experimental_console intro:intros.experimental_devtools_console}}
+{{+partials.standard_extensions_api api:apis.devtools/experimental_console intro:intros.experimental_devtools_console/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_inspectedWindow.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_inspectedWindow.html
index a69609cd..8ec8504 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_inspectedWindow.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_inspectedWindow.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_devtools_inspectedWindow}}
+{{+partials.standard_extensions_article article:intros.experimental_devtools_inspectedWindow/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_network.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_network.html
index 2812d5c..26b1d9c 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_network.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_network.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_devtools_network}}
+{{+partials.standard_extensions_article article:intros.experimental_devtools_network/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_panels.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_panels.html
index a083919..fdb0f65 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_panels.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_panels.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_devtools_panels}}
+{{+partials.standard_extensions_article article:intros.experimental_devtools_panels/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_resources.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_resources.html
index 1e134a3..0391527 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_resources.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_devtools_resources.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_devtools_resources}}
+{{+partials.standard_extensions_article article:intros.experimental_devtools_resources/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_discovery.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_discovery.html
index 74e16f2..b9629b6 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_discovery.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_discovery.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.experimental_discovery intro:intros.experimental_discovery}}
+{{+partials.standard_extensions_api api:apis.experimental_discovery intro:intros.experimental_discovery/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_history.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_history.html
index 5e6b703..2c153ba 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_history.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_history.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_history}}
+{{+partials.standard_extensions_article article:intros.experimental_history/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_identity.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_identity.html
index 5ec4d2f..2bc5061 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_identity.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_identity.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_identity}}
+{{+partials.standard_extensions_article article:intros.experimental_identity/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_inputUI.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_inputUI.html
index b530c88..31e65c7 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_inputUI.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_inputUI.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_inputUI}}
+{{+partials.standard_extensions_article article:intros.experimental_inputUI/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_privacy.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_privacy.html
index 9b878ba..5a83a0d 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_privacy.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_privacy.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_privacy}}
+{{+partials.standard_extensions_article article:intros.experimental_privacy/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_storage.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_storage.html
index d98bcee..ac2fbd40 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_storage.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_storage.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_storage}}
+{{+partials.standard_extensions_article article:intros.experimental_storage/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector.html
index 46e98c1..d8d2892 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_webInspector}}
+{{+partials.standard_extensions_article article:intros.experimental_webInspector/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_audits.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_audits.html
index 4539a01..9dcfc4a 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_audits.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_audits.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_webInspector_audits}}
+{{+partials.standard_extensions_article article:intros.experimental_webInspector_audits/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_panels.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_panels.html
index 9841ada..fdea38e 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_panels.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_panels.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_webInspector_panels}}
+{{+partials.standard_extensions_article article:intros.experimental_webInspector_panels/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_resources.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_resources.html
index 45fe1a6..f6a41fd 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_resources.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_webInspector_resources.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_webInspector_resources}}
+{{+partials.standard_extensions_article article:intros.experimental_webInspector_resources/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/experimental_webRequest.html b/chrome/common/extensions/docs/templates/public/extensions/experimental_webRequest.html
index 083f3e5..fb59c77 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/experimental_webRequest.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/experimental_webRequest.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.experimental_webRequest}}
+{{+partials.standard_extensions_article article:intros.experimental_webRequest/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/extension.html b/chrome/common/extensions/docs/templates/public/extensions/extension.html
index 728ad75..903f299 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/extension.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/extension.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.extension intro:intros.extension}}
+{{+partials.standard_extensions_api api:apis.extension intro:intros.extension/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/external_extensions.html b/chrome/common/extensions/docs/templates/public/extensions/external_extensions.html
index 6503ca1..7821238 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/external_extensions.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/external_extensions.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.external_extensions}}
+{{+partials.standard_extensions_article article:intros.external_extensions/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/faq.html b/chrome/common/extensions/docs/templates/public/extensions/faq.html
index ae611ce..eaee712 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/faq.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/faq.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.faq}}
+{{+partials.standard_extensions_article article:intros.faq/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/feedbackPrivate.html b/chrome/common/extensions/docs/templates/public/extensions/feedbackPrivate.html
index cb640fb..10bafbd 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/feedbackPrivate.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/feedbackPrivate.html
@@ -1,2 +1,2 @@
-{{+partials.standard_extensions_api api:apis.feedback_private intro:intros.feedbackPrivate}}
+{{+partials.standard_extensions_api api:apis.feedback_private intro:intros.feedbackPrivate/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/fileBrowserHandler.html b/chrome/common/extensions/docs/templates/public/extensions/fileBrowserHandler.html
index de0a261..9d67c0e 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/fileBrowserHandler.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/fileBrowserHandler.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.file_browser_handler intro:intros.fileBrowserHandler}}
+{{+partials.standard_extensions_api api:apis.file_browser_handler intro:intros.fileBrowserHandler/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/fontSettings.html b/chrome/common/extensions/docs/templates/public/extensions/fontSettings.html
index a09fcd9..c34d155 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/fontSettings.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/fontSettings.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.font_settings intro:intros.fontSettings}}
+{{+partials.standard_extensions_api api:apis.font_settings intro:intros.fontSettings/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/gcm_server.html b/chrome/common/extensions/docs/templates/public/extensions/gcm_server.html
index c8c2cf6..783a0e3 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/gcm_server.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/gcm_server.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.gcm_server}}
+{{+partials.standard_extensions_article article:intros.gcm_server/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/gcm_tos.html b/chrome/common/extensions/docs/templates/public/extensions/gcm_tos.html
index 3ae549c..443c32a 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/gcm_tos.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/gcm_tos.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.gcm_tos}}
+{{+partials.standard_extensions_article article:intros.gcm_tos/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/getstarted.html b/chrome/common/extensions/docs/templates/public/extensions/getstarted.html
index 2e4c001..da0e3c3 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/getstarted.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/getstarted.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.getstarted}}
+{{+partials.standard_extensions_article article:intros.getstarted/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/hangoutsPrivate.html b/chrome/common/extensions/docs/templates/public/extensions/hangoutsPrivate.html
index 07a58c40..3cbb0c2 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/hangoutsPrivate.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/hangoutsPrivate.html
@@ -1,2 +1,2 @@
-{{+partials.standard_extensions_api api:apis.hangouts_private}}
+{{+partials.standard_extensions_api api:apis.hangouts_private/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/history.html b/chrome/common/extensions/docs/templates/public/extensions/history.html
index 33d199c..2b5a89c 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/history.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/history.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.history intro:intros.history}}
+{{+partials.standard_extensions_api api:apis.history intro:intros.history/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/hosting.html b/chrome/common/extensions/docs/templates/public/extensions/hosting.html
index 3f3730c..2faf167 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/hosting.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/hosting.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.hosting}}
+{{+partials.standard_extensions_article article:intros.hosting/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/i18n-messages.html b/chrome/common/extensions/docs/templates/public/extensions/i18n-messages.html
index 9a698e3..2db66a8 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/i18n-messages.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/i18n-messages.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.i18n-messages}}
+{{+partials.standard_extensions_article article:intros.i18n-messages/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/i18n.html b/chrome/common/extensions/docs/templates/public/extensions/i18n.html
index 3fac07c..f8572f9 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/i18n.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/i18n.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.i18n intro:intros.i18n}}
+{{+partials.standard_extensions_api api:apis.i18n intro:intros.i18n/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/identity.html b/chrome/common/extensions/docs/templates/public/extensions/identity.html
index 6ebd79a1..3765cad 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/identity.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/identity.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.identity}}
+{{+partials.standard_extensions_api api:apis.identity/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/idle.html b/chrome/common/extensions/docs/templates/public/extensions/idle.html
index 19a7e96..faad207 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/idle.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/idle.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.idle intro:intros.idle}}
+{{+partials.standard_extensions_api api:apis.idle intro:intros.idle/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/index.html b/chrome/common/extensions/docs/templates/public/extensions/index.html
index d6b75ec..b8fe5ac 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/index.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/index.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.extensions_index}}
+{{+partials.standard_extensions_article article:intros.extensions_index/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/infobars.html b/chrome/common/extensions/docs/templates/public/extensions/infobars.html
index 009f9d9..a033b0d 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/infobars.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/infobars.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.infobars intro:intros.infobars}}
+{{+partials.standard_extensions_api api:apis.infobars intro:intros.infobars/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/input_ime.html b/chrome/common/extensions/docs/templates/public/extensions/input_ime.html
index 1f5622d..8b9ce9f 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/input_ime.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/input_ime.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.input_ime intro:intros.input_ime}}
+{{+partials.standard_extensions_api api:apis.input_ime intro:intros.input_ime/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/location.html b/chrome/common/extensions/docs/templates/public/extensions/location.html
index 1d71f9e..0f141a6 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/location.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/location.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.location intro:intros.location}}
+{{+partials.standard_extensions_api api:apis.location intro:intros.location/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/management.html b/chrome/common/extensions/docs/templates/public/extensions/management.html
index 8d9b334..fb725fc 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/management.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/management.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.management intro:intros.management}}
+{{+partials.standard_extensions_api api:apis.management intro:intros.management/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest.html b/chrome/common/extensions/docs/templates/public/extensions/manifest.html
index b473166..9f99945 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest.html
@@ -1,3 +1,3 @@
{{+partials.standard_extensions_article
article:intros.manifest
- manifest_source:manifest_source.extensions}}
+ manifest_source:manifest_source.extensions/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/default_locale.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/default_locale.html
index 6c3f1d2..10916845 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/default_locale.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/default_locale.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/default_locale}}
+{{+partials.standard_extensions_article article:intros.manifest/default_locale/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/description.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/description.html
index b43bda1..ef1bfd2 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/description.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/description.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/description}}
+{{+partials.standard_extensions_article article:intros.manifest/description/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/externally_connectable.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/externally_connectable.html
index 8bbc420..6a19115 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/externally_connectable.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/externally_connectable.html
@@ -1,2 +1,2 @@
{{+partials.standard_extensions_article
- article:intros.manifest/externally_connectable}}
+ article:intros.manifest/externally_connectable/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/homepage_url.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/homepage_url.html
index b1c5770..84c57cf 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/homepage_url.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/homepage_url.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/homepage_url}}
+{{+partials.standard_extensions_article article:intros.manifest/homepage_url/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/icons.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/icons.html
index eff444d..fe7d80f 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/icons.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/icons.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/icons}}
+{{+partials.standard_extensions_article article:intros.manifest/icons/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/incognito.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/incognito.html
index 81298e4..d90d025 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/incognito.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/incognito.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/incognito}}
+{{+partials.standard_extensions_article article:intros.manifest/incognito/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/key.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/key.html
index 9f5a49b..f07124fe8 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/key.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/key.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/key}}
+{{+partials.standard_extensions_article article:intros.manifest/key/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/manifest_version.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/manifest_version.html
index ac440bc..01c3202 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/manifest_version.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/manifest_version.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/manifest_version}}
+{{+partials.standard_extensions_article article:intros.manifest/manifest_version/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/minimum_chrome_version.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/minimum_chrome_version.html
index 7cf63c1..3824e4d 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/minimum_chrome_version.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/minimum_chrome_version.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/minimum_chrome_version}}
+{{+partials.standard_extensions_article article:intros.manifest/minimum_chrome_version/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/nacl_modules.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/nacl_modules.html
index 9f6b32a..9881ef8 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/nacl_modules.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/nacl_modules.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/nacl_modules}}
+{{+partials.standard_extensions_article article:intros.manifest/nacl_modules/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/name.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/name.html
index 3726dc5..01aca2f 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/name.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/name.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/name}}
+{{+partials.standard_extensions_article article:intros.manifest/name/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/offline_enabled.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/offline_enabled.html
index 8c2994d..ca8c1fa 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/offline_enabled.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/offline_enabled.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/offline_enabled}}
+{{+partials.standard_extensions_article article:intros.manifest/offline_enabled/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/requirements.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/requirements.html
index 12ba4bc..83ad3c1 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/requirements.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/requirements.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/requirements}}
+{{+partials.standard_extensions_article article:intros.manifest/requirements/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/sandbox.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/sandbox.html
index 169546d..36e680c 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/sandbox.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/sandbox.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/sandbox}}
+{{+partials.standard_extensions_article article:intros.manifest/sandbox/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/version.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/version.html
index 44cd9df..e59c9a0 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/version.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/version.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/version}}
+{{+partials.standard_extensions_article article:intros.manifest/version/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifest/web_accessible_resources.html b/chrome/common/extensions/docs/templates/public/extensions/manifest/web_accessible_resources.html
index bb5699b..6f63ec2 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifest/web_accessible_resources.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifest/web_accessible_resources.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifest/web_accessible_resources}}
+{{+partials.standard_extensions_article article:intros.manifest/web_accessible_resources/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/manifestVersion.html b/chrome/common/extensions/docs/templates/public/extensions/manifestVersion.html
index 61f21a5..e5a3bc5 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/manifestVersion.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/manifestVersion.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.manifestVersion}}
+{{+partials.standard_extensions_article article:intros.manifestVersion/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/match_patterns.html b/chrome/common/extensions/docs/templates/public/extensions/match_patterns.html
index 6fb437c..15b6c9b 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/match_patterns.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/match_patterns.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.match_patterns}}
+{{+partials.standard_extensions_article article:intros.match_patterns/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/messaging.html b/chrome/common/extensions/docs/templates/public/extensions/messaging.html
index bd9d8bf..744b635 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/messaging.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/messaging.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.messaging}}
+{{+partials.standard_extensions_article article:intros.messaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/notifications.html b/chrome/common/extensions/docs/templates/public/extensions/notifications.html
index 0c9626f..a5a15c4 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/notifications.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/notifications.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.notifications intro:intros.notifications}}
+{{+partials.standard_extensions_api api:apis.notifications intro:intros.notifications/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/npapi.html b/chrome/common/extensions/docs/templates/public/extensions/npapi.html
index 81dd45a..f1c070f 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/npapi.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/npapi.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.npapi}}
+{{+partials.standard_extensions_article article:intros.npapi/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/omnibox.html b/chrome/common/extensions/docs/templates/public/extensions/omnibox.html
index 565382b..3c9f49e 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/omnibox.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/omnibox.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.omnibox intro:intros.omnibox}}
+{{+partials.standard_extensions_api api:apis.omnibox intro:intros.omnibox/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/options.html b/chrome/common/extensions/docs/templates/public/extensions/options.html
index 3825d01..1920135 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/options.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/options.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.options}}
+{{+partials.standard_extensions_article article:intros.options/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/override.html b/chrome/common/extensions/docs/templates/public/extensions/override.html
index bcc91238..414540b 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/override.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/override.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.override}}
+{{+partials.standard_extensions_article article:intros.override/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/overview.html b/chrome/common/extensions/docs/templates/public/extensions/overview.html
index b1511c8..f7a23e0 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/overview.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/overview.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.overview}}
+{{+partials.standard_extensions_article article:intros.overview/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/packaging.html b/chrome/common/extensions/docs/templates/public/extensions/packaging.html
index 8483d40..c0b6950 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/packaging.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/packaging.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.packaging}}
+{{+partials.standard_extensions_article article:intros.packaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/pageAction.html b/chrome/common/extensions/docs/templates/public/extensions/pageAction.html
index 2889fcb..21cbee9 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/pageAction.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/pageAction.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.page_action intro:intros.pageAction}}
+{{+partials.standard_extensions_api api:apis.page_action intro:intros.pageAction/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/pageCapture.html b/chrome/common/extensions/docs/templates/public/extensions/pageCapture.html
index 7a43702..7bec310 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/pageCapture.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/pageCapture.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.page_capture intro:intros.pageCapture}}
+{{+partials.standard_extensions_api api:apis.page_capture intro:intros.pageCapture/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/permission_warnings.html b/chrome/common/extensions/docs/templates/public/extensions/permission_warnings.html
index d89cc33..69d595d 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/permission_warnings.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/permission_warnings.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.permission_warnings}}
+{{+partials.standard_extensions_article article:intros.permission_warnings/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/permissions.html b/chrome/common/extensions/docs/templates/public/extensions/permissions.html
index 83b21d3..75ef79e 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/permissions.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/permissions.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.permissions intro:intros.permissions}}
+{{+partials.standard_extensions_api api:apis.permissions intro:intros.permissions/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/power.html b/chrome/common/extensions/docs/templates/public/extensions/power.html
index 6a26ca7..d730abd 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/power.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/power.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.power intro:intros.power}}
+{{+partials.standard_extensions_api api:apis.power intro:intros.power/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/privacy.html b/chrome/common/extensions/docs/templates/public/extensions/privacy.html
index 08152f9..049e63d 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/privacy.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/privacy.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.privacy intro:intros.privacy}}
+{{+partials.standard_extensions_api api:apis.privacy intro:intros.privacy/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/private_apis.html b/chrome/common/extensions/docs/templates/public/extensions/private_apis.html
index 49adc99..55e3365 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/private_apis.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/private_apis.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.private_apis is_apps:false}}
+{{+partials.standard_extensions_article article:intros.private_apis is_apps:false/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/processes.html b/chrome/common/extensions/docs/templates/public/extensions/processes.html
index 530b7a5..09d3ce9 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/processes.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/processes.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.processes}}
+{{+partials.standard_extensions_api api:apis.processes/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/proxy.html b/chrome/common/extensions/docs/templates/public/extensions/proxy.html
index 8c240e8..37efdef 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/proxy.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/proxy.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.proxy intro:intros.proxy}}
+{{+partials.standard_extensions_api api:apis.proxy intro:intros.proxy/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/pushMessaging.html b/chrome/common/extensions/docs/templates/public/extensions/pushMessaging.html
index d4eb2c4..b186bf6 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/pushMessaging.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/pushMessaging.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.push_messaging intro:intros.pushMessaging}}
+{{+partials.standard_extensions_api api:apis.push_messaging intro:intros.pushMessaging/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/runtime.html b/chrome/common/extensions/docs/templates/public/extensions/runtime.html
index 298cc9c..1111b27 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/runtime.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/runtime.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.runtime}}
+{{+partials.standard_extensions_api api:apis.runtime/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/samples.html b/chrome/common/extensions/docs/templates/public/extensions/samples.html
index d5fbc1f..d4e5c99 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/samples.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/samples.html
@@ -3,4 +3,4 @@
samples_list:samples.extensions
samples_url:extensions_samples_url
title:strings.extensions_title
- platform:strings.extension}}
+ platform:strings.extension/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/sandboxingEval.html b/chrome/common/extensions/docs/templates/public/extensions/sandboxingEval.html
index 019a38d..9d65491 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/sandboxingEval.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/sandboxingEval.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.sandboxingEval}}
+{{+partials.standard_extensions_article article:intros.sandboxingEval/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/scriptBadge.html b/chrome/common/extensions/docs/templates/public/extensions/scriptBadge.html
index 43a090a..1314cd3 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/scriptBadge.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/scriptBadge.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.script_badge}}
+{{+partials.standard_extensions_api api:apis.script_badge/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/sessions.html b/chrome/common/extensions/docs/templates/public/extensions/sessions.html
index b825ba6..faa9650 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/sessions.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/sessions.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.sessions}}
+{{+partials.standard_extensions_api api:apis.sessions/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/signedInDevices.html b/chrome/common/extensions/docs/templates/public/extensions/signedInDevices.html
index 4afa234..3ca135e 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/signedInDevices.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/signedInDevices.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.signed_in_devices}}
+{{+partials.standard_extensions_api api:apis.signed_in_devices/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/storage.html b/chrome/common/extensions/docs/templates/public/extensions/storage.html
index b0b0834..fcce34a 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/storage.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/storage.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.storage intro:intros.storage}}
+{{+partials.standard_extensions_api api:apis.storage intro:intros.storage/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/system_cpu.html b/chrome/common/extensions/docs/templates/public/extensions/system_cpu.html
index 8a77fee..a1d9c75 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/system_cpu.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/system_cpu.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.system_cpu}}
+{{+partials.standard_extensions_api api:apis.system_cpu/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/system_memory.html b/chrome/common/extensions/docs/templates/public/extensions/system_memory.html
index 0691784..61ecd98 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/system_memory.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/system_memory.html
@@ -1 +1 @@
-{{+partials.standard_apps_api api:apis.system_memory}}
+{{+partials.standard_apps_api api:apis.system_memory/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/system_storage.html b/chrome/common/extensions/docs/templates/public/extensions/system_storage.html
index 3aba040..65f97af 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/system_storage.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/system_storage.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.system_storage}}
+{{+partials.standard_extensions_api api:apis.system_storage/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tabCapture.html b/chrome/common/extensions/docs/templates/public/extensions/tabCapture.html
index b28290d..a82dd0b 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tabCapture.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tabCapture.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.tab_capture}}
+{{+partials.standard_extensions_api api:apis.tab_capture/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tabs.html b/chrome/common/extensions/docs/templates/public/extensions/tabs.html
index 04938b8..1cb1fa2 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tabs.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tabs.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.tabs intro:intros.tabs}}
+{{+partials.standard_extensions_api api:apis.tabs intro:intros.tabs/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/themes.html b/chrome/common/extensions/docs/templates/public/extensions/themes.html
index 5704ff5..6ec0385 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/themes.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/themes.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.themes}}
+{{+partials.standard_extensions_article article:intros.themes/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/topSites.html b/chrome/common/extensions/docs/templates/public/extensions/topSites.html
index 478945d..310cbf1 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/topSites.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/topSites.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.top_sites intro:intros.topSites}}
+{{+partials.standard_extensions_api api:apis.top_sites intro:intros.topSites/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tts.html b/chrome/common/extensions/docs/templates/public/extensions/tts.html
index 08077a5..7b033a5 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tts.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tts.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.tts intro:intros.tts}}
+{{+partials.standard_extensions_api api:apis.tts intro:intros.tts/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/ttsEngine.html b/chrome/common/extensions/docs/templates/public/extensions/ttsEngine.html
index a8928cd..c6d7726 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/ttsEngine.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/ttsEngine.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.tts_engine intro:intros.ttsEngine}}
+{{+partials.standard_extensions_api api:apis.tts_engine intro:intros.ttsEngine/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tut_analytics.html b/chrome/common/extensions/docs/templates/public/extensions/tut_analytics.html
index 3f967e1..6880693 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tut_analytics.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tut_analytics.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.tut_analytics}}
+{{+partials.standard_extensions_article article:intros.tut_analytics/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tut_debugging.html b/chrome/common/extensions/docs/templates/public/extensions/tut_debugging.html
index 0605ef5..aec26b2 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tut_debugging.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tut_debugging.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.tut_debugging}}
+{{+partials.standard_extensions_article article:intros.tut_debugging/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tut_migration_to_manifest_v2.html b/chrome/common/extensions/docs/templates/public/extensions/tut_migration_to_manifest_v2.html
index a05bfca..ca97198 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tut_migration_to_manifest_v2.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tut_migration_to_manifest_v2.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.tut_migration_to_manifest_v2}}
+{{+partials.standard_extensions_article article:intros.tut_migration_to_manifest_v2/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tut_oauth.html b/chrome/common/extensions/docs/templates/public/extensions/tut_oauth.html
index d7ba70a..2fa6a84 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tut_oauth.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tut_oauth.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.tut_oauth}}
+{{+partials.standard_extensions_article article:intros.tut_oauth/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/tutorials.html b/chrome/common/extensions/docs/templates/public/extensions/tutorials.html
index 50bcb7c..551b542 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/tutorials.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/tutorials.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.tutorials}}
+{{+partials.standard_extensions_article article:intros.tutorials/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/types.html b/chrome/common/extensions/docs/templates/public/extensions/types.html
index 1044dff..0a51d81 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/types.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/types.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.types intro:intros.types}}
+{{+partials.standard_extensions_api api:apis.types intro:intros.types/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/webNavigation.html b/chrome/common/extensions/docs/templates/public/extensions/webNavigation.html
index 11d8ac3..830393d 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/webNavigation.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/webNavigation.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.web_navigation intro:intros.webNavigation}}
+{{+partials.standard_extensions_api api:apis.web_navigation intro:intros.webNavigation/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/webRequest.html b/chrome/common/extensions/docs/templates/public/extensions/webRequest.html
index d282267..e0fd5a6 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/webRequest.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/webRequest.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.web_request intro:intros.webRequest}}
+{{+partials.standard_extensions_api api:apis.web_request intro:intros.webRequest/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/webstore.html b/chrome/common/extensions/docs/templates/public/extensions/webstore.html
index 728616d..5e636c0 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/webstore.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/webstore.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.webstore}}
+{{+partials.standard_extensions_api api:apis.webstore/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/whats_new.html b/chrome/common/extensions/docs/templates/public/extensions/whats_new.html
index af165a2..ae6522d 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/whats_new.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/whats_new.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.whats_new}}
+{{+partials.standard_extensions_article article:intros.whats_new/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/windows.html b/chrome/common/extensions/docs/templates/public/extensions/windows.html
index 8f32cf4..645e707 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/windows.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/windows.html
@@ -1 +1 @@
-{{+partials.standard_extensions_api api:apis.windows intro:intros.windows}}
+{{+partials.standard_extensions_api api:apis.windows intro:intros.windows/}}
diff --git a/chrome/common/extensions/docs/templates/public/extensions/xhr.html b/chrome/common/extensions/docs/templates/public/extensions/xhr.html
index fe158ef..2d1f981 100644
--- a/chrome/common/extensions/docs/templates/public/extensions/xhr.html
+++ b/chrome/common/extensions/docs/templates/public/extensions/xhr.html
@@ -1 +1 @@
-{{+partials.standard_extensions_article article:intros.xhr}}
+{{+partials.standard_extensions_article article:intros.xhr/}}
diff --git a/third_party/handlebar/README.chromium b/third_party/handlebar/README.chromium
index ea454b9..107866f 100644
--- a/third_party/handlebar/README.chromium
+++ b/third_party/handlebar/README.chromium
@@ -2,8 +2,8 @@ Name: Handlebar, cross-platform data binding templates.
Short Name: handlebar
URL: https://github.com/kalman/templates
Version: 0
-Date: July 13, 2012
-Revision: commit b00ffd4655708f98092a7ae9203f39c564251ecf
+Date: November 14, 2013
+Revision: commit 4e707d26d5564c9046867602b8c67de4f792e2ef
License: Apache 2.0
License File: NOT_SHIPPED
Security Critical: no
diff --git a/third_party/handlebar/README.md b/third_party/handlebar/README.md
deleted file mode 100644
index 266ef11..0000000
--- a/third_party/handlebar/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# Handlebar templates
-
-This repository contains utilities around a templating system that I called "Handlebar". They're a logic-less templating language based on [mustache](http://mustache.github.com/) (obviously) which is itself based on [ctemplate](http://code.google.com/p/ctemplate) apparently.
-
-The original and reference implementation is written in Java, with a JavaScript (via CoffeeScript) port and a Python port. The tests are cross-platform but controlled from Java with junit; this means that all implementations are hopefully up to date (or else some tests are failing).
-
-The goal of handlebar is to provide the most complete and convenient way to write logic-less templates across the whole stack of a web application. Write templates once, statically render content on the Java/Python server, then as content is dynamically added render it using the same templates on the JavaScript client.
-
-## Overview
-
-A template is text plus "mustache" control characters (thank you mustache for the cool terminology I have adopted).
-
-A template is rendered by passing it JSON data. I say "JSON" but what I really mean is JSON-like data; the actual input will vary depending on the language bindings (Java uses reflection over properties and maps, JavaScript uses objects, Python uses dictionaries).
-
-Generally speaking there are two classes of mustaches: "self closing" ones like `{{foo}}` `{{{foo}}}` `{{*foo}}`, and "has children" ones like `{{#foo}}...{{/foo}}` `{{?foo}}...{{/foo}}` `{{^foo}}...{{/foo}}` where the `...` is arbitrary other template data.
-
-In both cases the `foo` represents a path into the JSON structure, so
-
- {{foo.bar.baz}}
-
-is valid for JSON like
-
- {"foo": {"bar": {"baz": 42 }}}
-
-(here it would resolve to `42`).
-
-All libraries also have the behaviour where descending into a section of the JSON will "push" the sub-JSON onto the top of the "context stack", so given JSON like
-
- {"foo": {"bar": {"foo": 42 }}}
-
-the template
-
- {{foo.bar.foo}} {{?foo}}{{bar.foo}} {{?bar}{{foo}}{{/bar}} {{/foo}}
-
-will correctly resolve all references to be `42`.
-
-There is an additional identifier `@` representing the "tip" of that context stack, useful when iterating using the `{{#foo}}...{{/foo}}` structure; `{ "list": [1,2,3] }` with `{{#list}} {{@}} {{/list}}` will print ` 1 2 3 `.
-
-Finally, note that the `{{/foo}}` in `{{#foo}}...{{/foo}}` is actually redundant, and that `{{#foo}}...{{/}}` would be sufficient. Depdencing on the situation one or the other will tend to be more readable (explicitly using `{{/foo}}` will perform more validation).
-
-## Structures ("mustaches")
-
-### `{{foo.bar}}`
-
-Prints out the HTML-escaped value at path `foo.bar`.
-
-### `{{{foo.bar}}}`
-
-Prints out value at path `foo.bar` (no escaping).
-
-### `{{*foo.bar}}}`
-
-Prints out the JSON serialization of the object at path `foo.bar` (no escaping; this is designed for JavaScript client bootstrapping).
-
-### `{{+foo.bar}}`
-
-Inserts the sub-template (aka "partial template") found at path `foo.bar`. Currently, all libraries actually enforce that this is a pre-compiled template (rather than a plain string for example) for efficiency. This lets you do something like:
-
- template = Handlebar('{{#list}} {{+partial}} {{/}}')
- partial = Handlebar('{{foo}}...')
- json = {
- 'list': [
- { 'foo': 42 },
- { 'foo': 56 },
- { 'foo': 10 }
- ]
- }
- print(template.render(json, {'partial': partial}).text)
- > 42... 56... 10...
-
-Very useful for dynamic web apps, and also just very useful.
-
-### `{{#foo.bar}}...{{/}}`
-
-Runs `...` for each item in an array found at path `foo.bar`, or each key/value pair in an object.
-
-### `{{?foo.bar}}...{{/}}`
-
-Runs `...` if `foo.bar` resolves to a "value", which is defined based on types.
-
-* `null` is never considered a value.
-* `true` is a valid, `false` isn't.
-* Any number other than `0` is a value.
-* Any non-empty string is a value.
-* Any non-empty array is a value.
-* Any non-empty object is a value.
-
-### `{{^foo.bar}}...{{/}}`
-
-Runs `...` if `foo.bar` _doesn't_ resolve to a "value". The exact opposite of `{{?foo.bar}}...{{/}}`.
-
-### `{{:foo.bar}}{{=case1}}...{{=case2}}___{{/}}`
-
-Ooh a switch statement! Prints `...` if the string found at `foo.bar` is the string `"case1"`, `___` if it's `"case2"`, etc.
-
-## That's all
-
-But at the moment this is currently under heavy weekend development. Which is to say a constant trickle of code as I need it.
-
-Soon: better fault tolerance all round, comments, tidier syntax, less whitespacey output, and moving the Java and JavaScript/CoffeeScript implementations and tests into this repository! And maybe some kind of online playground at some point.
diff --git a/third_party/handlebar/handlebar.py b/third_party/handlebar/handlebar.py
index 0be089c..f35764f 100644
--- a/third_party/handlebar/handlebar.py
+++ b/third_party/handlebar/handlebar.py
@@ -12,14 +12,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# TODO: Some character other than {{{ }}} to print unescaped content?
-# TODO: Only have @ while in a loop, and only defined in the top context of
-# the loop.
-# TODO: Consider trimming spaces around identifers like {{?t foo}}.
-# TODO: Only transfer global contexts into partials, not the top local.
-# TODO: Pragmas for asserting the presence of variables.
+# TODO: New name, not "handlebar".
# TODO: Escaping control characters somehow. e.g. \{{, \{{-.
-# TODO: Dump warnings-so-far into the output.
import json
import re
@@ -29,7 +23,7 @@ ctemplate. Use like:
from handlebar import Handlebar
- template = Handlebar('hello {{#foo}}{{bar}}{{/}} world')
+ template = Handlebar('hello {{#foo bar/}} world')
input = {
'foo': [
{ 'bar': 1 },
@@ -65,8 +59,9 @@ class RenderResult(object):
self.errors = errors
def __repr__(self):
- return '%s(text=%s, errors=%s)' % (
- self.__class__.__name__, self.text, self.errors)
+ return '%s(text=%s, errors=%s)' % (type(self).__name__,
+ self.text,
+ self.errors)
def __str__(self):
return repr(self)
@@ -160,30 +155,26 @@ class _Contexts(object):
# [0] is the stack of nodes that |found_key| has been found in.
self._value_info[found_key][0].pop()
- def GetTopLocal(self):
- if len(self._nodes) == self._first_local:
- return None
- return self._nodes[-1]._value
-
def Resolve(self, path):
# This method is only efficient at finding |key|; if |tail| has a value (and
# |key| evaluates to an indexable value) we'll need to descend into that.
key, tail = path.split('.', 1) if '.' in path else (path, None)
-
- if key == '@':
- found = self._nodes[-1]._value
- else:
- found = self._FindNodeValue(key)
-
+ found = self._FindNodeValue(key)
if tail is None:
return found
-
for part in tail.split('.'):
if not hasattr(found, 'get'):
return None
found = found.get(part)
return found
+ def Scope(self, context, fn, *args):
+ self.Push(context)
+ try:
+ return fn(*args)
+ finally:
+ self.Pop()
+
def _FindNodeValue(self, key):
# |found_node_list| will be all the nodes that |key| has been found in.
# |checked_node_set| are those that have been checked.
@@ -225,6 +216,19 @@ class _Stack(object):
descended.append(_Stack.Entry(name, id_))
return _Stack(entries=descended)
+class _InternalContext(object):
+ def __init__(self):
+ self._render_state = None
+
+ def SetRenderState(self, render_state):
+ self._render_state = render_state
+
+ def get(self, key):
+ if key == 'errors':
+ errors = self._render_state._errors
+ return '\n'.join(errors) if errors else None
+ return None
+
class _RenderState(object):
'''The state of a render call.
'''
@@ -235,9 +239,11 @@ class _RenderState(object):
self._errors = []
self._stack = _stack
- def AddResolutionError(self, id_):
- self._errors.append(
- id_.CreateResolutionErrorMessage(self._name, stack=self._stack))
+ def AddResolutionError(self, id_, description=None):
+ message = id_.CreateResolutionErrorMessage(self._name, stack=self._stack)
+ if description is not None:
+ message = '%s (%s)' % (message, description)
+ self._errors.append(message)
def Copy(self):
return _RenderState(
@@ -260,8 +266,10 @@ class _RenderState(object):
return RenderResult(self.text.ToString(), self._errors);
class _Identifier(object):
- ''' An identifier of the form '@', 'foo.bar.baz', or '@.foo.bar.baz'.
+ '''An identifier of the form 'foo', 'foo.bar.baz', 'foo-bar.baz', etc.
'''
+ _VALID_ID_MATCHER = re.compile(r'^[a-zA-Z0-9@_/-]+$')
+
def __init__(self, name, line, column):
self.name = name
self.line = line
@@ -269,7 +277,7 @@ class _Identifier(object):
if name == '':
raise ParseException('Empty identifier %s' % self.GetDescription())
for part in name.split('.'):
- if part != '@' and not re.match('^[a-zA-Z0-9_/-]+$', part):
+ if not _Identifier._VALID_ID_MATCHER.match(part):
raise ParseException('Invalid identifier %s' % self.GetDescription())
def GetDescription(self):
@@ -280,10 +288,10 @@ class _Identifier(object):
message.Append('Failed to resolve %s in %s\n' % (self.GetDescription(),
name))
if stack is not None:
- for entry in stack.entries:
+ for entry in reversed(stack.entries):
message.Append(' included as %s in %s\n' % (entry.id_.GetDescription(),
entry.name))
- return message.ToString()
+ return message.ToString().strip()
def __repr__(self):
return self.name
@@ -291,17 +299,9 @@ class _Identifier(object):
def __str__(self):
return repr(self)
-class _Line(object):
- def __init__(self, number):
- self.number = number
-
- def __repr__(self):
- return str(self.number)
-
- def __str__(self):
- return repr(self)
+class _Node(object): pass
-class _LeafNode(object):
+class _LeafNode(_Node):
def __init__(self, start_line, end_line):
self._start_line = start_line
self._end_line = end_line
@@ -327,7 +327,10 @@ class _LeafNode(object):
def GetEndLine(self):
return self._end_line
-class _DecoratorNode(object):
+ def __str__(self):
+ return repr(self)
+
+class _DecoratorNode(_Node):
def __init__(self, content):
self._content = content
@@ -355,8 +358,8 @@ class _DecoratorNode(object):
def __repr__(self):
return str(self._content)
- def __str__(self):
- return repr(self)
+ def __str__(self):
+ return repr(self)
class _InlineNode(_DecoratorNode):
def __init__(self, content):
@@ -376,15 +379,18 @@ class _IndentedNode(_DecoratorNode):
def Render(self, render_state):
if isinstance(self._content, _CommentNode):
return
- content_render_state = render_state.Copy()
- self._content.Render(content_render_state)
- def AddIndentation(text):
+ def inlinify(text):
+ if len(text) == 0: # avoid rendering a blank line
+ return ''
buf = _StringBuilder()
buf.Append(self._indent_str)
buf.Append(text.replace('\n', '\n%s' % self._indent_str))
- buf.Append('\n')
+ if not text.endswith('\n'): # partials will often already end in a \n
+ buf.Append('\n')
return buf.ToString()
- render_state.Merge(content_render_state, text_transform=AddIndentation)
+ content_render_state = render_state.Copy()
+ self._content.Render(content_render_state)
+ render_state.Merge(content_render_state, text_transform=inlinify)
class _BlockNode(_DecoratorNode):
def __init__(self, content):
@@ -395,7 +401,7 @@ class _BlockNode(_DecoratorNode):
def Render(self, render_state):
self._content.Render(render_state)
-class _NodeCollection(object):
+class _NodeCollection(_Node):
def __init__(self, nodes):
assert nodes
self._nodes = nodes
@@ -428,11 +434,8 @@ class _NodeCollection(object):
def __repr__(self):
return ''.join(str(node) for node in self._nodes)
- def __str__(self):
- return repr(self)
-
-class _StringNode(object):
- ''' Just a string.
+class _StringNode(_Node):
+ '''Just a string.
'''
def __init__(self, string, start_line, end_line):
self._string = string
@@ -477,11 +480,8 @@ class _StringNode(object):
def __repr__(self):
return self._string
- def __str__(self):
- return repr(self)
-
class _EscapedVariableNode(_LeafNode):
- ''' {{foo}}
+ '''{{foo}}
'''
def __init__(self, id_):
_LeafNode.__init__(self, id_.line, id_.line)
@@ -500,11 +500,8 @@ class _EscapedVariableNode(_LeafNode):
def __repr__(self):
return '{{%s}}' % self._id
- def __str__(self):
- return repr(self)
-
class _UnescapedVariableNode(_LeafNode):
- ''' {{{foo}}}
+ '''{{{foo}}}
'''
def __init__(self, id_):
_LeafNode.__init__(self, id_.line, id_.line)
@@ -521,9 +518,6 @@ class _UnescapedVariableNode(_LeafNode):
def __repr__(self):
return '{{{%s}}}' % self._id
- def __str__(self):
- return repr(self)
-
class _CommentNode(_LeafNode):
'''{{- This is a comment -}}
An empty placeholder node for correct indented rendering behaviour.
@@ -537,29 +531,29 @@ class _CommentNode(_LeafNode):
def __repr__(self):
return '<comment>'
- def __str__(self):
- return repr(self)
-
class _SectionNode(_DecoratorNode):
- ''' {{#foo}} ... {{/}}
+ '''{{#var:foo}} ... {{/foo}}
'''
- def __init__(self, id_, content):
+ def __init__(self, bind_to, id_, content):
_DecoratorNode.__init__(self, content)
+ self._bind_to = bind_to
self._id = id_
def Render(self, render_state):
value = render_state.contexts.Resolve(self._id.name)
if isinstance(value, list):
for item in value:
- # Always push context, even if it's not "valid", since we want to
- # be able to refer to items in a list such as [1,2,3] via @.
- render_state.contexts.Push(item)
- self._content.Render(render_state)
- render_state.contexts.Pop()
+ if self._bind_to is not None:
+ render_state.contexts.Scope({self._bind_to.name: item},
+ self._content.Render, render_state)
+ else:
+ self._content.Render(render_state)
elif hasattr(value, 'get'):
- render_state.contexts.Push(value)
- self._content.Render(render_state)
- render_state.contexts.Pop()
+ if self._bind_to is not None:
+ render_state.contexts.Scope({self._bind_to.name: value},
+ self._content.Render, render_state)
+ else:
+ render_state.contexts.Scope(value, self._content.Render, render_state)
else:
render_state.AddResolutionError(self._id)
@@ -567,30 +561,27 @@ class _SectionNode(_DecoratorNode):
return '{{#%s}}%s{{/%s}}' % (
self._id, _DecoratorNode.__repr__(self), self._id)
- def __str__(self):
- return repr(self)
-
class _VertedSectionNode(_DecoratorNode):
- ''' {{?foo}} ... {{/}}
+ '''{{?var:foo}} ... {{/foo}}
'''
- def __init__(self, id_, content):
+ def __init__(self, bind_to, id_, content):
_DecoratorNode.__init__(self, content)
+ self._bind_to = bind_to
self._id = id_
def Render(self, render_state):
value = render_state.contexts.Resolve(self._id.name)
if _VertedSectionNode.ShouldRender(value):
- render_state.contexts.Push(value)
- self._content.Render(render_state)
- render_state.contexts.Pop()
+ if self._bind_to is not None:
+ render_state.contexts.Scope({self._bind_to.name: value},
+ self._content.Render, render_state)
+ else:
+ self._content.Render(render_state)
def __repr__(self):
return '{{?%s}}%s{{/%s}}' % (
self._id, _DecoratorNode.__repr__(self), self._id)
- def __str__(self):
- return repr(self)
-
@staticmethod
def ShouldRender(value):
if value is None:
@@ -602,10 +593,13 @@ class _VertedSectionNode(_DecoratorNode):
return True
class _InvertedSectionNode(_DecoratorNode):
- ''' {{^foo}} ... {{/}}
+ '''{{^foo}} ... {{/foo}}
'''
- def __init__(self, id_, content):
+ def __init__(self, bind_to, id_, content):
_DecoratorNode.__init__(self, content)
+ if bind_to is not None:
+ raise ParseException('{{^%s:%s}} does not support variable binding'
+ % (bind_to, id_))
self._id = id_
def Render(self, render_state):
@@ -617,11 +611,23 @@ class _InvertedSectionNode(_DecoratorNode):
return '{{^%s}}%s{{/%s}}' % (
self._id, _DecoratorNode.__repr__(self), self._id)
- def __str__(self):
- return repr(self)
+class _AssertionNode(_LeafNode):
+ '''{{!foo Some comment about foo}}
+ '''
+ def __init__(self, id_, description):
+ _LeafNode.__init__(self, id_.line, id_.line)
+ self._id = id_
+ self._description = description
+
+ def Render(self, render_state):
+ if render_state.contexts.Resolve(self._id.name) is None:
+ render_state.AddResolutionError(self._id, description=self._description)
+
+ def __repr__(self):
+ return '{{!%s %s}}' % (self._id, self._description)
class _JsonNode(_LeafNode):
- ''' {{*foo}}
+ '''{{*foo}}
'''
def __init__(self, id_):
_LeafNode.__init__(self, id_.line, id_.line)
@@ -637,71 +643,90 @@ class _JsonNode(_LeafNode):
def __repr__(self):
return '{{*%s}}' % self._id
- def __str__(self):
- return repr(self)
-
class _PartialNode(_LeafNode):
- ''' {{+foo}}
+ '''{{+var:foo}} ... {{/foo}}
'''
- def __init__(self, id_):
+ def __init__(self, bind_to, id_, content):
_LeafNode.__init__(self, id_.line, id_.line)
+ self._bind_to = bind_to
self._id = id_
+ self._content = content
+ self._resolved_args = None
self._args = None
- self._local_context_id = None
+ self._pass_through_id = None
+
+ @classmethod
+ def Inline(cls, id_):
+ return cls(None, id_, None)
def Render(self, render_state):
value = render_state.contexts.Resolve(self._id.name)
if value is None:
render_state.AddResolutionError(self._id)
return
- if not isinstance(value, Handlebar):
- render_state.AddResolutionError(self._id)
+ if not isinstance(value, (Handlebar, _Node)):
+ render_state.AddResolutionError(self._id, description='not a partial')
return
- partial_render_state = render_state.ForkPartial(value._name, self._id)
+ if isinstance(value, Handlebar):
+ node, name = value._top_node, value._name
+ else:
+ node, name = value, None
- # TODO: Don't do this. Force callers to do this by specifying an @ argument.
- top_local = render_state.contexts.GetTopLocal()
- if top_local is not None:
- partial_render_state.contexts.Push(top_local)
+ partial_render_state = render_state.ForkPartial(name, self._id)
+ arg_context = {}
+ if self._pass_through_id is not None:
+ context = render_state.contexts.Resolve(self._pass_through_id.name)
+ if context is not None:
+ arg_context[self._pass_through_id.name] = context
+ if self._resolved_args is not None:
+ arg_context.update(self._resolved_args)
if self._args is not None:
- arg_context = {}
- for key, value_id in self._args.items():
- context = render_state.contexts.Resolve(value_id.name)
- if context is not None:
- arg_context[key] = context
+ def resolve_args(args):
+ resolved = {}
+ for key, value in args.iteritems():
+ if isinstance(value, dict):
+ assert len(value.keys()) == 1
+ inner_id, inner_args = value.items()[0]
+ inner_partial = render_state.contexts.Resolve(inner_id.name)
+ if inner_partial is not None:
+ context = _PartialNode(None, inner_id, inner_partial)
+ context.SetResolvedArguments(resolve_args(inner_args))
+ resolved[key] = context
+ else:
+ context = render_state.contexts.Resolve(value.name)
+ if context is not None:
+ resolved[key] = context
+ return resolved
+ arg_context.update(resolve_args(self._args))
+ if self._bind_to and self._content:
+ arg_context[self._bind_to.name] = self._content
+ if arg_context:
partial_render_state.contexts.Push(arg_context)
- if self._local_context_id is not None:
- local_context = render_state.contexts.Resolve(self._local_context_id.name)
- if local_context is not None:
- partial_render_state.contexts.Push(local_context)
-
- value._top_node.Render(partial_render_state)
+ node.Render(partial_render_state)
render_state.Merge(
partial_render_state,
text_transform=lambda text: text[:-1] if text.endswith('\n') else text)
- def AddArgument(self, key, id_):
- if self._args is None:
- self._args = {}
- self._args[key] = id_
+ def SetResolvedArguments(self, args):
+ self._resolved_args = args
+
+ def SetArguments(self, args):
+ self._args = args
- def SetLocalContext(self, id_):
- self._local_context_id = id_
+ def PassThroughArgument(self, id_):
+ self._pass_through_id = id_
def __repr__(self):
return '{{+%s}}' % self._id
- def __str__(self):
- return repr(self)
-
_TOKENS = {}
class _Token(object):
- ''' The tokens that can appear in a template.
+ '''The tokens that can appear in a template.
'''
class Data(object):
def __init__(self, name, text, clazz):
@@ -715,30 +740,53 @@ class _Token(object):
return _InvertedSectionNode
if self.clazz == _InvertedSectionNode:
return _VertedSectionNode
- raise ValueError('%s cannot have an else clause.' % self.clazz)
-
- OPEN_START_SECTION = Data('OPEN_START_SECTION' , '{{#', _SectionNode)
- OPEN_START_VERTED_SECTION = Data('OPEN_START_VERTED_SECTION' , '{{?', _VertedSectionNode)
- OPEN_START_INVERTED_SECTION = Data('OPEN_START_INVERTED_SECTION', '{{^', _InvertedSectionNode)
- OPEN_START_JSON = Data('OPEN_START_JSON' , '{{*', _JsonNode)
- OPEN_START_PARTIAL = Data('OPEN_START_PARTIAL' , '{{+', _PartialNode)
- OPEN_ELSE = Data('OPEN_ELSE' , '{{:', None)
- OPEN_END_SECTION = Data('OPEN_END_SECTION' , '{{/', None)
- INLINE_END_SECTION = Data('INLINE_END_SECTION' , '/}}', None)
- OPEN_UNESCAPED_VARIABLE = Data('OPEN_UNESCAPED_VARIABLE' , '{{{', _UnescapedVariableNode)
- CLOSE_MUSTACHE3 = Data('CLOSE_MUSTACHE3' , '}}}', None)
- OPEN_COMMENT = Data('OPEN_COMMENT' , '{{-', _CommentNode)
- CLOSE_COMMENT = Data('CLOSE_COMMENT' , '-}}', None)
- OPEN_VARIABLE = Data('OPEN_VARIABLE' , '{{' , _EscapedVariableNode)
- CLOSE_MUSTACHE = Data('CLOSE_MUSTACHE' , '}}' , None)
- CHARACTER = Data('CHARACTER' , '.' , None)
+ return None
+
+ def __repr__(self):
+ return self.name
+
+ def __str__(self):
+ return repr(self)
+
+ OPEN_START_SECTION = Data(
+ 'OPEN_START_SECTION' , '{{#', _SectionNode)
+ OPEN_START_VERTED_SECTION = Data(
+ 'OPEN_START_VERTED_SECTION' , '{{?', _VertedSectionNode)
+ OPEN_START_INVERTED_SECTION = Data(
+ 'OPEN_START_INVERTED_SECTION', '{{^', _InvertedSectionNode)
+ OPEN_ASSERTION = Data(
+ 'OPEN_ASSERTION' , '{{!', _AssertionNode)
+ OPEN_JSON = Data(
+ 'OPEN_JSON' , '{{*', _JsonNode)
+ OPEN_PARTIAL = Data(
+ 'OPEN_PARTIAL' , '{{+', _PartialNode)
+ OPEN_ELSE = Data(
+ 'OPEN_ELSE' , '{{:', None)
+ OPEN_END_SECTION = Data(
+ 'OPEN_END_SECTION' , '{{/', None)
+ INLINE_END_SECTION = Data(
+ 'INLINE_END_SECTION' , '/}}', None)
+ OPEN_UNESCAPED_VARIABLE = Data(
+ 'OPEN_UNESCAPED_VARIABLE' , '{{{', _UnescapedVariableNode)
+ CLOSE_MUSTACHE3 = Data(
+ 'CLOSE_MUSTACHE3' , '}}}', None)
+ OPEN_COMMENT = Data(
+ 'OPEN_COMMENT' , '{{-', _CommentNode)
+ CLOSE_COMMENT = Data(
+ 'CLOSE_COMMENT' , '-}}', None)
+ OPEN_VARIABLE = Data(
+ 'OPEN_VARIABLE' , '{{' , _EscapedVariableNode)
+ CLOSE_MUSTACHE = Data(
+ 'CLOSE_MUSTACHE' , '}}' , None)
+ CHARACTER = Data(
+ 'CHARACTER' , '.' , None)
class _TokenStream(object):
- ''' Tokeniser for template parsing.
+ '''Tokeniser for template parsing.
'''
def __init__(self, string):
self.next_token = None
- self.next_line = _Line(1)
+ self.next_line = 1
self.next_column = 0
self._string = string
self._cursor = 0
@@ -747,9 +795,14 @@ class _TokenStream(object):
def HasNext(self):
return self.next_token is not None
+ def NextCharacter(self):
+ if self.next_token is _Token.CHARACTER:
+ return self._string[self._cursor - 1]
+ return None
+
def Advance(self):
if self._cursor > 0 and self._string[self._cursor - 1] == '\n':
- self.next_line = _Line(self.next_line.number + 1)
+ self.next_line += 1
self.next_column = 0
elif self.next_token is not None:
self.next_column += len(self.next_token.text)
@@ -772,14 +825,29 @@ class _TokenStream(object):
self._cursor += len(self.next_token.text)
return self
- def AdvanceOver(self, token):
- if self.next_token != token:
- raise ParseException(
- 'Expecting token %s but got %s at line %s' % (token.name,
- self.next_token.name,
- self.next_line))
+ def AdvanceOver(self, token, description=None):
+ parse_error = None
+ if not self.next_token:
+ parse_error = 'Reached EOF but expected %s' % token.name
+ elif self.next_token is not token:
+ parse_error = 'Expecting token %s but got %s at line %s' % (
+ token.name, self.next_token.name, self.next_line)
+ if parse_error:
+ parse_error += ' %s' % description or ''
+ raise ParseException(parse_error)
return self.Advance()
+ def AdvanceOverSeparator(self, char, description=None):
+ self.SkipWhitespace()
+ next_char = self.NextCharacter()
+ if next_char != char:
+ parse_error = 'Expected \'%s\'. got \'%s\'' % (char, next_char)
+ if description is not None:
+ parse_error += ' (%s)' % description
+ raise ParseException(parse_error)
+ self.AdvanceOver(_Token.CHARACTER)
+ self.SkipWhitespace()
+
def AdvanceOverNextString(self, excluded=''):
start = self._cursor - len(self.next_token.text)
while (self.next_token is _Token.CHARACTER and
@@ -798,8 +866,16 @@ class _TokenStream(object):
self._string[self._cursor - 1] in ' \n\r\t'):
self.Advance()
+ def __repr__(self):
+ return '%s(next_token=%s, remainder=%s)' % (type(self).__name__,
+ self.next_token,
+ self._string[self._cursor:])
+
+ def __str__(self):
+ return repr(self)
+
class Handlebar(object):
- ''' A handlebar template.
+ '''A handlebar template.
'''
def __init__(self, template, name=None):
self.source = template
@@ -810,8 +886,8 @@ class Handlebar(object):
raise ParseException('Template is empty')
if tokens.HasNext():
raise ParseException('There are still tokens remaining at %s, '
- 'was there an end-section without a start-section?'
- % tokens.next_line)
+ 'was there an end-section without a start-section?' %
+ tokens.next_line)
def _ParseSection(self, tokens):
nodes = []
@@ -843,8 +919,7 @@ class Handlebar(object):
previous_node.TrimEndingSpaces()
if next_node:
next_node.TrimStartingNewLine()
- elif (isinstance(node, _LeafNode) and
- (not previous_node or previous_node.EndsWithEmptyLine()) and
+ elif ((not previous_node or previous_node.EndsWithEmptyLine()) and
(not next_node or next_node.StartsWithNewLine())):
indentation = 0
if previous_node:
@@ -867,69 +942,95 @@ class Handlebar(object):
next_token = tokens.next_token
if next_token is _Token.CHARACTER:
+ # Plain strings.
start_line = tokens.next_line
string = tokens.AdvanceOverNextString()
return [_StringNode(string, start_line, tokens.next_line)]
elif next_token in (_Token.OPEN_VARIABLE,
_Token.OPEN_UNESCAPED_VARIABLE,
- _Token.OPEN_START_JSON):
- id_, inline_value_id = self._OpenSectionOrTag(tokens)
- if inline_value_id is not None:
- raise ParseException(
- '%s cannot have an inline value' % id_.GetDescription())
+ _Token.OPEN_JSON):
+ # Inline nodes that don't take arguments.
+ tokens.Advance()
+ close_token = (_Token.CLOSE_MUSTACHE3
+ if next_token is _Token.OPEN_UNESCAPED_VARIABLE else
+ _Token.CLOSE_MUSTACHE)
+ id_ = self._NextIdentifier(tokens)
+ tokens.AdvanceOver(close_token)
return [next_token.clazz(id_)]
- elif next_token is _Token.OPEN_START_PARTIAL:
+ elif next_token is _Token.OPEN_ASSERTION:
+ # Inline nodes that take arguments.
tokens.Advance()
- column_start = tokens.next_column + 1
- id_ = _Identifier(tokens.AdvanceToNextWhitespace(),
- tokens.next_line,
- column_start)
- partial_node = _PartialNode(id_)
- while tokens.next_token is _Token.CHARACTER:
- tokens.SkipWhitespace()
- key = tokens.AdvanceOverNextString(excluded=':')
- tokens.Advance()
- column_start = tokens.next_column + 1
- id_ = _Identifier(tokens.AdvanceToNextWhitespace(),
- tokens.next_line,
- column_start)
- if key == '@':
- partial_node.SetLocalContext(id_)
- else:
- partial_node.AddArgument(key, id_)
+ id_ = self._NextIdentifier(tokens)
+ node = next_token.clazz(id_, tokens.AdvanceOverNextString())
tokens.AdvanceOver(_Token.CLOSE_MUSTACHE)
- return [partial_node]
- elif next_token is _Token.OPEN_START_SECTION:
- id_, inline_node = self._OpenSectionOrTag(tokens)
- nodes = []
- if inline_node is None:
- section = self._ParseSection(tokens)
- self._CloseSection(tokens, id_)
- nodes = []
- if section is not None:
- nodes.append(_SectionNode(id_, section))
- else:
- nodes.append(_SectionNode(id_, inline_node))
- return nodes
- elif next_token in (_Token.OPEN_START_VERTED_SECTION,
+ return [node]
+ elif next_token in (_Token.OPEN_PARTIAL,
+ _Token.OPEN_START_SECTION,
+ _Token.OPEN_START_VERTED_SECTION,
_Token.OPEN_START_INVERTED_SECTION):
- id_, inline_node = self._OpenSectionOrTag(tokens)
+ # Block nodes, though they may have inline syntax like {{#foo bar /}}.
+ tokens.Advance()
+ bind_to, id_ = None, self._NextIdentifier(tokens)
+ if tokens.NextCharacter() == ':':
+ # This section has the format {{#bound:id}} as opposed to just {{id}}.
+ # That is, |id_| is actually the identifier to bind what the section
+ # is producing, not the identifier of where to find that content.
+ tokens.AdvanceOverSeparator(':')
+ bind_to, id_ = id_, self._NextIdentifier(tokens)
+ partial_args = None
+ if next_token is _Token.OPEN_PARTIAL:
+ partial_args = self._ParsePartialNodeArgs(tokens)
+ if tokens.next_token is not _Token.CLOSE_MUSTACHE:
+ # Inline syntax for partial types.
+ if bind_to is not None:
+ raise ParseException(
+ 'Cannot bind %s to a self-closing partial' % bind_to)
+ tokens.AdvanceOver(_Token.INLINE_END_SECTION)
+ partial_node = _PartialNode.Inline(id_)
+ partial_node.SetArguments(partial_args)
+ return [partial_node]
+ elif tokens.next_token is not _Token.CLOSE_MUSTACHE:
+ # Inline syntax for non-partial types. Support select node types:
+ # variables, partials, JSON.
+ line, column = tokens.next_line, (tokens.next_column + 1)
+ name = tokens.AdvanceToNextWhitespace()
+ clazz = _UnescapedVariableNode
+ if name.startswith('*'):
+ clazz = _JsonNode
+ elif name.startswith('+'):
+ clazz = _PartialNode.Inline
+ if clazz is not _UnescapedVariableNode:
+ name = name[1:]
+ column += 1
+ inline_node = clazz(_Identifier(name, line, column))
+ if isinstance(inline_node, _PartialNode):
+ inline_node.SetArguments(self._ParsePartialNodeArgs(tokens))
+ if bind_to is not None:
+ inline_node.PassThroughArgument(bind_to)
+ tokens.SkipWhitespace()
+ tokens.AdvanceOver(_Token.INLINE_END_SECTION)
+ return [next_token.clazz(bind_to, id_, inline_node)]
+ # Block syntax.
+ tokens.AdvanceOver(_Token.CLOSE_MUSTACHE)
+ section = self._ParseSection(tokens)
+ else_node_class = next_token.ElseNodeClass() # may not have one
+ else_section = None
+ if (else_node_class is not None and
+ tokens.next_token is _Token.OPEN_ELSE):
+ self._OpenElse(tokens, id_)
+ else_section = self._ParseSection(tokens)
+ self._CloseSection(tokens, id_)
nodes = []
- if inline_node is None:
- section = self._ParseSection(tokens)
- else_section = None
- if tokens.next_token is _Token.OPEN_ELSE:
- self._OpenElse(tokens, id_)
- else_section = self._ParseSection(tokens)
- self._CloseSection(tokens, id_)
- if section:
- nodes.append(next_token.clazz(id_, section))
- if else_section:
- nodes.append(next_token.ElseNodeClass()(id_, else_section))
- else:
- nodes.append(next_token.clazz(id_, inline_node))
+ if section is not None:
+ node = next_token.clazz(bind_to, id_, section)
+ if partial_args:
+ node.SetArguments(partial_args)
+ nodes.append(node)
+ if else_section is not None:
+ nodes.append(else_node_class(bind_to, id_, else_section))
return nodes
elif next_token is _Token.OPEN_COMMENT:
+ # Comments.
start_line = tokens.next_line
self._AdvanceOverComment(tokens)
return [_CommentNode(start_line, tokens.next_line)]
@@ -944,39 +1045,9 @@ class Handlebar(object):
depth -= 1
tokens.Advance()
- def _OpenSectionOrTag(self, tokens):
- def NextIdentifierArgs():
- tokens.SkipWhitespace()
- line = tokens.next_line
- column = tokens.next_column + 1
- name = tokens.AdvanceToNextWhitespace()
- tokens.SkipWhitespace()
- return (name, line, column)
- close_token = (_Token.CLOSE_MUSTACHE3
- if tokens.next_token is _Token.OPEN_UNESCAPED_VARIABLE else
- _Token.CLOSE_MUSTACHE)
- tokens.Advance()
- id_ = _Identifier(*NextIdentifierArgs())
- if tokens.next_token is close_token:
- tokens.AdvanceOver(close_token)
- inline_node = None
- else:
- name, line, column = NextIdentifierArgs()
- tokens.AdvanceOver(_Token.INLINE_END_SECTION)
- # Support select other types of nodes, the most useful being partial.
- clazz = _UnescapedVariableNode
- if name.startswith('*'):
- clazz = _JsonNode
- elif name.startswith('+'):
- clazz = _PartialNode
- if clazz is not _UnescapedVariableNode:
- name = name[1:]
- column += 1
- inline_node = clazz(_Identifier(name, line, column))
- return (id_, inline_node)
-
def _CloseSection(self, tokens, id_):
- tokens.AdvanceOver(_Token.OPEN_END_SECTION)
+ tokens.AdvanceOver(_Token.OPEN_END_SECTION,
+ description='to match %s' % id_.GetDescription())
next_string = tokens.AdvanceOverNextString()
if next_string != '' and next_string != id_.name:
raise ParseException(
@@ -991,20 +1062,55 @@ class Handlebar(object):
'Start section %s doesn\'t match else %s' % (id_, next_string))
tokens.AdvanceOver(_Token.CLOSE_MUSTACHE)
- def Render(self, *contexts):
+ def _ParsePartialNodeArgs(self, tokens):
+ args = {}
+ tokens.SkipWhitespace()
+ while (tokens.next_token is _Token.CHARACTER and
+ tokens.NextCharacter() != ')'):
+ key = tokens.AdvanceOverNextString(excluded=':')
+ tokens.AdvanceOverSeparator(':')
+ if tokens.NextCharacter() == '(':
+ tokens.AdvanceOverSeparator('(')
+ inner_id = self._NextIdentifier(tokens)
+ inner_args = self._ParsePartialNodeArgs(tokens)
+ tokens.AdvanceOverSeparator(')')
+ args[key] = {inner_id: inner_args}
+ else:
+ args[key] = self._NextIdentifier(tokens)
+ return args or None
+
+ def _NextIdentifier(self, tokens):
+ tokens.SkipWhitespace()
+ column_start = tokens.next_column + 1
+ id_ = _Identifier(tokens.AdvanceOverNextString(excluded=' \n\r\t:()'),
+ tokens.next_line,
+ column_start)
+ tokens.SkipWhitespace()
+ return id_
+
+ def Render(self, *user_contexts):
'''Renders this template given a variable number of contexts to read out
values from (such as those appearing in {{foo}}).
'''
name = self._name or '<root>'
- render_state = _RenderState(name, _Contexts(contexts))
+ internal_context = _InternalContext()
+ render_state = _RenderState(
+ name, _Contexts([{'_': internal_context}] + list(user_contexts)))
+ internal_context.SetRenderState(render_state)
self._top_node.Render(render_state)
return render_state.GetResult()
def render(self, *contexts):
return self.Render(*contexts)
+ def __eq__(self, other):
+ return self.source == other.source and self._name == other._name
+
+ def __ne__(self, other):
+ return not (self == other)
+
def __repr__(self):
- return str('%s(%s)' % (self.__class__.__name__, self._top_node))
+ return str('%s(%s)' % (type(self).__name__, self._top_node))
def __str__(self):
return repr(self)