Retire repo
As announced on http://lists.openstack.org/pipermail/openstack-dev/2017-June/119180.html Change-Id: I6b34656dd4766791987e56846830fb6c4ffeb7ee Depends-On: Id91d999450a6ec241144c2e85977968dca195e50
This commit is contained in:
parent
8bd5dc64d7
commit
a25ebfc6bd
.gitignore.gitreview
.settings
LICENSEREADME.rstRELEASE_NOTES.rstbugs.orgclouddocs-plugin.xprnotes
pom.xmlreplacements.configsrc/main
java/com/rackspace/cloud/api/docs
ApiRefMojo.javaCalabashHelper.javaDocBookResolver.javaEclipseMojo.javaEpubMojo.javaFileUtils.javaGitHelper.javaGlossaryResolver.javaHTMLMojo.javaPDFMojo.javaResourceResolver.javaWebHelpMojo.javaXhtmlMojo.java
builders
calabash/extensions
pipeline
javascript
resources
apiref
css
bootstrap-screen.cssbootstrap.min.csscss.cssmain-3569f93f8adb6558ac39cab2466620a8.cssmain-rackspace.cssmain.cssreset.cssstyle.csssyntax.css
fonts
glyphicons-halflings-regular.eotglyphicons-halflings-regular.svgglyphicons-halflings-regular.ttfglyphicons-halflings-regular.woff
images
fpo-icon.svgheader-line.gifopen-stack-cloud-computing-logo-2.pngopen-stack-logo.pngopenstack-page-bkg.jpgpdf.pngrackerpowered-logo.pngrs-logo.svg
js
cloud
24
.gitignore
vendored
24
.gitignore
vendored
@ -1,24 +0,0 @@
|
||||
## java specific
|
||||
!.gitignore
|
||||
*.iml
|
||||
*.iws
|
||||
*.ipr
|
||||
target
|
||||
*/target
|
||||
*/*/target
|
||||
|
||||
## generic files to ignore
|
||||
*~
|
||||
*.lock
|
||||
*.DS_Store
|
||||
*.swp
|
||||
*.out
|
||||
.idea
|
||||
/.classpath
|
||||
/.project
|
||||
|
||||
# NetBeans user-specific build actions
|
||||
nbactions.xml
|
||||
nbactions-*.xml
|
||||
sonatype-*.sh
|
||||
/.settings
|
@ -1,4 +0,0 @@
|
||||
[gerrit]
|
||||
host=review.openstack.org
|
||||
port=29418
|
||||
project=openstack/clouddocs-maven-plugin.git
|
1
.settings/.gitignore
vendored
1
.settings/.gitignore
vendored
@ -1 +0,0 @@
|
||||
/org.eclipse.jdt.core.prefs
|
175
LICENSE
175
LICENSE
@ -1,175 +0,0 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
69
README.rst
69
README.rst
@ -1,64 +1,11 @@
|
||||
============
|
||||
Introduction
|
||||
============
|
||||
This project is no longer maintained.
|
||||
|
||||
This project is the OpenStack customization of the Docbkx
|
||||
plug-in for creating documentation artifacts for OpenStack.
|
||||
The contents of this repository are still available in the Git
|
||||
source code management system. To see the contents of this
|
||||
repository before it reached its end of life, please check out the
|
||||
previous commit with "git checkout HEAD^1".
|
||||
|
||||
Example output
|
||||
==============
|
||||
For any further questions, please email
|
||||
openstack-docs@lists.openstack.org or join #openstack-doc on
|
||||
Freenode.
|
||||
|
||||
OpenStack output:
|
||||
|
||||
- http://docs.openstack.org/
|
||||
- http://api.openstack.org/api-ref.html
|
||||
|
||||
OpenStack source files:
|
||||
|
||||
- https://git.openstack.org/cgit/openstack/openstack-manuals
|
||||
- https://git.openstack.org/cgit/openstack/api-site
|
||||
|
||||
|
||||
Test changes to clouddocs-maven-plugin
|
||||
======================================
|
||||
|
||||
Note: When you commit, be sure you are on a branch,
|
||||
do a single commit, and do "git review" instead of pushing.
|
||||
|
||||
To test changes to clouddocs-maven-plugin on your local machine:
|
||||
|
||||
#. Run this command to clone clouddocs-maven-plugin:
|
||||
|
||||
git clone https://git.openstack.org/openstack/clouddocs-maven-plugin
|
||||
|
||||
#. CD into the clouddocs-maven-plugin directory.
|
||||
|
||||
#. Edit the pom.xml file and set the version number on line #11 to include -SNAPSHOT.
|
||||
For example, 1.12.1-SNAPSHOT.
|
||||
|
||||
#. Make changes to clouddocs-maven-plugin.
|
||||
|
||||
#. Run this command to build clouddocs-maven-plugin locally:
|
||||
|
||||
mvn clean install
|
||||
|
||||
#. Run this command to clone the api-site:
|
||||
|
||||
git clone https://git.openstack.org/openstack/api-site
|
||||
|
||||
#. CD into the api-site directory.
|
||||
|
||||
#. Edit the pom.xml file and set the version number on line #42
|
||||
to the same version number as in the clouddocs-maven-plugin pom.xml file.
|
||||
For example, 1.12.1-SNAPSHOT.
|
||||
|
||||
#. Run the following command to build the api-site locally:
|
||||
|
||||
mvn clean generate-sources -U
|
||||
|
||||
The -U switch picks up the local build of clouddocs-maven-plugin.
|
||||
|
||||
How Tos
|
||||
=======
|
||||
- http://docs.rackspace.com/writers-guide
|
||||
- http://docs.openstack.org/contributor-guide/tools-and-content-overview.html
|
||||
|
@ -1,855 +0,0 @@
|
||||
Release Notes
|
||||
=============
|
||||
|
||||
clouddocs-maven-plugin 2.1.4 (April 6, 2015)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Add link to each GET/PUT/POST/DELETE/PATCH "button"
|
||||
- Adds Korean fonts for PDF output
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Fix SyntaxHighlighting issue caused by index entries (https://bugs.launchpad.net/openstack-manuals/+bug/1340211)
|
||||
- Partial fixes for epub output
|
||||
|
||||
clouddocs-maven-plugin 2.1.3 (Sept. 22, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Add the title of the service for each API call in API Reference pages
|
||||
- Support YAML syntax highlighting
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- CSS fixes for Rackspace output
|
||||
- Minor improvements for developers working on the plugin itself
|
||||
- Updates to Rackspace-branded output
|
||||
- Allow an error phrase to be listed with the response code for API deliverables
|
||||
- Use roman page numbers for preface
|
||||
|
||||
clouddocs-maven-plugin 2.1.2 (July 15, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Add hyphenation support for FOP
|
||||
- Use new logo in Rackspace output
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Fix incorrect link in Rackspace API reference
|
||||
|
||||
clouddocs-maven-plugin 2.1.1 (June 30, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Depend on latest version of wadl-tools (1.0.27).
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Avoid duplicating method content from included wadl when the included method appears more than once.
|
||||
- New header etc in Rackspace branded api reference page.
|
||||
- Avoid spurious "No body required" text in guides generated from wadl.
|
||||
- Fix font bug in generate-pdf goal.
|
||||
- Use refactored wadl-processing code for api-reference page to cause all parameters to appear.
|
||||
|
||||
clouddocs-maven-plugin 2.1.0 (June 23, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Support fixing xml:id, linkend, and xlink:href attributes when xincluding content more
|
||||
than once. For more information, see https://github.com/docbook/transclusion-fixup and
|
||||
http://docbook.org/docs/transclusion/2010-12-09/transclusion.html#d6e179
|
||||
|
||||
clouddocs-maven-plugin 2.0.4 (June 05, 2014)
|
||||
============================================================
|
||||
- Bug fixes
|
||||
|
||||
- Rackspace branding, Webhelp: Add <noscript> bar encouraging users to enable JavaScript.
|
||||
- Rackspace branding: Minor change to copyright statement.
|
||||
- Rackspace branding, Webhelp: Remove tealium js because this is now pulled in via HaaS.
|
||||
|
||||
clouddocs-maven-plugin 2.0.3 (May 22, 2014)
|
||||
============================================================
|
||||
- Bug fixes
|
||||
|
||||
- Support nested bold and italic text in code listings with syntax highlighting.
|
||||
- Support arbitrary legalnotice text and inject appropriate text when role="rpc".
|
||||
|
||||
clouddocs-maven-plugin 2.0.2 (May 09, 2014)
|
||||
============================================================
|
||||
- Bug fixes
|
||||
|
||||
- OpenStack branding: Do not default builtForOpenStack to 1 when branding = openstack. These are independent parameters.
|
||||
- OpenStack branding: Apply css to glossterms even in admonitions.
|
||||
- Rackspace branding: set debug=false in Header-as-a-Service call.
|
||||
- Rackspace branding: Fix bug where toc overlapped the content pane if the cookie had not been set yet.
|
||||
|
||||
clouddocs-maven-plugin 2.0.1 (May 07, 2014)
|
||||
============================================================
|
||||
- Bug fixes
|
||||
|
||||
- For Rackspace branding, use the favicon.ico from a CDN.
|
||||
- For Rackspace branding, align search results to the left.
|
||||
- For OpenStack branding, make varlistentry/terms bold.
|
||||
- Avoid invalid ids <a> tags created from glossterms.
|
||||
|
||||
clouddocs-maven-plugin 2.0.0 (April 23, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Backwards incompatible change for Rackspace branding only: Update Rackspace webhelp format to use header-as-a-service and feedback-as-a-service. OpenStack branding unchanged.
|
||||
- Add PDF link on API site pages.
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Use "Powered by OpenStack" logo in webhelp for Rackspace Private Cloud branding.
|
||||
- Remove spurious backslash from Google Analytics js.
|
||||
- Cosmetic improvements to overview pages for OpenStack api-site.
|
||||
|
||||
clouddocs-maven-plugin 1.15.0 (March 21, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Support <branding> parameter for api-ref pages (openstack and rackspace supported)
|
||||
- Support bodyFont, monospaceFont, and localFontPath parameters to provide alternate fonts used when generating pdfs.
|
||||
- Add Tealium utag.js to html output when branding = rackspace.
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Address Launchpad #1289568 which caused processing to fail on certain wadls.
|
||||
- Revert change which made the shortdesc line appear as the first line in the body of the api reference sections.
|
||||
- Fix NPE when using generate-pdf and generate-html goals.
|
||||
|
||||
clouddocs-maven-plugin 1.14.1 (March 5, 2014)
|
||||
============================================================
|
||||
- Bug fixes
|
||||
|
||||
- Address https://bugs.launchpad.net/openstack-manuals/+bug/1288395
|
||||
|
||||
clouddocs-maven-plugin 1.14.0 (March 3, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Generate wadl and json representations of the API in the content directory. Using new wadl-tools version.
|
||||
- Support adding an xml:id attribute to the wadl:resources element in the DocBook content that will make the resulting section URIs unique.
|
||||
- For Rackspace branding, use new copyright format.
|
||||
- In content generated from wadl, no longer suppress content marked role="shortdesc" from the method docs.
|
||||
- Apiref output: Automatically generate the toc content.
|
||||
- Apiref output: Support Google Analytics parameters.
|
||||
- Webhelp output: Support using path delimiters in webhelpDirname parameter.
|
||||
- Webhelp output: Turn off social icons when branding is set to rackspace.
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Support automatically adding "No request body required" and "No response body required" text for JSON bodies.
|
||||
- Fix bug resulting in spurious "SEVERE: Image not available." messages on stdout.
|
||||
- In the generated wadl reference, add a leading / to the URI if necessary.
|
||||
- Fix bug where search highlighting interfered with syntax highlighting.
|
||||
- Fix bug resulting in empty <b/> elements before sidebar/title elements.
|
||||
|
||||
clouddocs-maven-plugin 1.13.0 (January 23, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Move method signatures back to the top of methods in generated API reference for guides.
|
||||
- Add hyperlinks from summary tables to method reference pages in generated API reference for guides.
|
||||
- Add support for a Rackspace Private Cloud branding.
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Improve handling of paths containing spaces.
|
||||
- Provide more information in certain error states.
|
||||
- Support <part>s in pdf and webhelp output.
|
||||
- Support the glossaryCollection parameter for pdfs automatically generated during webhelp build.
|
||||
- Improve formatting of paths in sections generated for API references in guides.
|
||||
|
||||
clouddocs-maven-plugin 1.12.2 (January 8, 2014)
|
||||
============================================================
|
||||
- Bug fixes
|
||||
|
||||
- Minor update to OpenStack API Reference page.
|
||||
|
||||
clouddocs-maven-plugin 1.12.1 (January 7, 2014)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Updates to OpenStack API reference page
|
||||
- In reference pages generated from wadl, format paths according to RFC 6570.
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Fix bug where resource titles were omitted when using point-to-wadl
|
||||
- Avoid duplicate ids when combining several wadls into one doc by including rax:id from resources in generated section id.
|
||||
- Do not output section title on the index.html page.
|
||||
- Updates to response code text generated by xslts.
|
||||
|
||||
clouddocs-maven-plugin 1.12.0 (November 19, 2013)
|
||||
============================================================
|
||||
- Features and updates
|
||||
|
||||
- Support @url attribute on raxm:product for publishing several version of the same document.
|
||||
- Depend on version 1.0.19 of wadl-tools.
|
||||
- Remove Coremetrics Javascript from webhelp.
|
||||
- Format <parameter> element as monospace instead of italics.
|
||||
- In reference content generated from wadl files:
|
||||
|
||||
- Change "Verb" to "Method" in summary tables.
|
||||
- Modify the appearance of "Required" and "Optional" in parameter tables.
|
||||
- Format response codes in a table if descriptions are available.
|
||||
- Format plain parameters for JSON bodies as a tree with collapsible nodes.
|
||||
- Fix regression where override of the titles for body examples were not respected.
|
||||
|
||||
- Bug fixes
|
||||
|
||||
- Fix XSS vulnerabilities in Webhelp output.
|
||||
- Fix bug where webhelpBasename wasn't respected for .war file names.
|
||||
- Eliminiate various xsl errors when multiple raxm:metadata/* elements appear in the document.
|
||||
- Avoid xslt errors when inline markup stripped from code listings had attributes.
|
||||
|
||||
|
||||
|
||||
clouddocs-maven-plugin 1.11.1 (October 14, 2013)
|
||||
============================================================
|
||||
- Bug fixes
|
||||
|
||||
- Hide "Log a Bug" link at bottom of page in Rackspace output.
|
||||
- Updated apipage-main.xsl to include metering API
|
||||
- Updated Rackspace logo
|
||||
- Fix alignment of ordered lists in API reference pages.
|
||||
- Rename "Template" parameters as "URI" parameters in output.
|
||||
|
||||
clouddocs-maven-plugin 1.11.0 (September 30, 2013)
|
||||
============================================================
|
||||
- Add "Log a bug" link to OpenStack output.
|
||||
- Moving to Maven Central
|
||||
- Bug fixes
|
||||
|
||||
- Empty Request or Response sections sometimes created if an incomplete wadl was processed.
|
||||
- Reduce noise on stdout and improve ability to debug XProc pipelines (when run with --debug)
|
||||
- Use Calabash 1.0.13-94 for XProc piplines.
|
||||
- In api-ref page xslts, adjust xpath expressions to account for changes in wadl-tools.
|
||||
- Add missing <th>s to param tables in api reference output.
|
||||
|
||||
|
||||
clouddocs-maven-plugin 1.10.0 (September 17, 2013)
|
||||
============================================================
|
||||
- New formatting for api-ref.html output
|
||||
- Refactored API reference page layout to include plain parameters and longform doc of media type.
|
||||
- Bug fixes
|
||||
|
||||
- Fixed "Failed to load image" messages from DocBook xsls on stdout.
|
||||
- Fixed invalid css rules.
|
||||
- Generate table from plain parameters when documenting requests/response and no longer suppress documentation related to code samples embedded with requests/responses in wadls.
|
||||
- Show error codes in apiref.html output.
|
||||
- No longer include timestamp in file names for intermediate invalid file generated in target directory.
|
||||
- Fixed bug where it was impossible to refer to a wadl by URL.
|
||||
- Refactored wadl2docbook code for improved readability.
|
||||
|
||||
|
||||
clouddocs-maven-plugin 1.9.3 (September 5, 2013)
|
||||
============================================================
|
||||
- Bug fixes:
|
||||
|
||||
- Fix encoding issues that prevented building the plugin on Windows.
|
||||
- Fix path issues that prevented building documents on Windows.
|
||||
- Fix issue where documents would not build with a space in the path.
|
||||
- Add zero-width spaces after underscore characters in template paramters in the api-ref.html output to allow for wrapping of long paths.
|
||||
- Use https:// to refer to eluminate.js to avoid long loads when loading from file system in some browsers.
|
||||
|
||||
clouddocs-maven-plugin 1.9.2 (August 19, 2013)
|
||||
============================================================
|
||||
- Bug fixes:
|
||||
|
||||
- Improve presentation of informaltables and CALS tables generally.
|
||||
- Format <replaceable> as italic inside screen, programlisting, and literallayout.
|
||||
|
||||
clouddocs-maven-plugin 1.9.1 (August 15, 2013)
|
||||
============================================================
|
||||
- Support language="ini" for syntax highlighting on code listings.
|
||||
|
||||
clouddocs-maven-plugin 1.9.0 (August 13, 2013)
|
||||
============================================================
|
||||
- Added support for olinks and the olink-maven-plugin.
|
||||
|
||||
- By default, the olink database is assumed to be in target/olink.db.
|
||||
- olinks to the same document are converted to xrefs.
|
||||
- Currently, olinks are never hot.
|
||||
- Change the presentation of dates in pdf and webhelp so that the full month name is used.
|
||||
- Add param style and type to tables in apiref page.
|
||||
- It is now possible to filter wadl content using the security attribute. Note that in the wadl the security attribute must be in the DocBook namespace. For example declare xmlns:db="http://docbook.org/ns/docbook" on the root element and then put the db:security on any element (for example, a method).
|
||||
- You can now add role="hidden" on the rax:metadata element to cause the document not to appear on the docs.rackspace.com landing page.
|
||||
- Add support for Japanese fonts in pdfs.
|
||||
- Bug Fixes:
|
||||
- Be consistent about wrapping wadl:doc contents in paras even if it contains inline markup.
|
||||
- Support book/info/title when generating atom.xml.
|
||||
|
||||
clouddocs-maven-plugin 1.8.0
|
||||
============================================================
|
||||
- Improvements to the api reference output: floating toc and anchors for each heading.
|
||||
- Support support for additional DocBook params: pageWidth, pageHeight, doubleSided, and omitCover so OpenStack can use it for their ops guide.
|
||||
- Improve formatting of tables by adding rules="all" if not there already.
|
||||
- Fixed formatting of variablelists in html output
|
||||
- Depend on latest version of wadl-tools
|
||||
|
||||
clouddocs-maven-plugin 1.7.2
|
||||
============================================================
|
||||
- Support building docs on Windows.
|
||||
- Depend on latest version of wadl-tools, 1.0.12
|
||||
- Bug fixes:
|
||||
|
||||
- When producing documentation from WADL, do not list 3xx responses as error codes.
|
||||
- Do build-time search-and-replace AFTER resolving wadls so search-and-replace works on wadl-genereated content.
|
||||
- Left-align table titles for html tables
|
||||
|
||||
clouddocs-maven-plugin 1.7.1 (February 19, 2013)
|
||||
============================================================
|
||||
- Support pdfFilenameBase parameter. Use this parameter to provide an alternative name for the pdf automatically generated when producing webhelp output. By default the base name of the pdf is the base name of the input xml file.
|
||||
- Support webhelpDirname parameter. Use this parameter to provide an alternative name for the generated webhelp directory. By default the name of the webhelp output directory is the base name of the input xml file.
|
||||
- Support targetDirectory parameter. Use this parameter to control where the output lands (i.e. instead of target/docbkx/webhelp).
|
||||
- Bug fixes:
|
||||
|
||||
- Only include Google Analytics and social icons if security = external.
|
||||
- Set section.label.includes.component.label to one only if section.autolabel=1.
|
||||
- Fixed bug where auto-image copy failed if there was a trailing space in the value of the fileref attribute.
|
||||
- Fixed bug where linefeeds within a glossterm prevented autoglossary from matching term with basename.
|
||||
- Removed IE=7 meta tag from webhelp because it was causing Disqus not to work.
|
||||
|
||||
clouddocs-maven-plugin 1.7.0 (January 13, 2013)
|
||||
============================================================
|
||||
- Support publicationNotificationEmails parameter. A comma-delimited list of email addresses to which emails are sent when the document is publised.
|
||||
- Support includeDateInPdfFilename parameter. Set this paremeter to 0 to prevent the date from being appended to the pdf file name.
|
||||
- Autofill pubdate with current date if it is empty.
|
||||
- When a file is invalid, put a copy of the validated file in target dir named something like: basefilename.xml-invalid-date.xml
|
||||
- Use latest version of wadl-tools
|
||||
- Bug fixes:
|
||||
|
||||
- Make it possible to pass in statusBarText from pom or command line.
|
||||
- Reduce padding between admon title and first para in webhelp output.
|
||||
- Omit pubdate from pdf file name when branding is openstack.
|
||||
- Don't keep param tables together in wadl2docbook generated xml to avoid having long tables be mutilated.
|
||||
- Fix bug where PdfBuilder uses wrong source file for cover info.
|
||||
- Avoid "The value of param status.bar.text must be a valid Java Object" errors.
|
||||
- Support sectionLabelIncludesComponentLabel in autopdf.
|
||||
- Pass in fully qualified path to webhelp output dir to bookinfo.xsl so that it will put bookinfo.xml and bookinfo.properties in the correct place even if you do "mvn -f path/to/pom.xml".
|
||||
- Fix bug where a sequence was used as first arg of substring-after when a response has more than one representation/element.
|
||||
|
||||
clouddocs-maven-plugin 1.6.1 (November 27, 2012)
|
||||
============================================================
|
||||
- Bug fix release:
|
||||
|
||||
- Fix bug where appendix.autolabel wasn't being passed in to auto-generated pdfs from pom.
|
||||
- Fix bug where xslts weren't found in the target directory when building doc from a parent pom.
|
||||
- Fix problem where wadls weren't found if referred to as href="filename.wadl". Must be href="./filename.wadl". Have xsl prepend ./ when needed.
|
||||
- Wadl processing: Avoid "7th argument of concat cannot be a sequence" error which happens when you have a response with multiple representation/@element nodes.
|
||||
|
||||
clouddocs-maven-plugin 1.6.0 (November 10, 2012)
|
||||
============================================================
|
||||
|
||||
- Automatically handle images:
|
||||
|
||||
- Detects if images are missing from a document and fail if an
|
||||
image is missing. You can turn off this validation by setting
|
||||
<strictImageValidation>false</strictImageValidation> in your
|
||||
pom.xml.
|
||||
- For Webhelp output, automatically converts .svg to .png.
|
||||
- Automatically copies images to the Webhelp output directory.
|
||||
|
||||
- Automatically build pdf when building webhelp and copy pdf to
|
||||
webhelp directory unless <makePdf>false</makePdf> is set in your
|
||||
pom.xml.
|
||||
|
||||
- Generate pdf file names in the format basename-20121110.pdf where
|
||||
basename is the base pdf name and 20121110 is the taken from
|
||||
/*/info/pubdate in the document. If the pdf is generated with a
|
||||
security value other than external, then put the security value
|
||||
in the pdf file name. For example,
|
||||
basename-internal-20121110.pdf.
|
||||
- For Rackspace branding, by default the link to the pdf is
|
||||
changed to basename-latest.pdf to provide a permalink to the
|
||||
latest pdf. Our landing page dynamically redirects to the file
|
||||
name of the current pdf. To avoid this behavior and have the pdf
|
||||
link in webhelp be to the actual pdf, set \
|
||||
<useLatestSuffixInPdfUrl>0</useLatestSuffixInPdfUrl>.
|
||||
|
||||
- Provide better error messages if incorrect DocBook version is used
|
||||
(i.e. if DocBook 4.x is used instead of 5.x).
|
||||
- Updated Rackspace logo.
|
||||
- Move profiling to early in the pipeline. This fixes bugs where
|
||||
content in title and revhistory weren't being profiled.
|
||||
- Fix bug where IDREFs weren't validated.
|
||||
- Support passing in -Dsecurity=internal|external|reviewer and
|
||||
-Ddraft.status=on|off from the command line.
|
||||
- Generate .war file version of webhelp with bookinfo.xml file to
|
||||
support autopublish to landing page. To generate a war you must set
|
||||
webhelp.war. Typically this will be done from the Jenkins job that
|
||||
builds for autopublishing (-Dwebhelp.war=1).
|
||||
- It is no longer necessary to add ids to every <resource> in a wadl
|
||||
to use the point-to-wadl method of including content from a wadl.
|
||||
- Validation changes:
|
||||
|
||||
- Documents are now validated twice. Post xinclude, the documents
|
||||
are validated without checking IDREF integrity. Documents are
|
||||
validated again after wadl inclusion. At this time IDREFs are
|
||||
checked.
|
||||
- When a validation error is detected, a copy of the invalid
|
||||
document is now stored in the /tmp directory with a name like
|
||||
/tmp/invalid-2012-10-14T11:21:14.913-05:00.xml
|
||||
|
||||
- Generate war version of Webhelp output when webhelp.war=1.
|
||||
- Added support for a Repose branding (see http://openrepose.org/).
|
||||
- Bugfix: In PDF output, quote chapter names instead of italicizing them.
|
||||
- Bugfix: IDREFs are validated now during the build.
|
||||
|
||||
clouddocs-maven-plugin 1.5.0 (November 6, 2012)
|
||||
============================================================
|
||||
- Improve the way Google Analytics is called.
|
||||
|
||||
clouddocs-maven-plugin 1.5.0 (August 14, 2012)
|
||||
============================================================
|
||||
- Support build-time search and replace via a configuration file. To
|
||||
use add a parameter like the following to your pom.xml:
|
||||
<replacementsFile>replacements.config</replacementsFile> Where
|
||||
replacements.config is a file in the same directory as your
|
||||
pom.xml. See the example replacements.config file for documentation
|
||||
on how to use it.
|
||||
|
||||
clouddocs-maven-plugin 1.4.0 (August 13, 2012)
|
||||
============================================================
|
||||
- Chinese fonts now supported in pdf output.
|
||||
- WADL2DocBook: Fixed bug where query params were copied down the WADL
|
||||
tree.
|
||||
- Removed reference to tabpress.com js file which was not loading
|
||||
causing pages not to load. Unfortunately, this disables all social
|
||||
icons for now.
|
||||
- Added support for a secondaryCoverLogoPath param that allows the
|
||||
user to specify a second logo that appears on the bottom left of the
|
||||
pdf.
|
||||
- Fixed bug where cross-references were not resolved correctly in the
|
||||
revision history table.
|
||||
- Fixed bug where parameters were omitted in some cases.
|
||||
|
||||
clouddocs-maven-plugin 1.3.1 (May 30, 2012)
|
||||
============================================================
|
||||
|
||||
New features and changes
|
||||
------------------------
|
||||
|
||||
- You can now control the size of the status bar text:
|
||||
``<?rax status.bar.text.font.size="50px" status.bar.text="LIMITED AVAILABILITY"?>``.
|
||||
The default size of the text is about 71.3px, so if you need it
|
||||
smaller go from there. 50px should work for "LIMITED AVAILABILITY".
|
||||
- When generating DocBook from wadl, if you spin as
|
||||
<security>writeronly</security>, at the top of each generated section
|
||||
it shows what wadl the method came from and what the method id is.
|
||||
- You no longer need to pre-normalize wadls when using wadl2docbook.
|
||||
- Added css rules to hide sidebar automatically when printing web page.
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
- Fixed bug in extensions doc mechanism where wadl urls weren't picked
|
||||
up from info/extensions metadata.
|
||||
- Fixed bug where syntax highlighter padded spaces with s which
|
||||
would break XML when cut and pasted since nbsp isn't interpreted as
|
||||
a space character.
|
||||
- Enabled automatic glossary generation for pdfs.
|
||||
- Fixed the generation of ids on generated wrapper sections in
|
||||
wadl2docbook.
|
||||
- In certain cases, code listings with callouts had extra line breaks
|
||||
added.
|
||||
- The feature that automatically keeps short code listings together
|
||||
was not working.
|
||||
- When you clicked on a link to an anchor within a page, the heading
|
||||
was partially hidden by the banner.
|
||||
|
||||
|
||||
clouddocs-maven-plugin 1.2.0 (April 26, 2012)
|
||||
=============================================
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Bug fixes in syntax highlighting:
|
||||
|
||||
- Now support manually inserted <co> style callouts.
|
||||
- Now support markup inside programlistings, etc.
|
||||
- Added "Select" button to code listing to make it easier to know
|
||||
how to select the code sample.
|
||||
- JavaScript files only loaded when used and consolidated into a
|
||||
single file.
|
||||
- Adjusted formatting to avoid problems when many callouts appear in
|
||||
one listing.
|
||||
|
||||
- Webhelp
|
||||
|
||||
- Fix bug where searches with quotes return no results.
|
||||
|
||||
- Don't put border around footer table if footer navigation is
|
||||
enabled.
|
||||
|
||||
- Wadl2DocBook: Fix the generation of ids for sections generated from
|
||||
wadl methods.
|
||||
|
||||
|
||||
clouddocs-maven-plugin 1.1.0 (March 30, 2012)
|
||||
=============================================
|
||||
|
||||
New features and changes
|
||||
------------------------
|
||||
|
||||
- Syntax highlighting and line numbering for code samples for supported
|
||||
languages (bash, xml, json, javascript, json, and others to be
|
||||
added).
|
||||
|
||||
- Use the language attribute on the programlisting, literallyout,
|
||||
and screen to indicate the programming language used in the code
|
||||
sample. Supported languages currently include:
|
||||
|
||||
- bash
|
||||
- xml
|
||||
- javascript
|
||||
- json
|
||||
- python
|
||||
- java
|
||||
|
||||
- Extensions documents are automatically generated when extensions
|
||||
information is included in the book/info element.
|
||||
|
||||
- An example of how to use this feature is available in the
|
||||
following pull request
|
||||
`https://github.com/RackerWilliams/rax-compute-extensions/pull/1 <https://github.com/RackerWilliams/rax-compute-extensions/pull/1>`_
|
||||
|
||||
- The target of the "Legal notices" link is now configurable so that
|
||||
the user can set the ``legalNoticeUrl`` parameter in the pom.
|
||||
- The socialIcons parameter is now tied to the security parameter so
|
||||
that it is impossible to generate a document that is both internal
|
||||
and contains socialIcons.
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Fixed bug where the title in webhelp was incorrect when a doc
|
||||
contained multiple releaseinfo elements.
|
||||
- Fixed bug where doc builds failed when using maven 2.
|
||||
- Fixed bug where pdfs were missing images in some cases.
|
||||
|
||||
clouddocs-maven-plugin 1.0.11 (02 February 2012)
|
||||
================================================
|
||||
|
||||
New features and changes
|
||||
------------------------
|
||||
|
||||
- Automatically keep together short ``programlisting``s.
|
||||
|
||||
- Documents are validated before processing and the build fails if the
|
||||
document is invalid. If you would like to build even with an invalid
|
||||
document, set ``<failOnValidationError>no</failOnValidationError>``
|
||||
in your ``pom.xml``.
|
||||
- Add <showXslMessages>true</showXslMessages> to your pom.xml to see
|
||||
useful error messages from Maven.
|
||||
- Added generate-html goal to generate API reference page for
|
||||
OpenStack: `http://api.openstack.org/ <http://api.openstack.org/>`_
|
||||
- Support <builtForOpenStack>1</builtForOpenStack> param to add logo on
|
||||
cover of pdf.
|
||||
- Support the following params for alternative branding:
|
||||
|
||||
- coverLogoPath: Path, relataive to the pom.xml, for an alternative
|
||||
logo.
|
||||
|
||||
- coverLogoLeft: Distance from the left edge of the page where the
|
||||
logo should be placed (e.g. 4in)
|
||||
|
||||
- coverLogoTop: Distance from the top of the page where the logo
|
||||
should be placed (e.g. 8in)
|
||||
- coverUrl: Url to use beneath the logo (e.g. docs.example.com)
|
||||
|
||||
- coverColor: Color to for the polygon on the cover that is usually
|
||||
red. RGB hex value (e.g. c42126)
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- wadl-tools bug fixes:
|
||||
|
||||
- `https://github.com/rackspace/wadl-tools/pull/17 <https://github.com/rackspace/wadl-tools/pull/17>`_
|
||||
|
||||
- <emphasis role="italics"> (what you get when you click the Italic
|
||||
button in Oxygen) now produces italics in webhelp (it was already
|
||||
doing the right thing in pdf).
|
||||
- Adjusted handling of <sidebar> element in pdf and html.
|
||||
|
||||
clouddocs-maven-plugin 1.0.10 (09 February 2012)
|
||||
================================================
|
||||
|
||||
New features and changes
|
||||
------------------------
|
||||
|
||||
- Adjusted wadl2docbook processing so that "This operation does not
|
||||
require a request body." messages will appear in the output even if
|
||||
there is a code sample as long as there is no element attribute on
|
||||
the representation with a mediaType of application/xml. Request from
|
||||
Mike Asthalter.
|
||||
- The clouddocs plugin now uses the wadl xsls from wadl-tools.
|
||||
- New parameter ``metaRobots`` adds
|
||||
``<meta name="robots" content="NOINDEX, NOFOLLOW"/>`` to webhelp.
|
||||
This is so that writers can publish private beta docs on
|
||||
docs.rackspace.com and avoid having them indexed by spiders.
|
||||
- Social icons feature now logs clicks to Google Analytics.
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Fixed bug where glossary terms containing spaces did not receive
|
||||
working tool tips.
|
||||
- Fixed wadl normalizer bug where params weren't appearing in output.
|
||||
- Fixed wadl normalizer bug where invalid wadls were produced if the
|
||||
path attribute on a resource begins with a / character.
|
||||
- Fixed wadl normalizer bug where extension attributes and elements
|
||||
weren't copied when the wadl was normalized into tree-format.
|
||||
- Fixed bug where content flagged as internal in revhistory might
|
||||
escape into atom.xml
|
||||
- Fixed bug where certain terms do not appear in search results.
|
||||
|
||||
clouddocs-maven-plugin 1.0.9 (03 January 2012)
|
||||
==============================================
|
||||
|
||||
New features and changes
|
||||
------------------------
|
||||
|
||||
- Support for Twitter, Facebook, and Google+ icons in webhelp. Turn
|
||||
these on with the ``<socialIcons>1</socialIcons>`` parameter in your
|
||||
``pom.xml``.
|
||||
- In WADL normalizer, a new switch allows you to omit resource\_type
|
||||
elements and links to them ( -r keep, the default, or -r omit in the
|
||||
script or via the xslt parameter resource\_types, set to "keep" or
|
||||
"omit", where keep is the default).
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Eliminated 'table-layout="auto" not supported' error messages from
|
||||
the Maven plugin.
|
||||
- Eliminated spurious "Failed to load image" error messages from the
|
||||
Maven plugin.
|
||||
- Changed the vertical alignment of the date column of the revision
|
||||
history table to top.
|
||||
- Add background shading to <screen> element.
|
||||
- Wadl formatting fixes:
|
||||
|
||||
- Query parameters no longer appear in the URI in the summary tables
|
||||
(to reduce clutter). Only in the actual reference page.
|
||||
- Zero-width spaces are inserted programmatically into type names
|
||||
Type column of parameter table to cause them to wrap without a
|
||||
hyphen.
|
||||
|
||||
- Wadl normalizer fixes:
|
||||
|
||||
- Copy \_all\_ namespace declarations to root element of wadl.
|
||||
- Corrected handling of elements when a mixed tree/path formatted
|
||||
wadl is converted to a tree formatted wadl
|
||||
|
||||
- Improved error messages when an incorrect date format is used (e.g.
|
||||
in releaseinfo)
|
||||
- No longer show ``<revhistory>`` at the top of articles (or when doc
|
||||
is rooted at any other element)
|
||||
- Format guibutton, guiicon, guilabel, guimenu, guimenuitem, and
|
||||
guisubmenu as bold.
|
||||
- Fixed bug where terms like "key" and "nucleus" were not returned in
|
||||
webhelp search.
|
||||
|
||||
clouddocs-maven-plugin 1.0.8 (01 December 2011)
|
||||
===============================================
|
||||
|
||||
New features and changes
|
||||
------------------------
|
||||
|
||||
- OpenStack output now has pdf icon and feed icon in header bar.
|
||||
- Break the build when the processing instruction ``<?rax fail?>``
|
||||
encountered.
|
||||
- Support for `shared
|
||||
glossary <https://wiki.mosso.com/display/IXD/Glossary>`_.
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- A number of fixes to the generation of API references from wadl
|
||||
files.
|
||||
- Added product version number to titles of doc rss feeds.
|
||||
|
||||
clouddocs-maven-plugin 1.0.7 (02 November 2011)
|
||||
===============================================
|
||||
|
||||
New features
|
||||
------------
|
||||
|
||||
- Atom feed from individual documents
|
||||
|
||||
- If ``<canonicalUrlBase>`` is set, html pages in webhelp now
|
||||
include <link rel="canonical"> markup for improved SEO.
|
||||
- `revhistory markup
|
||||
documentation <https://wiki.mosso.com/display/IXD/Revision+history+sections+in+DocBook+documents>`_
|
||||
|
||||
- Support for a new comment system for use with internal comments.
|
||||
|
||||
- To use this system in your pom, set
|
||||
``<enableDisqus>intranet</enableDisqus>`` and ``<feedbackEmail>``
|
||||
to the email address to which you would like notifications sent
|
||||
when a page is commented on.
|
||||
- As an alternative to ``<feedbackEmail>`` in the pom, you can put
|
||||
``<?rax feedback.email="someemail@rackspace.com"?>`` as a child of
|
||||
book in the document.
|
||||
- You can also put a comma-delimited list of emails if you want more
|
||||
than one person to be notified.
|
||||
|
||||
- In the wadl normalizer, if you refer to a data type that is an
|
||||
enumeration, it converts it to an xs:string with an ``<option>``
|
||||
element for each enumerated value.
|
||||
- Updated oXygen installer and framework to use oXygen 13.1. See the
|
||||
`upgrade
|
||||
instructions <https://wiki.rackspace.corp/CloudDocTools/OxygenConfiguration>`_
|
||||
for your platform.
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Use upper-alpha numbering for appendixes and roman numbering for
|
||||
parts in webhelp.
|
||||
- Cover title now appears correctly in content build on Windows.
|
||||
- Fixed bug where the current section's title always appeared in a
|
||||
tooltip when you moused over any text.
|
||||
- Added Bold and Italic buttons/menus to Oxygen
|
||||
- Fixed bug where content which scroll up a bit each time you clicked
|
||||
the Search or Contents tabs.
|
||||
|
||||
clouddocs-maven-plugin 1.0.6 (12 October 2011)
|
||||
==============================================
|
||||
|
||||
New Features
|
||||
------------
|
||||
|
||||
- <glossterm> elements with corresponding <glossentry> elements in a
|
||||
glossary are presented as tooltips in webhelp.
|
||||
- In webhelp when the toc content is longer than the window and a
|
||||
scroll bar appears, the Contents and Search tab area stays fixed
|
||||
instead of scrolling away.
|
||||
- In webhelp improve formatting of calloutlists (removed table
|
||||
borders).
|
||||
- wadl2docbook improvements:
|
||||
|
||||
- Support for pulling in all the methods from a <wadl:resource> if
|
||||
the resource in the DocBook document is empty.
|
||||
- Support for pulling in an entire wadl with a single element added
|
||||
to the DocBook document.
|
||||
- Other miscellaneous fixes.
|
||||
- See `Generating an API reference from a WADL
|
||||
file </display/RED/Generating+an+API+reference+from+a+WADL+file>`_
|
||||
for details.
|
||||
|
||||
- New branding value, openstackextension.
|
||||
|
||||
Impacts to current projects
|
||||
---------------------------
|
||||
|
||||
- Projects can have a <glossary> section, which is like a <chapter> or
|
||||
<appendix>. This can have glossary entries that give definitions.
|
||||
When you use the terms in text, you can use the <glossterm> tag on
|
||||
the terms and a popup box will appear when the user rolls over the
|
||||
term in webhelp. See `Adding Glossary
|
||||
Popups </display/RED/Adding+Glossary+Popups>`_ for details.
|
||||
- You can set ``<branding>openstackextension<branding>`` in your POM
|
||||
file. When you do, there will be a different page header and cover
|
||||
page. Also, Disqus comments will be stored in the OpenStack forum.
|
||||
|
||||
clouddocs-maven-plugin 1.0.5 (20 September 2011)
|
||||
================================================
|
||||
|
||||
New Features
|
||||
------------
|
||||
|
||||
- Initial support for wadl2docbook processing which allows you to
|
||||
include wadl or pointers to a wadl in your DocBook file and have the
|
||||
wadl processed into human readable output.
|
||||
|
||||
- To support this, a wadl framework has been added to the Rackspace
|
||||
Oxygen customizations. This framework helps you author wadls,
|
||||
providing interactive error checking and other assistance.
|
||||
- Also in Oxygen, the Rackbook schema has been modified to allow
|
||||
wadl markup in DocBook documents.
|
||||
|
||||
- Support for disqus\_identifier. (This will be used when the document
|
||||
is deployed. The writers don't have to do anything.)
|
||||
- Ability to separate or include Disqus comments for different versions
|
||||
of a document.
|
||||
- xml:id required on book, chapter, part, sections
|
||||
- Support for formatting ``<parameter role="template">`` as a wadl
|
||||
template parameter (i.e. surrounded by curly braces) in Oxygen and
|
||||
the output formats.
|
||||
- The arrow and check mark images are now available in the common
|
||||
images directory.
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
|
||||
- Fixed bug where ``webhelp.default.topic`` was not being used when set
|
||||
in the pom.
|
||||
|
||||
Impacts to current projects
|
||||
---------------------------
|
||||
|
||||
- The xml:id attribute is now required on all book, chapter, section,
|
||||
appendix etc. elements. This ensures that in webhelp output we will
|
||||
have stable urls.
|
||||
|
||||
- If you want to build your document and ignore this requirement,
|
||||
you must turn off Disqus. Set the enabledisqus variable to 0 like
|
||||
this:
|
||||
|
||||
::
|
||||
|
||||
436503a2577e475a980a335f2943376355facd00
|
||||
<enableDisqus>0<enableDisqus>
|
||||
|
||||
- If you want Disqus to use a different thread for different versions
|
||||
of your document, use this setting in your POM:
|
||||
|
||||
::
|
||||
|
||||
<useVersionForDisqus>1<useVersionForDisqus>
|
||||
|
||||
- Support for parameter that controls whether the url or a unique
|
||||
disqus id is used to associate comments with content. If you set
|
||||
``<useDisqusId>0</useDisqusId>``, then it omits using the Disqus
|
||||
identifier. It turns out that this feature was unnecessary since
|
||||
comments that were associated via url are still associated with the
|
||||
document after adding the Disqus identifier.
|
||||
|
||||
clouddocs-maven-plugin 1.0.4 (09 June 2011)
|
||||
===========================================
|
||||
|
||||
New features and changes
|
||||
------------------------
|
||||
|
||||
- Experimental support for using Disqus for internal comments if
|
||||
``<enableDisqus>intranet</enableDisqus>`` is set.
|
||||
- Add Rackspace branding to Webhelp output
|
||||
- Support Disqus comments in Webhelp output
|
||||
- Google Analytics tracking in Webhelp output
|
||||
- Use admonition graphics in Webhelp output
|
||||
- Support callouts up to 30 in Webhelp output
|
||||
- Support Draft banner in Webhelp
|
||||
- Support use of security param to control conditioning of text.
|
||||
- Add section numbers to headings in Webhelp
|
||||
- Support for adding a link to the pdf when <pdfUrl> is set in the pom
|
||||
or <?rax pdf.url=""?> is set in the document.
|
||||
- Stop scaling images in html output
|
||||
- Fix for problem where headings appeared below banner when they were
|
||||
not at the top of the page (i.e. anchors for non-chunked sections).
|
||||
- Add a "Legal notice" link to bottom of the page.
|
||||
- All links now point to docs.rackspace.com instead of
|
||||
docs.rackspacecloud.com and using target="\_blank" in links.
|
||||
- Now depending on Docbkx 2.0.13.
|
||||
- Fixed problem with autowrapping in programlistings.
|
||||
- No longer output the book toc in webhelp since we already have that
|
||||
information in the toc pane.
|
||||
- Other miscellaneous fixes.
|
||||
|
19
bugs.org
19
bugs.org
@ -1,19 +0,0 @@
|
||||
* Bugs!!
|
||||
1. When embeding a WADL in a docbook, the order of the methods should
|
||||
appear as they are listed in the DocBook document. For example:
|
||||
|
||||
<resource href="os-bs.wadl#VolumeInstance">
|
||||
<method href="updateVolume"/>
|
||||
<method href="getVolume"/>
|
||||
<method href="deleteVolume"/>
|
||||
</resource>
|
||||
|
||||
Here, updateVolume method should be documented before the getVolume
|
||||
method and that should come before the deleteVolume method.
|
||||
Currently the source WADL (os-bs.wadl) order is used which is
|
||||
wrong.
|
||||
2. Samples should be relative to the document where they are placed.
|
||||
For example if wadl1 loads wadl2 and wadl2 is in a seperate
|
||||
directory relative sample paths should be rosolved from wadl2 if
|
||||
they are listed in that wadl.
|
||||
|
@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="13.2">
|
||||
<meta>
|
||||
<filters directoryPatterns="" filePatterns="" positiveFilePatterns="" showHiddenFiles="false"/>
|
||||
<options/>
|
||||
</meta>
|
||||
<projectTree name="clouddocs-plugin.xpr">
|
||||
<folder path="src/"/>
|
||||
</projectTree>
|
||||
</project>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
633
pom.xml
633
pom.xml
@ -1,633 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.rackspace.cloud.api</groupId>
|
||||
<artifactId>clouddocs-maven-plugin</artifactId>
|
||||
|
||||
<name>Cloud API Docs Plugin</name>
|
||||
<version>2.1.5-SNAPSHOT</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<url>https://github.com/rackerlabs/clouddocs-maven-plugin</url>
|
||||
<licenses>
|
||||
<license>
|
||||
<name>Apache License, Version 2.0</name>
|
||||
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
|
||||
<distribution>repo</distribution>
|
||||
</license>
|
||||
</licenses>
|
||||
<developers>
|
||||
<developer>
|
||||
<name>David Cramer</name>
|
||||
<email>david.cramer@rackspace.com</email>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Sam Harwell</name>
|
||||
<email>sam.harwell@rackspace.com</email>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
<parent>
|
||||
<groupId>org.sonatype.oss</groupId>
|
||||
<artifactId>oss-parent</artifactId>
|
||||
<version>9</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java6.home>${env.JAVA6_HOME}</java6.home>
|
||||
<bootclasspath.java6>${java6.home}/lib/rt.jar</bootclasspath.java6>
|
||||
<bootclasspath.compile>${bootclasspath.java6}</bootclasspath.compile>
|
||||
<bootclasspath.testCompile>${bootclasspath.java6}</bootclasspath.testCompile>
|
||||
<!-- Need to exclude this because the description includes Unicode characters,
|
||||
and docbkx-tools doesn't support specifying the encoding. -->
|
||||
<excluded.properties>annotation.graphic.close</excluded.properties>
|
||||
</properties>
|
||||
|
||||
<description>
|
||||
Generates a XHTML and API documents.
|
||||
</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.agilejava.docbkx</groupId>
|
||||
<artifactId>docbkx-maven-plugin</artifactId>
|
||||
<version>2.0.14</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.saxon</groupId>
|
||||
<artifactId>Saxon-HE</artifactId>
|
||||
<version>9.5.1-2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-web</artifactId>
|
||||
<version>3.1.1.RELEASE</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xmlcalabash</groupId>
|
||||
<artifactId>xmlcalabash</artifactId>
|
||||
<version>1.0.13-94</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
<version>4.0-alpha4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-logging</groupId>
|
||||
<artifactId>commons-logging-api</artifactId>
|
||||
<version>1.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
<version>1.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.thaiopensource</groupId>
|
||||
<artifactId>jing</artifactId>
|
||||
<version>20091111</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.ccil.cowan.tagsoup</groupId>
|
||||
<artifactId>tagsoup</artifactId>
|
||||
<version>1.2.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>2.3</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.8.1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<version>1.8.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.docbook</groupId>
|
||||
<artifactId>docbook-xsl</artifactId>
|
||||
<version>1.76.1</version>
|
||||
<type>zip</type>
|
||||
<classifier>ns-resources</classifier>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.rackspace.apache</groupId>
|
||||
<artifactId>xerces2-xsd11</artifactId>
|
||||
<version>2.11.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>xerces</groupId>
|
||||
<artifactId>xmlParserAPIs</artifactId>
|
||||
<version>2.6.2</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.avalon.framework</groupId>
|
||||
<artifactId>avalon-framework-impl</artifactId>
|
||||
<version>4.3.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>xalan</groupId>
|
||||
<artifactId>xalan</artifactId>
|
||||
<version>2.7.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.agilejava.docbkx</groupId>
|
||||
<artifactId>docbkx-maven-base</artifactId>
|
||||
<version>2.0.14</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.xslthl</groupId>
|
||||
<artifactId>xslthl</artifactId>
|
||||
<version>2.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.docbook</groupId>
|
||||
<artifactId>docbook-xsl-saxon</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.xmlgraphics</groupId>
|
||||
<artifactId>fop</artifactId>
|
||||
<version>1.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.offo</groupId>
|
||||
<artifactId>fop-hyph</artifactId>
|
||||
<version>1.2</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>xml-apis</groupId>
|
||||
<artifactId>xml-apis-ext</artifactId>
|
||||
<version>1.3.04</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>xml-apis</groupId>
|
||||
<artifactId>xml-apis</artifactId>
|
||||
<version>1.3.04</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>batik</groupId>
|
||||
<artifactId>batik-rasterizer</artifactId>
|
||||
<version>1.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>batik</groupId>
|
||||
<artifactId>batik-swing</artifactId>
|
||||
<version>1.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.xmlgraphics</groupId>
|
||||
<artifactId>batik-codec</artifactId>
|
||||
<version>1.7</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.shared</groupId>
|
||||
<artifactId>maven-plugin-testing-harness</artifactId>
|
||||
<version>1.0-beta-1</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.rackspace.cloud.api</groupId>
|
||||
<artifactId>wadl-tools</artifactId>
|
||||
<version>1.0.27</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.eclipse.jgit</groupId>
|
||||
<artifactId>org.eclipse.jgit</artifactId>
|
||||
<version>3.0.0.201306101825-r</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<issueManagement>
|
||||
<system>GitHub Issues</system>
|
||||
<url>https://github.com/rackerlabs/clouddocs-maven-plugin/issues</url>
|
||||
</issueManagement>
|
||||
|
||||
<scm>
|
||||
<url>https://github.com/rackerlabs/clouddocs-maven-plugin/tree/master</url>
|
||||
<connection>scm:git:git://github.com/rackerlabs/clouddocs-maven-plugin.git</connection>
|
||||
<developerConnection>scm:git:git@github.com:rackerlabs/clouddocs-maven-plugin.git</developerConnection>
|
||||
<tag>HEAD</tag>
|
||||
</scm>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>sonatype-oss-release</id>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>1.6</source>
|
||||
<target>1.6</target>
|
||||
<showWarnings>true</showWarnings>
|
||||
<showDeprecation>true</showDeprecation>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default-compile</id>
|
||||
<configuration>
|
||||
<compilerArgs>
|
||||
<arg>-Xlint</arg>
|
||||
<arg>-Xlint:-serial</arg>
|
||||
<arg>-bootclasspath</arg>
|
||||
<arg>${bootclasspath.compile}</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>default-testCompile</id>
|
||||
<configuration>
|
||||
<compilerArgs>
|
||||
<arg>-Xlint</arg>
|
||||
<arg>-Xlint:-serial</arg>
|
||||
<arg>-bootclasspath</arg>
|
||||
<arg>${bootclasspath.testCompile}</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<build>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
</resource>
|
||||
|
||||
<resource>
|
||||
<directory>target/generated-resources</directory>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>2.2</version>
|
||||
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy</id>
|
||||
|
||||
<phase>generate-sources</phase>
|
||||
|
||||
<goals>
|
||||
<goal>unpack</goal>
|
||||
</goals>
|
||||
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>net.sf.docbook</groupId>
|
||||
<artifactId>docbook-xsl</artifactId>
|
||||
<version>1.76.1</version>
|
||||
<type>zip</type>
|
||||
<classifier>ns-resources</classifier>
|
||||
<outputDirectory>target</outputDirectory>
|
||||
<includes>docbook/template/*</includes>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
<execution>
|
||||
<id>unpack</id>
|
||||
<phase>initialize</phase>
|
||||
<goals>
|
||||
<goal>unpack</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<artifactItems>
|
||||
<artifactItem>
|
||||
<groupId>com.rackspace.cloud.api</groupId>
|
||||
<artifactId>wadl-tools</artifactId>
|
||||
<version>${wadl.tools.version}</version>
|
||||
<type>jar</type>
|
||||
<overWrite>true</overWrite>
|
||||
<outputDirectory>target/classes/cloud/normalizeWadl</outputDirectory>
|
||||
<destFileName />
|
||||
<includes>
|
||||
**/normalizeWadl1.xsl,
|
||||
**/normalizeWadl2.xsl,
|
||||
**/normalizeWadl3.xsl,
|
||||
**/normalizeWadl4.xsl,
|
||||
**/normalizeWadl5.xsl,
|
||||
**/wadl2apiary-jsonx.xsl,
|
||||
**/jsonx2json.xsl
|
||||
</includes>
|
||||
<excludes>**/*.xml,**/*.xsd,**/*.dtd,**/*.sch,**/*.class,**/*.properties,**/*.MF</excludes>
|
||||
</artifactItem>
|
||||
</artifactItems>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>1.7</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>initialize</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<replace file="target/classes/cloud/normalizeWadl/normalizeWadl1.xsl" token="href="normalizeWadl" value="href="classpath:///cloud/normalizeWadl/normalizeWadl" />
|
||||
</target>
|
||||
</configuration>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>xml-maven-plugin</artifactId>
|
||||
<version>1.0</version>
|
||||
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>transform</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
|
||||
<configuration>
|
||||
<transformationSets>
|
||||
<transformationSet>
|
||||
<dir>src/main/resources/cloud/fo/titlepage</dir>
|
||||
<stylesheet>target/docbook/template/titlepage.xsl</stylesheet>
|
||||
<outputDir>target/generated-resources/cloud/fo</outputDir>
|
||||
<fileMappers>
|
||||
<fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
|
||||
<targetExtension>.xsl</targetExtension>
|
||||
</fileMapper>
|
||||
</fileMappers>
|
||||
</transformationSet>
|
||||
<transformationSet>
|
||||
<dir>src/main/resources/cloud/webhelp/titlepage</dir>
|
||||
<stylesheet>target/docbook/template/titlepage.xsl</stylesheet>
|
||||
<outputDir>target/generated-resources/cloud/webhelp</outputDir>
|
||||
<fileMappers>
|
||||
<fileMapper implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
|
||||
<targetExtension>.xsl</targetExtension>
|
||||
</fileMapper>
|
||||
</fileMappers>
|
||||
</transformationSet>
|
||||
</transformationSets>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>com.agilejava.docbkx</groupId>
|
||||
<artifactId>docbkx-builder-maven-plugin</artifactId>
|
||||
<version>2.0.14</version>
|
||||
|
||||
<executions>
|
||||
|
||||
<execution>
|
||||
<id>generate-xhtml</id>
|
||||
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
|
||||
<configuration>
|
||||
<type>xhtml</type>
|
||||
<superClassName>com.rackspace.cloud.api.docs.XhtmlMojo</superClassName>
|
||||
<excludedProperties>${excluded.properties},root.filename,base.dir</excludedProperties>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
<execution>
|
||||
<id>generate-html</id>
|
||||
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
|
||||
<configuration>
|
||||
<type>html</type>
|
||||
<superClassName>com.rackspace.cloud.api.docs.ApiRefMojo</superClassName>
|
||||
<excludedProperties>${excluded.properties},root.filename,base.dir</excludedProperties>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
<execution>
|
||||
<id>generate-pdf</id>
|
||||
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
|
||||
<configuration>
|
||||
<type>fo</type>
|
||||
<superClassName>com.rackspace.cloud.api.docs.PDFMojo</superClassName>
|
||||
<className>DocbkxPdfMojo</className>
|
||||
<pluginSuffix>pdf</pluginSuffix>
|
||||
<excludedProperties>${excluded.properties}</excludedProperties>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
<execution>
|
||||
<id>generate-webhelp</id>
|
||||
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
|
||||
<configuration>
|
||||
<type>webhelp</type>
|
||||
<stylesheetPath>webhelp/xsl/webhelp.xsl</stylesheetPath>
|
||||
<superClassName>com.rackspace.cloud.api.docs.WebHelpMojo</superClassName>
|
||||
<excludedProperties>
|
||||
${excluded.properties},root.filename,base.dir,webhelp.base.dir,manifest.in.base.dir
|
||||
</excludedProperties>
|
||||
<useStandardOutput>false</useStandardOutput>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
<execution>
|
||||
<id>generate-eclipse</id>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<type>eclipse</type>
|
||||
<stylesheetPath>eclipse/eclipse.xsl</stylesheetPath>
|
||||
<superClassName>com.rackspace.cloud.api.docs.EclipseMojo</superClassName>
|
||||
<excludedProperties>${excluded.properties},root.filename,base.dir,manifest.in.base.dir
|
||||
</excludedProperties>
|
||||
<useStandardOutput>false</useStandardOutput>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
<execution>
|
||||
<id>generate-epub</id>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<type>epub</type>
|
||||
<superClassName>com.rackspace.cloud.api.docs.EpubMojo</superClassName>
|
||||
<excludedProperties>
|
||||
${excluded.properties},root.filename,base.dir,epub.oebps.dir,epub.metainf.dir,manifest.in.base.dir,epub.opf.filename
|
||||
</excludedProperties>
|
||||
<useStandardOutput>false</useStandardOutput>
|
||||
</configuration>
|
||||
</execution>
|
||||
|
||||
</executions>
|
||||
|
||||
<configuration>
|
||||
<packageName>com.agilejava.docbkx.maven</packageName>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.1</version>
|
||||
|
||||
<configuration>
|
||||
<source>1.6</source>
|
||||
<target>1.6</target>
|
||||
<showWarnings>true</showWarnings>
|
||||
<showDeprecation>true</showDeprecation>
|
||||
<compilerArgs>
|
||||
<arg>-Xlint</arg>
|
||||
<arg>-Xlint:-serial</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>2.4</version>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-release-plugin</artifactId>
|
||||
<!-- override the version inherited from the parent -->
|
||||
<version>2.5</version>
|
||||
<configuration>
|
||||
<arguments>-Psonatype-oss-release ${release.arguments}</arguments>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<!-- override the version inherited from the parent -->
|
||||
<version>2.16</version>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<!-- override the version inherited from the parent -->
|
||||
<version>2.2.1</version>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<!-- override the version inherited from the parent -->
|
||||
<version>2.9.1</version>
|
||||
<configuration>
|
||||
<quiet>true</quiet>
|
||||
<tags>
|
||||
<tag>
|
||||
<name>parameter</name>
|
||||
<placement>Xf</placement>
|
||||
</tag>
|
||||
<tag>
|
||||
<name>goal</name>
|
||||
<placement>Xt</placement>
|
||||
</tag>
|
||||
<tag>
|
||||
<name>configurator</name>
|
||||
<placement>Xt</placement>
|
||||
</tag>
|
||||
</tags>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<!-- override the version inherited from the parent -->
|
||||
<version>1.4</version>
|
||||
</plugin>
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -1,75 +0,0 @@
|
||||
#
|
||||
# Sample replacements file for Rackspace clouddocs maven plugin
|
||||
#
|
||||
# ********************** POM CONFIGURATION ***********************
|
||||
# There are two ways to refer this file in your project.
|
||||
# IMPLICIT: Just place this file next to your project's (e.g., /compute-api/) pom.xml and name it 'replacements.config'
|
||||
# EXPLICIT: Add the following configuration parameter in your pom
|
||||
# <replacementsFile>myreplacements.config</replacementsFile>
|
||||
# Next to other configurations like
|
||||
# <canonicalUrlBase>http://docs.openstack.org/api/openstack-compute/2/contentSALMANTEST/</canonicalUrlBase>
|
||||
# <profileSecurity>reviewer</profileSecurity>
|
||||
# or any other configuration you have defined for your generate-pdf, generate-webhelp goals.
|
||||
#
|
||||
#
|
||||
# ********************** USAGE AND SYNTAX **********************
|
||||
# Simple case: GLOBAL SEARCH AND REPLACE
|
||||
# For global search and replace simply give the search and replace tokens in the following format:
|
||||
# oldValue1->newValue1
|
||||
# oldValue2->newValue2
|
||||
# By default all oldValues are considered to be regular expressions unless they are given as a quoted string. e.g.
|
||||
# "oldValue4"->newValue4
|
||||
# This is helpful in cases where you want oldValue to be considered as a literal string and not a regular expression.
|
||||
# So,
|
||||
# Regular expression: old([Vv])alue4->newValue4 ----- will replace all instances of oldvalue4 and oldValue4 with newValue4.
|
||||
# Literal String: "old([Vv])alue4"->newValueLiteral4 ----- will only replace instances of old([Vv])alue4 with newValueLiteral4
|
||||
#
|
||||
# The other case: TARGETED/RESTRICTED SEARCH AND REPLACE
|
||||
# This tool allows you to target/restrict the search and replace feature to only
|
||||
# specific elements of the input XML document using XPath expressions.
|
||||
# To specify an XPath, start your line with a hardcoded identifier XPATH= and then give the XPath like:
|
||||
# XPATH=<XPath Expression>
|
||||
# More specifically:
|
||||
# XPATH=//*:title/text() ----- Will only replace text value for title element.
|
||||
# XPATH=//*:titleabbrev/text() ----- restricted titleabbrev text in this case.
|
||||
# XPATH=//text() ----- same as global search and replace. Considers all text nodes for the search and replace functionality.
|
||||
#
|
||||
# An important point to remember here is that once you give an XPATH all oldValue->newValue pairs given below it would be grouped under that XPath.
|
||||
# Search/Replace terms grouped under an XPath expression will only take effect on
|
||||
# text of elements/nodes that are returned by matching their parent XPath expression
|
||||
# e.g.,
|
||||
# -----
|
||||
# XPATH=//*:titleabbrev/text() |
|
||||
# Developer->Dev | is the first group
|
||||
# API->Application Programming Interface |
|
||||
# -----
|
||||
# -----
|
||||
# XPATH=//*:para/text() |
|
||||
# OpenStack->RackSpace | Will be considered as a second group
|
||||
# servers.api.openstack.org->servers.api.rackspace.come |
|
||||
# -----
|
||||
#
|
||||
# To write a comment. Start the line with a hash/pound (#) sign.
|
||||
#
|
||||
|
||||
# first group of search & replace terms
|
||||
# XPATH=//*:titleabbrev/text()
|
||||
Dev->Dvlpr
|
||||
|
||||
# second group
|
||||
XPATH=//*:para/text()
|
||||
color-coded->COLOR-CODED
|
||||
mimetype->MIMETYPE
|
||||
|
||||
# another group
|
||||
XPATH=//*:title/text()
|
||||
OpenStack -> Rackspace
|
||||
|
||||
# last group. XPath is same as global search and replace.
|
||||
XPATH=//text()
|
||||
#Open([Ss])tack->Rack$1pace
|
||||
OpenStack->Rackspace
|
||||
OPENSTACK->RACKSPACE
|
||||
servers.api.openstack.org -> rackspace.api.com
|
||||
api.servers.openstack.org -> rackspace.api.com
|
||||
docs.openstack.org -> rackspace.documents.com
|
@ -1,130 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import com.agilejava.docbkx.maven.AbstractHtmlMojo;
|
||||
import com.agilejava.docbkx.maven.PreprocessingFilter;
|
||||
import com.agilejava.docbkx.maven.TransformerBuilder;
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
import org.xml.sax.InputSource;
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.URIResolver;
|
||||
|
||||
public abstract class ApiRefMojo extends AbstractHtmlMojo {
|
||||
|
||||
/**
|
||||
* @parameter expression="${project.build.directory}"
|
||||
*/
|
||||
private File projectBuildDirectory;
|
||||
|
||||
/**
|
||||
* @parameter
|
||||
* expression="${generate-html.canonicalUrlBase}"
|
||||
* default-value=""
|
||||
*/
|
||||
private String canonicalUrlBase;
|
||||
|
||||
/**
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-html.failOnValidationError}"
|
||||
* default-value="0"
|
||||
*/
|
||||
private String failOnValidationError;
|
||||
|
||||
/**
|
||||
* Specifies the Goggle Analytics Id to use on the page
|
||||
*
|
||||
* @parameter expression="${generate-html.enableGoogleAnalytics}" default-value="1"
|
||||
*/
|
||||
private String enableGoogleAnalytics;
|
||||
|
||||
/**
|
||||
* Specifies the Goggle Analytics Id to use on the page
|
||||
*
|
||||
* @parameter expression="${generate-html.googleAnalyticsId}" default-value="UA-17511903-1"
|
||||
*/
|
||||
private String googleAnalyticsId;
|
||||
|
||||
/**
|
||||
* Specifies the Goggle Analytics domain to use on the page
|
||||
*
|
||||
* @parameter expression="${generate-html.googleAnalyticsDomain}" default-value=".openstack.org"
|
||||
*/
|
||||
private String googleAnalyticsDomain;
|
||||
|
||||
/**
|
||||
* A parameter used to specify the security level (external, internal, reviewer, writeronly) of the document.
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-html.security}"
|
||||
* default-value=""
|
||||
*/
|
||||
private String security;
|
||||
/**
|
||||
* Base for the html dir name. By default this is the
|
||||
* base of the input xml file.
|
||||
*
|
||||
* @parameter expression="${generate-webhelp.webhelpDirname}"
|
||||
*/
|
||||
private String pdfFilename;
|
||||
/**
|
||||
* Specifies the branding to use on the page
|
||||
*
|
||||
* @parameter expression="${generate-html.branding}" default-value="openstack"
|
||||
*/
|
||||
private String branding;
|
||||
|
||||
protected TransformerBuilder createTransformerBuilder(URIResolver resolver) {
|
||||
return super.createTransformerBuilder (new DocBookResolver (resolver, getType()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
|
||||
GitHelper.addCommitProperties(transformer, projectBuildDirectory, 7, getLog());
|
||||
super.adjustTransformer(transformer, sourceFilename, targetFile);
|
||||
}
|
||||
|
||||
protected String getNonDefaultStylesheetLocation() {
|
||||
return "cloud/apipage/apipage.xsl";
|
||||
}
|
||||
|
||||
public void postProcessResult(File result) throws MojoExecutionException {
|
||||
|
||||
super.postProcessResult(result);
|
||||
|
||||
final File targetDirectory = result.getParentFile();
|
||||
com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("apiref",ApiRefMojo.class,targetDirectory);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Source createSource(String inputFilename, File sourceFile, PreprocessingFilter filter)
|
||||
throws MojoExecutionException {
|
||||
|
||||
String pathToPipelineFile = "classpath:///wadl2html.xpl"; //use "classpath:///path" for this to work
|
||||
|
||||
final InputSource inputSource = new InputSource(sourceFile.toURI().toString());
|
||||
Source source = new SAXSource(filter, inputSource);
|
||||
|
||||
Map<String, Object> map = new HashMap<String, Object>();
|
||||
|
||||
map.put("security", security);
|
||||
map.put("pdfFilename", pdfFilename);
|
||||
map.put("branding", branding);
|
||||
map.put("canonicalUrlBase", canonicalUrlBase);
|
||||
map.put("failOnValidationError", failOnValidationError);
|
||||
map.put("project.build.directory", this.projectBuildDirectory);
|
||||
map.put("enableGoogleAnalytics", enableGoogleAnalytics);
|
||||
map.put("googleAnalyticsId", googleAnalyticsId);
|
||||
map.put("googleAnalyticsDomain", googleAnalyticsDomain);
|
||||
map.put("targetHtmlContentDir", new File(getTargetDirectory(), "/wadls/"));
|
||||
return CalabashHelper.createSource(getLog(), source, pathToPipelineFile, map);
|
||||
}
|
||||
}
|
@ -1,129 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import com.rackspace.cloud.api.docs.pipeline.CalabashPipelineBuilder;
|
||||
import com.rackspace.cloud.api.docs.pipeline.MavenXProcMessageListener;
|
||||
import com.rackspace.cloud.api.docs.pipeline.Pipeline;
|
||||
import com.rackspace.cloud.api.docs.pipeline.PipelineInput;
|
||||
import com.xmlcalabash.core.XProcMessageListener;
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class CalabashHelper {
|
||||
private static Source run(final Log log, final String pipelineURI, final InputSource inputSource, final Map<String, Object> map) throws FileNotFoundException {
|
||||
XProcMessageListener messageListener = log != null ? new MavenXProcMessageListener(log) : null;
|
||||
Pipeline pipeline = new CalabashPipelineBuilder(false, true, messageListener).build(pipelineURI);
|
||||
|
||||
// <c:param-set xmlns:c="http://www.w3.org/ns/xproc-step">
|
||||
// <c:param name="username" namespace="" value="user"/>
|
||||
// <c:param name="host" namespace="" value="http://example.com/"/>
|
||||
// <c:param name="password" namespace="" value="pass"/>
|
||||
// </c:param-set>
|
||||
|
||||
StringBuffer strBuff = new StringBuffer("<c:param-set xmlns:c=\"http://www.w3.org/ns/xproc-step\">");
|
||||
strBuff.append("");
|
||||
|
||||
|
||||
if(null!=map){
|
||||
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
||||
String rawValue;
|
||||
if (entry.getValue() instanceof File) {
|
||||
rawValue = ((File)entry.getValue()).toURI().toString();
|
||||
} else if (entry.getValue() instanceof URI || entry.getValue() instanceof String) {
|
||||
rawValue = entry.getValue().toString();
|
||||
} else if (entry.getValue() instanceof URL) {
|
||||
rawValue = ((URL)entry.getValue()).toExternalForm();
|
||||
} else if (entry.getValue() != null) {
|
||||
throw new UnsupportedOperationException(String.format("The map cannot contain values of type %s.", entry.getValue().getClass()));
|
||||
} else {
|
||||
// ignore nulls
|
||||
continue;
|
||||
}
|
||||
|
||||
strBuff
|
||||
.append("<c:param name=\"")
|
||||
.append(escapeXmlAttribute(entry.getKey()))
|
||||
.append("\" namespace=\"\" value=\"")
|
||||
.append(escapeXmlAttribute(rawValue))
|
||||
.append("\"/>");
|
||||
}
|
||||
}
|
||||
|
||||
strBuff.append("</c:param-set>");
|
||||
String params=strBuff.toString();
|
||||
final InputStream paramsStream = new ByteArrayInputStream(params.getBytes());
|
||||
|
||||
//System.out.println("~!~!~!~!~!~!~!~!~!Sending: \n"+params+"\n");
|
||||
List<PipelineInput<?>> pipelineInputs = new ArrayList<PipelineInput<?>>() {{
|
||||
add(PipelineInput.port("source", inputSource));
|
||||
add(PipelineInput.port("parameters", new InputSource(paramsStream)));
|
||||
}};
|
||||
|
||||
pipeline.run(pipelineInputs);
|
||||
List<Source> sources = pipeline.getResultPort("result"); // result of xinclude;
|
||||
|
||||
return sources.get(0);
|
||||
}
|
||||
|
||||
private static String escapeXmlAttribute(String value) {
|
||||
if (value == null) {
|
||||
return "";
|
||||
}
|
||||
|
||||
return value
|
||||
.replace("&", "&")
|
||||
.replace("\"", """)
|
||||
.replace("'", "'")
|
||||
.replace("%", "%");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@link Source} for use in a Calabash pipeline.
|
||||
*
|
||||
* <p>The {@code map} values may instances of {@link String}, {@link File},
|
||||
* {@link URI}, or {@link URL}.</p>
|
||||
*
|
||||
* <ul>
|
||||
* <li>{@link String}: These are passed to the pipeline unchanged.</li>
|
||||
* <li>{@link URI}: The results of {@link URI#toString()} is passed to the pipeline.</li>
|
||||
* <li>{@link File}: These are treated as URIs by calling {@link File#toURI()}.</li>
|
||||
* <li>{@link URL}: The result of {@link URL#toExternalForm()} is passed to the pipeline.</li>
|
||||
* <li>{@code null}: This is passed to the pipeline as an empty string.</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param source
|
||||
* @param pipelineURI
|
||||
* @param map
|
||||
* @return
|
||||
* @throws MojoExecutionException
|
||||
*/
|
||||
public static Source createSource(Log log, Source source, String pipelineURI, Map<String, Object> map)
|
||||
throws MojoExecutionException {
|
||||
|
||||
try {
|
||||
if (!(source instanceof SAXSource)) {
|
||||
throw new MojoExecutionException("Expecting a SAXSource");
|
||||
}
|
||||
SAXSource saxSource = (SAXSource) source;
|
||||
|
||||
return run(log, pipelineURI, saxSource.getInputSource(),map);
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new MojoExecutionException("Failed to find source.", e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
import javax.xml.transform.URIResolver;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
/**
|
||||
We are adding a customization layer on top of the docbook one, so we
|
||||
need to distinguish when we wish to visit the original docbook
|
||||
entries or our entries.
|
||||
|
||||
The resolver helps us do this:
|
||||
|
||||
urn:docbkx:stylesheet-orig : will always point to the original
|
||||
stylesheets.
|
||||
**/
|
||||
public class DocBookResolver implements URIResolver {
|
||||
private URIResolver originalResolver;
|
||||
private String type;
|
||||
private static final Pattern urnPatternA = Pattern.compile ("urn:docbkx:stylesheet\\-orig(/.*)?");
|
||||
private static final Pattern urnPatternB = Pattern.compile ("urn:docbkx:stylesheet\\-base(/.*)?");
|
||||
public DocBookResolver (URIResolver original, String type) {
|
||||
this.originalResolver = original;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Source resolve (String href, String base) throws TransformerException {
|
||||
Matcher mA = urnPatternA.matcher (href);
|
||||
Matcher mB = urnPatternB.matcher (href);
|
||||
if (mA.matches()) {
|
||||
String grpMatch = mA.group(1);
|
||||
String file = (mA.group(1) == null) ? "/docbook.xsl" : grpMatch;
|
||||
String filePath = "docbook/"+type+file;
|
||||
|
||||
URL url = this.getClass().getClassLoader().getResource(filePath);
|
||||
|
||||
if (url != null) {
|
||||
try {
|
||||
return new StreamSource (url.openStream(), url.toExternalForm());
|
||||
}catch (IOException ioe) {
|
||||
throw new TransformerException ("Can't get docbook refrence "+href+"->"+filePath, ioe);
|
||||
}
|
||||
} else {
|
||||
throw new TransformerException ("Can't resolve docbook link: "+href+"->"+filePath+" Docbook missing in classpath?");
|
||||
}
|
||||
}else if (mB.matches()) {
|
||||
String grpMatch = mB.group(1);
|
||||
String file = (mB.group(1) == null) ? "/docbook.xsl" : grpMatch;
|
||||
String filePath = "docbook"+file;
|
||||
|
||||
URL url = this.getClass().getClassLoader().getResource(filePath);
|
||||
|
||||
if (url != null) {
|
||||
try {
|
||||
return new StreamSource (url.openStream(), url.toExternalForm());
|
||||
}catch (IOException ioe) {
|
||||
throw new TransformerException ("Can't get docbook refrence "+href+"->"+filePath, ioe);
|
||||
}
|
||||
} else {
|
||||
throw new TransformerException ("Can't resolve docbook link: "+href+"->"+filePath+" Docbook missing in classpath?");
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// We can't resolve, maybe the next resolver in the chain
|
||||
// can.
|
||||
//
|
||||
if (originalResolver != null) {
|
||||
return originalResolver.resolve (href, base);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import java.net.URL;
|
||||
|
||||
import java.security.CodeSource;
|
||||
import java.util.*;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
import javax.xml.transform.Transformer;
|
||||
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
|
||||
import com.agilejava.docbkx.maven.TransformerBuilder;
|
||||
import javax.xml.transform.URIResolver;
|
||||
import com.rackspace.cloud.api.docs.DocBookResolver;
|
||||
|
||||
import com.agilejava.docbkx.maven.Parameter;
|
||||
import com.agilejava.docbkx.maven.FileUtils;
|
||||
import com.agilejava.docbkx.maven.AbstractEclipseMojo;
|
||||
|
||||
public abstract class EclipseMojo extends AbstractEclipseMojo {
|
||||
|
||||
@Override
|
||||
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
|
||||
GitHelper.addCommitProperties(transformer, new File(sourceFilename), 7, getLog());
|
||||
super.adjustTransformer(transformer, sourceFilename, targetFile);
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,159 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.File;
|
||||
|
||||
import java.util.Enumeration;
|
||||
import java.util.zip.ZipFile;
|
||||
import java.util.zip.ZipEntry;
|
||||
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.zip.ZipException;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
|
||||
|
||||
public class FileUtils {
|
||||
|
||||
|
||||
public static void addDirectory(ZipOutputStream zout, File fileSource) {
|
||||
int fileSourceNameLength = fileSource.toString().length() + 1;
|
||||
addDirectory(zout, fileSource, fileSourceNameLength );
|
||||
}
|
||||
|
||||
private static void addDirectory(ZipOutputStream zout, File fileSource, int fileSourceNameLength) {
|
||||
// Adapted from:
|
||||
// http://www.java-examples.com/create-zip-file-directory-recursively-using-zipoutputstream-example
|
||||
//get sub-folder/files list
|
||||
File[] files = fileSource.listFiles();
|
||||
|
||||
//System.out.println("Adding directory " + fileSource.getName());
|
||||
|
||||
for(int i=0; i < files.length; i++)
|
||||
{
|
||||
//if the file is directory, call the function recursively
|
||||
if(files[i].isDirectory())
|
||||
{
|
||||
addDirectory(zout, files[i], fileSourceNameLength);
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* we are here means, its file and not directory, so
|
||||
* add it to the zip file
|
||||
*/
|
||||
|
||||
try
|
||||
{
|
||||
//System.out.println("Adding file " + files[i].getName());
|
||||
|
||||
//create byte buffer
|
||||
byte[] buffer = new byte[1024];
|
||||
|
||||
//create object of FileInputStream
|
||||
FileInputStream fin = new FileInputStream(files[i]);
|
||||
|
||||
String parentPath = "";
|
||||
if(fileSource.toString().length() > fileSourceNameLength){
|
||||
parentPath = fileSource.toString().substring(fileSourceNameLength) + "/";
|
||||
}
|
||||
|
||||
zout.putNextEntry(new ZipEntry(parentPath + files[i].getName()));
|
||||
|
||||
/*
|
||||
* After creating entry in the zip file, actually
|
||||
* write the file.
|
||||
*/
|
||||
int length;
|
||||
|
||||
while((length = fin.read(buffer)) > 0)
|
||||
{
|
||||
zout.write(buffer, 0, length);
|
||||
}
|
||||
|
||||
/*
|
||||
* After writing the file to ZipOutputStream, use
|
||||
*
|
||||
* void closeEntry() method of ZipOutputStream class to
|
||||
* close the current entry and position the stream to
|
||||
* write the next entry.
|
||||
*/
|
||||
|
||||
zout.closeEntry();
|
||||
|
||||
//close the InputStream
|
||||
fin.close();
|
||||
|
||||
}
|
||||
catch(IOException ioe)
|
||||
{
|
||||
System.out.println("IOException :" + ioe);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static void mkdir (File directory)
|
||||
throws MojoExecutionException {
|
||||
try {
|
||||
directory.mkdirs();
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new MojoExecutionException ("Error Creating Directory "+e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void extractJaredDirectory (String directory, Class<?> jarSrc,
|
||||
File dest)
|
||||
throws MojoExecutionException {
|
||||
try {
|
||||
File jar;
|
||||
try {
|
||||
// see https://weblogs.java.net/blog/kohsuke/archive/2007/04/how_to_convert.html
|
||||
jar = new File (jarSrc.getProtectionDomain().getCodeSource().getLocation().toURI());
|
||||
}
|
||||
catch (URISyntaxException e) {
|
||||
jar = new File (jarSrc.getProtectionDomain().getCodeSource().getLocation().getFile());
|
||||
}
|
||||
|
||||
ZipFile zf = new ZipFile (jar);
|
||||
Enumeration<? extends ZipEntry> entries = zf.entries();
|
||||
while (entries.hasMoreElements()) {
|
||||
ZipEntry ze = entries.nextElement();
|
||||
if (ze.getName().startsWith(directory)) {
|
||||
if (ze.isDirectory()) {
|
||||
File newDir = new File (dest, ze.getName());
|
||||
newDir.mkdirs();
|
||||
} else {
|
||||
File outFile = new File (dest, ze.getName());
|
||||
BufferedInputStream in = new BufferedInputStream (zf.getInputStream (ze));
|
||||
BufferedOutputStream out = new BufferedOutputStream (new FileOutputStream (outFile));
|
||||
|
||||
int read;
|
||||
while ((read = in.read()) != -1) {
|
||||
out.write (read);
|
||||
}
|
||||
|
||||
in.close();
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
zf.close();
|
||||
}catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new MojoExecutionException("Error while extracting jar files", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,65 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import javax.xml.transform.Transformer;
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.lib.RepositoryBuilder;
|
||||
|
||||
/**
|
||||
* Provides utility methods for including source control information in the
|
||||
* generated documentation.
|
||||
*
|
||||
* @author Sam Harwell
|
||||
*/
|
||||
class GitHelper {
|
||||
|
||||
/**
|
||||
* Adds properties to the specified {@code transformer} for the current Git
|
||||
* commit hash. The following properties are added to {@code transformer}:
|
||||
* <ul>
|
||||
* <li>{@code repository.commit}: The full commit hash, in lowercase
|
||||
* hexadecimal form.</li>
|
||||
* <li>{@code repository.commit.short}: The abbreviated commit hash, which
|
||||
* is the first {@code abbrevLen} hexadecimal characters of the full commit
|
||||
* hash.</li>
|
||||
* </ul>
|
||||
* <p/>
|
||||
* If {@code baseDir} is not currently stored in a Git repository, or if the
|
||||
* current Git commit hash could not be determined, this method logs a
|
||||
* warning and returns {@code false}.
|
||||
*
|
||||
* @param transformer The transformer.
|
||||
* @param baseDir The base directory where versioned files are contained.
|
||||
* @param abbrevLen The length of the abbreviated commit hash to create, in
|
||||
* number of hexadecimal characters.
|
||||
* @param log The Maven log instance.
|
||||
* @return {@code true} if the commit hash was identified and the properties
|
||||
* added to the {@code transformer}; otherwise, {@code false}.
|
||||
*/
|
||||
public static boolean addCommitProperties(Transformer transformer, File baseDir, int abbrevLen, Log log) {
|
||||
try {
|
||||
RepositoryBuilder builder = new RepositoryBuilder();
|
||||
Repository repository = builder.findGitDir(baseDir).readEnvironment().build();
|
||||
ObjectId objectId = repository.resolve(Constants.HEAD);
|
||||
if (objectId != null) {
|
||||
transformer.setParameter("repository.commit", objectId.getName());
|
||||
transformer.setParameter("repository.commit.short", objectId.abbreviate(abbrevLen).name());
|
||||
return true;
|
||||
} else {
|
||||
log.warn("Could not determine current repository commit hash.");
|
||||
return false;
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
log.warn("Could not determine current repository commit hash.", ex);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private GitHelper() {
|
||||
}
|
||||
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.URIResolver;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* User: sbrayman
|
||||
* Date: 10/19/11
|
||||
*/
|
||||
public class GlossaryResolver implements URIResolver {
|
||||
|
||||
private URIResolver originalResolver;
|
||||
private String type;
|
||||
private static final Pattern urnPattern = Pattern.compile("urn:rackspace\\-glossary.xml");
|
||||
|
||||
public GlossaryResolver(URIResolver original, String type) {
|
||||
this.originalResolver = original;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Source resolve(String href, String base) throws TransformerException {
|
||||
|
||||
Matcher m = urnPattern.matcher(href);
|
||||
|
||||
if (m.matches()) {
|
||||
String filePath = "/glossary.xml";
|
||||
|
||||
URL url = this.getClass().getResource(filePath);
|
||||
|
||||
if (url != null) {
|
||||
try {
|
||||
return new StreamSource(url.openStream(), url.toExternalForm());
|
||||
} catch (IOException ioe) {
|
||||
throw new TransformerException("Can't get glossary reference " + href + "->" + filePath, ioe);
|
||||
}
|
||||
} else {
|
||||
throw new TransformerException("Can't resolve glossary link: " + href + "->" + filePath + ". Glossary missing in classpath?");
|
||||
}
|
||||
} else if (originalResolver != null) { // We can't resolve, maybe the next resolver in the chain can.
|
||||
//System.err.println("This failed to match. " + href);
|
||||
return originalResolver.resolve(href, base);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -1,65 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import com.agilejava.docbkx.maven.AbstractHtmlMojo;
|
||||
import com.agilejava.docbkx.maven.PreprocessingFilter;
|
||||
import com.agilejava.docbkx.maven.TransformerBuilder;
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.Transformer;
|
||||
|
||||
public abstract class HTMLMojo extends AbstractHtmlMojo {
|
||||
|
||||
/**
|
||||
* @parameter
|
||||
* expression="${generate-html.canonicalUrlBase}"
|
||||
* default-value=""
|
||||
*/
|
||||
private String canonicalUrlBase;
|
||||
|
||||
/**
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-html.failOnValidationError}"
|
||||
* default-value="0"
|
||||
*/
|
||||
private String failOnValidationError;
|
||||
|
||||
/**
|
||||
* A parameter used to specify the security level (external, internal, reviewer, writeronly) of the document.
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-html.security}"
|
||||
* default-value=""
|
||||
*/
|
||||
private String security;
|
||||
protected String getNonDefaultStylesheetLocation() {
|
||||
return "cloud/apipage/apipage.xsl";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Source createSource(String inputFilename, File sourceFile, PreprocessingFilter filter)
|
||||
throws MojoExecutionException {
|
||||
|
||||
String pathToPipelineFile = "classpath:///wadl2html.xpl"; //use "classpath:///path" for this to work
|
||||
Source source = super.createSource(inputFilename, sourceFile, filter);
|
||||
|
||||
Map<String, Object> map=new HashMap<String, Object>();
|
||||
|
||||
map.put("security", security);
|
||||
map.put("canonicalUrlBase", canonicalUrlBase);
|
||||
map.put("failOnValidationError", failOnValidationError);
|
||||
|
||||
return CalabashHelper.createSource(getLog(), source, pathToPipelineFile, map);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
|
||||
GitHelper.addCommitProperties(transformer, new File(sourceFilename), 7, getLog());
|
||||
super.adjustTransformer(transformer, sourceFilename, targetFile);
|
||||
}
|
||||
}
|
@ -1,602 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import com.agilejava.docbkx.maven.AbstractFoMojo;
|
||||
import com.agilejava.docbkx.maven.PreprocessingFilter;
|
||||
import com.agilejava.docbkx.maven.TransformerBuilder;
|
||||
import com.rackspace.cloud.api.docs.CalabashHelper;
|
||||
import com.rackspace.cloud.api.docs.FileUtils;
|
||||
import com.rackspace.cloud.api.docs.GlossaryResolver;
|
||||
|
||||
import org.antlr.stringtemplate.StringTemplate;
|
||||
import org.antlr.stringtemplate.StringTemplateGroup;
|
||||
import org.apache.avalon.framework.configuration.Configuration;
|
||||
import org.apache.avalon.framework.configuration.ConfigurationException;
|
||||
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.fop.apps.FOPException;
|
||||
import org.apache.fop.apps.FOUserAgent;
|
||||
import org.apache.fop.apps.Fop;
|
||||
import org.apache.fop.apps.FopFactory;
|
||||
import org.apache.fop.apps.MimeConstants;
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerConfigurationException;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.URIResolver;
|
||||
import javax.xml.transform.sax.SAXResult;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.transform.sax.SAXSource;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class PDFMojo extends AbstractFoMojo {
|
||||
private File imageDirectory;
|
||||
private File sourceDirectory;
|
||||
private File sourceDocBook;
|
||||
|
||||
private File coverImageTemplate;
|
||||
private File coverImage;
|
||||
|
||||
private static final String COVER_IMAGE_TEMPLATE_NAME = "cover.st";
|
||||
private static final String COVER_IMAGE_NAME = "cover.svg";
|
||||
|
||||
private static final String COVER_XSL = "cloud/cover.xsl";
|
||||
|
||||
/**
|
||||
* @parameter expression="${project.build.directory}"
|
||||
*/
|
||||
private File projectBuildDirectory;
|
||||
|
||||
/**
|
||||
* The greeting to display.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.branding}" default-value="rackspace"
|
||||
*/
|
||||
private String branding;
|
||||
|
||||
|
||||
/**
|
||||
* Display built for OpenStack logo?
|
||||
*
|
||||
* @parameter expression="${generate-pdf.builtForOpenStack}" default-value="0"
|
||||
*/
|
||||
private String builtForOpenStack;
|
||||
|
||||
/**
|
||||
* Path to an alternative cover logo.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.coverLogoPath}" default-value=""
|
||||
*/
|
||||
private String coverLogoPath;
|
||||
|
||||
|
||||
/**
|
||||
* Path to an alternative cover logo.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.secondaryCoverLogoPath}"
|
||||
*/
|
||||
private String secondaryCoverLogoPath;
|
||||
|
||||
|
||||
/**
|
||||
* Distance from the left edge of the page at which the
|
||||
* cover logo is displayed.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.coverLogoLeft}" default-value=""
|
||||
*/
|
||||
private String coverLogoLeft;
|
||||
|
||||
/**
|
||||
* Distance from the top of the page at which teh
|
||||
* cover logo is displayed.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.coverLogoTop}" default-value=""
|
||||
*/
|
||||
private String coverLogoTop;
|
||||
|
||||
/**
|
||||
* url to display under the cover logo.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.coverUrl}" default-value=""
|
||||
*/
|
||||
private String coverUrl;
|
||||
|
||||
/**
|
||||
* The color to use for the polygon on the cover
|
||||
*
|
||||
* @parameter expression="${generate-pdf.coverColor}" default-value=""
|
||||
*/
|
||||
private String coverColor;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @parameter expression="${generate-pdf.pageWidth}" default-value=""
|
||||
*/
|
||||
private String pageWidth;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @parameter expression="${generate-pdf.pageHeight}" default-value=""
|
||||
*/
|
||||
private String pageHeight;
|
||||
|
||||
/**
|
||||
* Should cover be omitted?
|
||||
*
|
||||
* @parameter expression="${generate-pdf.omitCover}" default-value=""
|
||||
*/
|
||||
private String omitCover;
|
||||
|
||||
/**
|
||||
* Double sided pdfs?
|
||||
*
|
||||
* @parameter expression="${generate-pdf.doubleSided}" default-value=""
|
||||
*/
|
||||
private String doubleSided;
|
||||
|
||||
|
||||
/**
|
||||
* The greeting to display.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.variablelistAsBlocks}"
|
||||
*/
|
||||
private String variablelistAsBlocks;
|
||||
|
||||
|
||||
/**
|
||||
* A parameter used to configure how many elements to trim from the URI in the documentation for a wadl method.
|
||||
*
|
||||
* @parameter expression="${generate-pdf.trim.wadl.uri.count}" default-value=""
|
||||
*/
|
||||
private String trimWadlUriCount;
|
||||
|
||||
/**
|
||||
* Controls how the path to the wadl is calculated. If 0 or not set, then
|
||||
* The xslts look for the normalized wadl in /generated-resources/xml/xslt/.
|
||||
* Otherwise, in /generated-resources/xml/xslt/path/to/docbook-src, e.g.
|
||||
* /generated-resources/xml/xslt/src/docbkx/foo.wadl
|
||||
*
|
||||
* @parameter expression="${generate-pdf.compute.wadl.path.from.docbook.path}" default-value="0"
|
||||
*/
|
||||
private String computeWadlPathFromDocbookPath;
|
||||
|
||||
/**
|
||||
* @parameter
|
||||
* expression="${generate-pdf.canonicalUrlBase}"
|
||||
* default-value=""
|
||||
*/
|
||||
private String canonicalUrlBase;
|
||||
|
||||
/**
|
||||
* @parameter
|
||||
* expression="${generate-pdf.replacementsFile}"
|
||||
* default-value="replacements.config"
|
||||
*/
|
||||
private String replacementsFile;
|
||||
|
||||
/**
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-pdf.failOnValidationError}"
|
||||
* default-value="yes"
|
||||
*/
|
||||
private String failOnValidationError;
|
||||
|
||||
/**
|
||||
* A parameter used to specify the security level (external, internal, reviewer, writeronly) of the document.
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-pdf.security}"
|
||||
*/
|
||||
private String security;
|
||||
|
||||
/**
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-pdf.strictImageValidation}"
|
||||
* default-value=true
|
||||
*/
|
||||
private boolean strictImageValidation;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @parameter expression="${generate-pdf.draft.status}" default-value=""
|
||||
*/
|
||||
private String draftStatus;
|
||||
|
||||
/**
|
||||
* @parameter expression="${generate-pdf.statusBarText}"
|
||||
*/
|
||||
private String statusBarText;
|
||||
|
||||
/**
|
||||
* @parameter expression="${generate-pdf.bodyFont}"
|
||||
*/
|
||||
private String bodyFont;
|
||||
|
||||
/**
|
||||
* @parameter expression="${generate-pdf.monospaceFont}"
|
||||
*/
|
||||
private String monospaceFont;
|
||||
|
||||
/**
|
||||
* @parameter expression="${generate-pdf.localFontPath}"
|
||||
*/
|
||||
private String localFontPath;
|
||||
|
||||
protected void setImageDirectory (File imageDirectory) {
|
||||
this.imageDirectory = imageDirectory;
|
||||
}
|
||||
|
||||
protected File getImageDirectory() {
|
||||
return this.imageDirectory;
|
||||
}
|
||||
|
||||
protected String getNonDefaultStylesheetLocation() {
|
||||
return "cloud/fo/docbook.xsl";
|
||||
}
|
||||
|
||||
|
||||
public void preProcess() throws MojoExecutionException {
|
||||
super.preProcess();
|
||||
|
||||
final File targetDirectory = getTargetDirectory();
|
||||
File imageParentDirectory = targetDirectory.getParentFile();
|
||||
File xslParentDirectory = targetDirectory.getParentFile();
|
||||
|
||||
if (!targetDirectory.exists()) {
|
||||
FileUtils.mkdir(targetDirectory);
|
||||
}
|
||||
|
||||
//
|
||||
// Extract all images into the image directory.
|
||||
//
|
||||
FileUtils.extractJaredDirectory("images",PDFMojo.class,imageParentDirectory);
|
||||
setImageDirectory (new File (imageParentDirectory, "images"));
|
||||
|
||||
FileUtils.extractJaredDirectory("cloud/war",PDFMojo.class,xslParentDirectory);
|
||||
|
||||
//
|
||||
// Extract all fonts into fonts directory
|
||||
//
|
||||
FileUtils.extractJaredDirectory("fonts",PDFMojo.class,imageParentDirectory);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Really this is an exact copy of the parent impl, except I use
|
||||
// my own version of loadFOPConfig. Really, I should be able to
|
||||
// overwrite that method.
|
||||
//
|
||||
public void postProcessResult(File result) throws MojoExecutionException {
|
||||
final FopFactory fopFactory = FopFactory.newInstance();
|
||||
final FOUserAgent userAgent = fopFactory.newFOUserAgent();
|
||||
|
||||
// First transform the cover page
|
||||
transformCover();
|
||||
|
||||
// FOUserAgent can be used to set PDF metadata
|
||||
Configuration configuration = loadFOPConfig();
|
||||
InputStream in = null;
|
||||
OutputStream out = null;
|
||||
|
||||
try
|
||||
{
|
||||
String baseURL = sourceDirectory.toURI().toURL().toExternalForm();
|
||||
baseURL = baseURL.replace("file:/", "file:///");
|
||||
|
||||
userAgent.setBaseURL(baseURL);
|
||||
System.err.println ("Absolute path is "+baseURL);
|
||||
|
||||
in = openFileForInput(result);
|
||||
out = openFileForOutput(getOutputFile(result));
|
||||
fopFactory.setUserConfig(configuration);
|
||||
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
|
||||
|
||||
// Setup JAXP using identity transformer
|
||||
TransformerFactory factory = TransformerFactory.newInstance();
|
||||
Transformer transformer = factory.newTransformer(); // identity transformer
|
||||
|
||||
// Setup input stream
|
||||
Source src = new StreamSource(in);
|
||||
|
||||
// Resulting SAX events (the generated FO) must be piped through to FOP
|
||||
Result res = new SAXResult(fop.getDefaultHandler());
|
||||
|
||||
// Start XSLT transformation and FOP processing
|
||||
transformer.transform(src, res);
|
||||
}
|
||||
catch (FOPException e)
|
||||
{
|
||||
throw new MojoExecutionException("Failed to convert to PDF", e);
|
||||
}
|
||||
catch (TransformerConfigurationException e)
|
||||
{
|
||||
throw new MojoExecutionException("Failed to load JAXP configuration", e);
|
||||
}
|
||||
catch (TransformerException e)
|
||||
{
|
||||
throw new MojoExecutionException("Failed to transform to PDF", e);
|
||||
}
|
||||
catch (MalformedURLException e)
|
||||
{
|
||||
throw new MojoExecutionException("Failed to get FO basedir", e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
IOUtils.closeQuietly(out);
|
||||
IOUtils.closeQuietly(in);
|
||||
}
|
||||
}
|
||||
|
||||
protected InputStream openFileForInput(File file)
|
||||
throws MojoExecutionException {
|
||||
try {
|
||||
return new FileInputStream(file);
|
||||
} catch (FileNotFoundException fnfe) {
|
||||
throw new MojoExecutionException("Failed to open " + file
|
||||
+ " for input.");
|
||||
}
|
||||
}
|
||||
|
||||
protected File getOutputFile(File inputFile) {
|
||||
return new File (inputFile.getAbsolutePath().replaceAll(".fo$",".pdf"));
|
||||
}
|
||||
|
||||
protected OutputStream openFileForOutput(File file)
|
||||
throws MojoExecutionException {
|
||||
try {
|
||||
return new BufferedOutputStream(new FileOutputStream(file));
|
||||
} catch (FileNotFoundException fnfe) {
|
||||
throw new MojoExecutionException("Failed to open " + file
|
||||
+ " for output.");
|
||||
}
|
||||
}
|
||||
|
||||
protected Configuration loadFOPConfig() throws MojoExecutionException {
|
||||
System.out.println ("At load config");
|
||||
String fontPath = (null != localFontPath && localFontPath != "")? localFontPath: (new File(getTargetDirectory().getParentFile(), "fonts")).getAbsolutePath();
|
||||
StringTemplateGroup templateGroup = new StringTemplateGroup("fonts", fontPath);
|
||||
StringTemplate template = templateGroup.getInstanceOf("fontconfig");
|
||||
DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
|
||||
template.setAttribute ("fontPath",fontPath);
|
||||
final String config = template.toString();
|
||||
if (getLog().isDebugEnabled()) {
|
||||
getLog().debug(config);
|
||||
}
|
||||
try {
|
||||
return builder.build(IOUtils.toInputStream(config));
|
||||
} catch (IOException ioe) {
|
||||
throw new MojoExecutionException("Failed to load FOP config.", ioe);
|
||||
} catch (SAXException saxe) {
|
||||
throw new MojoExecutionException("Failed to parse FOP config.",
|
||||
saxe);
|
||||
} catch (ConfigurationException e) {
|
||||
throw new MojoExecutionException(
|
||||
"Failed to do something Avalon requires....", e);
|
||||
}
|
||||
}
|
||||
|
||||
protected TransformerBuilder createTransformerBuilder(URIResolver resolver) {
|
||||
return super.createTransformerBuilder (new GlossaryResolver(new DocBookResolver (resolver, getType()), getType()));
|
||||
}
|
||||
|
||||
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
|
||||
GitHelper.addCommitProperties(transformer, projectBuildDirectory, 7, getLog());
|
||||
|
||||
super.adjustTransformer(transformer, sourceFilename, targetFile);
|
||||
|
||||
transformer.setParameter("branding", branding);
|
||||
transformer.setParameter("builtForOpenStack", builtForOpenStack);
|
||||
transformer.setParameter("coverLogoPath", coverLogoPath);
|
||||
if(null != secondaryCoverLogoPath){
|
||||
transformer.setParameter("secondaryCoverLogoPath", secondaryCoverLogoPath);
|
||||
}
|
||||
transformer.setParameter("coverLogoLeft", coverLogoLeft);
|
||||
transformer.setParameter("coverLogoTop", coverLogoTop);
|
||||
transformer.setParameter("coverUrl", coverUrl);
|
||||
transformer.setParameter("coverColor", coverColor);
|
||||
|
||||
if(null != pageWidth){
|
||||
transformer.setParameter("page.width", pageWidth);
|
||||
}
|
||||
if(null != pageHeight){
|
||||
transformer.setParameter("page.height", pageHeight);
|
||||
}
|
||||
if(null != omitCover){
|
||||
transformer.setParameter("omitCover", omitCover);
|
||||
}
|
||||
if(null != doubleSided){
|
||||
transformer.setParameter("double.sided", doubleSided);
|
||||
}
|
||||
|
||||
|
||||
String sysDraftStatus=System.getProperty("draft.status");
|
||||
if (getLog().isDebugEnabled()) {
|
||||
getLog().info("adjustTransformer():sysDraftStatus="+sysDraftStatus);
|
||||
}
|
||||
if(null!=sysDraftStatus && !sysDraftStatus.isEmpty()){
|
||||
draftStatus=sysDraftStatus;
|
||||
}
|
||||
|
||||
transformer.setParameter("draft.status", draftStatus);
|
||||
|
||||
String sysStatusBarText=System.getProperty("statusBarText");
|
||||
if(null!=sysStatusBarText && !sysStatusBarText.isEmpty()){
|
||||
statusBarText=sysStatusBarText;
|
||||
}
|
||||
if(statusBarText != null){
|
||||
transformer.setParameter("statusBarText", statusBarText);
|
||||
}
|
||||
if(bodyFont != null){
|
||||
transformer.setParameter("bodyFont", bodyFont);
|
||||
}
|
||||
if(monospaceFont != null){
|
||||
transformer.setParameter("monospaceFont", monospaceFont);
|
||||
}
|
||||
|
||||
transformer.setParameter("project.build.directory", projectBuildDirectory.toURI().toString());
|
||||
|
||||
String sysSecurity=System.getProperty("security");
|
||||
if (getLog().isDebugEnabled()) {
|
||||
getLog().info("adjustTransformer():sysSecurity="+sysSecurity);
|
||||
}
|
||||
if(null!=sysSecurity && !sysSecurity.isEmpty()){
|
||||
security=sysSecurity;
|
||||
}
|
||||
if(security != null){
|
||||
transformer.setParameter("security",security);
|
||||
}
|
||||
|
||||
if(trimWadlUriCount != null){
|
||||
transformer.setParameter("trim.wadl.uri.count",trimWadlUriCount);
|
||||
}
|
||||
|
||||
//
|
||||
// Setup graphics paths
|
||||
//
|
||||
sourceDocBook = new File(sourceFilename);
|
||||
sourceDirectory = sourceDocBook.getParentFile();
|
||||
File imageDirectory = getImageDirectory();
|
||||
File calloutDirectory = new File (imageDirectory, "callouts");
|
||||
|
||||
transformer.setParameter("docbook.infile",sourceDocBook.toURI().toString());
|
||||
transformer.setParameter("source.directory",sourceDirectory.toURI().toString());
|
||||
transformer.setParameter("compute.wadl.path.from.docbook.path",computeWadlPathFromDocbookPath);
|
||||
|
||||
transformer.setParameter ("admon.graphics.path", imageDirectory.toURI().toString());
|
||||
transformer.setParameter ("callout.graphics.path", calloutDirectory.toURI().toString());
|
||||
|
||||
//
|
||||
// Setup the background image file
|
||||
//
|
||||
File cloudSub = new File (imageDirectory, "cloud");
|
||||
File ccSub = new File (imageDirectory, "cc");
|
||||
coverImage = new File (cloudSub, COVER_IMAGE_NAME);
|
||||
coverImageTemplate = new File (cloudSub, COVER_IMAGE_TEMPLATE_NAME);
|
||||
|
||||
coverImageTemplate = new File (cloudSub, "rackspace-cover.st");
|
||||
|
||||
transformer.setParameter ("cloud.api.background.image", coverImage.toURI().toString());
|
||||
transformer.setParameter ("cloud.api.cc.image.dir", ccSub.toURI().toString());
|
||||
}
|
||||
|
||||
protected void transformCover() throws MojoExecutionException {
|
||||
try {
|
||||
ClassLoader classLoader = Thread.currentThread()
|
||||
.getContextClassLoader();
|
||||
|
||||
TransformerFactory factory = TransformerFactory.newInstance();
|
||||
Transformer transformer = factory.newTransformer(new StreamSource(classLoader.getResourceAsStream(COVER_XSL)));
|
||||
if(coverColor != null){
|
||||
transformer.setParameter("coverColor", coverColor);
|
||||
}
|
||||
|
||||
String sysDraftStatus=System.getProperty("draft.status");
|
||||
if(null!=sysDraftStatus && !sysDraftStatus.isEmpty()){
|
||||
draftStatus=sysDraftStatus;
|
||||
}
|
||||
if(null!=draftStatus){
|
||||
transformer.setParameter("draft.status", draftStatus);
|
||||
}
|
||||
|
||||
String sysStatusBarText=System.getProperty("statusBarText");
|
||||
if(null!=sysStatusBarText && !sysStatusBarText.isEmpty()){
|
||||
statusBarText=sysStatusBarText;
|
||||
}
|
||||
if(null != statusBarText){
|
||||
transformer.setParameter("status.bar.text", statusBarText);
|
||||
}
|
||||
transformer.setParameter("branding", branding);
|
||||
|
||||
//transformer.setParameter("docbook.infile",sourceDocBook.toURI().toString());
|
||||
String srcFilename = sourceDocBook.getName();
|
||||
if (getLog().isDebugEnabled()) {
|
||||
getLog().info("SOURCE FOR COVER PAGE: "+this.projectBuildDirectory+"/docbkx/"+srcFilename);
|
||||
}
|
||||
transformer.setParameter("docbook.infile", new File(this.projectBuildDirectory, "docbkx/"+srcFilename).toURI().toString());
|
||||
transformer.transform (new StreamSource(coverImageTemplate), new StreamResult(coverImage));
|
||||
}
|
||||
catch (TransformerConfigurationException e)
|
||||
{
|
||||
throw new MojoExecutionException("Failed to load JAXP configuration", e);
|
||||
}
|
||||
catch (TransformerException e)
|
||||
{
|
||||
throw new MojoExecutionException("Failed to transform to cover", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected Source createSource(String inputFilename, File sourceFile, PreprocessingFilter filter)
|
||||
throws MojoExecutionException {
|
||||
|
||||
String pathToPipelineFile = "classpath:///pdf.xpl"; //use "classpath:///path" for this to work
|
||||
|
||||
String sourceFileNameNormalized = sourceFile.toURI().toString();
|
||||
//from super
|
||||
final InputSource inputSource = new InputSource(sourceFileNameNormalized);
|
||||
Source source = new SAXSource(filter, inputSource);
|
||||
//Source source = super.createSource(inputFilename, sourceFile, filter);
|
||||
|
||||
Map<String, Object> map=new HashMap<String, Object>();
|
||||
String sysSecurity=System.getProperty("security");
|
||||
getLog().info("adjustTransformer():sysSecurity="+sysSecurity);
|
||||
if(null!=sysSecurity && !sysSecurity.isEmpty()){
|
||||
security=sysSecurity;
|
||||
}
|
||||
|
||||
map.put("targetDirectory", getTargetDirectory().getParentFile());
|
||||
map.put("targetHtmlContentDir", new File(getTargetDirectory(), "/wadls/"));
|
||||
map.put("security", security);
|
||||
map.put("canonicalUrlBase", canonicalUrlBase);
|
||||
map.put("replacementsFile", replacementsFile);
|
||||
map.put("failOnValidationError", failOnValidationError);
|
||||
map.put("project.build.directory", this.projectBuildDirectory);
|
||||
map.put("inputSrcFile", inputFilename);
|
||||
map.put("outputType", "pdf");
|
||||
map.put("strictImageValidation", String.valueOf(this.strictImageValidation));
|
||||
map.put("status.bar.text", getProperty("statusBarText"));
|
||||
map.put("bodyFont", getProperty("bodyFont"));
|
||||
map.put("monospaceFont", getProperty("monospaceFont"));
|
||||
map.put("draft.status", getProperty("draftStatus"));
|
||||
|
||||
// Profiling attrs:
|
||||
map.put("profile.os", getProperty("profileOs"));
|
||||
map.put("profile.arch", getProperty("profileArch"));
|
||||
map.put("profile.condition", getProperty("profileCondition"));
|
||||
map.put("profile.audience", getProperty("profileAudience"));
|
||||
map.put("profile.conformance", getProperty("profileConformance"));
|
||||
map.put("profile.revision", getProperty("profileRevision"));
|
||||
map.put("profile.userlevel", getProperty("profileUserlevel"));
|
||||
map.put("profile.vendor", getProperty("profileVendor"));
|
||||
|
||||
//String outputDir=System.getProperty("project.build.outputDirectory ");
|
||||
return CalabashHelper.createSource(getLog(), source, pathToPipelineFile, map);
|
||||
}
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.URIResolver;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* User: sbrayman
|
||||
* Date: 10/19/11
|
||||
*/
|
||||
public class ResourceResolver implements URIResolver { //TODO: Kill this class?
|
||||
|
||||
private URIResolver originalResolver;
|
||||
private String type;
|
||||
private String exampleIri = "mvn://com.rackspace.cloud.api:glossary/glossary.xml";
|
||||
|
||||
public ResourceResolver(URIResolver original, String type) {
|
||||
this.originalResolver = original;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Source resolve(String href, String base) throws TransformerException {
|
||||
|
||||
String filePath = exampleIri;
|
||||
|
||||
URL url = this.getClass().getResource(filePath);
|
||||
|
||||
if (url != null) {
|
||||
try {
|
||||
return new StreamSource(url.openStream(), url.toExternalForm());
|
||||
} catch (IOException ioe) {
|
||||
throw new TransformerException("Can't resolve path: " + href + "->" + filePath + ". Resource missing in classpath?", ioe);
|
||||
}
|
||||
}
|
||||
//System.err.println("This failed to match. " + href);
|
||||
return originalResolver.resolve(href, base);
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,413 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs;
|
||||
|
||||
import com.rackspace.cloud.api.docs.FileUtils;
|
||||
import com.agilejava.docbkx.maven.AbstractHtmlMojo;
|
||||
import com.agilejava.docbkx.maven.PreprocessingFilter;
|
||||
import com.agilejava.docbkx.maven.TransformerBuilder;
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.URIResolver;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
import javax.xml.transform.Transformer;
|
||||
|
||||
public abstract class XhtmlMojo extends AbstractHtmlMojo {
|
||||
|
||||
private File xslDirectory;
|
||||
|
||||
/**
|
||||
* @parameter expression="${project.build.directory}"
|
||||
*/
|
||||
private File projectBuildDirectory;
|
||||
|
||||
/**
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-html.failOnValidationError}"
|
||||
* default-value="yes"
|
||||
*/
|
||||
private String failOnValidationError;
|
||||
|
||||
/**
|
||||
* A parameter used to specify the security level (external, internal, reviewer, writeronly) of the document.
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-html.security}"
|
||||
* default-value=""
|
||||
*/
|
||||
private String security;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Controls whether output is colorized based on revisionflag attributes.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.show.changebars}"
|
||||
*/
|
||||
private String showChangebars;
|
||||
|
||||
/**
|
||||
* Display built for OpenStack logo?
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.builtForOpenStack}" default-value="0"
|
||||
*/
|
||||
private String builtForOpenStack;
|
||||
|
||||
/**
|
||||
* Controls whether output is colorized based on revisionflag attributes.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.meta.robots}"
|
||||
*/
|
||||
private String metaRobots;
|
||||
|
||||
/**
|
||||
* Controls whether the version string is used as part of the Disqus identifier.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.use.version.for.disqus}" default-value="0"
|
||||
*/
|
||||
private String useVersionForDisqus;
|
||||
|
||||
/**
|
||||
* Controls whether the disqus identifier is used.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.use.disqus.id}" default-value="1"
|
||||
*/
|
||||
private String useDisqusId;
|
||||
|
||||
/**
|
||||
* Controls the branding of the output.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.branding}" default-value="rackspace"
|
||||
*/
|
||||
private String branding;
|
||||
|
||||
/**
|
||||
* Controls whether Disqus comments appear at the bottom of each page.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.enable.disqus}" default-value="0"
|
||||
*/
|
||||
private String enableDisqus;
|
||||
|
||||
/**
|
||||
* A parameter used by the Disqus comments.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.disqus.shortname}" default-value=""
|
||||
*/
|
||||
private String disqusShortname;
|
||||
|
||||
/**
|
||||
* A parameter used to control whether to include Google Analytics goo.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.enable.google.analytics}" default-value=""
|
||||
*/
|
||||
private String enableGoogleAnalytics;
|
||||
|
||||
/**
|
||||
* A parameter used to control whether to include Google Analytics goo.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.google.analytics.id}" default-value=""
|
||||
*/
|
||||
private String googleAnalyticsId;
|
||||
|
||||
/**
|
||||
* A parameter used to control whether to include Google Analytics goo.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.google.analytics.domain}" default-value=""
|
||||
*/
|
||||
private String googleAnalyticsDomain;
|
||||
|
||||
/**
|
||||
* A parameter used to specify the path to the pdf for download in webhelp.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.pdf.url}" default-value=""
|
||||
*/
|
||||
private String pdfUrl;
|
||||
|
||||
/**
|
||||
* @parameter
|
||||
* expression="${generate-xhtml.canonicalUrlBase}"
|
||||
* default-value=""
|
||||
*/
|
||||
private String canonicalUrlBase;
|
||||
|
||||
/**
|
||||
* @parameter
|
||||
* expression="${generate-pdf.replacementsFile}"
|
||||
* default-value="replacements.config"
|
||||
*/
|
||||
private String replacementsFile;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @parameter expression="${basedir}"
|
||||
*/
|
||||
private File baseDir;
|
||||
|
||||
/**
|
||||
* A parameter used to specify the presence of extensions metadata.
|
||||
*
|
||||
* @parameter
|
||||
* expression="${generate-xhtml.includes}"
|
||||
* default-value=""
|
||||
*/
|
||||
private File transformDir;
|
||||
|
||||
/**
|
||||
* A parameter used to configure how many elements to trim from the URI in the documentation for a wadl method.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.trim.wadl.uri.count}" default-value=""
|
||||
*/
|
||||
private String trimWadlUriCount;
|
||||
|
||||
/**
|
||||
* Controls how the path to the wadl is calculated. If 0 or not set, then
|
||||
* The xslts look for the normalized wadl in /generated-resources/xml/xslt/.
|
||||
* Otherwise, in /generated-resources/xml/xslt/path/to/docbook-src, e.g.
|
||||
* /generated-resources/xml/xslt/src/docbkx/foo.wadl
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.compute.wadl.path.from.docbook.path}" default-value="0"
|
||||
*/
|
||||
private String computeWadlPathFromDocbookPath;
|
||||
|
||||
/**
|
||||
* Sets the email for TildeHash (internal) comments. Note that this
|
||||
* doesn't affect Disqus comments.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.feedback.email}" default-value=""
|
||||
*/
|
||||
private String feedbackEmail;
|
||||
|
||||
/**
|
||||
* Controls whether or not the social icons are displayed.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.social.icons}" default-value="0"
|
||||
*/
|
||||
private String socialIcons;
|
||||
/**
|
||||
* A parameter used to specify the path to the lega notice in webhelp.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.legal.notice.url}" default-value="index.html"
|
||||
*/
|
||||
private String legalNoticeUrl;
|
||||
|
||||
|
||||
/**
|
||||
* A parameter used to specify the path to the lega notice in webhelp.
|
||||
*
|
||||
* @parameter expression="${generate-xhtml.chunk.section.depth}"
|
||||
*/
|
||||
private String chunkSectionDepth;
|
||||
|
||||
protected TransformerBuilder createTransformerBuilder(URIResolver resolver) {
|
||||
return super.createTransformerBuilder (new DocBookResolver (resolver, getType()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
|
||||
GitHelper.addCommitProperties(transformer, baseDir, 7, getLog());
|
||||
super.adjustTransformer(transformer, sourceFilename, targetFile);
|
||||
}
|
||||
|
||||
protected String getNonDefaultStylesheetLocation() {
|
||||
// Is this even used?
|
||||
return "cloud/war/copy.xsl";
|
||||
}
|
||||
|
||||
protected void setXslDirectory (File xslDirectory) {
|
||||
this.xslDirectory = xslDirectory;
|
||||
}
|
||||
|
||||
protected File getXslDirectory() {
|
||||
return this.xslDirectory;
|
||||
}
|
||||
|
||||
public void postProcessResult(File result) throws MojoExecutionException {
|
||||
|
||||
super.postProcessResult(result);
|
||||
|
||||
//final File targetDirectory = result.getParentFile();
|
||||
// com.rackspace.cloud.api.docs.FileUtils.extractJaredDirectory("apiref",ApiRefMojo.class,targetDirectory);
|
||||
String warBasename = result.getName().substring(0, result.getName().lastIndexOf('.'));
|
||||
|
||||
// Zip up the war from here.
|
||||
String sourceDir = result.getParentFile() + "/" + warBasename;
|
||||
String zipFile = result.getParentFile() + "/" + warBasename + ".war";
|
||||
//result.deleteOnExit();
|
||||
|
||||
try
|
||||
{
|
||||
//create object of FileOutputStream
|
||||
FileOutputStream fout = new FileOutputStream(zipFile);
|
||||
|
||||
//create object of ZipOutputStream from FileOutputStream
|
||||
ZipOutputStream zout = new ZipOutputStream(fout);
|
||||
|
||||
//create File object from source directory
|
||||
File fileSource = new File(sourceDir);
|
||||
|
||||
FileUtils.addDirectory(zout, fileSource);
|
||||
|
||||
//close the ZipOutputStream
|
||||
zout.close();
|
||||
|
||||
System.out.println("Zip file has been created!");
|
||||
|
||||
}
|
||||
catch(IOException ioe)
|
||||
{
|
||||
System.out.println("IOException :" + ioe);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void preProcess() throws MojoExecutionException {
|
||||
super.preProcess();
|
||||
|
||||
final File targetDirectory = getTargetDirectory();
|
||||
File xslParentDirectory = targetDirectory.getParentFile();
|
||||
|
||||
if (!targetDirectory.exists()) {
|
||||
FileUtils.mkdir(targetDirectory);
|
||||
}
|
||||
|
||||
//
|
||||
// Extract all images into the image directory.
|
||||
//
|
||||
FileUtils.extractJaredDirectory("cloud/war",PDFMojo.class,xslParentDirectory);
|
||||
setXslDirectory (new File (xslParentDirectory, "xsls"));
|
||||
|
||||
//
|
||||
// Extract all fonts into fonts directory
|
||||
//
|
||||
//FileUtils.extractJaredDirectory("fonts",PDFMojo.class,imageParentDirectory);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected Source createSource(String inputFilename, File sourceFile, PreprocessingFilter filter)
|
||||
throws MojoExecutionException {
|
||||
|
||||
String pathToPipelineFile = "classpath:///war.xpl"; //use "classpath:///path" for this to work
|
||||
Source source = super.createSource(inputFilename, sourceFile, filter);
|
||||
|
||||
Map<String, Object> map=new HashMap<String, Object>();
|
||||
|
||||
map.put("failOnValidationError", failOnValidationError);
|
||||
map.put("transform.dir", transformDir);
|
||||
|
||||
if(feedbackEmail != null){
|
||||
map.put("feedback.email", feedbackEmail);
|
||||
}
|
||||
if(useDisqusId != null){
|
||||
map.put("use.disqus.id", useDisqusId);
|
||||
}
|
||||
if (useVersionForDisqus != null) {
|
||||
map.put("use.version.for.disqus", useVersionForDisqus);
|
||||
}
|
||||
map.put("project.build.directory", projectBuildDirectory);
|
||||
map.put("branding", branding);
|
||||
map.put("builtForOpenStack", builtForOpenStack);
|
||||
map.put("enable.disqus", enableDisqus);
|
||||
if (disqusShortname != null) {
|
||||
map.put("disqus.shortname", disqusShortname);
|
||||
}
|
||||
if (enableGoogleAnalytics != null) {
|
||||
map.put("enable.google.analytics", enableGoogleAnalytics);
|
||||
}
|
||||
if (googleAnalyticsId != null) {
|
||||
map.put("google.analytics.id", googleAnalyticsId);
|
||||
}
|
||||
if(googleAnalyticsDomain != null){
|
||||
map.put("google.analytics.domain", googleAnalyticsDomain);
|
||||
}
|
||||
if (pdfUrl != null) {
|
||||
map.put("pdf.url", pdfUrl);
|
||||
}
|
||||
if (legalNoticeUrl != null) {
|
||||
map.put("legal.notice.url", legalNoticeUrl);
|
||||
}
|
||||
|
||||
if(canonicalUrlBase != null){
|
||||
map.put("canonical.url.base",canonicalUrlBase);
|
||||
}
|
||||
map.put("replacementsFile", replacementsFile);
|
||||
if(security != null){
|
||||
map.put("security",security);
|
||||
}
|
||||
if(showChangebars != null){
|
||||
map.put("show.changebars",showChangebars);
|
||||
}
|
||||
if(metaRobots != null){
|
||||
map.put("meta.robots",metaRobots);
|
||||
}
|
||||
if(trimWadlUriCount != null){
|
||||
map.put("trim.wadl.uri.count",trimWadlUriCount);
|
||||
}
|
||||
if(chunkSectionDepth != null){
|
||||
map.put("chunk.section.depth",chunkSectionDepth);
|
||||
}
|
||||
map.put("social.icons",socialIcons);
|
||||
|
||||
// sourceDocBook = new File(sourceFilename);
|
||||
// sourceDirectory = sourceDocBook.getParentFile();
|
||||
// map.put("docbook.infile",sourceDocBook);
|
||||
// map.put("source.directory",sourceDirectory);
|
||||
|
||||
// Profiling attrs:
|
||||
map.put("profile.os", getProperty("profileOs"));
|
||||
map.put("profile.arch", getProperty("profileArch"));
|
||||
map.put("profile.condition", getProperty("profileCondition"));
|
||||
map.put("profile.audience", getProperty("profileAudience"));
|
||||
map.put("profile.conformance", getProperty("profileConformance"));
|
||||
map.put("profile.revision", getProperty("profileRevision"));
|
||||
map.put("profile.userlevel", getProperty("profileUserlevel"));
|
||||
map.put("profile.vendor", getProperty("profileVendor"));
|
||||
|
||||
map.put("inputSrcFile", inputFilename);
|
||||
|
||||
int lastSlash=inputFilename.lastIndexOf("/");
|
||||
|
||||
//This is the case if the path includes a relative path
|
||||
if(-1!=lastSlash){
|
||||
String theFileName=inputFilename.substring(lastSlash);
|
||||
String theDirName=inputFilename.substring(0,lastSlash);
|
||||
|
||||
int index = theFileName.indexOf('.');
|
||||
if(-1!=index){
|
||||
File targetDir=new File("target/docbkx/xhtml/"+theDirName+theFileName.substring(0,index) + "/");
|
||||
|
||||
map.put("base.dir", targetDir);
|
||||
}
|
||||
else{
|
||||
//getLog().info("~~~~~~~~theFileName file has incompatible format: "+theFileName);
|
||||
}
|
||||
|
||||
}
|
||||
//This is the case when it's just a file name with no path information
|
||||
else{
|
||||
String theFileName=inputFilename;
|
||||
int index = theFileName.indexOf('.');
|
||||
if(-1!=index){
|
||||
File targetDir=new File("target/docbkx/xhtml/"+theFileName.substring(0,index) + "/");
|
||||
map.put("base.dir", targetDir);
|
||||
map.put("input.filename", theFileName.substring(0,index));
|
||||
|
||||
}
|
||||
else{
|
||||
//getLog().info("~~~~~~~~inputFilename file has incompatible format: "+inputFilename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return CalabashHelper.createSource(getLog(), source, pathToPipelineFile, map);
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,120 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.calabash.extensions;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URI;
|
||||
|
||||
import net.sf.saxon.s9api.QName;
|
||||
import net.sf.saxon.s9api.SaxonApiException;
|
||||
import net.sf.saxon.s9api.XdmNode;
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
import org.apache.maven.plugin.logging.SystemStreamLog;
|
||||
|
||||
import com.xmlcalabash.core.XProcException;
|
||||
import com.xmlcalabash.core.XProcRuntime;
|
||||
import com.xmlcalabash.io.ReadablePipe;
|
||||
import com.xmlcalabash.io.WritablePipe;
|
||||
import com.xmlcalabash.library.DefaultStep;
|
||||
import com.xmlcalabash.model.RuntimeValue;
|
||||
import com.xmlcalabash.runtime.XAtomicStep;
|
||||
import com.xmlcalabash.util.ProcessMatch;
|
||||
|
||||
public class CopyAndTransformXProcStep extends DefaultStep {
|
||||
private static final QName _target = new QName("target");
|
||||
private static final QName _targetHtmlContentDir = new QName("targetHtmlContentDir");
|
||||
private static final QName _outputType = new QName("outputType");
|
||||
private static final QName _fail_on_error = new QName("fail-on-error");
|
||||
|
||||
private ReadablePipe source = null;
|
||||
private WritablePipe result = null;
|
||||
private ProcessMatch matcher = null;
|
||||
|
||||
|
||||
private Log log = null;
|
||||
|
||||
public Log getLog()
|
||||
{
|
||||
if ( log == null )
|
||||
{
|
||||
log = new SystemStreamLog();
|
||||
}
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
|
||||
public CopyAndTransformXProcStep(XProcRuntime runtime, XAtomicStep step) {
|
||||
super(runtime,step);
|
||||
}
|
||||
|
||||
public void setInput(String port, ReadablePipe pipe) {
|
||||
source = pipe;
|
||||
}
|
||||
|
||||
public void setOutput(String port, WritablePipe pipe) {
|
||||
result = pipe;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
source.resetReader();
|
||||
result.resetWriter();
|
||||
}
|
||||
|
||||
public void run() throws SaxonApiException {
|
||||
super.run();
|
||||
|
||||
XdmNode updatedDoc = processInlineImages (source.read());
|
||||
result.write(updatedDoc);
|
||||
}
|
||||
|
||||
private URI getTargetDirectoryURI() {
|
||||
RuntimeValue target = getOption(_target);
|
||||
URI uri = null;
|
||||
|
||||
if (target != null) {
|
||||
uri = target.getBaseURI().resolve(FilenameUtils.normalizeNoEndSeparator(target.getString()).replace(File.separatorChar, '/'));
|
||||
}
|
||||
|
||||
return uri;
|
||||
}
|
||||
|
||||
private URI getTargetHtmlContentDirectoryURI() {
|
||||
RuntimeValue target = getOption(_targetHtmlContentDir);
|
||||
URI uri = null;
|
||||
if (target != null) {
|
||||
uri = target.getBaseURI().resolve(target.getString().replace(File.separatorChar, '/'));
|
||||
}
|
||||
return uri;
|
||||
}
|
||||
|
||||
private String getOutputType() {
|
||||
return getOption(_outputType, "Unknown");
|
||||
}
|
||||
|
||||
private boolean isFailOnErrorFlagSet() {
|
||||
return getOption(_fail_on_error, true);
|
||||
}
|
||||
|
||||
|
||||
private XdmNode processInlineImages(XdmNode doc) {
|
||||
String fileRefsXpath = "//*:imagedata/@fileref";
|
||||
CopyTransformImage copyTransform =
|
||||
new CopyTransformImage( fileRefsXpath,
|
||||
getTargetDirectoryURI(),
|
||||
getTargetHtmlContentDirectoryURI(),
|
||||
getOutputType());
|
||||
|
||||
matcher = new ProcessMatch(runtime, copyTransform);
|
||||
copyTransform.setMatcher(matcher);
|
||||
|
||||
matcher.match(doc, new RuntimeValue(fileRefsXpath));
|
||||
doc = matcher.getResult();
|
||||
|
||||
if (copyTransform.hasErrors() && isFailOnErrorFlagSet()) {
|
||||
throw new XProcException("One or more images refered in the docbook were not found. Please see log for details.");
|
||||
}
|
||||
|
||||
return doc;
|
||||
}
|
||||
}
|
@ -1,292 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.calabash.extensions;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.net.URI;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import net.sf.saxon.s9api.QName;
|
||||
import net.sf.saxon.s9api.SaxonApiException;
|
||||
import net.sf.saxon.s9api.XdmNode;
|
||||
|
||||
import org.apache.batik.transcoder.TranscoderException;
|
||||
import org.apache.batik.transcoder.TranscoderInput;
|
||||
import org.apache.batik.transcoder.TranscoderOutput;
|
||||
import org.apache.batik.transcoder.image.PNGTranscoder;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
import org.apache.maven.plugin.logging.SystemStreamLog;
|
||||
|
||||
import com.rackspace.cloud.api.docs.calabash.extensions.util.RelativePath;
|
||||
import com.xmlcalabash.core.XProcException;
|
||||
import com.xmlcalabash.util.ProcessMatch;
|
||||
import com.xmlcalabash.util.ProcessMatchingNodes;
|
||||
|
||||
/**
|
||||
* Created with IntelliJ IDEA.
|
||||
* User: ykamran
|
||||
* Date: 9/12/12
|
||||
* Time: 6:29 PM
|
||||
* To change this template use File | Settings | File Templates.
|
||||
*/
|
||||
|
||||
public class CopyTransformImage implements ProcessMatchingNodes {
|
||||
private String xpath;
|
||||
private Map<String, String> baseUriToDirMap = new HashMap<String, String>();
|
||||
private AtomicInteger simpleUniqueNumberGenerator = new AtomicInteger();
|
||||
private Map<String, String> processedFilesMapForHtmlOutput = new HashMap<String, String>();
|
||||
private Set<String> processedFilesSetForPdfOutput = new HashSet<String>();
|
||||
private ProcessMatch matcher;
|
||||
|
||||
private URI targetDirectoryUri;
|
||||
private URI targetHtmlContentDirectoryUri;
|
||||
private String outputType;
|
||||
|
||||
private boolean errorsFound = false;
|
||||
|
||||
|
||||
private Log log = null;
|
||||
|
||||
public Log getLog() {
|
||||
if (log == null) {
|
||||
log = new SystemStreamLog();
|
||||
}
|
||||
return log;
|
||||
}
|
||||
|
||||
public CopyTransformImage(String _xpath, URI _targetDirectory, URI _targetHtmlContentDirectoryUri, String _outputType) {
|
||||
this.xpath = _xpath;
|
||||
this.targetDirectoryUri = _targetDirectory;
|
||||
this.targetHtmlContentDirectoryUri = _targetHtmlContentDirectoryUri;
|
||||
this.outputType = _outputType;
|
||||
}
|
||||
|
||||
public boolean hasErrors() {
|
||||
return errorsFound;
|
||||
}
|
||||
|
||||
public String getXPath() {
|
||||
return xpath;
|
||||
}
|
||||
|
||||
public void setMatcher (ProcessMatch matcher) {
|
||||
this.matcher = matcher;
|
||||
}
|
||||
|
||||
private String processSelectedImage(XdmNode imageDataFileRef) {
|
||||
final URI baseUri = imageDataFileRef.getBaseURI();
|
||||
final String fileRef = imageDataFileRef.getStringValue();
|
||||
final URI baseDirUri = baseUri.resolve(".");
|
||||
|
||||
String srcImgFilePath = FilenameUtils.normalize(baseDirUri.getPath() + File.separator + fileRef);
|
||||
File srcImgFile = getFileHandle(srcImgFilePath.trim());
|
||||
|
||||
if (fileRef.toLowerCase().startsWith("http://") ||
|
||||
fileRef.toLowerCase().startsWith("https://")) {
|
||||
getLog().warn("Found reference to an external image " + fileRef + " in " + baseUri.getPath());
|
||||
return fileRef;
|
||||
}
|
||||
else if (outputType.equals("pdf")) {
|
||||
//Need to check only for the existence of the image file
|
||||
if (this.processedFilesSetForPdfOutput.contains(srcImgFilePath)) {
|
||||
//do nothing as any errors for missing files would already have been reported
|
||||
}
|
||||
else if (isImageForHtmlOnly(imageDataFileRef.getParent())) {
|
||||
//ignore this imagedata
|
||||
}
|
||||
else if (! fileExists(srcImgFile)) {
|
||||
reportImageNotFoundError(baseUri, fileRef, srcImgFile);
|
||||
}
|
||||
this.processedFilesSetForPdfOutput.add(srcImgFilePath);
|
||||
//For pdf output always return the input fileRef
|
||||
return fileRef;
|
||||
}
|
||||
else if (outputType.equals("html")) {
|
||||
//check if we have already copied this particular image to webhelp folder
|
||||
if (this.processedFilesMapForHtmlOutput.containsKey(srcImgFilePath)) {
|
||||
return this.processedFilesMapForHtmlOutput.get(srcImgFilePath);
|
||||
}
|
||||
|
||||
String targetDirPath = calculateTargetDirPath(baseUri.getPath(), fileRef);
|
||||
File targetDir = makeDirs(targetDirPath);
|
||||
String relativePathToCopiedFile;
|
||||
|
||||
//For HTML, we need a more elaborate check for missing images
|
||||
if (isImageForPdfOnly(imageDataFileRef.getParent())) {
|
||||
//ignore this imagedata
|
||||
relativePathToCopiedFile = fileRef;
|
||||
}
|
||||
else if (! fileExists(srcImgFile)) {
|
||||
reportImageNotFoundError(baseUri, fileRef, srcImgFile);
|
||||
relativePathToCopiedFile = fileRef;
|
||||
}
|
||||
else if ("svg".equalsIgnoreCase(FilenameUtils.getExtension(srcImgFilePath))) {
|
||||
//convert the svg to the relevant type and copy
|
||||
File svgFile = getFileHandle(srcImgFilePath);
|
||||
File copiedFile = new TransformSVGToPNG().transformAndCopy(svgFile, targetDir);
|
||||
relativePathToCopiedFile = RelativePath.getRelativePath(new File(targetHtmlContentDirectoryUri), copiedFile);
|
||||
}
|
||||
else {
|
||||
//simply copy the src file to the destination
|
||||
File copiedFile = copyFile(srcImgFile, targetDir);
|
||||
relativePathToCopiedFile = RelativePath.getRelativePath(new File(targetHtmlContentDirectoryUri), copiedFile);
|
||||
}
|
||||
this.processedFilesMapForHtmlOutput.put(srcImgFilePath, relativePathToCopiedFile);
|
||||
return relativePathToCopiedFile;
|
||||
}
|
||||
else {
|
||||
//we only know how to handle "pdf" and "html" outputTypes so just return the value
|
||||
return fileRef;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isImageForHtmlOnly(XdmNode imageDataNode) {
|
||||
return parentRoleEquals(imageDataNode, "html");
|
||||
}
|
||||
|
||||
private boolean isImageForPdfOnly(XdmNode imageDataNode) {
|
||||
return parentRoleEquals(imageDataNode, "fo") || parentRoleEquals(imageDataNode, "pdf");
|
||||
}
|
||||
|
||||
private boolean parentRoleEquals(XdmNode node, String role) {
|
||||
XdmNode parent = node.getParent();
|
||||
String parentRole = (parent==null ? null : parent.getAttributeValue(new QName("role")));
|
||||
if (parentRole != null &&
|
||||
parentRole.equalsIgnoreCase(role)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private String calculateTargetDirPath(String baseUriPath, String fileRef) {
|
||||
String targetDirForBaseUri = null;
|
||||
if (this.baseUriToDirMap.containsKey(baseUriPath)) {
|
||||
targetDirForBaseUri = this.baseUriToDirMap.get(baseUriPath);
|
||||
} else {
|
||||
targetDirForBaseUri = "" + this.simpleUniqueNumberGenerator.incrementAndGet();
|
||||
this.baseUriToDirMap.put(baseUriPath, targetDirForBaseUri);
|
||||
}
|
||||
|
||||
String targetDirForFileRef = FilenameUtils.getPathNoEndSeparator(fileRef.replaceAll("\\.\\.", "a"));
|
||||
return (targetDirForBaseUri + File.separator + targetDirForFileRef);
|
||||
}
|
||||
|
||||
private File copyFile(File srcFile, File targetDir) {
|
||||
try {
|
||||
FileUtils.copyFileToDirectory(srcFile, targetDir);
|
||||
} catch (IOException e) {
|
||||
getLog().error("Unable to copy file: " + srcFile.getAbsolutePath() + " to " + targetDir.getAbsolutePath());
|
||||
throw new XProcException(e);
|
||||
}
|
||||
return new File(targetDir.getAbsolutePath(), srcFile.getName());
|
||||
}
|
||||
|
||||
private void reportImageNotFoundError(URI baseUri, String fileRef, File srcImgFile) {
|
||||
getLog().error( "File not found: '" + srcImgFile + "'. " +
|
||||
"File is referred in '" + baseUri.getPath() + "' fileRef='" + fileRef + "'.");
|
||||
this.errorsFound = true;
|
||||
}
|
||||
|
||||
private boolean fileExists(File file) {
|
||||
try {
|
||||
return file==null ? false : file.exists() && file.getCanonicalPath().endsWith(file.getName());
|
||||
} catch (IOException e) {
|
||||
getLog().error("Unable to access file: " + file.getAbsolutePath());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private File makeDirs(String relativePath) {
|
||||
File dir = new File(targetDirectoryUri.getPath(), relativePath);
|
||||
if (dir.exists() || dir.mkdir() || dir.mkdirs()) {
|
||||
return dir;
|
||||
} else {
|
||||
getLog().error("Unable to create directory: " + dir.getAbsolutePath());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private File getFileHandle(String filePath) {
|
||||
File handle = new File(filePath);
|
||||
return (handle.isDirectory() ? null : handle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processStartDocument(XdmNode node) throws SaxonApiException {
|
||||
return true;//process children
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEndDocument(XdmNode node) throws SaxonApiException {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processStartElement(XdmNode node) throws SaxonApiException {
|
||||
return true;//process children
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processAttribute(XdmNode node) throws SaxonApiException {
|
||||
String newValue = processSelectedImage(node);
|
||||
matcher.addAttribute(node, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEndElement(XdmNode node) throws SaxonApiException { }
|
||||
|
||||
@Override
|
||||
public void processText(XdmNode node) throws SaxonApiException {
|
||||
String newValue = processSelectedImage(node);
|
||||
matcher.addText(newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processComment(XdmNode node) throws SaxonApiException {
|
||||
String newValue = processSelectedImage(node);
|
||||
matcher.addText(newValue);}
|
||||
|
||||
@Override
|
||||
public void processPI(XdmNode node) throws SaxonApiException {
|
||||
String newValue = processSelectedImage(node);
|
||||
matcher.addText(newValue);
|
||||
}
|
||||
|
||||
private class TransformSVGToPNG {
|
||||
|
||||
File transformAndCopy(File svgFile, File targetDir) {
|
||||
String pngFileName = FilenameUtils.getBaseName(svgFile.getPath()) + ".png";
|
||||
File pngFile = new File(targetDir, pngFileName);
|
||||
PNGTranscoder t = new PNGTranscoder();
|
||||
|
||||
try {
|
||||
TranscoderInput input = new TranscoderInput(svgFile.toURI().toString());
|
||||
pngFile.createNewFile();
|
||||
|
||||
OutputStream ostream = new FileOutputStream(pngFile);
|
||||
TranscoderOutput output = new TranscoderOutput(ostream);
|
||||
|
||||
t.transcode(input, output);
|
||||
ostream.flush();
|
||||
ostream.close();
|
||||
|
||||
return pngFile;
|
||||
} catch (IOException e) {
|
||||
getLog().error("An error occured while transforming " + svgFile.getAbsolutePath() + " to " + pngFile.getAbsolutePath());
|
||||
throw new XProcException(e);
|
||||
} catch (TranscoderException e) {
|
||||
getLog().error("Unable to convert " + svgFile.getAbsolutePath() + " to png");
|
||||
throw new XProcException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,252 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.calabash.extensions;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.sf.saxon.s9api.QName;
|
||||
import net.sf.saxon.s9api.SaxonApiException;
|
||||
import net.sf.saxon.s9api.XdmNode;
|
||||
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
import org.apache.maven.plugin.logging.SystemStreamLog;
|
||||
|
||||
import com.xmlcalabash.core.XProcRuntime;
|
||||
import com.xmlcalabash.io.ReadablePipe;
|
||||
import com.xmlcalabash.io.WritablePipe;
|
||||
import com.xmlcalabash.library.DefaultStep;
|
||||
import com.xmlcalabash.model.RuntimeValue;
|
||||
import com.xmlcalabash.runtime.XAtomicStep;
|
||||
import com.xmlcalabash.util.ProcessMatch;
|
||||
import com.xmlcalabash.util.ProcessMatchingNodes;
|
||||
|
||||
public class ReplaceTextXProcStep extends DefaultStep {
|
||||
private static final QName _replacements_file = new QName("", "replacements.file");
|
||||
private static Pattern XPATH_LINE = Pattern.compile("^XPATH=(.+)$");
|
||||
private static Pattern COMMENT_LINE = Pattern.compile("^#(.+)$");
|
||||
private static Pattern REPLACEMENT_LINE = Pattern.compile("(.+)->(.*)");
|
||||
|
||||
private ReadablePipe source = null;
|
||||
private WritablePipe result = null;
|
||||
private ProcessMatch matcher = null;
|
||||
|
||||
private Log log = null;
|
||||
|
||||
public Log getLog()
|
||||
{
|
||||
if ( log == null )
|
||||
{
|
||||
log = new SystemStreamLog();
|
||||
}
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
|
||||
public ReplaceTextXProcStep(XProcRuntime runtime, XAtomicStep step) {
|
||||
super(runtime,step);
|
||||
}
|
||||
|
||||
public void setInput(String port, ReadablePipe pipe) {
|
||||
source = pipe;
|
||||
}
|
||||
|
||||
public void setOutput(String port, WritablePipe pipe) {
|
||||
result = pipe;
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
source.resetReader();
|
||||
result.resetWriter();
|
||||
}
|
||||
|
||||
public void run() throws SaxonApiException {
|
||||
super.run();
|
||||
|
||||
List<XPathReplacement> replacements = readReplacementsFile(getOption(_replacements_file, "replacements.config"));
|
||||
XdmNode updatedDoc = makeReplacements (source.read(), replacements);
|
||||
|
||||
result.write(updatedDoc);
|
||||
}
|
||||
|
||||
private List<XPathReplacement> readReplacementsFile(String fileName) {
|
||||
List<XPathReplacement> xpathReplacements = new ArrayList<XPathReplacement>();
|
||||
XPathReplacement currentXPath = new XPathReplacement("//text()");
|
||||
|
||||
File replacementsFile = new File(fileName);
|
||||
long fileLength = replacementsFile.length();
|
||||
if(fileLength>0){
|
||||
BufferedReader br = null;
|
||||
try {
|
||||
if (getLog().isDebugEnabled()) {
|
||||
getLog().info("REPLACEMENTS FILE = " + replacementsFile.getAbsolutePath());
|
||||
}
|
||||
br = new BufferedReader(new FileReader(replacementsFile));
|
||||
|
||||
String line;
|
||||
while((line = br.readLine()) != null) {
|
||||
Matcher xpathLine = XPATH_LINE.matcher(line);
|
||||
Matcher commentLine = COMMENT_LINE.matcher(line);
|
||||
Matcher replacementLine = REPLACEMENT_LINE.matcher(line);
|
||||
if (xpathLine.matches()) {
|
||||
currentXPath = new XPathReplacement(xpathLine.group(1).trim());
|
||||
xpathReplacements.add(currentXPath);
|
||||
} else if (commentLine.matches()) {
|
||||
/*ignore comment line.
|
||||
* Although this could have been handled in the default else below.
|
||||
* Had to create an explicit case here so that any reference to the token separator "->"
|
||||
* in comments does not cause any issues.
|
||||
*/
|
||||
} else if (replacementLine.matches()) {
|
||||
currentXPath.add(replacementLine.group(1).trim(), replacementLine.group(2).trim());
|
||||
} else {
|
||||
//ignore input line
|
||||
}
|
||||
}
|
||||
if (xpathReplacements.size()==0 && getLog().isDebugEnabled()) {
|
||||
getLog().info("SKIPPING REPLACEMENTS: Replacements file is empty or was not found at specified location '"+fileName+ "'.");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
getLog().error("Unable to process replacements config file", e);
|
||||
} finally {
|
||||
try {
|
||||
br.close();
|
||||
} catch (IOException e) {
|
||||
getLog().error("Unable to release/close replacements config file", e);
|
||||
}
|
||||
}
|
||||
} else if(getLog().isDebugEnabled()) {
|
||||
getLog().info("SKIPPING REPLACEMENTS: Replacements file is empty or was not found at specified location '"+fileName+ "'.");
|
||||
}
|
||||
|
||||
return xpathReplacements;
|
||||
}
|
||||
|
||||
private XdmNode makeReplacements(XdmNode doc, List<XPathReplacement> replacements) {
|
||||
for (XPathReplacement xpathRepl : replacements) {
|
||||
matcher = new ProcessMatch(runtime, xpathRepl);
|
||||
xpathRepl.setMatcher(matcher);
|
||||
|
||||
matcher.match(doc, new RuntimeValue(xpathRepl.getXPath()));
|
||||
doc = matcher.getResult();
|
||||
}
|
||||
|
||||
return doc;
|
||||
}
|
||||
}
|
||||
|
||||
class XPathReplacement implements Iterable<Replacement>, ProcessMatchingNodes {
|
||||
String xpath;
|
||||
List<Replacement> replacements;
|
||||
ProcessMatch matcher;
|
||||
|
||||
public XPathReplacement(String _xpath) {
|
||||
this.xpath = _xpath;
|
||||
replacements = new ArrayList<Replacement>();
|
||||
}
|
||||
|
||||
public String getXPath() {
|
||||
return xpath;
|
||||
}
|
||||
|
||||
public void setMatcher (ProcessMatch matcher) {
|
||||
this.matcher = matcher;
|
||||
}
|
||||
|
||||
public void add(String oldVal, String newVal) {
|
||||
replacements.add(new Replacement(oldVal, newVal));
|
||||
}
|
||||
|
||||
private String computeReplacement(XdmNode node) {
|
||||
String newValue = node.getStringValue();
|
||||
for (Replacement repl : this.replacements) {
|
||||
if(repl.oldValue.startsWith("\"") && repl.oldValue.endsWith("\"")) {
|
||||
newValue = (newValue.replace(repl.oldValue.substring(1,repl.oldValue.length()-1), repl.newValue));
|
||||
} else {
|
||||
newValue = (newValue.replaceAll(repl.oldValue, repl.newValue));
|
||||
}
|
||||
|
||||
}
|
||||
return newValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<Replacement> iterator() {
|
||||
return replacements.iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processStartDocument(XdmNode node) throws SaxonApiException {
|
||||
return true;//process children
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEndDocument(XdmNode node) throws SaxonApiException {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processStartElement(XdmNode node) throws SaxonApiException {
|
||||
return true;//process children
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processAttribute(XdmNode node) throws SaxonApiException {
|
||||
String newValue = computeReplacement(node);
|
||||
matcher.addAttribute(node, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processEndElement(XdmNode node) throws SaxonApiException { }
|
||||
|
||||
@Override
|
||||
public void processText(XdmNode node) throws SaxonApiException {
|
||||
String newValue = computeReplacement(node);
|
||||
matcher.addText(newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processComment(XdmNode node) throws SaxonApiException {
|
||||
String newValue = computeReplacement(node);
|
||||
matcher.addText(newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processPI(XdmNode node) throws SaxonApiException {
|
||||
String newValue = computeReplacement(node);
|
||||
matcher.addText(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
class Replacement {
|
||||
public String oldValue;
|
||||
public String newValue;
|
||||
|
||||
public Replacement(String _oldVal, String _newVal) {
|
||||
this.oldValue = _oldVal;
|
||||
this.newValue = _newVal;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = oldValue.hashCode();
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if(!(o instanceof Replacement)) return false;
|
||||
|
||||
Replacement repl = (Replacement) o;
|
||||
if(this.oldValue.equals(repl.oldValue)) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
@ -1,101 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.calabash.extensions.util;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* this class provides functions used to generate a relative path
|
||||
* from two absolute paths
|
||||
* @author David M. Howard
|
||||
*/
|
||||
public class RelativePath {
|
||||
/**
|
||||
* break a path down into individual elements and add to a list.
|
||||
* example : if a path is /a/b/c/d.txt, the breakdown will be [d.txt,c,b,a]
|
||||
* @param f input file
|
||||
* @return a List collection with the individual elements of the path in
|
||||
reverse order
|
||||
*/
|
||||
private static List<String> getPathList(File f) {
|
||||
List<String> l = new ArrayList<String>();
|
||||
File r;
|
||||
try {
|
||||
r = f.getCanonicalFile();
|
||||
while(r != null) {
|
||||
l.add(r.getName());
|
||||
r = r.getParentFile();
|
||||
}
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
l = null;
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
/**
|
||||
* figure out a string representing the relative path of
|
||||
* 'f' with respect to 'r'
|
||||
* @param r home path
|
||||
* @param f path of file
|
||||
*/
|
||||
private static String matchPathLists(List<String> r,List<String> f) {
|
||||
int i;
|
||||
int j;
|
||||
String s;
|
||||
// start at the beginning of the lists
|
||||
// iterate while both lists are equal
|
||||
s = "";
|
||||
i = r.size()-1;
|
||||
j = f.size()-1;
|
||||
|
||||
// first eliminate common root
|
||||
while((i >= 0)&&(j >= 0)&&(r.get(i).equals(f.get(j)))) {
|
||||
i--;
|
||||
j--;
|
||||
}
|
||||
|
||||
// for each remaining level in the home path, add a ..
|
||||
for(;i>=0;i--) {
|
||||
s += ".." + File.separator;
|
||||
}
|
||||
|
||||
// for each level in the file path, add the path
|
||||
for(;j>=1;j--) {
|
||||
s += f.get(j) + File.separator;
|
||||
}
|
||||
|
||||
// file name
|
||||
s += f.get(j);
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* get relative path of File 'f' with respect to 'home' directory
|
||||
* example : home = /a/b/c
|
||||
* f = /a/d/e/x.txt
|
||||
* s = getRelativePath(home,f) = ../../d/e/x.txt
|
||||
* @param home base path, should be a directory, not a file, or it doesn't
|
||||
make sense
|
||||
* @param f file to generate path for
|
||||
* @return path from home to f as a string
|
||||
*/
|
||||
public static String getRelativePath(File home,File f){
|
||||
List<String> homelist = getPathList(home);
|
||||
List<String> filelist = getPathList(f);
|
||||
String s = matchPathLists(homelist,filelist);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
/**
|
||||
* test the function
|
||||
*/
|
||||
public static void main(String args[]) {
|
||||
String home = "/home/user1/content/myfolder";
|
||||
String file = "/home/user1/figures/fig.png";
|
||||
System.out.println("home = " + home);
|
||||
System.out.println("file = " + file);
|
||||
System.out.println("path = " + getRelativePath(new File(home),new File(file)));
|
||||
}
|
||||
}
|
@ -1,89 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
import com.rackspace.cloud.api.docs.pipeline.resolvers.InputStreamUriParameterResolver;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
public abstract class AbstractPipeline implements Pipeline {
|
||||
private static final Logger LOG = Logger.getLogger(AbstractPipeline.class.getName());
|
||||
private final InputStreamUriParameterResolver resolver;
|
||||
|
||||
public AbstractPipeline(InputStreamUriParameterResolver resolver) {
|
||||
this.resolver = resolver;
|
||||
}
|
||||
|
||||
protected abstract <T> void addParameter(PipelineInput<T> input);
|
||||
|
||||
protected abstract <T>void addPort(PipelineInput<T> input);
|
||||
|
||||
protected abstract <T>void addOption(PipelineInput<T> input);
|
||||
|
||||
protected void handleInputs(PipelineInput<?>... inputs) {
|
||||
handleInputs(Arrays.asList(inputs));
|
||||
}
|
||||
|
||||
protected void handleInputs(List<PipelineInput<?>> inputs) {
|
||||
for (PipelineInput<?> input: inputs) {
|
||||
switch (input.getType()) {
|
||||
case PORT:
|
||||
addPort(input);
|
||||
break;
|
||||
|
||||
case PARAMETER:
|
||||
addParameter(input);
|
||||
break;
|
||||
|
||||
case OPTION:
|
||||
addOption(input);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new IllegalArgumentException("Input type not supported: " + input.getType());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected InputStreamUriParameterResolver getUriResolver() {
|
||||
return resolver;
|
||||
}
|
||||
|
||||
protected <T> void clearParameter(PipelineInput<T> input) {
|
||||
T source = input.getSource();
|
||||
|
||||
if (source instanceof InputStream) {
|
||||
try {
|
||||
((InputStream)source).close();
|
||||
} catch (IOException ex) {
|
||||
LOG.log(Level.SEVERE, "Unable to close input stream. Reason: " + ex.getMessage(), ex);
|
||||
}
|
||||
resolver.removeStream((InputStream)source);
|
||||
}
|
||||
}
|
||||
|
||||
protected void clearParameters(PipelineInput<?>... inputs) {
|
||||
clearParameters(Arrays.asList(inputs));
|
||||
}
|
||||
|
||||
protected void clearParameters(List<PipelineInput<?>> inputs) {
|
||||
|
||||
for (PipelineInput<?> input: inputs) {
|
||||
switch (input.getType()) {
|
||||
case PARAMETER:
|
||||
clearParameter(input);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(PipelineInput<?>... inputs) {
|
||||
run(Arrays.asList(inputs));
|
||||
}
|
||||
|
||||
}
|
@ -1,161 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
import com.rackspace.cloud.api.docs.pipeline.resolvers.InputStreamUriParameterResolver;
|
||||
import com.xmlcalabash.core.XProcRuntime;
|
||||
import com.xmlcalabash.io.ReadablePipe;
|
||||
import com.xmlcalabash.model.RuntimeValue;
|
||||
import com.xmlcalabash.runtime.XPipeline;
|
||||
import net.sf.saxon.s9api.QName;
|
||||
import net.sf.saxon.s9api.SaxonApiException;
|
||||
import net.sf.saxon.s9api.XdmNode;
|
||||
import org.xml.sax.InputSource;
|
||||
|
||||
import javax.xml.transform.*;
|
||||
import javax.xml.transform.dom.DOMResult;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CalabashPipeline extends AbstractPipeline implements Pipeline {
|
||||
private final XProcRuntime runtime;
|
||||
private final XPipeline pipeline;
|
||||
private final boolean legacySourceOutput;
|
||||
|
||||
public CalabashPipeline(XPipeline pipeline, XProcRuntime runtime, InputStreamUriParameterResolver resolver) {
|
||||
this(pipeline, runtime, resolver, false);
|
||||
}
|
||||
|
||||
public CalabashPipeline(XPipeline pipeline, XProcRuntime runtime, InputStreamUriParameterResolver resolver, boolean legacySourceOutput) {
|
||||
super(resolver);
|
||||
this.runtime = runtime;
|
||||
this.pipeline = pipeline;
|
||||
this.legacySourceOutput = legacySourceOutput;
|
||||
}
|
||||
|
||||
protected <T> RuntimeValue getRuntimeValue(PipelineInput<T> input) {
|
||||
RuntimeValue runtimeValue;
|
||||
T source = input.getSource();
|
||||
|
||||
if (source instanceof InputStream) {
|
||||
runtimeValue = new RuntimeValue(getUriResolver().addStream((InputStream)source));
|
||||
} else if (source instanceof String) {
|
||||
runtimeValue = new RuntimeValue(source.toString());
|
||||
} else {
|
||||
// TODO: handle other types?
|
||||
throw new IllegalArgumentException("Illegal input type: " + source.getClass().getName());
|
||||
}
|
||||
|
||||
return runtimeValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> void addParameter(PipelineInput<T> input) {
|
||||
RuntimeValue runtimeParam = getRuntimeValue(input);
|
||||
|
||||
if (pipeline.getInputs().contains("parameters")) {
|
||||
pipeline.setParameter("parameters", new QName("", input.getName()), runtimeParam);
|
||||
} else {
|
||||
pipeline.setParameter(new QName("", input.getName()), runtimeParam);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> void addOption(PipelineInput<T> input) {
|
||||
pipeline.setOption(new QName(input.getName()), getRuntimeValue(input));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> void addPort(PipelineInput<T> input) {
|
||||
XdmNode node;
|
||||
T source = input.getSource();
|
||||
|
||||
if (source instanceof InputSource) {
|
||||
node = runtime.parse((InputSource)source);
|
||||
} else if (input.getSource() instanceof XdmNode) {
|
||||
node = (XdmNode) source;
|
||||
} else {
|
||||
// TODO: handle other types?
|
||||
throw new IllegalArgumentException("Illegal port type: " + source.getClass().getName());
|
||||
}
|
||||
|
||||
pipeline.writeTo(input.getName(), node);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
pipeline.reset();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void run(List<PipelineInput<?>> inputs) {
|
||||
try {
|
||||
reset();
|
||||
handleInputs(inputs);
|
||||
try {
|
||||
|
||||
pipeline.run();
|
||||
|
||||
} finally {
|
||||
clearParameters(inputs);
|
||||
}
|
||||
} catch (SaxonApiException ex) {
|
||||
// TODO: Should we log the exception here?
|
||||
throw new PipelineException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Source> getResultPort(String name) {
|
||||
List<Source> ret = null;
|
||||
|
||||
if (!legacySourceOutput) {
|
||||
ret = getCalabashResultPort(name);
|
||||
} else {
|
||||
ret = getLegacyResultPort(name);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
protected List<Source> getCalabashResultPort(String name) {
|
||||
try {
|
||||
ReadablePipe pipe = pipeline.readFrom(name);
|
||||
List<Source> nodes = new ArrayList<Source>();
|
||||
|
||||
while(pipe.moreDocuments()) {
|
||||
nodes.add(pipe.read().asSource());
|
||||
}
|
||||
|
||||
return nodes;
|
||||
} catch (SaxonApiException ex) {
|
||||
// TODO: Should we log the exception here?
|
||||
throw new PipelineException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
protected List<Source> getLegacyResultPort(String name) {
|
||||
try {
|
||||
List<Source> standard = getCalabashResultPort (name);
|
||||
List<Source> ret = new ArrayList<Source>(standard.size());
|
||||
|
||||
TransformerFactory transFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null);
|
||||
Transformer transformer = transFactory.newTransformer();
|
||||
|
||||
for (Source s : standard) {
|
||||
DOMResult result = new DOMResult();
|
||||
transformer.transform (s, result);
|
||||
ret.add (new DOMSource (result.getNode()));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}catch (TransformerConfigurationException tce) {
|
||||
// TODO: Should we log the exception here?
|
||||
throw new PipelineException (tce);
|
||||
}catch (TransformerException te) {
|
||||
// TODO: Should we log the exception here?
|
||||
throw new PipelineException (te);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,77 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
import com.rackspace.cloud.api.docs.pipeline.resolvers.ClassPathUriResolver;
|
||||
import com.rackspace.cloud.api.docs.pipeline.resolvers.InputStreamUriParameterResolver;
|
||||
import com.xmlcalabash.core.XProcConfiguration;
|
||||
import com.xmlcalabash.core.XProcMessageListener;
|
||||
import com.xmlcalabash.core.XProcRuntime;
|
||||
import com.xmlcalabash.runtime.XPipeline;
|
||||
import com.xmlcalabash.util.Input;
|
||||
import com.xmlcalabash.util.XProcURIResolver;
|
||||
import net.sf.saxon.s9api.SaxonApiException;
|
||||
|
||||
import javax.xml.transform.URIResolver;
|
||||
|
||||
public class CalabashPipelineBuilder implements PipelineBuilder {
|
||||
private final boolean schemaAware;
|
||||
private final boolean legacySourceOutput;
|
||||
private XProcMessageListener messageListener;
|
||||
|
||||
public CalabashPipelineBuilder() {
|
||||
this(true, false);
|
||||
}
|
||||
|
||||
public CalabashPipelineBuilder(boolean schemaAware) {
|
||||
this(schemaAware, false);
|
||||
}
|
||||
|
||||
public CalabashPipelineBuilder(boolean schemaAware, boolean legacySourceOutput) {
|
||||
this.schemaAware = schemaAware;
|
||||
this.legacySourceOutput = legacySourceOutput;
|
||||
}
|
||||
|
||||
public CalabashPipelineBuilder(boolean schemaAware, boolean legacySourceOutput, XProcMessageListener messageListener) {
|
||||
this.schemaAware = schemaAware;
|
||||
this.legacySourceOutput = legacySourceOutput;
|
||||
this.messageListener = messageListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pipeline build(String pipelineUri) {
|
||||
try {
|
||||
XProcConfiguration config = new XProcConfiguration(schemaAware);
|
||||
XProcRuntime runtime = new XProcRuntime(config);
|
||||
if (messageListener != null) {
|
||||
runtime.setMessageListener(messageListener);
|
||||
}
|
||||
|
||||
InputStreamUriParameterResolver resolver = new InputStreamUriParameterResolver(new XProcURIResolver(runtime));
|
||||
resolver.addResolver(new ClassPathUriResolver());
|
||||
runtime.setURIResolver(resolver);
|
||||
XPipeline pipeline = runtime.load(new Input(pipelineUri));
|
||||
return new CalabashPipeline(pipeline, runtime, resolver, legacySourceOutput);
|
||||
} catch (SaxonApiException ex) {
|
||||
// TODO: Should we log the exception here?
|
||||
throw new PipelineException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pipeline build(String pipelineUri, URIResolver... resolvers) {
|
||||
try {
|
||||
XProcConfiguration config = new XProcConfiguration(schemaAware);
|
||||
XProcRuntime runtime = new XProcRuntime(config);
|
||||
InputStreamUriParameterResolver streamResolver = new InputStreamUriParameterResolver(new XProcURIResolver(runtime));
|
||||
streamResolver.addResolver(new ClassPathUriResolver());
|
||||
for (URIResolver resolver: resolvers) {
|
||||
streamResolver.addResolver(resolver);
|
||||
}
|
||||
runtime.setURIResolver(streamResolver);
|
||||
XPipeline pipeline = runtime.load(new Input(pipelineUri));
|
||||
return new CalabashPipeline(pipeline, runtime, streamResolver);
|
||||
} catch (SaxonApiException ex) {
|
||||
// TODO: Should we log the exception here?
|
||||
throw new PipelineException(ex);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,167 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
import com.xmlcalabash.core.XProcException;
|
||||
import com.xmlcalabash.core.XProcMessageListener;
|
||||
import com.xmlcalabash.core.XProcRunnable;
|
||||
import com.xmlcalabash.util.URIUtils;
|
||||
import java.net.URI;
|
||||
import javax.xml.transform.SourceLocator;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import net.sf.saxon.om.StructuredQName;
|
||||
import net.sf.saxon.s9api.QName;
|
||||
import net.sf.saxon.s9api.XdmNode;
|
||||
import net.sf.saxon.trans.XPathException;
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author samu6505
|
||||
*/
|
||||
public class MavenXProcMessageListener implements XProcMessageListener {
|
||||
private final Log log;
|
||||
|
||||
public MavenXProcMessageListener(Log log) {
|
||||
this.log = log;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(XProcRunnable step, XdmNode node, String message, QName code) {
|
||||
log.error(message(step, node, message, code));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void error(Throwable exception) {
|
||||
log.error(exceptionMessage(exception) + exception.getMessage());
|
||||
}
|
||||
|
||||
private String exceptionMessage(Throwable exception) {
|
||||
StructuredQName qCode = null;
|
||||
SourceLocator loc = null;
|
||||
String message = "";
|
||||
|
||||
if (exception instanceof XPathException) {
|
||||
qCode = ((XPathException) exception).getErrorCodeQName();
|
||||
}
|
||||
|
||||
if (exception instanceof TransformerException) {
|
||||
TransformerException tx = (TransformerException) exception;
|
||||
if (qCode == null && tx.getException() instanceof XPathException) {
|
||||
qCode = ((XPathException) tx.getException()).getErrorCodeQName();
|
||||
}
|
||||
|
||||
if (tx.getLocator() != null) {
|
||||
loc = tx.getLocator();
|
||||
boolean done = false;
|
||||
while (!done && loc == null) {
|
||||
if (tx.getException() instanceof TransformerException) {
|
||||
tx = (TransformerException) tx.getException();
|
||||
loc = tx.getLocator();
|
||||
} else if (exception.getCause() instanceof TransformerException) {
|
||||
tx = (TransformerException) exception.getCause();
|
||||
loc = tx.getLocator();
|
||||
} else {
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (exception instanceof XProcException) {
|
||||
XProcException err = (XProcException) exception;
|
||||
loc = err.getLocator();
|
||||
if (err.getErrorCode() != null) {
|
||||
QName n = err.getErrorCode();
|
||||
qCode = new StructuredQName(n.getPrefix(),n.getNamespaceURI(),n.getLocalName());
|
||||
}
|
||||
if (err.getStep() != null) {
|
||||
message = message + err.getStep() + ":";
|
||||
}
|
||||
}
|
||||
|
||||
if (loc != null) {
|
||||
if (loc.getSystemId() != null && !"".equals(loc.getSystemId())) {
|
||||
message = message + loc.getSystemId() + ":";
|
||||
}
|
||||
if (loc.getLineNumber() != -1) {
|
||||
message = message + loc.getLineNumber() + ":";
|
||||
}
|
||||
if (loc.getColumnNumber() != -1) {
|
||||
message = message + loc.getColumnNumber() + ":";
|
||||
}
|
||||
}
|
||||
|
||||
if (qCode != null) {
|
||||
message = message + qCode.getDisplayName() + ":";
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warning(XProcRunnable step, XdmNode node, String message) {
|
||||
if (log.isWarnEnabled()) {
|
||||
log.warn(message(step, node, message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void warning(Throwable exception) {
|
||||
if (log.isWarnEnabled()) {
|
||||
log.warn(exceptionMessage(exception) + exception.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void info(XProcRunnable step, XdmNode node, String message) {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info(message(step, node, message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fine(XProcRunnable step, XdmNode node, String message) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug(message(step, node, message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finer(XProcRunnable step, XdmNode node, String message) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug(message(step, node, message));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void finest(XProcRunnable step, XdmNode node, String message) {
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug(message(step, node, message));
|
||||
}
|
||||
}
|
||||
|
||||
private String message(XProcRunnable step, XdmNode node, String message) {
|
||||
return message(step, node, message, null);
|
||||
}
|
||||
|
||||
private String message(XProcRunnable step, XdmNode node, String message, QName code) {
|
||||
String prefix = "";
|
||||
if (node != null) {
|
||||
URI cwd = URIUtils.cwdAsURI();
|
||||
String systemId = cwd.relativize(node.getBaseURI()).toASCIIString();
|
||||
int line = node.getLineNumber();
|
||||
int col = node.getColumnNumber();
|
||||
|
||||
if (systemId != null && !"".equals(systemId)) {
|
||||
prefix = prefix + systemId + ":";
|
||||
}
|
||||
if (line != -1) {
|
||||
prefix = prefix + line + ":";
|
||||
}
|
||||
if (col != -1) {
|
||||
prefix = prefix + col + ":";
|
||||
}
|
||||
}
|
||||
|
||||
return prefix + message;
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import java.util.List;
|
||||
|
||||
public interface Pipeline {
|
||||
|
||||
List<Source> getResultPort(String name);
|
||||
|
||||
void run(List<PipelineInput<?>> inputs) throws PipelineException;
|
||||
|
||||
void run(PipelineInput<?>... inputs);
|
||||
|
||||
void reset();
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
import javax.xml.transform.URIResolver;
|
||||
|
||||
public interface PipelineBuilder {
|
||||
|
||||
Pipeline build(String pipelineUri);
|
||||
Pipeline build(String pipelineUri, URIResolver... resolvers);
|
||||
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
public class PipelineException extends RuntimeException {
|
||||
public PipelineException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public PipelineException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
|
||||
public PipelineException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
public class PipelineInput<T> {
|
||||
private final String name;
|
||||
private final PipelineInputType type;
|
||||
private final T source;
|
||||
|
||||
public static <P> PipelineInput<P> parameter(String name, P source) {
|
||||
return new PipelineInput<P>(name, PipelineInputType.PARAMETER, source);
|
||||
}
|
||||
|
||||
public static <P> PipelineInput<P> port(String name, P source) {
|
||||
return new PipelineInput<P>(name, PipelineInputType.PORT, source);
|
||||
}
|
||||
|
||||
public static <P> PipelineInput<P> option(String name, P source) {
|
||||
return new PipelineInput<P>(name, PipelineInputType.OPTION, source);
|
||||
}
|
||||
|
||||
public PipelineInput(String name, PipelineInputType type, T source) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public T getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
public PipelineInputType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline;
|
||||
|
||||
public enum PipelineInputType {
|
||||
PORT,
|
||||
PARAMETER,
|
||||
OPTION;
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline.resolvers;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.URIResolver;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.InputStream;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
public class ClassPathUriResolver extends SourceUriResolver {
|
||||
|
||||
public static final String CLASSPATH_PREFIX = "classpath://";
|
||||
|
||||
public ClassPathUriResolver() {
|
||||
super();
|
||||
}
|
||||
|
||||
public ClassPathUriResolver(URIResolver parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Source resolve(String href, String base) throws TransformerException {
|
||||
|
||||
if (href != null && href.toLowerCase().startsWith(CLASSPATH_PREFIX)) {
|
||||
String path = href.substring(CLASSPATH_PREFIX.length());
|
||||
InputStream resource = getClass().getResourceAsStream(path);
|
||||
if (resource == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
return new StreamSource(resource, getClass().getResource(path).toURI().toString());
|
||||
} catch (URISyntaxException ex) {
|
||||
return new StreamSource(resource);
|
||||
}
|
||||
}
|
||||
|
||||
return super.resolve(href, base);
|
||||
}
|
||||
}
|
95
src/main/java/com/rackspace/cloud/api/docs/pipeline/resolvers/InputStreamUriParameterResolver.java
95
src/main/java/com/rackspace/cloud/api/docs/pipeline/resolvers/InputStreamUriParameterResolver.java
@ -1,95 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline.resolvers;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.URIResolver;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.springframework.web.util.UriUtils;
|
||||
|
||||
public class InputStreamUriParameterResolver extends SourceUriResolver {
|
||||
|
||||
private static final String PREFIX = "reference:jio:";
|
||||
private final Map<String, InputStream> streams = new HashMap<String, InputStream>();
|
||||
private final List<URIResolver> resolvers = new ArrayList<URIResolver>();
|
||||
|
||||
public InputStreamUriParameterResolver() {
|
||||
super();
|
||||
}
|
||||
|
||||
public InputStreamUriParameterResolver(URIResolver parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
public void addResolver(URIResolver resolver) {
|
||||
resolvers.add(resolver);
|
||||
}
|
||||
|
||||
public String addStream(InputStream inputStreamReference) {
|
||||
String key = getHref(inputStreamReference);
|
||||
streams.put(key, inputStreamReference);
|
||||
return key;
|
||||
}
|
||||
|
||||
public String addStream(InputStream inputStreamReference, String name) {
|
||||
String key = getHref(name);
|
||||
streams.put(key, inputStreamReference);
|
||||
return key;
|
||||
}
|
||||
|
||||
public void removeStream(InputStream inputStreamReference) {
|
||||
String key = getHref(inputStreamReference);
|
||||
removeStream(key);
|
||||
}
|
||||
|
||||
public void removeStream(String name) {
|
||||
streams.remove(name);
|
||||
}
|
||||
|
||||
public String getHref(InputStream inputStreamReference) {
|
||||
try {
|
||||
return PREFIX + UriUtils.encodePathSegment(inputStreamReference.toString(), "utf-8");
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
return PREFIX + inputStreamReference.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public String getHref(String name) {
|
||||
return PREFIX + name;
|
||||
}
|
||||
|
||||
public void clearStreams() {
|
||||
streams.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Source resolve(String href, String base) throws TransformerException {
|
||||
InputStream stream = streams.get(href);
|
||||
if (stream != null) {
|
||||
try {
|
||||
return new StreamSource(stream, new URI(href).toString());
|
||||
} catch (URISyntaxException ex) {
|
||||
return new StreamSource(stream);
|
||||
}
|
||||
}
|
||||
|
||||
if (!resolvers.isEmpty()) {
|
||||
for (URIResolver resolver : resolvers) {
|
||||
Source source = resolver.resolve(href, base);
|
||||
if (source != null) {
|
||||
return source;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return super.resolve(href, base);
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
package com.rackspace.cloud.api.docs.pipeline.resolvers;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.URIResolver;
|
||||
|
||||
public class SourceUriResolver implements URIResolver {
|
||||
|
||||
private final URIResolver parent;
|
||||
|
||||
public SourceUriResolver() {
|
||||
this.parent = null;
|
||||
}
|
||||
|
||||
public SourceUriResolver(URIResolver parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
public URIResolver getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Source resolve(String href, String base) throws TransformerException {
|
||||
|
||||
if (parent != null) {
|
||||
return parent.resolve(href, base);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
1876
src/main/javascript/shCore.js
vendored
1876
src/main/javascript/shCore.js
vendored
File diff suppressed because it is too large
Load Diff
@ -1,35 +0,0 @@
|
||||
/* grid.css */
|
||||
.container {width:950px;margin:0 auto;}
|
||||
.showgrid {background:url(src/grid.png);}
|
||||
.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 {float:left;margin-right:10px;}
|
||||
.last {margin-right:0;}
|
||||
.span-1 {width:30px;}
|
||||
.span-2 {width:70px;}
|
||||
.span-3 {width:110px;}
|
||||
.span-4 {width:150px;}
|
||||
.span-5 {width:190px;}
|
||||
.span-6 {width:230px;}
|
||||
.span-7 {width:270px;}
|
||||
.span-8 {width:310px;}
|
||||
.span-9 {width:350px;}
|
||||
.span-10 {width:390px;}
|
||||
.span-11 {width:430px;}
|
||||
.span-12 {width:470px;}
|
||||
.span-13 {width:510px;}
|
||||
.span-14 {width:550px;}
|
||||
.span-15 {width:590px;}
|
||||
.span-16 {width:630px;}
|
||||
.span-17 {width:670px;}
|
||||
.span-18 {width:710px;}
|
||||
.span-19 {width:750px;}
|
||||
.span-20 {width:790px;}
|
||||
.span-21 {width:830px;}
|
||||
.span-22 {width:870px;}
|
||||
.span-23 {width:910px;}
|
||||
.span-24 {width:950px;margin-right:0;}
|
||||
.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
|
||||
hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
|
||||
hr.space {background:#fff;color:#fff;visibility:hidden;}
|
||||
.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
|
||||
.clearfix, .container {display:block;}
|
||||
.clear {clear:both;}
|
File diff suppressed because one or more lines are too long
@ -1,72 +0,0 @@
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
src: local('Source Sans Pro ExtraLight'), local('SourceSansPro-ExtraLight'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/toadOcfmlt9b38dHJxOBGC-IiwWNzQT_LXAtr-Ee9Pw.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/toadOcfmlt9b38dHJxOBGMVNtom4QlEDNJaqqqzqdSs.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/ODelI1aHBYDBqgeIAH2zlNHq-FFgoDNV3GTKpHwuvtI.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
src: local('Source Sans Pro Semibold'), local('SourceSansPro-Semibold'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/toadOcfmlt9b38dHJxOBGCmgpmuQqK2I-L2S9cF65Ek.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/toadOcfmlt9b38dHJxOBGIqjGYJUyOXcBwUQbRaNH6c.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: local('Source Sans Pro Black'), local('SourceSansPro-Black'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/toadOcfmlt9b38dHJxOBGC7eGk4PJkA83J1AXCmgUfc.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 200;
|
||||
src: local('Source Sans Pro ExtraLight Italic'), local('SourceSansPro-ExtraLightIt'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/fpTVHK8qsXbIeTHTrnQH6OE3EfhCMemg4BxrY2mmJD_3rGVtsTkPsbDajuO5ueQw.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
src: local('Source Sans Pro Light Italic'), local('SourceSansPro-LightIt'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/fpTVHK8qsXbIeTHTrnQH6H7XMO6S-yJpg1torQFmnv33rGVtsTkPsbDajuO5ueQw.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: local('Source Sans Pro Italic'), local('SourceSansPro-It'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/M2Jd71oPJhLKp0zdtTvoM_bce-VcyLJMRR1FC9qWbU8.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
src: local('Source Sans Pro Semibold Italic'), local('SourceSansPro-SemiboldIt'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/fpTVHK8qsXbIeTHTrnQH6J4LxuTxC3JbLqy8IUt0K1T3rGVtsTkPsbDajuO5ueQw.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: local('Source Sans Pro Bold Italic'), local('SourceSansPro-BoldIt'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/fpTVHK8qsXbIeTHTrnQH6PgYMAt3u4NmhhzLLLPJ5qH3rGVtsTkPsbDajuO5ueQw.woff) format('woff');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Source Sans Pro';
|
||||
font-style: italic;
|
||||
font-weight: 900;
|
||||
src: local('Source Sans Pro Black Italic'), local('SourceSansPro-BlackIt'), url(http://themes.googleusercontent.com/static/fonts/sourcesanspro/v7/fpTVHK8qsXbIeTHTrnQH6MJvEBP8Mx4XcuTrPnlPwTr3rGVtsTkPsbDajuO5ueQw.woff) format('woff');
|
||||
}
|
File diff suppressed because one or more lines are too long
@ -1,299 +0,0 @@
|
||||
/* @override
|
||||
http://openstack.dev/themes/openstack/css/main.css
|
||||
http://localhost:8888/themes/openstack/css/main.css
|
||||
http://staging.openstack.org/themes/openstack/css/main.css
|
||||
*/
|
||||
|
||||
#fanaticguy{
|
||||
text-transform: uppercase;
|
||||
color: white;
|
||||
line-height: 20px;
|
||||
font-size: .9em;
|
||||
font-weight: 600;
|
||||
background: url("http://33b005aae5795219b553-1e1c5ac10380ee72a01b057764b93d72.r90.cf1.rackcdn.com/rs-logo.png") no-repeat left center;
|
||||
background: url("http://33b005aae5795219b553-1e1c5ac10380ee72a01b057764b93d72.r90.cf1.rackcdn.com/rs-logo.svg") no-repeat left center;
|
||||
background-size: 100px;
|
||||
padding: 9px 10px 10px 97px;
|
||||
height: 42px;
|
||||
position: relative;
|
||||
top: 5px;
|
||||
left: 10px;
|
||||
}
|
||||
|
||||
#rightColumn {
|
||||
float:left;
|
||||
position: relative;
|
||||
width: 1em;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
background-color: #FFAA66;
|
||||
}
|
||||
|
||||
body {
|
||||
background: no-repeat scroll 0px 0px;
|
||||
color: #535353;
|
||||
font-family: "Source Sans Pro";
|
||||
font-weight: 400;
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
text-transform: uppercase;
|
||||
color: #FFF;
|
||||
line-height: 20px;
|
||||
font-size: 0.9em;
|
||||
font-weight: 600;
|
||||
background: url('apiref/images/rs-logo.svg') no-repeat scroll left center / 20px auto transparent;
|
||||
padding: 12px 12px 12px 23px;
|
||||
height: 42px;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 1210px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.navbar-default {
|
||||
background-color: black;
|
||||
border: none;
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.subhead {
|
||||
border-bottom: 1px dotted;
|
||||
padding-bottom: 5px;
|
||||
border-color: #c5e2ea;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.subhead h1 {
|
||||
font-size: 24px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.subhead h2 {
|
||||
color: #0eafcd;
|
||||
font-size: 22px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.subhead h3 {
|
||||
font-size: 18px;
|
||||
color: black;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
color: #999;
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.subhead h2,
|
||||
.subhead h3
|
||||
{
|
||||
position: relative;
|
||||
margin-left: -20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.nobody {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Side navigation
|
||||
*
|
||||
* Scrollspy and affixed enhanced navigation to highlight sections and secondary
|
||||
* sections of docs content.
|
||||
*
|
||||
* Informed by bootstrap 3.0 site
|
||||
*/
|
||||
|
||||
/* By default it's not affixed in mobile views, so undo that */
|
||||
.api-sidebar.affix {
|
||||
position: static;
|
||||
}
|
||||
|
||||
/* First level of nav */
|
||||
.api-sidenav {
|
||||
margin-top: 20px;
|
||||
margin-left: -10px;
|
||||
margin-bottom: 30px;
|
||||
width: auto;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
/* All levels of nav */
|
||||
.api-sidebar .nav > li > a {
|
||||
display: block;
|
||||
width: auto;
|
||||
color: #716b7a;
|
||||
padding: 5px 20px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
|
||||
.api-sidebar .nav > li > a:hover,
|
||||
.api-sidebar .nav > li > a:focus {
|
||||
text-decoration: none;
|
||||
background-color: #E0E4E6;
|
||||
}
|
||||
|
||||
.api-sidebar .nav > .active > a,
|
||||
.api-sidebar .nav > .active:hover > a,
|
||||
.api-sidebar .nav > .active:focus > a {
|
||||
font-weight: bold;
|
||||
color: #C50022;
|
||||
background-color: transparent;
|
||||
border-right: 2px solid #C50022;
|
||||
}
|
||||
|
||||
/* Nav: second level (shown on .active) */
|
||||
.api-sidebar .nav .nav {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.api-sidebar .nav .nav > li > a {
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
padding-left: 30px;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
/* Show and affix the side nav when space allows it */
|
||||
@media (min-width: 992px) {
|
||||
.api-sidebar .nav > .active > ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Widen the fixed sidebar */
|
||||
.api-sidebar.affix,
|
||||
.api-sidebar.affix-bottom {
|
||||
width: 213px;
|
||||
}
|
||||
|
||||
.api-sidebar.affix {
|
||||
position: fixed; /* Undo the static from mobile first approach */
|
||||
top: 20px;
|
||||
}
|
||||
|
||||
.api-sidebar.affix-bottom {
|
||||
position: absolute; /* Undo the static from mobile first approach */
|
||||
}
|
||||
|
||||
.api-sidebar.affix-bottom .api-sidenav,
|
||||
.api-sidebar.affix .api-sidenav {
|
||||
margin-top: 0;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.nav > li.divider {
|
||||
height: 1px;
|
||||
margin: 9px 0;
|
||||
overflow: hidden;
|
||||
background-color: #0EAFCD;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
/* Widen the fixed sidebar again */
|
||||
.api-sidebar.affix-bottom,
|
||||
.api-sidebar.affix {
|
||||
width: 263px;
|
||||
}
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* handle making the rows visible in mobile */
|
||||
|
||||
.doc-entry > .row {
|
||||
background-color: #eee;
|
||||
margin-bottom: 10px;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.doc-entry > .row {
|
||||
background-color: transparent;
|
||||
margin-bottom: inherit;
|
||||
padding: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.navbar-default {
|
||||
margin-top: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.navbar-default .navbar-nav {
|
||||
margin-top: 15px;
|
||||
}
|
||||
.navbar-default .navbar-nav > .active > a,
|
||||
.navbar-default .navbar-nav > .active > a:hover,
|
||||
.navbar-default .navbar-nav > .active > a:focus {
|
||||
color: red;
|
||||
border-bottom: 2px solid #C50022;
|
||||
padding-right: 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
.navbar-nav > li > a {
|
||||
padding: 5px 20px 5px 0;
|
||||
color: #5BC0DE;
|
||||
}
|
||||
}
|
||||
|
||||
#footer {
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav > li > a {
|
||||
color: #5BC0DE;
|
||||
}
|
||||
|
||||
.label-success {
|
||||
background-color: white;
|
||||
border-color: white;
|
||||
color: #0EAFCD;
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
.btn-info {
|
||||
background-color: #0EAFCD;
|
||||
border-color: #0EAFCD;
|
||||
}
|
||||
|
||||
.rowtop {
|
||||
margin-top: 75px;
|
||||
}
|
||||
|
||||
.navbar.navbar-static-top.navbar-inverse .navbar-nav > li > a {
|
||||
color: #FFF;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav > li > a {
|
||||
color: white;
|
||||
}
|
@ -1,255 +0,0 @@
|
||||
/* @override
|
||||
http://openstack.dev/themes/openstack/css/main.css
|
||||
http://localhost:8888/themes/openstack/css/main.css
|
||||
http://staging.openstack.org/themes/openstack/css/main.css
|
||||
*/
|
||||
|
||||
#rightColumn {
|
||||
float:left;
|
||||
position: relative;
|
||||
width: 1em;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
background-color: #FFAA66;
|
||||
}
|
||||
|
||||
body {
|
||||
background: white url(../images/openstack-page-bkg.jpg) no-repeat scroll 0px 0px;
|
||||
border-top: 3px solid #255e6e;
|
||||
color: #535353;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
display: block;
|
||||
margin-top: 8px;
|
||||
text-indent: -1000em;
|
||||
background: url(../images/open-stack-cloud-computing-logo-2.png) no-repeat left center;
|
||||
height: 54px;
|
||||
width: 177px;
|
||||
}
|
||||
|
||||
.navbar-default {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.subhead {
|
||||
border-bottom: 1px dotted;
|
||||
padding-bottom: 5px;
|
||||
border-color: #c5e2ea;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.subhead h1 {
|
||||
font-size: 24px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.subhead h2 {
|
||||
color: #cf2f19;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.subhead h3 {
|
||||
font-size: 18px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
a.headerlink {
|
||||
color: #999;
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.subhead h2,
|
||||
.subhead h3
|
||||
{
|
||||
font-weight: normal;
|
||||
position: relative;
|
||||
margin-left: -20px;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
h1:hover > a.headerlink,
|
||||
h2:hover > a.headerlink,
|
||||
h3:hover > a.headerlink,
|
||||
h4:hover > a.headerlink,
|
||||
h5:hover > a.headerlink,
|
||||
h6:hover > a.headerlink,
|
||||
dt:hover > a.headerlink {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.nobody {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.operation.col-md-1 {
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
a.operation-anchor {
|
||||
margin-right: 5px;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.operation-grp:hover a.operation-anchor {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/*
|
||||
* Side navigation
|
||||
*
|
||||
* Scrollspy and affixed enhanced navigation to highlight sections and secondary
|
||||
* sections of docs content.
|
||||
*
|
||||
* Informed by bootstrap 3.0 site
|
||||
*/
|
||||
|
||||
/* By default it's not affixed in mobile views, so undo that */
|
||||
.api-sidebar.affix {
|
||||
position: static;
|
||||
}
|
||||
|
||||
/* First level of nav */
|
||||
.api-sidenav {
|
||||
margin-top: 20px;
|
||||
margin-left: -10px;
|
||||
margin-bottom: 30px;
|
||||
width: auto;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 5px;
|
||||
/*margin-top: 30px;*/
|
||||
}
|
||||
|
||||
/* All levels of nav */
|
||||
.api-sidebar .nav > li > a {
|
||||
display: block;
|
||||
color: #716b7a;
|
||||
padding: 5px 20px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.api-sidebar .nav > li > a:hover,
|
||||
.api-sidebar .nav > li > a:focus {
|
||||
text-decoration: none;
|
||||
background-color: #E0E4E6;
|
||||
}
|
||||
|
||||
.api-sidebar .nav > .active > a,
|
||||
.api-sidebar .nav > .active:hover > a,
|
||||
.api-sidebar .nav > .active:focus > a {
|
||||
font-weight: bold;
|
||||
color: #cf2f19;
|
||||
background-color: transparent;
|
||||
border-right: 2px solid #cf2f19;
|
||||
}
|
||||
|
||||
/* Nav: second level (shown on .active) */
|
||||
.api-sidebar .nav .nav {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.api-sidebar .nav .nav > li > a {
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
padding-left: 30px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* Show and affix the side nav when space allows it */
|
||||
@media (min-width: 992px) {
|
||||
.api-sidebar .nav > .active > ul {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Widen the fixed sidebar */
|
||||
.api-sidebar.affix,
|
||||
.api-sidebar.affix-bottom {
|
||||
width: 213px;
|
||||
}
|
||||
|
||||
.api-sidebar.affix {
|
||||
position: fixed; /* Undo the static from mobile first approach */
|
||||
top: 20px;
|
||||
}
|
||||
|
||||
.api-sidebar.affix-bottom {
|
||||
position: absolute; /* Undo the static from mobile first approach */
|
||||
}
|
||||
|
||||
.api-sidebar.affix-bottom .api-sidenav,
|
||||
.api-sidebar.affix .api-sidenav {
|
||||
margin-top: 0;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.nav > li.divider {
|
||||
height: 1px;
|
||||
margin: 9px 0;
|
||||
overflow: hidden;
|
||||
background-color: #e5e5e5;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
/* Widen the fixed sidebar again */
|
||||
.api-sidebar.affix-bottom,
|
||||
.api-sidebar.affix {
|
||||
width: 263px;
|
||||
}
|
||||
}
|
||||
|
||||
/* @end */
|
||||
|
||||
/* handle making the rows visible in mobile */
|
||||
|
||||
.doc-entry > .row {
|
||||
background-color: #eee;
|
||||
margin-bottom: 10px;
|
||||
padding: 10px 0;
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.doc-entry > .row {
|
||||
background-color: transparent;
|
||||
margin-bottom: inherit;
|
||||
padding: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.navbar-default {
|
||||
margin-top: 25px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.navbar-default .navbar-nav {
|
||||
border-bottom: 1px solid #c5e2ea;
|
||||
margin-top: 15px;
|
||||
}
|
||||
.navbar-default .navbar-nav > .active > a,
|
||||
.navbar-default .navbar-nav > .active > a:hover,
|
||||
.navbar-default .navbar-nav > .active > a:focus {
|
||||
color: #cf2f19;
|
||||
border-bottom: 2px solid #cf2f19;
|
||||
padding-right: 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
.navbar-nav > li > a {
|
||||
padding: 5px 20px 5px 0;
|
||||
}
|
||||
}
|
||||
|
||||
#footer {
|
||||
border-top: 1px solid #eee;
|
||||
padding-top: 20px;
|
||||
}
|
@ -1,124 +0,0 @@
|
||||
/*
|
||||
HTML5 Reset :: style.css
|
||||
----------------------------------------------------------
|
||||
We have learned much from/been inspired by/taken code where offered from:
|
||||
|
||||
Eric Meyer :: http://meyerweb.com
|
||||
HTML5 Doctor :: http://html5doctor.com
|
||||
and the HTML5 Boilerplate :: http://html5boilerplate.com
|
||||
|
||||
-------------------------------------------------------------------------------*/
|
||||
|
||||
/* Let's default this puppy out
|
||||
-------------------------------------------------------------------------------*/
|
||||
|
||||
html, body, body div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, figure, footer, header, menu, nav, section, time, mark, audio, video, details, summary {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* consider resetting the default cursor: https://gist.github.com/murtaugh/5247154 */
|
||||
|
||||
/* Apply a natural box layout model to all elements: http://paulirish.com/2012/box-sizing-border-box-ftw/ */
|
||||
*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
|
||||
|
||||
article, aside, figure, footer, header, nav, section, details, summary {display: block;}
|
||||
|
||||
/* Responsive images and other embedded objects
|
||||
Note: keeping IMG here will cause problems if you're using foreground images as sprites.
|
||||
If this default setting for images is causing issues, you might want to replace it with a .responsive class instead. */
|
||||
img,
|
||||
object,
|
||||
embed {max-width: 100%;}
|
||||
|
||||
/* force a vertical scrollbar to prevent a jumpy page */
|
||||
html {overflow-y: scroll;}
|
||||
|
||||
/* we use a lot of ULs that aren't bulleted.
|
||||
don't forget to restore the bullets within content. */
|
||||
ul {list-style: none;}
|
||||
|
||||
blockquote, q {quotes: none;}
|
||||
|
||||
blockquote:before,
|
||||
blockquote:after,
|
||||
q:before,
|
||||
q:after {content: ''; content: none;}
|
||||
|
||||
a {margin: 0; padding: 0; font-size: 100%; vertical-align: baseline; background: transparent;}
|
||||
|
||||
del {text-decoration: line-through;}
|
||||
|
||||
abbr[title], dfn[title] {border-bottom: 1px dotted #000; cursor: help;}
|
||||
|
||||
/* tables still need cellspacing="0" in the markup */
|
||||
table {border-collapse: collapse; border-spacing: 0;}
|
||||
th {font-weight: bold; vertical-align: bottom;}
|
||||
td {font-weight: normal; vertical-align: top;}
|
||||
|
||||
hr {display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0;}
|
||||
|
||||
input, select {vertical-align: middle;}
|
||||
|
||||
pre {
|
||||
white-space: pre; /* CSS2 */
|
||||
white-space: pre-wrap; /* CSS 2.1 */
|
||||
white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
|
||||
word-wrap: break-word; /* IE */
|
||||
}
|
||||
|
||||
input[type="radio"] {vertical-align: text-bottom;}
|
||||
input[type="checkbox"] {vertical-align: bottom;}
|
||||
.ie7 input[type="checkbox"] {vertical-align: baseline;}
|
||||
.ie6 input {vertical-align: text-bottom;}
|
||||
|
||||
select, input, textarea {font: 99% sans-serif;}
|
||||
|
||||
table {font-size: inherit; font: 100%;}
|
||||
|
||||
small {font-size: 85%;}
|
||||
|
||||
strong {font-weight: bold;}
|
||||
|
||||
td, td img {vertical-align: top;}
|
||||
|
||||
/* Make sure sup and sub don't screw with your line-heights
|
||||
gist.github.com/413930 */
|
||||
sub, sup {font-size: 75%; line-height: 0; position: relative;}
|
||||
sup {top: -0.5em;}
|
||||
sub {bottom: -0.25em;}
|
||||
|
||||
/* standardize any monospaced elements */
|
||||
pre, code, kbd, samp {font-family: monospace, sans-serif;}
|
||||
|
||||
/* hand cursor on clickable elements */
|
||||
.clickable,
|
||||
label,
|
||||
input[type=button],
|
||||
input[type=submit],
|
||||
input[type=file],
|
||||
button {cursor: pointer;}
|
||||
|
||||
/* Webkit browsers add a 2px margin outside the chrome of form elements */
|
||||
button, input, select, textarea {margin: 0;}
|
||||
|
||||
/* make buttons play nice in IE */
|
||||
button,
|
||||
input[type=button] {width: auto; overflow: visible;}
|
||||
|
||||
/* scale images in IE7 more attractively */
|
||||
.ie7 img {-ms-interpolation-mode: bicubic;}
|
||||
|
||||
/* prevent BG image flicker upon hover
|
||||
(commented out as usage is rare, and the filter syntax messes with some pre-processors)
|
||||
.ie6 html {filter: expression(document.execCommand("BackgroundImageCache", false, true));}
|
||||
*/
|
||||
|
||||
/* let's clear some floats */
|
||||
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
|
||||
.clearfix:after { clear: both; }
|
||||
.clearfix { zoom: 1; }
|
@ -1,657 +0,0 @@
|
||||
.valigned {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
}
|
||||
.smallcapped {
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
}
|
||||
.valigned {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
}
|
||||
.smallcapped {
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
}
|
||||
.twocol-layout {
|
||||
padding-top: 80px;
|
||||
}
|
||||
.twocol-layout .content {
|
||||
width: 650px;
|
||||
float: left;
|
||||
}
|
||||
.twocol-layout .content h1 {
|
||||
font-size: 4em;
|
||||
letter-spacing: -5px;
|
||||
color: #333;
|
||||
}
|
||||
.twocol-layout .content h1 .highlight-blue {
|
||||
color: #0eafcd;
|
||||
}
|
||||
.twocol-layout .content .page-subtitle {
|
||||
color: #999;
|
||||
font-size: 1.6em;
|
||||
font-style: italic;
|
||||
}
|
||||
.twocol-layout .sidebar {
|
||||
width: 250px;
|
||||
float: right;
|
||||
}
|
||||
.twocol-layout .sidebar .block {
|
||||
padding: 20px;
|
||||
background: #eee;
|
||||
margin-bottom: 20px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
.blog-entries .entry {
|
||||
margin-top: 40px;
|
||||
padding-top: 40px;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
.blog-entries .entry.single {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: none;
|
||||
}
|
||||
.blog-entries .entry h1.title {
|
||||
line-height: 1em;
|
||||
}
|
||||
.blog-entries .entry h2.title {
|
||||
display: block;
|
||||
font-size: 2.6em;
|
||||
line-height: 1em;
|
||||
font-weight: 600;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.blog-entries .entry h2.title a {
|
||||
text-decoration: none;
|
||||
color: #1c4455;
|
||||
}
|
||||
.blog-entries .entry .byline {
|
||||
display: block;
|
||||
margin-top: 10px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
color: #0eafcd;
|
||||
}
|
||||
.blog-entries .entry .entry-content {
|
||||
display: block;
|
||||
}
|
||||
.blog-entries .entry .entry-content p {
|
||||
margin-top: 1em;
|
||||
line-height: 1.4em;
|
||||
}
|
||||
.blog-entries .entry .entry-content h2 {
|
||||
font-size: 1.6em;
|
||||
font-weight: 600;
|
||||
margin-top: 1em;
|
||||
letter-spacing: -1px;
|
||||
color: #0eafcd;
|
||||
border-top: 1px dashed #d9d9d9;
|
||||
padding-top: 1em;
|
||||
}
|
||||
.blog-entries .entry .entry-content h4 {
|
||||
margin-top: 2em;
|
||||
font-size: 1em;
|
||||
color: #0eafcd;
|
||||
font-weight: 600;
|
||||
}
|
||||
.blog-entries .entry .entry-content pre {
|
||||
background: #1c4455;
|
||||
padding: 20px;
|
||||
margin: 1em 0;
|
||||
border-radius: 10px;
|
||||
line-height: 1.45em;
|
||||
font-size: 10pt;
|
||||
color: #eee;
|
||||
overflow: auto;
|
||||
font-family: monospace, serif;
|
||||
_font-family: 'courier new', monospace;
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
.blog-entries .entry .entry-content ul {
|
||||
list-style: disc;
|
||||
}
|
||||
.blog-entries .entry .entry-content ul li {
|
||||
margin-left: 20px;
|
||||
}
|
||||
.blog-entries .entry .readmore {
|
||||
display: inline-block;
|
||||
margin-top: 20px;
|
||||
background: #49c4d7;
|
||||
padding: 10px 20px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 100px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
}
|
||||
.blog-entries .entry .readmore:hover {
|
||||
background: #0eafcd;
|
||||
}
|
||||
.blog-entries .pagination-container {
|
||||
margin-top: 40px;
|
||||
padding-top: 40px;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
.blog-entries .pagination-container .pagination .page {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
}
|
||||
.blog-entries .pagination-container .pagination .page a {
|
||||
background: #eee;
|
||||
color: #666;
|
||||
padding: 5px 10px;
|
||||
border-radius: 100px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.blog-entries .pagination-container .pagination .page a:hover {
|
||||
color: white;
|
||||
background: #0eafcd;
|
||||
}
|
||||
.blog-entries .pagination-container .pagination .page.current a {
|
||||
background: #0eafcd;
|
||||
color: white;
|
||||
}
|
||||
.blog-entries .pagination-container .pagination .page.current a:hover {
|
||||
color: white;
|
||||
background: #1c4455;
|
||||
}
|
||||
.blog-entries .relatedentries {
|
||||
margin-top: 40px;
|
||||
padding-top: 40px;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
.blog-entries .relatedentries ul li {
|
||||
margin-bottom: 1em;
|
||||
width: 45%;
|
||||
}
|
||||
.blog-entries .relatedentries ul li .related-pretitle {
|
||||
display: block;
|
||||
color: black;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
font-weight: 700;
|
||||
letter-spacing: 1px;
|
||||
text-decoration: none;
|
||||
color: #999;
|
||||
}
|
||||
.blog-entries .relatedentries ul li .related-title {
|
||||
display: block;
|
||||
font-size: 1.2em;
|
||||
line-height: 1em;
|
||||
font-weight: 600;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.blog-entries .relatedentries ul li .related-title a {
|
||||
text-decoration: none;
|
||||
color: #0eafcd;
|
||||
}
|
||||
.blog-entries .relatedentries ul li.previous {
|
||||
text-align: left;
|
||||
float: left;
|
||||
}
|
||||
.blog-entries .relatedentries ul li.next {
|
||||
text-align: right;
|
||||
float: right;
|
||||
}
|
||||
.valigned {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
}
|
||||
.smallcapped {
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
}
|
||||
.hero-slider {
|
||||
color: white;
|
||||
}
|
||||
.hero-slider ul.slides li {
|
||||
display: block;
|
||||
width: 100%;
|
||||
background: black;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 66% 30px;
|
||||
background-size: auto;
|
||||
}
|
||||
.hero-slider ul.slides li .bg {
|
||||
background: url(../img/hero-bottom-bg.svg) no-repeat;
|
||||
background-size: 111%;
|
||||
background-position: bottom center;
|
||||
}
|
||||
.hero-slider ul.slides li .inner {
|
||||
width: 940px;
|
||||
margin: auto;
|
||||
padding: 110px 70px 120px 70px;
|
||||
text-align: center;
|
||||
text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.hero-slider ul.slides li .inner .topline {
|
||||
display: block;
|
||||
opacity: .7;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
font-weight: 600;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
.hero-slider ul.slides li .inner .headline {
|
||||
display: block;
|
||||
margin-top: 15px;
|
||||
font-size: 6em;
|
||||
font-weight: 600;
|
||||
letter-spacing: -4px;
|
||||
line-height: .9em;
|
||||
}
|
||||
.hero-slider ul.slides li .inner .descriptive {
|
||||
display: block;
|
||||
margin-top: 20px;
|
||||
font-size: 1.5em;
|
||||
line-height: 1.5em;
|
||||
opacity: .9;
|
||||
}
|
||||
.hero-slider ul.slides li .inner .ctabtn {
|
||||
display: inline-block;
|
||||
margin-top: 30px;
|
||||
color: black;
|
||||
padding: 15px 30px;
|
||||
border-radius: 100px;
|
||||
background: white;
|
||||
opacity: .9;
|
||||
text-decoration: none;
|
||||
text-shadow: none;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
.hero-slider ul.slides li .inner .ctabtn:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
.hero-slider ul.slides li.hero-devtrial {
|
||||
background-color: #0eafcd;
|
||||
background-image: url(../img/slide4.svg);
|
||||
}
|
||||
.hero-slider ul.slides li.hero-devtrial .ctabtn {
|
||||
color: #0eafcd;
|
||||
}
|
||||
.hero-slider ul.slides li.hero-sdks {
|
||||
background-color: #1f9b48;
|
||||
background-image: url(../img/slide2.svg);
|
||||
}
|
||||
.hero-slider ul.slides li.hero-services {
|
||||
background-color: #df2134;
|
||||
background-image: url(../img/slide3.svg);
|
||||
}
|
||||
.hero-slider ul.slides li.hero-osshosting {
|
||||
background-color: #fdba22;
|
||||
background-image: url(../img/slide3.svg);
|
||||
}
|
||||
.hero-slider ul.slides li.hero-sponsorship {
|
||||
background-color: #824199;
|
||||
background-image: url(../img/slide3.svg);
|
||||
}
|
||||
.bodyitem.shieldboxes {
|
||||
margin: -40px auto 30px auto;
|
||||
}
|
||||
.bodyitem.shieldboxes ul {
|
||||
margin-left: -20px;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li {
|
||||
display: block;
|
||||
width: 300px;
|
||||
padding: 20px 40px 80px;
|
||||
background: url(../img/shieldbox.svg) no-repeat bottom center;
|
||||
float: left;
|
||||
margin-left: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li img {
|
||||
margin: 20px auto;
|
||||
display: block;
|
||||
max-height: 80px;
|
||||
opacity: .15;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li .title {
|
||||
display: block;
|
||||
font-size: 2.2em;
|
||||
font-weight: 700;
|
||||
letter-spacing: -1px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li .description {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
display: block;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li .cta {
|
||||
display: inline-block;
|
||||
padding: 8px 0;
|
||||
width: 75%;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
margin-top: 20px;
|
||||
border-radius: 30px;
|
||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield1 .description {
|
||||
margin-bottom: 21px;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield1 .description .fineprint {
|
||||
line-height: 1em;
|
||||
font-size: .7em;
|
||||
color: #999;
|
||||
margin-top: 0px;
|
||||
display: block;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield1 a {
|
||||
color: #666;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield1 .cta {
|
||||
background: #fdba22;
|
||||
margin-top: 0;
|
||||
color: white;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield1 .cta:hover {
|
||||
background: #ef9923;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield2 .cta {
|
||||
background: #1f9b48;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield2 .cta:hover {
|
||||
background: #106745;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield3 .cta {
|
||||
background: #df2134;
|
||||
}
|
||||
.bodyitem.shieldboxes ul li.shield3 .cta:hover {
|
||||
background: #ab1d37;
|
||||
}
|
||||
.bodyitem.secondaryboxes {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
.bodyitem.secondaryboxes ul {
|
||||
margin-left: -20px;
|
||||
}
|
||||
.bodyitem.secondaryboxes ul li {
|
||||
display: block;
|
||||
width: 220px;
|
||||
padding: 10px;
|
||||
float: left;
|
||||
margin-left: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
.bodyitem.secondaryboxes ul li img {
|
||||
margin: 20px auto;
|
||||
display: block;
|
||||
max-height: 60px;
|
||||
opacity: .15;
|
||||
}
|
||||
.bodyitem.secondaryboxes ul li .title {
|
||||
display: block;
|
||||
font-size: 1.4em;
|
||||
line-height: 1em;
|
||||
font-weight: 700;
|
||||
letter-spacing: -1px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.bodyitem.secondaryboxes ul li .description {
|
||||
font-size: 1em;
|
||||
display: block;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.bodyitem.secondaryboxes ul li .cta {
|
||||
display: inline-block;
|
||||
padding: 8px 0;
|
||||
width: 66%;
|
||||
background: #0eafcd;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
border-radius: 30px;
|
||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
.bodyitem.secondaryboxes ul li .cta:hover {
|
||||
background: #1c4455;
|
||||
}
|
||||
.bodyitem.fromtheblog {
|
||||
padding-top: 60px;
|
||||
text-align: center;
|
||||
color: #1c4455;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
.bodyitem.fromtheblog h2 {
|
||||
font-size: 2.2em;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
.bodyitem.fromtheblog h2 a {
|
||||
color: #0eafcd;
|
||||
text-decoration: none;
|
||||
}
|
||||
.bodyitem.fromtheblog h2 a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.bodyitem.fromtheblog ul {
|
||||
margin: 20px 0 0 -20px;
|
||||
}
|
||||
.bodyitem.fromtheblog ul li {
|
||||
display: block;
|
||||
width: 300px;
|
||||
padding: 20px;
|
||||
float: left;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.bodyitem.fromtheblog ul li .title a {
|
||||
font-size: 1.4em;
|
||||
font-weight: 600;
|
||||
display: block;
|
||||
line-height: 1.1em;
|
||||
color: #1c4455;
|
||||
text-decoration: none;
|
||||
}
|
||||
.bodyitem.fromtheblog ul li .title a:hover {
|
||||
color: #0eafcd;
|
||||
}
|
||||
.bodyitem.fromtheblog ul li .byline {
|
||||
font-weight: 600;
|
||||
display: block;
|
||||
opacity: .8;
|
||||
margin-top: 5px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
}
|
||||
.valigned {
|
||||
position: relative;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
}
|
||||
.smallcapped {
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
}
|
||||
.bodyitem.shieldboxes.sixup ul li {
|
||||
width: 140px;
|
||||
padding: 40px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.bodyitem.shieldboxes.sixup ul li a {
|
||||
text-decoration: none;
|
||||
}
|
||||
.bodyitem.shieldboxes.sixup ul li a .imgwrap {
|
||||
display: block;
|
||||
height: 80px;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
.bodyitem.shieldboxes.sixup ul li a img {
|
||||
max-height: 60px;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
opacity: .5;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
}
|
||||
.bodyitem.shieldboxes.sixup ul li a .title {
|
||||
font-size: 1.4em;
|
||||
color: #333;
|
||||
}
|
||||
.bodyitem.shieldboxes.sixup ul li:hover {
|
||||
padding-bottom: 45px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.bodyitem.sdktable {
|
||||
margin-bottom: 80px;
|
||||
}
|
||||
.bodyitem.sdktable a {
|
||||
color: #1f9b48;
|
||||
}
|
||||
.bodyitem.sdktable .lang {
|
||||
border-top: 1px solid #ccc;
|
||||
padding-top: 40px;
|
||||
margin: 40px 0 0 -20px;
|
||||
}
|
||||
.bodyitem.sdktable .lang .col {
|
||||
width: 220px;
|
||||
float: left;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.bodyitem.sdktable .lang .col h2 {
|
||||
display: block;
|
||||
font-size: 2.6em;
|
||||
margin-bottom: 10px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -3px;
|
||||
}
|
||||
.bodyitem.sdktable .lang .col .cta {
|
||||
padding: 10px 20px;
|
||||
background: #1f9b48;
|
||||
color: white;
|
||||
display: inline-block;
|
||||
border-radius: 100px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.bodyitem.sdktable .lang .col .cta:hover {
|
||||
background: #106745;
|
||||
}
|
||||
.bodyitem.sdktable .lang .col .colheader {
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
display: block;
|
||||
}
|
||||
.bodyitem.sdktable .lang .col p {
|
||||
margin-top: 1em;
|
||||
}
|
||||
body.devtrial-page .fromtheblog {
|
||||
border-top: none;
|
||||
}
|
||||
.bodyitem.shieldpage {
|
||||
background: #eee;
|
||||
padding: 60px 80px 80px 80px;
|
||||
margin-top: -40px;
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
.bodyitem.shieldpage p {
|
||||
margin-top: 1em;
|
||||
}
|
||||
.bodyitem.shieldpage .bigpara {
|
||||
font-size: 1.3em;
|
||||
line-height: 1.2em;
|
||||
font-style: italic;
|
||||
}
|
||||
body {
|
||||
background: white;
|
||||
font-family: "Source Sans Pro";
|
||||
font-weight: 400;
|
||||
}
|
||||
a {
|
||||
color: #0eafcd;
|
||||
}
|
||||
.bodyitem {
|
||||
width: 940px;
|
||||
margin: auto;
|
||||
}
|
||||
.header {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
z-index: 100;
|
||||
box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
|
||||
opacity: .85;
|
||||
background: black;
|
||||
color: white;
|
||||
}
|
||||
.header:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
.header .inner {
|
||||
width: 940px;
|
||||
margin: auto;
|
||||
padding: 10px;
|
||||
}
|
||||
.header .inner .title {
|
||||
display: block;
|
||||
line-height: 20px;
|
||||
color: white;
|
||||
float: left;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
font-size: .8em;
|
||||
font-size: .9em;
|
||||
font-weight: 600;
|
||||
padding-left: 23px;
|
||||
background: url(../img/rs-logo.svg) no-repeat left center;
|
||||
background-size: contain;
|
||||
}
|
||||
.header .inner ul {
|
||||
float: right;
|
||||
}
|
||||
.header .inner ul li {
|
||||
display: inline-block;
|
||||
margin-left: 25px;
|
||||
}
|
||||
.header .inner ul li a {
|
||||
color: #d9d9d9;
|
||||
text-decoration: none;
|
||||
font-size: .9em;
|
||||
line-height: 20px;
|
||||
}
|
||||
.header .inner ul li a:hover,
|
||||
.header .inner ul li a.selected {
|
||||
color: white;
|
||||
text-decoration: underline;
|
||||
}
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: 100px;
|
||||
background: #1a1a1a;
|
||||
color: #666;
|
||||
margin-top: 80px;
|
||||
}
|
@ -1,60 +0,0 @@
|
||||
.highlight { background: #ffffff; }
|
||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
.highlight .k { font-weight: bold } /* Keyword */
|
||||
.highlight .o { font-weight: bold } /* Operator */
|
||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #009999 } /* Literal.Number */
|
||||
.highlight .s { color: #d14 } /* Literal.String */
|
||||
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #008080 } /* Name.Constant */
|
||||
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
Binary file not shown.
@ -1,229 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata></metadata>
|
||||
<defs>
|
||||
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
|
||||
<font-face units-per-em="1200" ascent="960" descent="-240" />
|
||||
<missing-glyph horiz-adv-x="500" />
|
||||
<glyph />
|
||||
<glyph />
|
||||
<glyph unicode="
" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
|
||||
<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
|
||||
<glyph unicode=" " />
|
||||
<glyph unicode=" " horiz-adv-x="652" />
|
||||
<glyph unicode=" " horiz-adv-x="1304" />
|
||||
<glyph unicode=" " horiz-adv-x="652" />
|
||||
<glyph unicode=" " horiz-adv-x="1304" />
|
||||
<glyph unicode=" " horiz-adv-x="434" />
|
||||
<glyph unicode=" " horiz-adv-x="326" />
|
||||
<glyph unicode=" " horiz-adv-x="217" />
|
||||
<glyph unicode=" " horiz-adv-x="217" />
|
||||
<glyph unicode=" " horiz-adv-x="163" />
|
||||
<glyph unicode=" " horiz-adv-x="260" />
|
||||
<glyph unicode=" " horiz-adv-x="72" />
|
||||
<glyph unicode=" " horiz-adv-x="260" />
|
||||
<glyph unicode=" " horiz-adv-x="326" />
|
||||
<glyph unicode="€" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
|
||||
<glyph unicode="−" d="M200 400h900v300h-900v-300z" />
|
||||
<glyph unicode="☁" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
|
||||
<glyph unicode="✉" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
|
||||
<glyph unicode="✏" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
|
||||
<glyph unicode="" horiz-adv-x="500" d="M0 0z" />
|
||||
<glyph unicode="" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
|
||||
<glyph unicode="" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
|
||||
<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
|
||||
<glyph unicode="" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
|
||||
<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
|
||||
<glyph unicode="" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
|
||||
<glyph unicode="" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
|
||||
<glyph unicode="" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
|
||||
<glyph unicode="" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
|
||||
<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
|
||||
<glyph unicode="" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
|
||||
<glyph unicode="" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
|
||||
<glyph unicode="" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
|
||||
<glyph unicode="" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
|
||||
<glyph unicode="" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
|
||||
<glyph unicode="" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
|
||||
<glyph unicode="" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
|
||||
<glyph unicode="" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
|
||||
<glyph unicode="" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
|
||||
<glyph unicode="" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
|
||||
<glyph unicode="" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
|
||||
<glyph unicode="" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
|
||||
<glyph unicode="" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
|
||||
<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
|
||||
<glyph unicode="" d="M0 25v475l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
|
||||
<glyph unicode="" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
|
||||
<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
|
||||
<glyph unicode="" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
|
||||
<glyph unicode="" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
|
||||
<glyph unicode="" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
|
||||
<glyph unicode="" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
|
||||
<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
|
||||
<glyph unicode="" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
|
||||
<glyph unicode="" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
|
||||
<glyph unicode="" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
|
||||
<glyph unicode="" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
|
||||
<glyph unicode="" d="M1 700v475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
|
||||
<glyph unicode="" d="M2 700v475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
|
||||
<glyph unicode="" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
|
||||
<glyph unicode="" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
|
||||
<glyph unicode="" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
|
||||
<glyph unicode="" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
|
||||
<glyph unicode="" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
|
||||
<glyph unicode="" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v70h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
|
||||
<glyph unicode="" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
|
||||
<glyph unicode="" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
|
||||
<glyph unicode="" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
|
||||
<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
|
||||
<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
|
||||
<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
|
||||
<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
|
||||
<glyph unicode="" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
|
||||
<glyph unicode="" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
|
||||
<glyph unicode="" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
|
||||
<glyph unicode="" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
|
||||
<glyph unicode="" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
|
||||
<glyph unicode="" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
|
||||
<glyph unicode="" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
|
||||
<glyph unicode="" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
|
||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
|
||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
|
||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l566 567l-136 137l-430 -431l-147 147z" />
|
||||
<glyph unicode="" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
|
||||
<glyph unicode="" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
|
||||
<glyph unicode="" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
|
||||
<glyph unicode="" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
|
||||
<glyph unicode="" d="M200 0l900 550l-900 550v-1100z" />
|
||||
<glyph unicode="" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
|
||||
<glyph unicode="" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
|
||||
<glyph unicode="" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
|
||||
<glyph unicode="" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
|
||||
<glyph unicode="" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
|
||||
<glyph unicode="" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
|
||||
<glyph unicode="" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
|
||||
<glyph unicode="" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
|
||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
|
||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h600v200h-600v-200z" />
|
||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141z" />
|
||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
|
||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM363 700h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26 q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-105 0 -172 -56t-67 -183zM500 300h200v100h-200v-100z" />
|
||||
<glyph unicode="" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
|
||||
<glyph unicode="" d="M0 500v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200 v-206q149 48 201 206h-201v200h200q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
|
||||
<glyph unicode="" d="M0 547l600 453v-300h600v-300h-600v-301z" />
|
||||
<glyph unicode="" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
|
||||
<glyph unicode="" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
|
||||
<glyph unicode="" d="M104 600h296v600h300v-600h298l-449 -600z" />
|
||||
<glyph unicode="" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
|
||||
<glyph unicode="" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
|
||||
<glyph unicode="" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
|
||||
<glyph unicode="" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
|
||||
<glyph unicode="" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100z M100 0h400v400h-400v-400zM200 900q-3 0 14 48t35 96l18 47l214 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
|
||||
<glyph unicode="" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
|
||||
<glyph unicode="" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
|
||||
<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
|
||||
<glyph unicode="" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
|
||||
<glyph unicode="" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
|
||||
<glyph unicode="" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64 q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
|
||||
<glyph unicode="" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
|
||||
<glyph unicode="" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
|
||||
<glyph unicode="" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
|
||||
<glyph unicode="" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
|
||||
<glyph unicode="" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
|
||||
<glyph unicode="" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
|
||||
<glyph unicode="" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
|
||||
<glyph unicode="" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
|
||||
<glyph unicode="" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
|
||||
<glyph unicode="" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
|
||||
<glyph unicode="" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
|
||||
<glyph unicode="" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
|
||||
<glyph unicode="" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
|
||||
<glyph unicode="" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM99 500v250v5q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351z M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
|
||||
<glyph unicode="" d="M74 350q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37 t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
|
||||
<glyph unicode="" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
|
||||
<glyph unicode="" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 212l100 213h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
|
||||
<glyph unicode="" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
|
||||
<glyph unicode="" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
|
||||
<glyph unicode="" d="M-101 651q0 72 54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM999 201v600h200v-600h-200z" />
|
||||
<glyph unicode="" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
|
||||
<glyph unicode="" d="M1 585q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM76 565l237 339h503l89 -100v-294l-340 -130 q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
|
||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 500h300l-2 -194l402 294l-402 298v-197h-298v-201z" />
|
||||
<glyph unicode="" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l400 -294v194h302v201h-300v197z" />
|
||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
|
||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
|
||||
<glyph unicode="" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -34 5.5 -93t7.5 -87q0 -9 17 -44t16 -60q12 0 23 -5.5 t23 -15t20 -13.5q20 -10 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55.5t-20 -57.5q12 -21 22.5 -34.5t28 -27t36.5 -17.5q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q101 -2 221 111q31 30 47 48t34 49t21 62q-14 9 -37.5 9.5t-35.5 7.5q-14 7 -49 15t-52 19 q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q8 16 22 22q6 -1 26 -1.5t33.5 -4.5t19.5 -13q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5 t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23 q-19 -3 -37 0q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -46 0t-45 -3q-20 -6 -51.5 -25.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79zM518 915q3 12 16 30.5t16 25.5q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -18 8 -42.5t16.5 -44 t9.5 -23.5q-6 1 -39 5t-53.5 10t-36.5 16z" />
|
||||
<glyph unicode="" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
|
||||
<glyph unicode="" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
|
||||
<glyph unicode="" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
|
||||
<glyph unicode="" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
|
||||
<glyph unicode="" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
|
||||
<glyph unicode="" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM513 609q0 32 21 56.5t52 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-16 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5q-37 0 -62.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
|
||||
<glyph unicode="" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36 q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60l517 511 q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
|
||||
<glyph unicode="" d="M79 784q0 131 99 229.5t230 98.5q144 0 242 -129q103 129 245 129q130 0 227 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100l-84.5 84.5t-68 74t-60 78t-33.5 70.5t-15 78z M250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-106 48.5q-73 0 -131 -83l-118 -171l-114 174q-51 80 -124 80q-59 0 -108.5 -49.5t-49.5 -118.5z" />
|
||||
<glyph unicode="" d="M57 353q0 -94 66 -160l141 -141q66 -66 159 -66q95 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141l19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
|
||||
<glyph unicode="" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
|
||||
<glyph unicode="" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
|
||||
<glyph unicode="" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5v-307l64 -14 q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5zM700 237 q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
|
||||
<glyph unicode="" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5 t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10 t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221z" />
|
||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
|
||||
<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
|
||||
<glyph unicode="" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
|
||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
|
||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
|
||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
|
||||
<glyph unicode="" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
|
||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
|
||||
<glyph unicode="" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
|
||||
<glyph unicode="" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
|
||||
<glyph unicode="" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
|
||||
<glyph unicode="" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
|
||||
<glyph unicode="" d="M216 519q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40z" />
|
||||
<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
|
||||
<glyph unicode="" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
|
||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
|
||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
|
||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
|
||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 401h700v699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
|
||||
<glyph unicode="" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l248 -237v700h-699zM900 150h100v50h-100v-50z" />
|
||||
<glyph unicode="" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
|
||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
|
||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
|
||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
|
||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
|
||||
<glyph unicode="" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
|
||||
<glyph unicode="" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
|
||||
<glyph unicode="" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
|
||||
<glyph unicode="" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359z" />
|
||||
<glyph unicode="" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
|
||||
<glyph unicode="" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
|
||||
<glyph unicode="" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118q17 17 20 41.5 t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
|
||||
<glyph unicode="" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
|
||||
<glyph unicode="" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
|
||||
<glyph unicode="" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
|
||||
<glyph unicode="" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
|
||||
<glyph unicode="" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
|
||||
<glyph unicode="" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
|
||||
<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300 h200l-300 -300z" />
|
||||
<glyph unicode="" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
|
||||
<glyph unicode="" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
|
||||
<glyph unicode="" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
|
||||
</font>
|
||||
</defs></svg>
|
Before (image error) Size: 61 KiB |
Binary file not shown.
Binary file not shown.
@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="534.622px" height="534.624px" viewBox="0 0 534.622 534.624" enable-background="new 0 0 534.622 534.624"
|
||||
xml:space="preserve">
|
||||
<path fill="#010101" d="M534.622,300.726v217.191c0,9.226-7.481,16.707-16.707,16.707H16.706c-4.552,0-8.908-1.856-12.057-5.143
|
||||
c-3.149-3.284-4.825-7.713-4.634-12.257l16.707-400.968c0.371-8.951,7.734-16.014,16.691-16.014h100.242
|
||||
c8.884,0,16.217,6.954,16.682,15.828l14.737,279.97l107.131-107.127c3.194-3.198,7.468-4.895,11.816-4.895
|
||||
c2.149,0,4.323,0.416,6.392,1.273c6.24,2.586,10.311,8.676,10.311,15.434v76.613l88.43-88.426c3.194-3.198,7.468-4.895,11.816-4.895
|
||||
c2.149,0,4.323,0.416,6.392,1.273c6.24,2.586,10.311,8.676,10.311,15.434v76.613l88.43-88.426c3.194-3.198,7.468-4.895,11.816-4.895
|
||||
c2.149,0,4.323,0.416,6.392,1.273C530.552,287.877,534.622,293.967,534.622,300.726z M384.259,100.242
|
||||
C300.724,100.242,267.31,0,167.068,0C112.412,0,63.89,26.252,33.412,66.828c26.668-20.288,69.12-33.414,116.949-33.414
|
||||
c83.535,0,116.949,100.242,217.191,100.242c54.656,0,103.179-26.252,133.656-66.828C474.54,87.116,432.088,100.242,384.259,100.242z
|
||||
"/>
|
||||
</svg>
|
Before (image error) Size: 1.4 KiB |
Binary file not shown.
Before ![]() (image error) Size: 48 B |
Binary file not shown.
Before ![]() (image error) Size: 3.6 KiB |
Binary file not shown.
Before ![]() (image error) Size: 3.6 KiB |
Binary file not shown.
Before ![]() (image error) Size: 3.7 KiB |
Binary file not shown.
Before ![]() (image error) Size: 3.2 KiB |
Binary file not shown.
Before ![]() (image error) Size: 2.5 KiB |
@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="148.01px" height="152.42px" viewBox="0 0 148.01 152.42" enable-background="new 0 0 148.01 152.42" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M76.856,41.274c-2.898,6.115-1.747,11.134,2.581,11.213c4.329,0.075,10.193-4.815,13.089-10.927
|
||||
c2.904-6.118,1.751-11.141-2.578-11.22C85.62,30.269,79.759,35.163,76.856,41.274z M112.124,19.195
|
||||
c0.036,0.015,0.059,0.054,0.059,0.093c0,0.014-0.002,0.025-0.005,0.032c-2.587,7.328-6.878,15.67-11.131,21.996
|
||||
c-8.959,13.301-21.819,21.689-28.718,18.728c-6.895-2.953-5.236-16.136,3.731-29.443c2.019-2.986,4.232-5.721,6.523-8.141
|
||||
c0.016-0.018,0.029-0.043,0.029-0.072c0-0.054-0.047-0.1-0.102-0.1c0,0-0.011,0-0.012,0.004c-2.818,0.39-5.673,0.945-8.553,1.672
|
||||
c-0.02,0.004-0.041,0.018-0.056,0.036C43.621,61.115,30.74,109.319,32.512,152.32l0,0c0,0.058-0.043,0.1-0.1,0.1
|
||||
c-0.013,0-0.027,0-0.038-0.004c-17.844-7.192-30.884-24.427-32.241-46.248l-0.018-0.251c-2.25-38.827,28.704-78.599,69.149-88.834
|
||||
C84.938,13.113,99.746,14.158,112.124,19.195z"/>
|
||||
<path fill="#FFFFFF" d="M100.682,123.911c-2.941,2.041-6.009,3.927-9.176,5.628c-0.014,0.004-0.032,0.011-0.047,0.011
|
||||
c-0.054,0-0.1-0.043-0.104-0.097c-0.591-9.322-2.599-18.352-6.072-25.866c-9.258-20.06-25.444-21.603-36.136-3.444
|
||||
c-6.543,11.113-9.522,27.037-8.716,42.325c0,0.043,0.03,0.079,0.07,0.09c11.345,3.555,24.413,3.945,38.356,0.426
|
||||
c40.39-10.29,71.281-50.019,69.038-88.806c-1.98-34.072-28.858-56.087-62.742-54.046c-0.023,0-0.048,0.011-0.063,0.029
|
||||
c-3.295,3.333-6.38,6.698-9.274,10.096c-0.014,0.018-0.023,0.043-0.023,0.064c0,0.058,0.047,0.104,0.1,0.104
|
||||
c0,0,0.007,0,0.014-0.004c19.855-2.513,35.769,1.521,46.157,9.795c0.022,0.018,0.034,0.047,0.034,0.078
|
||||
c0,0.018-0.004,0.04-0.012,0.054c-35.782,50.437-31.353,79.175-21.37,103.441c0.006,0.011,0.009,0.022,0.009,0.036
|
||||
C100.725,123.861,100.707,123.893,100.682,123.911z"/>
|
||||
</g>
|
||||
</svg>
|
Before (image error) Size: 2.2 KiB |
@ -1,95 +0,0 @@
|
||||
(function() {
|
||||
|
||||
var pageCache;
|
||||
|
||||
$(document).ready(function() {
|
||||
pageCache = $('.api-documentation').html();
|
||||
|
||||
// Show the proper JSON/XML example when toggled
|
||||
$('.example-select').on('change', function(e) {
|
||||
$(e.currentTarget).find(':selected').tab('show')
|
||||
});
|
||||
|
||||
// Change the text on the expando buttons when appropriate
|
||||
$('.api-detail')
|
||||
.on('hide.bs.collapse', function(e) {
|
||||
processButton(this, 'detail');
|
||||
})
|
||||
.on('show.bs.collapse', function(e) {
|
||||
processButton(this, 'close');
|
||||
});
|
||||
|
||||
// Wire up the search button
|
||||
$('#search-btn').on('click', function(e) {
|
||||
searchPage();
|
||||
});
|
||||
|
||||
// Wire up the search box enter
|
||||
$('#search-box').on('keydown', function(e) {
|
||||
if (e.keyCode === 13) {
|
||||
searchPage();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* highlight terms based on the regex in the provided $element
|
||||
*/
|
||||
function highlightTextNodes($element, regex) {
|
||||
var markup = $element.html();
|
||||
|
||||
// Do regex replace
|
||||
// Inject span with class of 'highlighted termX' for google style highlighting
|
||||
$element.html(markup.replace(regex, '>$1<span class="highlight">$2</span>$3<'));
|
||||
}
|
||||
|
||||
function searchPage() {
|
||||
$(".api-documentation").html(pageCache);
|
||||
|
||||
//make sure that all div's are expanded/hidden accordingly
|
||||
$('.api-detail.in').each(function (e) {
|
||||
$(this).collapse('hide');
|
||||
});
|
||||
|
||||
var startTime = new Date().getTime(),
|
||||
searchTerm = $('#search-box').val();
|
||||
|
||||
// The regex is the secret, it prevents text within tag declarations to be affected
|
||||
var regex = new RegExp(">([^<]*)?(" + searchTerm + ")([^>]*)?<", "ig");
|
||||
highlightTextNodes($('.api-documentation'), regex);
|
||||
|
||||
// Once we've highlighted the node, lets expand any with a search match in them
|
||||
$('.api-detail').each(function () {
|
||||
|
||||
var $elem = $(this);
|
||||
|
||||
if ($elem.html().indexOf('<span class="highlight">') !== -1) {
|
||||
$elem.collapse('show');
|
||||
processButton($elem, 'close');
|
||||
}
|
||||
});
|
||||
|
||||
// log the results
|
||||
if (console.log) {
|
||||
console.log("search completed in: " + ((new Date().getTime()) - startTime) + "ms");
|
||||
}
|
||||
|
||||
$('.api-detail')
|
||||
.on('hide.bs.collapse', function (e) {
|
||||
processButton(this, 'detail');
|
||||
})
|
||||
.on('show.bs.collapse', function (e) {
|
||||
processButton(this, 'close');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for setting the text, styles for expandos
|
||||
*/
|
||||
function processButton(button, text) {
|
||||
$('#' + $(button).attr('id') + '-btn').text(text)
|
||||
.toggleClass('btn-info')
|
||||
.toggleClass('btn-default');
|
||||
}
|
||||
})();
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -1,49 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:classpath="http://docs.rackspace.com/api"
|
||||
xmlns:cx="http://xmlcalabash.com/ns/extensions"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:l="http://xproc.org/library"
|
||||
xmlns:rax="http://docs.rackspace.com/api"
|
||||
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
exclude-result-prefixes="classpath cx d l rax wadl"
|
||||
version="1.0">
|
||||
|
||||
<xsl:output
|
||||
method="html"
|
||||
indent="yes"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
|
||||
|
||||
<xsl:template match="node()|@*" >
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="node()|@*"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="*" priority="1">
|
||||
<xsl:element name="{name()}" namespace="{namespace-uri()}">
|
||||
<xsl:variable name="vtheElem" select="."/>
|
||||
|
||||
<xsl:for-each select="namespace::*">
|
||||
<xsl:variable name="vPrefix" select="name()"/>
|
||||
|
||||
<xsl:if test=
|
||||
"$vtheElem/descendant::*
|
||||
[namespace-uri()=current()
|
||||
and
|
||||
substring-before(name(),':') = $vPrefix
|
||||
or
|
||||
@*[substring-before(name(),':') = $vPrefix]
|
||||
]
|
||||
">
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:apply-templates select="node()|@*"/>
|
||||
</xsl:element>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:db="http://docbook.org/ns/docbook"
|
||||
exclude-result-prefixes="xs" version="2.0">
|
||||
|
||||
<xsl:template match="node() | @*">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="node() | @*"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:param name="max">8</xsl:param>
|
||||
|
||||
<xsl:template match="db:programlisting">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*"/>
|
||||
<xsl:if test="count(tokenize(.,'
')) > $max">
|
||||
<xsl:processing-instruction name="dbfo">keep-together="always"</xsl:processing-instruction>
|
||||
<xsl:comment>linefeeds: <xsl:value-of select="count(tokenize(.,'
'))"/></xsl:comment>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,414 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE xsl:stylesheet [
|
||||
<!ENTITY lowercase "'abcdefghijklmnopqrstuvwxyz'">
|
||||
<!ENTITY uppercase "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'">
|
||||
]>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
version="1.0">
|
||||
<xsl:output method="xml" encoding="UTF-8" media-type="image/svg+xml" standalone="no"/>
|
||||
|
||||
<xsl:param name="docbook.infile" select="'/Users/jorgew/projects/cloud-files-api-docs/src/docbkx/cfdevguide_d5.xml'"/>
|
||||
<xsl:param name="branding"/>
|
||||
<xsl:param name="coverColor"/>
|
||||
<xsl:param name="draft.status" select="''"/>
|
||||
|
||||
<xsl:variable name="docbook" select="document($docbook.infile)"/>
|
||||
|
||||
<xsl:variable name="status.bar.text">
|
||||
<xsl:call-template name="pi-attribute">
|
||||
<xsl:with-param name="pis" select="$docbook/*/processing-instruction('rax')"/>
|
||||
<xsl:with-param name="attribute" select="'status.bar.text'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="draft.text">
|
||||
<xsl:if test="$draft.status = 'on' or ($docbook/*[contains(translate(@status,&lowercase;,&uppercase;),'DRAFT')] and $draft.status = '')">DRAFT</xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="rackspace.status.text">
|
||||
<xsl:if test="not(normalize-space($status.bar.text) = '')"><xsl:value-of select="normalize-space($status.bar.text)"/></xsl:if>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="status.bar.text.font.size">
|
||||
<xsl:call-template name="pi-attribute">
|
||||
<xsl:with-param name="pis" select="$docbook/*/processing-instruction('rax')"/>
|
||||
<xsl:with-param name="attribute" select="'status.bar.text.font.size'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="title.font.size">
|
||||
<xsl:call-template name="pi-attribute">
|
||||
<xsl:with-param name="pis" select="$docbook/*/processing-instruction('rax')"/>
|
||||
<xsl:with-param name="attribute" select="'title.font.size'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="subtitle.font.size">
|
||||
<xsl:call-template name="pi-attribute">
|
||||
<xsl:with-param name="pis" select="$docbook/*/processing-instruction('rax')"/>
|
||||
<xsl:with-param name="attribute" select="'subtitle.font.size'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
|
||||
<xsl:variable name="plaintitle">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$docbook/*/d:title">
|
||||
<xsl:copy-of select="$docbook/*/d:title"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$docbook/*/d:info/d:title">
|
||||
<xsl:copy-of select="$docbook/*/d:info/d:title"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">
|
||||
<xsl:text>This template requires a docbook title!</xsl:text>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="plainsubtitle">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$docbook/*/d:subtitle">
|
||||
<xsl:copy-of select="$docbook/*/d:subtitle"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$docbook/*/d:info/d:subtitle">
|
||||
<xsl:copy-of select="$docbook/*/d:info/d:subtitle"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="productname">
|
||||
<xsl:copy-of select="$docbook/*/d:info/d:productname"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="title">
|
||||
<xsl:choose>
|
||||
<!--
|
||||
If there's a product name, and the product name is in the
|
||||
subtitle then use the product name for the title.
|
||||
-->
|
||||
<xsl:when test="(string-length(string($productname)) > 0) and contains($plaintitle,$productname)">
|
||||
<xsl:copy-of select="$productname"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$plaintitle"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="subtitle">
|
||||
<xsl:choose>
|
||||
<xsl:when test="(string-length(string($productname))) and contains($plaintitle,$productname)">
|
||||
<xsl:value-of select="substring-before($plaintitle,$productname)"/>
|
||||
<xsl:value-of select="substring-after($plaintitle,$productname)"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$plainsubtitle">
|
||||
<xsl:value-of select="$plainsubtitle"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="releaseinfo">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$docbook//d:info[1]/d:releaseinfo">
|
||||
<xsl:value-of select="$docbook//d:info[1]/d:releaseinfo"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="pubdate">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$docbook//d:info[1]/d:pubdate">
|
||||
<xsl:call-template name="longDate">
|
||||
<xsl:with-param name="in" select="$docbook//d:info[1]/d:pubdate"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:template match="node() | @*">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@* | node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="text()" priority="10">
|
||||
<xsl:variable name="textWithTitle">
|
||||
<xsl:call-template name="replaceText">
|
||||
<xsl:with-param name="text" select="."/>
|
||||
<xsl:with-param name="replace" select="'$title$'"/>
|
||||
<xsl:with-param name="with" select="$title"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="textWithSubTitle">
|
||||
<xsl:call-template name="replaceText">
|
||||
<xsl:with-param name="text" select="$textWithTitle"/>
|
||||
<xsl:with-param name="replace" select="'$subtitle$'"/>
|
||||
<xsl:with-param name="with" select="$subtitle"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="textWithReleaseInfo">
|
||||
<xsl:call-template name="replaceText">
|
||||
<xsl:with-param name="text" select="$textWithSubTitle"/>
|
||||
<xsl:with-param name="replace" select="'$releaseinfo$'"/>
|
||||
<xsl:with-param name="with" select="$releaseinfo"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="textWithPubDate">
|
||||
<xsl:call-template name="replaceText">
|
||||
<xsl:with-param name="text" select="$textWithReleaseInfo"/>
|
||||
<xsl:with-param name="replace" select="'$pubdate$'"/>
|
||||
<xsl:with-param name="with" select="$pubdate"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="textWithStatusText">
|
||||
<xsl:call-template name="replaceText">
|
||||
<xsl:with-param name="text" select="$textWithPubDate"/>
|
||||
<xsl:with-param name="replace" select="'$status.text$'"/>
|
||||
<xsl:with-param name="with" select="$rackspace.status.text"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="textWithDraftText">
|
||||
<xsl:call-template name="replaceText">
|
||||
<xsl:with-param name="text" select="$textWithStatusText"/>
|
||||
<xsl:with-param name="replace" select="'$draft.text$'"/>
|
||||
<xsl:with-param name="with" select="$draft.text"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:copy-of select="$textWithDraftText"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="replaceText">
|
||||
<xsl:param name="text"/>
|
||||
<xsl:param name="replace"/>
|
||||
<xsl:param name="with"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($text,$replace)">
|
||||
<xsl:value-of select="substring-before($text,$replace)"/>
|
||||
<xsl:value-of select="normalize-space($with)"/>
|
||||
<xsl:value-of select="substring-after($text,$replace)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$text"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="shortDate">
|
||||
<xsl:param name="in"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$in">
|
||||
<xsl:variable name="year" select="normalize-space(substring-before(string($in),'-'))"/>
|
||||
<xsl:variable name="rest" select="substring-after(string($in),'-')"/>
|
||||
<xsl:variable name="month" select="normalize-space(substring-before($rest,'-'))"/>
|
||||
<xsl:variable name="day" select="normalize-space(substring-before(concat(substring-after($rest,'-'),'T'),'T'))"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$month = '01'">
|
||||
<xsl:text>Jan</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '02'">
|
||||
<xsl:text>Feb</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '03'">
|
||||
<xsl:text>Mar</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '04'">
|
||||
<xsl:text>Apr</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '05'">
|
||||
<xsl:text>May</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '06'">
|
||||
<xsl:text>Jun</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '07'">
|
||||
<xsl:text>Jul</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '08'">
|
||||
<xsl:text>Aug</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '09'">
|
||||
<xsl:text>Sep</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '10'">
|
||||
<xsl:text>Oct</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '11'">
|
||||
<xsl:text>Nov</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '12'">
|
||||
<xsl:text>Dec</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
Bad Month value in "<xsl:value-of select="$in"/>"
|
||||
Please use the format 2011-12-31 for
|
||||
dates.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with($day, '0')">
|
||||
<xsl:value-of select="substring($day, 2)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$day"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:value-of select="$year"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise />
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="longDate">
|
||||
<xsl:param name="in"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$in">
|
||||
<xsl:variable name="year" select="normalize-space(substring-before(string($in),'-'))"/>
|
||||
<xsl:variable name="rest" select="substring-after(string($in),'-')"/>
|
||||
<xsl:variable name="month" select="normalize-space(substring-before($rest,'-'))"/>
|
||||
<xsl:variable name="day" select="normalize-space(substring-before(concat(substring-after($rest,'-'),'T'),'T'))"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$month = '01'">
|
||||
<xsl:text>January</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '02'">
|
||||
<xsl:text>February</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '03'">
|
||||
<xsl:text>March</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '04'">
|
||||
<xsl:text>April</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '05'">
|
||||
<xsl:text>May</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '06'">
|
||||
<xsl:text>June</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '07'">
|
||||
<xsl:text>July</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '08'">
|
||||
<xsl:text>August</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '09'">
|
||||
<xsl:text>September</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '10'">
|
||||
<xsl:text>October</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '11'">
|
||||
<xsl:text>November</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '12'">
|
||||
<xsl:text>December</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
Bad Month value in "<xsl:value-of select="$in"/>"
|
||||
Please use the format 2011-12-31 for
|
||||
dates.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with($day, '0')">
|
||||
<xsl:value-of select="substring($day, 2)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$day"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:value-of select="$year"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise/>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!-- DWC: This template comes from the DocBook xsls (MIT-style license) -->
|
||||
<xsl:template name="pi-attribute">
|
||||
<xsl:param name="pis" select="processing-instruction('BOGUS_PI')"></xsl:param>
|
||||
<xsl:param name="attribute">filename</xsl:param>
|
||||
<xsl:param name="count">1</xsl:param>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="$count>count($pis)">
|
||||
<!-- not found -->
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:variable name="pi">
|
||||
<xsl:value-of select="$pis[$count]"></xsl:value-of>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="pivalue">
|
||||
<xsl:value-of select="concat(' ', normalize-space($pi))"></xsl:value-of>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($pivalue,concat(' ', $attribute, '='))">
|
||||
<xsl:variable name="rest" select="substring-after($pivalue,concat(' ', $attribute,'='))"></xsl:variable>
|
||||
<xsl:variable name="quote" select="substring($rest,1,1)"></xsl:variable>
|
||||
<xsl:value-of select="substring-before(substring($rest,2),$quote)"></xsl:value-of>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:call-template name="pi-attribute">
|
||||
<xsl:with-param name="pis" select="$pis"></xsl:with-param>
|
||||
<xsl:with-param name="attribute" select="$attribute"></xsl:with-param>
|
||||
<xsl:with-param name="count" select="$count + 1"></xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@style[contains(parent::*,'$title$')]">
|
||||
<xsl:attribute name="style"><xsl:value-of select="concat('font-size: ',$title.font.size,substring-after(.,'px'))"/>
|
||||
</xsl:attribute>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@style[contains(parent::*,'$subtitle$')]">
|
||||
<xsl:attribute name="style"><xsl:value-of select="concat('font-size: ',$subtitle.font.size, substring-after(.,'px'))"/></xsl:attribute>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="svg:polygon[@id='polygon2727']">
|
||||
<xsl:copy>
|
||||
<xsl:attribute name="style">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$coverColor != ''">fill:#<xsl:value-of select="$coverColor"/>;fill-opacity:1</xsl:when>
|
||||
<xsl:when test="$branding = 'rackspace-private-cloud'">fill:#c42126;fill-opacity:1</xsl:when>
|
||||
<xsl:when test="$branding = 'openstack'">fill:#ce3327;fill-opacity:1</xsl:when>
|
||||
<xsl:when test="$branding = 'repose'">fill:#A1CAFF;fill-opacity:1</xsl:when>
|
||||
<xsl:otherwise>fill:#c42126;fill-opacity:1</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:apply-templates select="@points|@id"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="svg:tspan[contains(.,'$status.text$')]">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="@*[not(local-name() = 'style')]"/>
|
||||
<xsl:attribute name="style">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not($status.bar.text.font.size = '')">
|
||||
<xsl:value-of select="concat('font-size:',$status.bar.text.font.size,';',substring-after(@style,'px;'))"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="."/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,163 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet exclude-result-prefixes="d"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
version="1.0">
|
||||
|
||||
<!--
|
||||
These templates convert ISO-8601 to more human friendly forms.
|
||||
|
||||
Examples of valid inputs include:
|
||||
* 2011-03-18
|
||||
* 2011-03-18T20:05Z
|
||||
-->
|
||||
|
||||
<xsl:template name="longDate">
|
||||
<xsl:param name="in"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$in">
|
||||
<xsl:variable name="year" select="normalize-space(substring-before(string($in),'-'))"/>
|
||||
<xsl:variable name="rest" select="substring-after(string($in),'-')"/>
|
||||
<xsl:variable name="month" select="normalize-space(substring-before($rest,'-'))"/>
|
||||
<xsl:variable name="day" select="normalize-space(substring-before(concat(substring-after($rest,'-'),'T'),'T'))"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$month = '01'">
|
||||
<xsl:text>January</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '02'">
|
||||
<xsl:text>February</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '03'">
|
||||
<xsl:text>March</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '04'">
|
||||
<xsl:text>April</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '05'">
|
||||
<xsl:text>May</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '06'">
|
||||
<xsl:text>June</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '07'">
|
||||
<xsl:text>July</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '08'">
|
||||
<xsl:text>August</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '09'">
|
||||
<xsl:text>September</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '10'">
|
||||
<xsl:text>October</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '11'">
|
||||
<xsl:text>November</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '12'">
|
||||
<xsl:text>December</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
Bad Month value in "<xsl:value-of select="$in"/>"
|
||||
Please use the format 2011-12-31 for
|
||||
dates.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with($day, '0')">
|
||||
<xsl:value-of select="substring($day, 2)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$day"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:value-of select="$year"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise/>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="shortDate">
|
||||
<xsl:param name="in"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$in">
|
||||
<xsl:variable name="year" select="normalize-space(substring-before(string($in),'-'))"/>
|
||||
<xsl:variable name="rest" select="substring-after(string($in),'-')"/>
|
||||
<xsl:variable name="month" select="normalize-space(substring-before($rest,'-'))"/>
|
||||
<xsl:variable name="day" select="normalize-space(substring-before(concat(substring-after($rest,'-'),'T'),'T'))"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$month = '01'">
|
||||
<xsl:text>Jan</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '02'">
|
||||
<xsl:text>Feb</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '03'">
|
||||
<xsl:text>Mar</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '04'">
|
||||
<xsl:text>Apr</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '05'">
|
||||
<xsl:text>May</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '06'">
|
||||
<xsl:text>Jun</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '07'">
|
||||
<xsl:text>Jul</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '08'">
|
||||
<xsl:text>Aug</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '09'">
|
||||
<xsl:text>Sep</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '10'">
|
||||
<xsl:text>Oct</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '11'">
|
||||
<xsl:text>Nov</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$month = '12'">
|
||||
<xsl:text>Dec</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
Bad Month value in "<xsl:value-of select="$in"/>"
|
||||
Please use the format 2011-12-31 for
|
||||
dates.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with($day, '0')">
|
||||
<xsl:value-of select="substring($day, 2)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$day"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text>, </xsl:text>
|
||||
<xsl:value-of select="$year"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise />
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:SXXP0005">
|
||||
<!-- This stupid template is here to avoid SXXP0005 errors from Saxon -->
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
File diff suppressed because it is too large
Load Diff
@ -1,299 +0,0 @@
|
||||
<?xml version="1.1" encoding="UTF-8"?>
|
||||
<xsl:stylesheet
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:exslt="http://exslt.org/common"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||
xmlns:rax="http://docs.rackspace.com/api"
|
||||
xmlns="http://www.w3.org/1999/xhtml"
|
||||
version="1.0"
|
||||
exclude-result-prefixes="exslt">
|
||||
|
||||
<!-- First import the non-chunking templates that format elements
|
||||
within each chunk file. In a customization, you should
|
||||
create a separate non-chunking customization layer such
|
||||
as mydocbook.xsl that imports the original docbook.xsl and
|
||||
customizes any presentation templates. Then your chunking
|
||||
customization should import mydocbook.xsl instead of
|
||||
docbook.xsl. -->
|
||||
<xsl:import href="docbook.xsl"/>
|
||||
|
||||
<!-- chunk-common.xsl contains all the named templates for chunking.
|
||||
In a customization file, you import chunk-common.xsl, then
|
||||
add any customized chunking templates of the same name.
|
||||
They will have import precedence over the original
|
||||
chunking templates in chunk-common.xsl. -->
|
||||
<xsl:import href="urn:docbkx:stylesheet-base/xhtml-1_1/chunk-common.xsl"/>
|
||||
|
||||
<!-- The manifest.xsl module is no longer imported because its
|
||||
templates were moved into chunk-common and chunk-code -->
|
||||
|
||||
<!-- chunk-code.xsl contains all the chunking templates that use
|
||||
a match attribute. In a customization it should be referenced
|
||||
using <xsl:include> instead of <xsl:import>, and then add
|
||||
any customized chunking templates with match attributes. But be sure
|
||||
to add a priority="1" to such customized templates to resolve
|
||||
its conflict with the original, since they have the
|
||||
same import precedence.
|
||||
|
||||
Using xsl:include prevents adding another layer
|
||||
of import precedence, which would cause any
|
||||
customizations that use xsl:apply-imports to wrongly
|
||||
apply the chunking version instead of the original
|
||||
non-chunking version to format an element. -->
|
||||
<xsl:include href="urn:docbkx:stylesheet-base/xhtml-1_1/profile-chunk-code.xsl" />
|
||||
|
||||
<xsl:include href="../process-embedded-wadl.xsl"/>
|
||||
|
||||
<!-- ======================================== -->
|
||||
|
||||
<xsl:variable name="preprocessed-nodes">
|
||||
<xsl:apply-templates select="exslt:node-set($profiled-nodes)" mode="preprocess"/>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:template match="d:legalnotice" mode="preprocess">
|
||||
<xsl:message>
|
||||
########################################
|
||||
Processing legalnotice: <xsl:value-of select="@role"/>
|
||||
########################################
|
||||
</xsl:message>
|
||||
<d:legalnotice>
|
||||
<xsl:apply-templates select="@*" mode="preprocess"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(string(@role),'cc-')">
|
||||
<xsl:call-template name="CCLegalNotice" />
|
||||
</xsl:when>
|
||||
<xsl:when test="@role = 'rs-api'">
|
||||
<xsl:call-template name="RSAPILegalNotice"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="@role = 'apache2'">
|
||||
<xsl:call-template name="Apache2LegalNotice"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</d:legalnotice>
|
||||
</xsl:template>
|
||||
|
||||
<!--
|
||||
The abstract is suppressed if the rs-api legal notice is used, as
|
||||
it's incorporated into the document in this case.
|
||||
-->
|
||||
<xsl:template match="d:abstract" mode="preprocess">
|
||||
<xsl:choose>
|
||||
<xsl:when test="/*//d:legalnotice[@role = 'rs-api']" />
|
||||
<xsl:otherwise>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()" mode="preprocess"/>
|
||||
</xsl:copy>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="Apache2LegalNotice">
|
||||
<xsl:variable name="a2Link" select="'http://www.apache.org/licenses/LICENSE-2.0'"/>
|
||||
<xsl:if test="@role = 'apache2'">
|
||||
<d:para>
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
</d:para>
|
||||
<d:para>
|
||||
<xsl:element name="d:link">
|
||||
<xsl:attribute name="xlink:href">
|
||||
<xsl:value-of select="$a2Link"/>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="$a2Link"/>
|
||||
</xsl:element>
|
||||
</d:para>
|
||||
<d:para>
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
</d:para>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="RSAPILegalNotice">
|
||||
<xsl:if test="@role = 'rs-api'">
|
||||
<d:para>
|
||||
<xsl:value-of select="/*/d:info/d:abstract"/>
|
||||
The document is for informational purposes only and is
|
||||
provided “AS IS.”
|
||||
</d:para>
|
||||
<d:para>
|
||||
RACKSPACE MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
|
||||
KIND, EXPRESS OR IMPLIED, AS TO THE ACCURACY OR
|
||||
COMPLETENESS OF THE CONTENTS OF THIS DOCUMENT AND
|
||||
RESERVES THE RIGHT TO MAKE CHANGES TO SPECIFICATIONS AND
|
||||
PRODUCT/SERVICES DESCRIPTION AT ANY TIME WITHOUT NOTICE.
|
||||
RACKSPACE SERVICES OFFERINGS ARE SUBJECT TO CHANGE
|
||||
WITHOUT NOTICE. USERS MUST TAKE FULL RESPONSIBILITY FOR
|
||||
APPLICATION OF ANY SERVICES MENTIONED HEREIN. EXCEPT AS
|
||||
SET FORTH IN RACKSPACE GENERAL TERMS AND CONDITIONS
|
||||
AND/OR CLOUD TERMS OF SERVICE, RACKSPACE ASSUMES NO
|
||||
LIABILITY WHATSOEVER, AND DISCLAIMS ANY EXPRESS OR
|
||||
IMPLIED WARRANTY, RELATING TO ITS SERVICES INCLUDING,
|
||||
BUT NOT LIMITED TO, THE IMPLIED WARRANTY OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
|
||||
NONINFRINGEMENT.
|
||||
</d:para>
|
||||
<d:para>
|
||||
Except as expressly provided in any written license
|
||||
agreement from Rackspace, the furnishing of this
|
||||
document does not give you any license to patents,
|
||||
trademarks, copyrights, or other intellectual property.
|
||||
</d:para>
|
||||
<d:para>
|
||||
Rackspace®, Rackspace logo and Fanatical Support® are
|
||||
registered service marks of Rackspace US,
|
||||
Inc. All other product names and trademarks
|
||||
used in this document are for identification purposes
|
||||
only and are property of their respective owners.
|
||||
</d:para>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="CCLegalNotice">
|
||||
<xsl:if test="starts-with(string(@role),'cc-')">
|
||||
<xsl:variable name="ccid"><xsl:value-of select="substring-after(string(@role),'cc-')"/></xsl:variable>
|
||||
<xsl:variable name="ccidURL">http://creativecommons.org/licenses/<xsl:value-of select="$ccid"/>/3.0/legalcode</xsl:variable>
|
||||
|
||||
<d:informaltable frame="void">
|
||||
<d:col width="10%"/>
|
||||
<d:col width="90%"/>
|
||||
<d:tbody>
|
||||
<d:tr>
|
||||
<d:td>
|
||||
<d:link xlink:href="{$ccidURL}">
|
||||
<d:informalfigure>
|
||||
<d:mediaobject>
|
||||
<d:imageobject>
|
||||
<d:imagedata
|
||||
fileref="../common/images/cc/{$ccid}.png"
|
||||
align="center"
|
||||
valign="middle"/>
|
||||
</d:imageobject>
|
||||
</d:mediaobject>
|
||||
</d:informalfigure>
|
||||
</d:link>
|
||||
</d:td>
|
||||
<d:td>
|
||||
<d:para>Except where otherwise noted, this document is licensed under
|
||||
<xsl:element name="d:link">
|
||||
<xsl:attribute name="xlink:href">
|
||||
<xsl:value-of select="$ccidURL"/>
|
||||
</xsl:attribute>
|
||||
<d:emphasis role="bold">
|
||||
Creative Commons Attribution
|
||||
<xsl:choose>
|
||||
<xsl:when test="$ccid = 'by'" />
|
||||
<xsl:when test="$ccid = 'by-sa'">
|
||||
<xsl:text>ShareAlike</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nd'">
|
||||
<xsl:text>NoDerivatives</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nc'">
|
||||
<xsl:text>NonCommercial</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nc-sa'">
|
||||
<xsl:text>NonCommercial ShareAlike</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nc-nd'">
|
||||
<xsl:text>NonCommercial NoDerivatives</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">
|
||||
I don't understand licence <xsl:value-of select="$ccid"/>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
3.0 License
|
||||
</d:emphasis>
|
||||
</xsl:element>
|
||||
</d:para>
|
||||
<d:para>
|
||||
<d:link xlink:href="{$ccidURL}">
|
||||
<xsl:value-of select="$ccidURL"/>
|
||||
</d:link>
|
||||
</d:para>
|
||||
</d:td>
|
||||
</d:tr>
|
||||
</d:tbody>
|
||||
</d:informaltable>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="/" priority="1">
|
||||
<!-- * Get a title for current doc so that we let the user -->
|
||||
<!-- * know what document we are processing at this point. -->
|
||||
<xsl:variable name="doc.title">
|
||||
<xsl:call-template name="get.doc.title"/>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
|
||||
<xsl:when test="false()"/>
|
||||
<!-- Can't process unless namespace removed -->
|
||||
<xsl:when test="false()"/>
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$rootid != ''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="count($preprocessed-nodes//*[@id=$rootid]) = 0">
|
||||
<xsl:message terminate="yes">
|
||||
<xsl:text>ID '</xsl:text>
|
||||
<xsl:value-of select="$rootid"/>
|
||||
<xsl:text>' not found in document.</xsl:text>
|
||||
</xsl:message>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
|
||||
<xsl:apply-templates select="key('id', $rootid)" mode="collect.targets"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="$collect.xref.targets != 'only'">
|
||||
<xsl:apply-templates select="exslt:node-set($preprocessed-nodes//*[@id=$rootid])" mode="process.root"/>
|
||||
<xsl:if test="$tex.math.in.alt != ''">
|
||||
<xsl:apply-templates select="exslt:node-set($preprocessed-nodes//*[@id=$rootid])" mode="collect.tex.math"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="$generate.manifest != 0">
|
||||
<xsl:call-template name="generate.manifest">
|
||||
<xsl:with-param name="node" select="key('id',$rootid)"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'">
|
||||
<xsl:apply-templates select="exslt:node-set($preprocessed-nodes)" mode="collect.targets"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="$collect.xref.targets != 'only'">
|
||||
<xsl:apply-templates select="exslt:node-set($preprocessed-nodes)" mode="process.root"/>
|
||||
<xsl:if test="$tex.math.in.alt != ''">
|
||||
<xsl:apply-templates select="exslt:node-set($preprocessed-nodes)" mode="collect.tex.math"/>
|
||||
</xsl:if>
|
||||
<xsl:if test="$generate.manifest != 0">
|
||||
<xsl:call-template name="generate.manifest">
|
||||
<xsl:with-param name="node" select="exslt:node-set($preprocessed-nodes)"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:call-template name="revhistory2atom"/>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:releaseinfo" mode="rackspace-title">
|
||||
 - <xsl:value-of select="normalize-space(.)"/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,392 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
|
||||
xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:db="http://docbook.org/ns/docbook"
|
||||
xmlns:ext="http://docs.openstack.org/common/api/v1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xsl:output indent="no"/>
|
||||
|
||||
<xsl:param name="targetExtQueryFile"/>
|
||||
<xsl:param name="webhelp"/>
|
||||
|
||||
<xsl:template match="/">
|
||||
<!--
|
||||
For debugging only
|
||||
<xsl:message>
|
||||
@@@@@@@@@@@@@@@@<xsl:copy-of select="$targetExtQueryFile"></xsl:copy-of>@@@@@@@@@@@@@@@@@@@@
|
||||
@@@@@@@@@@@@@@@@<xsl:copy-of select="$webhelp"></xsl:copy-of>@@@@@@@@@@@@@@@@@@@@
|
||||
</xsl:message>
|
||||
-->
|
||||
<xsl:choose>
|
||||
<xsl:when test="$webhelp='true' and (/db:book/db:info/ext:extensions or /db:book/db:info/ext:extension)">
|
||||
|
||||
<!-- debug only
|
||||
<xsl:message>^^^^^^^webhelp is true and extensions exists^^^^^^^^^^</xsl:message>
|
||||
-->
|
||||
<xsl:choose>
|
||||
<xsl:when test="(/db:book/db:info/ext:extensions)">
|
||||
<xsl:result-document href="{$targetExtQueryFile}">
|
||||
<xsl:copy-of select="/db:book/db:info/ext:extensions"></xsl:copy-of>
|
||||
</xsl:result-document>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:result-document href="{$targetExtQueryFile}">
|
||||
<xsl:copy-of select="/db:book/db:info/ext:extension"></xsl:copy-of>
|
||||
</xsl:result-document>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- Do nothing
|
||||
For debugging
|
||||
<xsl:message>###########Do nothing^^^^^^^^^^ </xsl:message>
|
||||
-->
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="node() | @*">
|
||||
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="node() | @*">
|
||||
</xsl:apply-templates>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="db:chapter[1]">
|
||||
<xsl:choose>
|
||||
<xsl:when test=" (/db:book/db:info/ext:extensions or /db:book/db:info/ext:extension)">
|
||||
<!-- for debugging
|
||||
<xsl:message>~~~~~~~~~~~Write out chapter~~~~~~~~~~~ </xsl:message>
|
||||
-->
|
||||
<chapter>
|
||||
<title>About This Extension</title>
|
||||
<variablelist spacing="compact">
|
||||
<varlistentry>
|
||||
<term>Name</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<xsl:value-of select="/db:book/db:info//ext:extension/@name"></xsl:value-of>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Namespace</term>
|
||||
<listitem>
|
||||
<para><xsl:value-of select="/db:book/db:info//ext:extension/@namespace"/></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Alias</term>
|
||||
<listitem>
|
||||
<para><xsl:value-of select="/db:book/db:info//ext:extension/@alias"/></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Contact</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<personname>
|
||||
<firstname><xsl:value-of select="/db:book/db:info/db:othercredit/db:personname/db:firstname"/></firstname>
|
||||
<surname><xsl:value-of select="/db:book/db:info/db:othercredit/db:personname/db:surname"/></surname>
|
||||
</personname>
|
||||
<xsl:if test="/db:book/db:info/db:othercredit/db:email">
|
||||
<email><xsl:value-of select="/db:book/db:info/db:othercredit/db:email"/></email>
|
||||
</xsl:if>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Status</term>
|
||||
<listitem>
|
||||
<para>ALPHA</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Last Update</term>
|
||||
<listitem>
|
||||
<para><xsl:value-of select="/db:book/db:info//ext:extension/@updated"/></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Dependencies</term>
|
||||
<listitem>
|
||||
<para>OpenStack Compute API v1.1 (2011-09-08)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Doc Link (PDF)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="{/db:book/db:info//atom:link[@type='application/pdf']/@href}">
|
||||
<xsl:value-of select="/db:book/db:info//atom:link[@type='application/pdf']/@href"/>
|
||||
</link>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Doc Link (WADL)</term>
|
||||
<listitem>
|
||||
<xsl:choose>
|
||||
<xsl:when test="/db:book/db:info//atom:link[@type='application/vnd.sun.wadl+xml']/@href">
|
||||
<link xlink:href="{/db:book/db:info//atom:link[@type='application/vnd.sun.wadl+xml']/@href}">
|
||||
<xsl:value-of select="/db:book/db:info//atom:link[@type='application/vnd.sun.wadl+xml']/@href"/>
|
||||
</link>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
None, the extension makes no modification to the API WADL.
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>doc Link(XSD)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<xsl:choose>
|
||||
<xsl:when test="/db:book/db:info//atom:link[@type='application/xml']/@href">
|
||||
<link xlink:href="{/db:book/db:info//atom:link[@type='application/xml']/@href}">
|
||||
<xsl:value-of select="/db:book/db:info//atom:link[@type='application/xml']/@href"/>
|
||||
</link>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
No schema provided.
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Short Description</term>
|
||||
<listitem>
|
||||
<para>
|
||||
<xsl:value-of select="/db:book/db:info//ext:description"></xsl:value-of>
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<xsl:processing-instruction name="hard-pagebreak"/>
|
||||
<example>
|
||||
<title>Extension Query Response: XML</title>
|
||||
<programlisting language="xml"><xsl:processing-instruction name="db-font-size">95%</xsl:processing-instruction>
|
||||
<xsl:choose>
|
||||
<xsl:when test="//ext:extensions">
|
||||
<xsl:apply-templates select="//ext:extensions" mode="escape-xml"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="//ext:extension" mode="escape-xml"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</programlisting>
|
||||
</example>
|
||||
<xsl:processing-instruction name="hard-pagebreak"/>
|
||||
<example>
|
||||
<title>Extension Query Response: JSON</title>
|
||||
<programlisting language="json"><xsl:processing-instruction name="db-font-size">95%</xsl:processing-instruction>
|
||||
<xsl:choose>
|
||||
<xsl:when test="//ext:extensions">
|
||||
<xsl:apply-templates select="//ext:extensions" mode="xml2json"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="//ext:extension" mode="xml2json"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</programlisting>
|
||||
</example>
|
||||
<section>
|
||||
<title>Document Change History</title>
|
||||
<para>
|
||||
The most recent changes to this document are described below.
|
||||
</para>
|
||||
<xsl:processing-instruction name="rax">revhistory</xsl:processing-instruction>
|
||||
</section>
|
||||
</chapter>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- Do nothing
|
||||
For debugging
|
||||
<xsl:message>~!@~!@~!@~!@~!@~!@Do not write chapter~!@~!@~!@~!@~@</xsl:message>
|
||||
-->
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="node() | @*"/>
|
||||
</xsl:copy>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="*" mode="escape-xml">
|
||||
<xsl:if test="parent::db:info"><xsl:text> </xsl:text></xsl:if><<xsl:value-of select="local-name(.)"/>
|
||||
|
||||
<xsl:apply-templates select="@*" mode="escape-xml"/>
|
||||
<xsl:if test="self::ext:extensions or self::ext:extension[not(parent::ext:extensions)]"> xmlns="http://docs.openstack.org/common/api/v1.0"
|
||||
xmlns:atom="http://www.w3.org/2005/Atom"</xsl:if><xsl:if test="not(./node())">/</xsl:if>><xsl:apply-templates xml:space="default" mode="escape-xml"/>
|
||||
<xsl:if test="node()"></<xsl:value-of select="local-name(.)"/>></xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="text()" mode="escape-xml">
|
||||
|
||||
<xsl:variable name="lessthan"><</xsl:variable>
|
||||
<xsl:variable name="amplessthan">&lt;</xsl:variable>
|
||||
<xsl:variable name="greaterthan">></xsl:variable>
|
||||
<xsl:variable name="ampgreterthan">&gt;</xsl:variable>
|
||||
<xsl:variable name="amp">&</xsl:variable>
|
||||
<xsl:variable name="ampamp">&amp;</xsl:variable>
|
||||
|
||||
<xsl:value-of select="replace(
|
||||
replace(
|
||||
replace(.,$amp,$ampamp),
|
||||
$lessthan,$amplessthan),
|
||||
$greaterthan,$ampgreterthan)"/>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@*" mode="escape-xml">
|
||||
|
||||
<xsl:variable name="lessthan"><</xsl:variable>
|
||||
<xsl:variable name="amplessthan">&lt;</xsl:variable>
|
||||
<xsl:variable name="greaterthan">></xsl:variable>
|
||||
<xsl:variable name="ampgreterthan">&gt;</xsl:variable>
|
||||
<xsl:variable name="amp">&</xsl:variable>
|
||||
<xsl:variable name="ampamp">&amp;</xsl:variable>
|
||||
|
||||
<xsl:variable name="singlequote">'</xsl:variable>
|
||||
<xsl:variable name="ampsinglequote">&#39;</xsl:variable>
|
||||
|
||||
<xsl:variable name="doublequote">"</xsl:variable>
|
||||
<xsl:variable name="ampdoublequote">&#34;</xsl:variable>
|
||||
|
||||
<xsl:variable name="escaped-text"
|
||||
select="replace(
|
||||
replace(
|
||||
replace(
|
||||
replace(
|
||||
replace(.,$amp,$ampamp),
|
||||
$lessthan,$amplessthan),
|
||||
$greaterthan,$ampgreterthan),
|
||||
$singlequote,$ampsinglequote),
|
||||
$doublequote,$ampdoublequote)"/>
|
||||
|
||||
<xsl:value-of select="concat(' ',local-name(.),'=',$singlequote,$escaped-text,$singlequote)"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(position()=last())"><xsl:text>
|
||||
</xsl:text><xsl:text> </xsl:text>
|
||||
</xsl:when>
|
||||
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:param name="singlequote">'</xsl:param>
|
||||
|
||||
<!-- Maybe use this instead (but integrate it into this xsl):
|
||||
https://code.google.com/p/xml2json-xslt/source/browse/trunk/xml2json.xslt -->
|
||||
|
||||
<xsl:template match="ext:extensions" mode="xml2json">
|
||||
<xsl:text>{
|
||||
"extensions" :
|
||||
[
|
||||
</xsl:text>
|
||||
<xsl:apply-templates mode="extension" select="./ext:extension" />
|
||||
<xsl:text>
|
||||
]
|
||||
}
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="ext:extension" mode="xml2json">
|
||||
<xsl:text>{
|
||||
"extension" :</xsl:text>
|
||||
<xsl:apply-templates mode="extension" select="." />
|
||||
<xsl:text>
|
||||
}
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="ext:extension" mode="extension">
|
||||
<xsl:variable name="attribs" select="./@*"/>
|
||||
<xsl:variable name="links" select="./atom:link"/>
|
||||
<!--
|
||||
<xsl:if test="position() != 1">
|
||||
<xsl:text>,</xsl:text>
|
||||
</xsl:if>
|
||||
-->
|
||||
<xsl:text> {
|
||||
</xsl:text>
|
||||
<xsl:apply-templates select="$attribs" mode="xml2json"/>
|
||||
<xsl:if test="ext:description">
|
||||
<xsl:if test="$attribs">
|
||||
<xsl:text>,
|
||||
</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:text>"description" : "</xsl:text>
|
||||
<xsl:value-of select="translate(normalize-space(ext:description), '	

',' ')"/>
|
||||
<xsl:text>"</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:if test="$links">
|
||||
<xsl:text>,
|
||||
"links" :
|
||||
[
|
||||
</xsl:text>
|
||||
<xsl:apply-templates select="$links" mode="atomlink"/>
|
||||
<xsl:text>
|
||||
]</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:text>
|
||||
}</xsl:text><xsl:if test="position()!=last()">,</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="atom:link" mode="atomlink">
|
||||
|
||||
<xsl:if test="position() != 1">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:text> {
|
||||
</xsl:text>
|
||||
<xsl:apply-templates select="./@*" mode="atomlink"/>
|
||||
<xsl:text>
|
||||
}</xsl:text>
|
||||
<xsl:if test="position()!=last()"><xsl:text>,</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@*" mode="xml2json">
|
||||
<xsl:if test="position() != 1">
|
||||
<xsl:text>,
|
||||
</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:text> "</xsl:text>
|
||||
<xsl:value-of select="name()"/>
|
||||
<xsl:text>" : "</xsl:text>
|
||||
<xsl:value-of select="."/>
|
||||
<xsl:text>"</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@*" mode="atomlink">
|
||||
|
||||
<xsl:if test="position() != 1">
|
||||
<xsl:text>,
|
||||
</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:if test="position()=1">
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:text> "</xsl:text>
|
||||
<xsl:value-of select="name()"/>
|
||||
<xsl:text>" : "</xsl:text>
|
||||
<xsl:value-of select="."/>
|
||||
<xsl:text>"</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
File diff suppressed because it is too large
Load Diff
@ -1,150 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet exclude-result-prefixes="d"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
version='1.0'>
|
||||
|
||||
<!-- Metadata support ("Document Properties" in Adobe Reader) -->
|
||||
<xsl:template name="fop1-document-information">
|
||||
<xsl:variable name="authors" select="(//d:author|//d:editor|//d:corpauthor|//d:authorgroup)[1]"/>
|
||||
|
||||
<xsl:variable name="title">
|
||||
<xsl:apply-templates select="/*[1]" mode="label.markup"/>
|
||||
<xsl:apply-templates select="/*[1]" mode="title.markup"/>
|
||||
<xsl:variable name="subtitle">
|
||||
<xsl:apply-templates select="/*[1]" mode="subtitle.markup"/>
|
||||
</xsl:variable>
|
||||
<xsl:if test="$subtitle !=''">
|
||||
<xsl:text> - </xsl:text>
|
||||
<xsl:value-of select="$subtitle"/>
|
||||
</xsl:if>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="ccid">
|
||||
<xsl:value-of select="substring-after(string(/*/d:info/d:legalnotice/@role),'cc-')"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="ccidURL">
|
||||
<xsl:text>http://creativecommons.org/licenses/</xsl:text>
|
||||
<xsl:value-of select="$ccid"/>
|
||||
<xsl:text>/3.0/legalcode</xsl:text>
|
||||
</xsl:variable>
|
||||
<fo:declarations>
|
||||
<x:xmpmeta xmlns:x="adobe:ns:meta/">
|
||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:xapRights='http://ns.adobe.com/xap/1.0/rights/'
|
||||
>
|
||||
<xapRights:Marked>True</xapRights:Marked>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<!-- Dublin Core properties go here -->
|
||||
<dc:rights>
|
||||
<rdf:Alt>
|
||||
<rdf:li xml:lang="x-default">
|
||||
<xsl:apply-templates mode="titlepage.mode" select="//d:copyright"/>
|
||||
<xsl:if test="starts-with(string(/*/d:info/d:legalnotice/@role),'cc-')">
|
||||
<xsl:text> Licensed to the public under Creative Commons Attribution </xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$ccid = 'by'" />
|
||||
<xsl:when test="$ccid = 'by-sa'">
|
||||
<xsl:text>ShareAlike</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nd'">
|
||||
<xsl:text>NoDerivatives</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nc'">
|
||||
<xsl:text>NonCommercial</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nc-sa'">
|
||||
<xsl:text>NonCommercial ShareAlike</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$ccid = 'by-nc-nd'">
|
||||
<xsl:text>NonCommercial NoDerivatives</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">I don't understand licence <xsl:value-of select="$ccid"/></xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text> 3.0 License</xsl:text>
|
||||
</xsl:if>
|
||||
</rdf:li>
|
||||
</rdf:Alt>
|
||||
</dc:rights>
|
||||
<!-- Title -->
|
||||
<dc:title><xsl:value-of select="normalize-space($title)"/></dc:title>
|
||||
|
||||
<!-- Author -->
|
||||
<xsl:if test="$authors">
|
||||
<xsl:variable name="author">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$authors[self::d:authorgroup]">
|
||||
<xsl:call-template name="person.name.list">
|
||||
<xsl:with-param name="person.list"
|
||||
select="$authors/*[self::d:author|self::d:corpauthor|
|
||||
self::d:othercredit|self::d:editor]"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="$authors[self::d:corpauthor]">
|
||||
<xsl:value-of select="$authors"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:call-template name="person.name">
|
||||
<xsl:with-param name="node" select="$authors"/>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<dc:creator><xsl:value-of select="normalize-space($author)"/></dc:creator>
|
||||
</xsl:if>
|
||||
|
||||
<!-- Subject -->
|
||||
<xsl:if test="//d:subjectterm">
|
||||
<dc:description>
|
||||
<xsl:for-each select="//d:subjectterm">
|
||||
<xsl:value-of select="normalize-space(.)"/>
|
||||
<xsl:if test="position() != last()">
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</dc:description>
|
||||
</xsl:if>
|
||||
</rdf:Description>
|
||||
<rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
|
||||
<!-- PDF properties go here -->
|
||||
|
||||
<!-- Keywords -->
|
||||
<xsl:if test="//d:keyword">
|
||||
<pdf:Keywords>
|
||||
<xsl:for-each select="//d:keyword">
|
||||
<xsl:value-of select="normalize-space(.)"/>
|
||||
<xsl:if test="position() != last()">
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</pdf:Keywords>
|
||||
</xsl:if>
|
||||
</rdf:Description>
|
||||
|
||||
<rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
|
||||
<!-- XMP properties go here -->
|
||||
|
||||
<!-- Creator Tool -->
|
||||
<xmp:CreatorTool>Cloud API Docs Plugin</xmp:CreatorTool>
|
||||
</rdf:Description>
|
||||
<xsl:if test="starts-with(string(/*/d:info/d:legalnotice/@role),'cc-')">
|
||||
<rdf:Description rdf:about=''
|
||||
xmlns:cc='http://creativecommons.org/ns#'>
|
||||
<xsl:element name="cc:license">
|
||||
<xsl:attribute name="rdf:resource">
|
||||
<xsl:value-of select="$ccidURL"/>
|
||||
</xsl:attribute>
|
||||
</xsl:element>
|
||||
</rdf:Description>
|
||||
</xsl:if>
|
||||
</rdf:RDF>
|
||||
</x:xmpmeta>
|
||||
</fo:declarations>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">
|
||||
<l:l10n language="en">
|
||||
<l:gentext key="PubDate" text=""/>
|
||||
<l:gentext key="pubdate" text=""/>
|
||||
<l:gentext key="Abstract" text=""/>
|
||||
<l:gentext key="abstract" text=""/>
|
||||
|
||||
<l:context name="title-numbered">
|
||||
<l:template name="chapter" text='%n. %t'/>
|
||||
</l:context>
|
||||
<l:context name="xref-number-and-title">
|
||||
<l:template name="chapter" text='Chapter %n, “%t”'/>
|
||||
</l:context>
|
||||
</l:l10n>
|
||||
</l:i18n>
|
File diff suppressed because it is too large
Load Diff
@ -1,496 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
|
||||
xmlns:xverb="com.nwalsh.xalan.Verbatim"
|
||||
xmlns:lxslt="http://xml.apache.org/xslt"
|
||||
xmlns:exsl="http://exslt.org/common"
|
||||
exclude-result-prefixes="sverb xverb lxslt exsl d"
|
||||
version='1.0'>
|
||||
|
||||
<!-- ********************************************************************
|
||||
$Id: verbatim.xsl 8344 2009-03-16 06:35:43Z bobstayton $
|
||||
********************************************************************
|
||||
|
||||
This file is part of the XSL DocBook Stylesheet distribution.
|
||||
See ../README or http://docbook.sf.net/release/xsl/current/ for
|
||||
copyright and other information.
|
||||
|
||||
******************************************************************** -->
|
||||
|
||||
<!-- XSLTHL highlighting is turned off by default. See highlighting/README
|
||||
for instructions on how to turn on XSLTHL -->
|
||||
<xsl:template name="apply-highlighting">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
<lxslt:component prefix="xverb"
|
||||
functions="numberLines"/>
|
||||
|
||||
<xsl:template match="d:programlisting|d:screen|d:synopsis">
|
||||
<xsl:param name="suppress-numbers" select="'0'"/>
|
||||
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
|
||||
|
||||
<xsl:variable name="content">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$suppress-numbers = '0'
|
||||
and @linenumbering = 'numbered'
|
||||
and $use.extensions != '0'
|
||||
and $linenumbering.extension != '0'">
|
||||
<xsl:call-template name="number.rtf.lines">
|
||||
<xsl:with-param name="rtf">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$highlight.source != 0">
|
||||
<xsl:call-template name="apply-highlighting"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$highlight.source != 0">
|
||||
<xsl:call-template name="apply-highlighting"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="keep.together">
|
||||
<xsl:call-template name="pi.dbfo_keep-together"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="block.content">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$shade.verbatim != 0">
|
||||
<fo:block id="{$id}"
|
||||
xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style">
|
||||
<xsl:if test="$keep.together != ''">
|
||||
<xsl:attribute name="keep-together.within-column"><xsl:value-of
|
||||
select="$keep.together"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$hyphenate.verbatim != 0 and
|
||||
$exsl.node.set.available != 0">
|
||||
<xsl:apply-templates select="exsl:node-set($content)"
|
||||
mode="hyphenate.verbatim"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$content"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</fo:block>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:block id="{$id}"
|
||||
xsl:use-attribute-sets="monospace.verbatim.properties">
|
||||
<xsl:if test="$keep.together != ''">
|
||||
<xsl:attribute name="keep-together.within-column"><xsl:value-of
|
||||
select="$keep.together"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$hyphenate.verbatim != 0 and
|
||||
$exsl.node.set.available != 0">
|
||||
<xsl:apply-templates select="exsl:node-set($content)"
|
||||
mode="hyphenate.verbatim"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$content"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</fo:block>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<!-- Need a block-container for these features -->
|
||||
<xsl:when test="@width != '' or
|
||||
(self::d:programlisting and
|
||||
starts-with($writing.mode, 'rl'))">
|
||||
<fo:block-container start-indent="0pt" end-indent="0pt">
|
||||
<xsl:if test="@width != ''">
|
||||
<xsl:attribute name="width">
|
||||
<xsl:value-of select="concat(@width, '*', $monospace.verbatim.font.width)"/>
|
||||
</xsl:attribute>
|
||||
</xsl:if>
|
||||
<!-- All known program code is left-to-right -->
|
||||
<xsl:if test="self::d:programlisting and
|
||||
starts-with($writing.mode, 'rl')">
|
||||
<xsl:attribute name="writing-mode">lr-tb</xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:copy-of select="$block.content"/>
|
||||
</fo:block-container>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$block.content"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:literallayout">
|
||||
<xsl:param name="suppress-numbers" select="'0'"/>
|
||||
|
||||
<xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable>
|
||||
|
||||
<xsl:variable name="keep.together">
|
||||
<xsl:call-template name="pi.dbfo_keep-together"/>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="content">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$suppress-numbers = '0'
|
||||
and @linenumbering = 'numbered'
|
||||
and $use.extensions != '0'
|
||||
and $linenumbering.extension != '0'">
|
||||
<xsl:call-template name="number.rtf.lines">
|
||||
<xsl:with-param name="rtf">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="@class='monospaced'">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$shade.verbatim != 0">
|
||||
<fo:block id="{$id}"
|
||||
xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style">
|
||||
|
||||
<xsl:if test="$keep.together != ''">
|
||||
<xsl:attribute name="keep-together.within-column"><xsl:value-of
|
||||
select="$keep.together"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:copy-of select="$content"/>
|
||||
</fo:block>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:block id="{$id}"
|
||||
xsl:use-attribute-sets="monospace.verbatim.properties">
|
||||
<xsl:if test="$keep.together != ''">
|
||||
<xsl:attribute name="keep-together.within-column"><xsl:value-of
|
||||
select="$keep.together"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:copy-of select="$content"/>
|
||||
</fo:block>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$shade.verbatim != 0">
|
||||
<fo:block id="{$id}"
|
||||
xsl:use-attribute-sets="verbatim.properties shade.verbatim.style">
|
||||
<xsl:if test="$keep.together != ''">
|
||||
<xsl:attribute name="keep-together.within-column"><xsl:value-of
|
||||
select="$keep.together"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:copy-of select="$content"/>
|
||||
</fo:block>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:block id="{$id}"
|
||||
xsl:use-attribute-sets="verbatim.properties">
|
||||
<xsl:if test="$keep.together != ''">
|
||||
<xsl:attribute name="keep-together.within-column"><xsl:value-of
|
||||
select="$keep.together"/></xsl:attribute>
|
||||
</xsl:if>
|
||||
<xsl:copy-of select="$content"/>
|
||||
</fo:block>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:address">
|
||||
<xsl:param name="suppress-numbers" select="'0'"/>
|
||||
|
||||
<xsl:variable name="content">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$suppress-numbers = '0'
|
||||
and @linenumbering = 'numbered'
|
||||
and $use.extensions != '0'
|
||||
and $linenumbering.extension != '0'">
|
||||
<xsl:call-template name="number.rtf.lines">
|
||||
<xsl:with-param name="rtf">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:with-param>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<fo:block xsl:use-attribute-sets="verbatim.properties">
|
||||
<xsl:copy-of select="$content"/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="number.rtf.lines">
|
||||
<xsl:param name="rtf" select="''"/>
|
||||
<xsl:param name="pi.context" select="."/>
|
||||
|
||||
<!-- Save the global values -->
|
||||
<xsl:variable name="global.linenumbering.everyNth"
|
||||
select="$linenumbering.everyNth"/>
|
||||
|
||||
<xsl:variable name="global.linenumbering.separator"
|
||||
select="$linenumbering.separator"/>
|
||||
|
||||
<xsl:variable name="global.linenumbering.width"
|
||||
select="$linenumbering.width"/>
|
||||
|
||||
<!-- Extract the <?dbfo linenumbering.*?> PI values -->
|
||||
<xsl:variable name="pi.linenumbering.everyNth">
|
||||
<xsl:call-template name="pi.dbfo_linenumbering.everyNth">
|
||||
<xsl:with-param name="node" select="$pi.context"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="pi.linenumbering.separator">
|
||||
<xsl:call-template name="pi.dbfo_linenumbering.separator">
|
||||
<xsl:with-param name="node" select="$pi.context"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="pi.linenumbering.width">
|
||||
<xsl:call-template name="pi.dbfo_linenumbering.width">
|
||||
<xsl:with-param name="node" select="$pi.context"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Construct the 'in-context' values -->
|
||||
<xsl:variable name="linenumbering.everyNth">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$pi.linenumbering.everyNth != ''">
|
||||
<xsl:value-of select="$pi.linenumbering.everyNth"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$global.linenumbering.everyNth"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="linenumbering.separator">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$pi.linenumbering.separator != ''">
|
||||
<xsl:value-of select="$pi.linenumbering.separator"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$global.linenumbering.separator"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="linenumbering.width">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$pi.linenumbering.width != ''">
|
||||
<xsl:value-of select="$pi.linenumbering.width"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$global.linenumbering.width"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="linenumbering.startinglinenumber">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$pi.context/@startinglinenumber">
|
||||
<xsl:value-of select="$pi.context/@startinglinenumber"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$pi.context/@continuation='continues'">
|
||||
<xsl:variable name="lastLine">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$pi.context/self::d:programlisting">
|
||||
<xsl:call-template name="lastLineNumber">
|
||||
<xsl:with-param name="listings"
|
||||
select="preceding::d:programlisting[@linenumbering='numbered']"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="$pi.context/self::d:screen">
|
||||
<xsl:call-template name="lastLineNumber">
|
||||
<xsl:with-param name="listings"
|
||||
select="preceding::d:screen[@linenumbering='numbered']"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="$pi.context/self::d:literallayout">
|
||||
<xsl:call-template name="lastLineNumber">
|
||||
<xsl:with-param name="listings"
|
||||
select="preceding::d:literallayout[@linenumbering='numbered']"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="$pi.context/self::d:address">
|
||||
<xsl:call-template name="lastLineNumber">
|
||||
<xsl:with-param name="listings"
|
||||
select="preceding::d:address[@linenumbering='numbered']"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="$pi.context/self::d:synopsis">
|
||||
<xsl:call-template name="lastLineNumber">
|
||||
<xsl:with-param name="listings"
|
||||
select="preceding::d:synopsis[@linenumbering='numbered']"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
<xsl:text>Unexpected verbatim environment: </xsl:text>
|
||||
<xsl:value-of select="local-name(.)"/>
|
||||
</xsl:message>
|
||||
<xsl:value-of select="0"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:value-of select="$lastLine + 1"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>1</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="function-available('sverb:numberLines')">
|
||||
<xsl:copy-of select="sverb:numberLines($rtf)"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="function-available('xverb:numberLines')">
|
||||
<xsl:copy-of select="xverb:numberLines($rtf)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="yes">
|
||||
<xsl:text>No numberLines function available.</xsl:text>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<xsl:template name="lastLineNumber">
|
||||
<xsl:param name="listings"/>
|
||||
<xsl:param name="number" select="0"/>
|
||||
|
||||
<xsl:variable name="lines">
|
||||
<xsl:call-template name="countLines">
|
||||
<xsl:with-param name="listing" select="string($listings[1])"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="not($listings)">
|
||||
<xsl:value-of select="$number"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$listings[1]/@startinglinenumber">
|
||||
<xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$listings[1]/@continuation='continues'">
|
||||
<xsl:call-template name="lastLineNumber">
|
||||
<xsl:with-param name="listings" select="d:listings[position() > 1]"/>
|
||||
<xsl:with-param name="number" select="$number + $lines"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$lines"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="countLines">
|
||||
<xsl:param name="listing"/>
|
||||
<xsl:param name="count" select="1"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($listing, ' ')">
|
||||
<xsl:call-template name="countLines">
|
||||
<xsl:with-param name="listing" select="substring-after($listing, ' ')"/>
|
||||
<xsl:with-param name="count" select="$count + 1"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$count"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!-- ======================================================================== -->
|
||||
|
||||
<xsl:template match="node()|@*" mode="hyphenate.verbatim">
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="@*"/>
|
||||
<xsl:apply-templates mode="hyphenate.verbatim"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="text()" mode="hyphenate.verbatim" priority="2">
|
||||
<xsl:call-template name="hyphenate.verbatim.block">
|
||||
<xsl:with-param name="content" select="."/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="hyphenate.verbatim.block">
|
||||
<xsl:param name="content" select="''"/>
|
||||
<xsl:param name="count" select="1"/>
|
||||
|
||||
<!-- recurse on lines first to keep recursion depth reasonable -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($content, '
')">
|
||||
<xsl:variable name="line" select="substring-before($content, '
')"/>
|
||||
<xsl:variable name="rest" select="substring-after($content, '
')"/>
|
||||
<xsl:call-template name="hyphenate.verbatim">
|
||||
<xsl:with-param name="content" select="concat($line, '
')"/>
|
||||
</xsl:call-template>
|
||||
<xsl:call-template name="hyphenate.verbatim.block">
|
||||
<xsl:with-param name="content" select="$rest"/>
|
||||
<xsl:with-param name="count" select="$count + 1"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:call-template name="hyphenate.verbatim">
|
||||
<xsl:with-param name="content" select="$content"/>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="hyphenate.verbatim">
|
||||
<xsl:param name="content"/>
|
||||
<xsl:variable name="head" select="substring($content, 1, 1)"/>
|
||||
<xsl:variable name="tail" select="substring($content, 2)"/>
|
||||
<xsl:choose>
|
||||
<!-- Place soft-hyphen after space or non-breakable space. -->
|
||||
<xsl:when test="$head = ' ' or $head = ' '">
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:text>­</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$hyphenate.verbatim.characters != '' and
|
||||
translate($head, $hyphenate.verbatim.characters, '') = '' and not($tail = '')">
|
||||
<xsl:value-of select="$head"/>
|
||||
<xsl:text>­</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$head"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:if test="$tail">
|
||||
<xsl:call-template name="hyphenate.verbatim">
|
||||
<xsl:with-param name="content" select="$tail"/>
|
||||
</xsl:call-template>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,217 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
xmlns:exsl="http://exslt.org/common"
|
||||
xmlns:xlink='http://www.w3.org/1999/xlink'
|
||||
exclude-result-prefixes="exsl xlink d"
|
||||
version='1.0'>
|
||||
|
||||
<!-- ********************************************************************
|
||||
$Id: xref.xsl 9723 2013-02-06 13:08:06Z kosek $
|
||||
********************************************************************
|
||||
|
||||
This file is part of the XSL DocBook Stylesheet distribution.
|
||||
See ../README or http://docbook.sf.net/release/xsl/current/ for
|
||||
copyright and other information.
|
||||
|
||||
******************************************************************** -->
|
||||
|
||||
<!-- Use internal variable for olink xlink role for consistency -->
|
||||
<xsl:variable
|
||||
name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable>
|
||||
|
||||
|
||||
<xsl:template match="d:olink" name="olink">
|
||||
<!-- olink content may be passed in from xlink olink -->
|
||||
<xsl:param name="content" select="NOTANELEMENT"/>
|
||||
|
||||
<xsl:choose>
|
||||
<!-- olinks resolved by stylesheet and target database -->
|
||||
<xsl:when test="@targetdoc or @targetptr or
|
||||
(@xlink:role=$xolink.role and
|
||||
contains(@xlink:href, '#') )" >
|
||||
|
||||
<xsl:variable name="targetdoc.att">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@targetdoc != ''">
|
||||
<xsl:value-of select="@targetdoc"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="@xlink:role=$xolink.role and
|
||||
contains(@xlink:href, '#')" >
|
||||
<xsl:value-of select="substring-before(@xlink:href, '#')"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="targetptr.att">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@targetptr != ''">
|
||||
<xsl:value-of select="@targetptr"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="@xlink:role=$xolink.role and
|
||||
contains(@xlink:href, '#')" >
|
||||
<xsl:value-of select="substring-after(@xlink:href, '#')"/>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="olink.lang">
|
||||
<xsl:call-template name="l10n.language">
|
||||
<xsl:with-param name="xref-context" select="true()"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="target.database.filename">
|
||||
<xsl:call-template name="select.target.database">
|
||||
<xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
|
||||
<xsl:with-param name="targetptr.att" select="$targetptr.att"/>
|
||||
<xsl:with-param name="olink.lang" select="$olink.lang"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="target.database"
|
||||
select="document($target.database.filename, /)"/>
|
||||
|
||||
<xsl:if test="$olink.debug != 0">
|
||||
<xsl:message>
|
||||
<xsl:text>Olink debug: root element of target.database is '</xsl:text>
|
||||
<xsl:value-of select="local-name($target.database/*[1])"/>
|
||||
<xsl:text>'.</xsl:text>
|
||||
</xsl:message>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:variable name="olink.key">
|
||||
<xsl:call-template name="select.olink.key">
|
||||
<xsl:with-param name="targetdoc.att" select="$targetdoc.att"/>
|
||||
<xsl:with-param name="targetptr.att" select="$targetptr.att"/>
|
||||
<xsl:with-param name="olink.lang" select="$olink.lang"/>
|
||||
<xsl:with-param name="target.database" select="$target.database"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:if test="string-length($olink.key) = 0">
|
||||
<xsl:message>
|
||||
<xsl:text>Error: unresolved olink: </xsl:text>
|
||||
<xsl:text>targetdoc/targetptr = '</xsl:text>
|
||||
<xsl:value-of select="$targetdoc.att"/>
|
||||
<xsl:text>/</xsl:text>
|
||||
<xsl:value-of select="$targetptr.att"/>
|
||||
<xsl:text>'.</xsl:text>
|
||||
</xsl:message>
|
||||
</xsl:if>
|
||||
|
||||
<xsl:variable name="href">
|
||||
<!-- DWC: Hack to prevent olinks from being hot ever -->
|
||||
<!-- <xsl:call-template name="make.olink.href"> -->
|
||||
<!-- <xsl:with-param name="olink.key" select="$olink.key"/> -->
|
||||
<!-- <xsl:with-param name="target.database" select="$target.database"/> -->
|
||||
<!-- </xsl:call-template> -->
|
||||
</xsl:variable>
|
||||
|
||||
<!-- Olink that points to internal id can be a link -->
|
||||
<xsl:variable name="linkend">
|
||||
<xsl:call-template name="olink.as.linkend">
|
||||
<xsl:with-param name="olink.key" select="$olink.key"/>
|
||||
<xsl:with-param name="olink.lang" select="$olink.lang"/>
|
||||
<xsl:with-param name="target.database" select="$target.database"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="hottext">
|
||||
<xsl:choose>
|
||||
<xsl:when test="string-length($content) != 0">
|
||||
<xsl:copy-of select="$content"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:call-template name="olink.hottext">
|
||||
<xsl:with-param name="olink.key" select="$olink.key"/>
|
||||
<xsl:with-param name="olink.lang" select="$olink.lang"/>
|
||||
<xsl:with-param name="target.database" select="$target.database"/>
|
||||
</xsl:call-template>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="olink.docname.citation">
|
||||
<xsl:call-template name="olink.document.citation">
|
||||
<xsl:with-param name="olink.key" select="$olink.key"/>
|
||||
<xsl:with-param name="target.database" select="$target.database"/>
|
||||
<xsl:with-param name="olink.lang" select="$olink.lang"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="olink.page.citation">
|
||||
<xsl:call-template name="olink.page.citation">
|
||||
<xsl:with-param name="olink.key" select="$olink.key"/>
|
||||
<xsl:with-param name="target.database" select="$target.database"/>
|
||||
<xsl:with-param name="olink.lang" select="$olink.lang"/>
|
||||
<xsl:with-param name="linkend" select="$linkend"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="$linkend != ''">
|
||||
<fo:basic-link internal-destination="{$linkend}"
|
||||
xsl:use-attribute-sets="xref.properties">
|
||||
<xsl:call-template name="anchor"/>
|
||||
<xsl:copy-of select="$hottext"/>
|
||||
<xsl:copy-of select="$olink.page.citation"/>
|
||||
</fo:basic-link>
|
||||
</xsl:when>
|
||||
<xsl:when test="$href != ''">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$fop1.extensions != 0">
|
||||
<xsl:variable name="mybeg" select="substring-before($href,'#')"/>
|
||||
<xsl:variable name="myend" select="substring-after($href,'#')"/>
|
||||
<fo:basic-link external-destination="url({concat($mybeg,'#dest=',$myend)})"
|
||||
xsl:use-attribute-sets="olink.properties">
|
||||
<xsl:copy-of select="$hottext"/>
|
||||
</fo:basic-link>
|
||||
<xsl:copy-of select="$olink.page.citation"/>
|
||||
<xsl:copy-of select="$olink.docname.citation"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$xep.extensions != 0">
|
||||
<fo:basic-link external-destination="url({$href})"
|
||||
xsl:use-attribute-sets="olink.properties">
|
||||
<xsl:call-template name="anchor"/>
|
||||
<xsl:copy-of select="$hottext"/>
|
||||
</fo:basic-link>
|
||||
<xsl:copy-of select="$olink.page.citation"/>
|
||||
<xsl:copy-of select="$olink.docname.citation"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$axf.extensions != 0">
|
||||
<fo:basic-link external-destination="{$href}"
|
||||
xsl:use-attribute-sets="olink.properties">
|
||||
<xsl:copy-of select="$hottext"/>
|
||||
</fo:basic-link>
|
||||
<xsl:copy-of select="$olink.page.citation"/>
|
||||
<xsl:copy-of select="$olink.docname.citation"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:basic-link external-destination="{$href}"
|
||||
xsl:use-attribute-sets="olink.properties">
|
||||
<xsl:copy-of select="$hottext"/>
|
||||
</fo:basic-link>
|
||||
<xsl:copy-of select="$olink.page.citation"/>
|
||||
<xsl:copy-of select="$olink.docname.citation"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$hottext"/>
|
||||
<xsl:copy-of select="$olink.page.citation"/>
|
||||
<xsl:copy-of select="$olink.docname.citation"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
|
||||
<!-- olink never implemented in FO for old olink entity syntax -->
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink='http://www.w3.org/1999/xlink'
|
||||
exclude-result-prefixes="xlink d"
|
||||
version='1.0'>
|
||||
|
||||
<xsl:template match="d:guibutton">
|
||||
<xsl:call-template name="inline.boldseq"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:guiicon">
|
||||
<xsl:call-template name="inline.boldseq"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:guilabel">
|
||||
<xsl:call-template name="inline.boldseq"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:guimenu">
|
||||
<xsl:call-template name="inline.boldseq"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:guimenuitem">
|
||||
<xsl:call-template name="inline.boldseq"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:guisubmenu">
|
||||
<xsl:call-template name="inline.boldseq"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,139 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:rax="http://docs.rackspace.com/api"
|
||||
exclude-result-prefixes="xs" version="2.0">
|
||||
|
||||
<!--
|
||||
This xslt creates a list of wadls to be normalized
|
||||
and calculates the output path for each wadl by
|
||||
concatenating the output directory location AND
|
||||
inserting a checksum of the original path.
|
||||
This information is then passed back to the pipeline
|
||||
through a secondary port/xsl:result-document.
|
||||
-->
|
||||
|
||||
<xsl:param name="project.build.directory"/>
|
||||
<xsl:param name="targetHtmlContentDir"/>
|
||||
|
||||
<xsl:variable name="wadls">
|
||||
<xsl:for-each select="//wadl:resource[@href]|//wadl:resources[@href]">
|
||||
<xsl:variable name="href">
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href,'.') or contains(@href, ':/')"><xsl:value-of select="@href"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="concat('./',@href)"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($href,'#')">
|
||||
<wadl href="{resolve-uri(substring-before(normalize-space($href),'#'), base-uri())}"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<wadl href="{resolve-uri(normalize-space($href), base-uri())}"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:variable name="wadllist">
|
||||
<root>
|
||||
<xsl:for-each
|
||||
select="distinct-values($wadls/wadl/@href)">
|
||||
<xsl:variable name="checksum" select="rax:checksum(.)"/>
|
||||
<xsl:variable name="wadl-filename" select="replace(., '^(.*/)?([^/]+)$', '$2')"/>
|
||||
<xsl:variable name="wadl-filename-base" select="if(contains($wadl-filename,'.')) then (string-join(tokenize($wadl-filename, '\.')[not(position() = last())],'.')) else $wadl-filename"/>
|
||||
<xsl:variable name="newhref" select="concat($project.build.directory,'/generated-resources/xml/xslt/',$checksum,'-',$wadl-filename)"/>
|
||||
<!-- Only add this wadl to the list if the new wadl does not already exist -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="unparsed-text-available(.)">
|
||||
<xsl:choose>
|
||||
<xsl:when test="not(unparsed-text-available($newhref))">
|
||||
<wadl href="{.}" newhref="{$newhref}" checksum="{$checksum}" targetHtmlContentDir="{$targetHtmlContentDir}" basefilename="{$wadl-filename-base}"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<wadl-already-normalized href="{.}" newhref="{$newhref}" checksum="{$checksum}" targetHtmlContentDir="{$targetHtmlContentDir}" basefilename="{$wadl-filename-base}"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<wadl-missing-file href="{.}"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:for-each>
|
||||
</root>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:if test="count($wadllist//@basefilename) != count(distinct-values($wadllist//@basefilename))">
|
||||
<xsl:message>
|
||||
WARNING: This document contains more than one wadl with the same base file name.
|
||||
</xsl:message>
|
||||
</xsl:if>
|
||||
<xsl:result-document href="/tmp/wadllist.xml">
|
||||
<xsl:copy-of select="$wadllist/*"/>
|
||||
</xsl:result-document>
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wadl:resource[@href]|wadl:resources[@href]">
|
||||
<xsl:variable name="href">
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains(@href,'#')">
|
||||
<xsl:value-of select="resolve-uri(substring-before(@href,'#'), base-uri(.))"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="resolve-uri(@href, base-uri(.))"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="suffix"><xsl:if test="contains(@href,'#')">#<xsl:value-of select="substring-after(@href,'#')"/></xsl:if></xsl:variable>
|
||||
<xsl:copy>
|
||||
<xsl:copy-of select="@*[not(local-name(.) = 'href')]"/>
|
||||
<xsl:attribute name="href" select="concat($wadllist/root/*[@href = $href]/@newhref,$suffix)"/>
|
||||
<xsl:attribute name="remaphref" select="@href"/>
|
||||
<xsl:attribute name="remaphrefvar" select="$href"/>
|
||||
<xsl:apply-templates select="node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="node() | @*">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="node() | @*"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Found these functions here: http://stackoverflow.com/questions/6753343/using-xsl-to-make-a-hash-of-xml-file -->
|
||||
<xsl:function name="rax:checksum" as="xs:integer">
|
||||
<xsl:param name="str" as="xs:string"/>
|
||||
<xsl:variable name="codepoints" select="string-to-codepoints($str)"/>
|
||||
<xsl:value-of select="rax:fletcher16($codepoints, count($codepoints), 1, 0, 0)"/>
|
||||
</xsl:function>
|
||||
|
||||
<xsl:function name="rax:fletcher16">
|
||||
<xsl:param name="str" as="xs:integer*"/>
|
||||
<xsl:param name="len" as="xs:integer" />
|
||||
<xsl:param name="index" as="xs:integer" />
|
||||
<xsl:param name="sum1" as="xs:integer" />
|
||||
<xsl:param name="sum2" as="xs:integer"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$index ge $len">
|
||||
<xsl:sequence select="$sum2 * 256 + $sum1"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:variable name="newSum1" as="xs:integer"
|
||||
select="($sum1 + $str[$index]) mod 255"/>
|
||||
<xsl:sequence select="rax:fletcher16($str, $len, $index + 1, $newSum1,
|
||||
($sum2 + $newSum1) mod 255)" />
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:function>
|
||||
|
||||
<xsl:template match="d:SXXP0005">
|
||||
<!-- This stupid template is here to avoid SXXP0005 errors from Saxon -->
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,36 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- This XSLT flattens the xsds associated with the wadl. -->
|
||||
<!--
|
||||
Copyright 2011 Rackspace US, Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:xsdxt="http://docs.rackspacecloud.com/xsd-ext/v1.0"
|
||||
exclude-result-prefixes="xs wadl xsd xsdxt"
|
||||
version="2.0">
|
||||
|
||||
<xsl:import href="classpath:///cloud/normalizeWadl/normalizeWadl1.xsl"/>
|
||||
|
||||
<xsl:param name="format">path-format</xsl:param>
|
||||
|
||||
<xsl:param name="xsd.output.path">target/generated-resources/xml/xslt/</xsl:param>
|
||||
|
||||
<xsl:param name="wadl2docbook">1</xsl:param>
|
||||
|
||||
<xsl:param name="resource_types">omit</xsl:param>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,29 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||
xmlns:rax="http://docs.rackspace.com/api"
|
||||
version="1.0">
|
||||
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:message>
|
||||
0="<xsl:value-of select="0"/>"
|
||||
</xsl:message>
|
||||
|
||||
</xsl:template>
|
||||
<xsl:variable name="types">
|
||||
<rax:types>
|
||||
<xsl:apply-templates select="//wadl:param" mode="types"/>
|
||||
</rax:types>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:template match="wadl:param" mode="types">
|
||||
<rax:type
|
||||
type="{@type}"
|
||||
namespace-prefix="{substring-before(@type,':')}"
|
||||
namespace-uri=""
|
||||
/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,153 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||
xmlns:rax="http://docs.rackspace.com/api"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns="http://docbook.org/ns/docbook"
|
||||
exclude-result-prefixes="wadl rax d" version="2.0">
|
||||
|
||||
<xsl:import href="classpath:///cloud/date.xsl"/>
|
||||
<!--<xsl:import href="date.xsl"/>-->
|
||||
|
||||
<doc xmlns="http://www.oxygenxml.com/ns/doc/xsl">
|
||||
<desc>
|
||||
This xslt handles the "point-to-wadl" method of
|
||||
including content from a wadl into a document by copying
|
||||
the wadl into the DocBook document. It also handles the
|
||||
"start-sections" processing instruction which causes the
|
||||
wadl to be broken up into sections starting with the
|
||||
siblings of the PI.
|
||||
|
||||
The goal is to end up processing a DocBook document
|
||||
that contains pure wadl with not pointers outside
|
||||
the file.
|
||||
</desc>
|
||||
</doc>
|
||||
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:param name="xmlid"/>
|
||||
<xsl:copy>
|
||||
<xsl:if test="self::wadl:method[ancestor::wadl:application]">
|
||||
<xsl:attribute name="rax:original-wadl" select="ancestor::wadl:application/@rax:original-wadl"/>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="@*|node()">
|
||||
<xsl:with-param name="xmlid" select="$xmlid"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wadl:resources[@href]">
|
||||
<xsl:apply-templates select="document(@href)//rax:resources">
|
||||
<xsl:with-param name="xmlid" select="@xml:id"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="rax:resources">
|
||||
<xsl:param name="xmlid"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test=".//processing-instruction('rax') = 'start-sections'">
|
||||
<xsl:apply-templates select="rax:resource">
|
||||
<xsl:with-param name="xmlid" select="$xmlid"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="//wadl:resources">
|
||||
<xsl:with-param name="xmlid" select="$xmlid"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="rax:resource[not(parent::*[./processing-instruction('rax') = 'start-sections'])]">
|
||||
<xsl:param name="xmlid"/>
|
||||
<xsl:apply-templates>
|
||||
<xsl:with-param name="xmlid" select="$xmlid"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="rax:resource[parent::*[./processing-instruction('rax') = 'start-sections']]">
|
||||
<xsl:param name="xmlid"/>
|
||||
<xsl:variable name="rax-id" select="@rax:id"/>
|
||||
<section
|
||||
xml:id="{translate(//wadl:resource[@id = $rax-id]/@path,'/{}:','___')}">
|
||||
<title>
|
||||
<xsl:choose>
|
||||
<xsl:when test="//wadl:resource[@id = current()/@rax:id]/wadl:doc/@title">
|
||||
<xsl:value-of select="//wadl:resource[@id = current()/@rax:id]/wadl:doc/@title"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="//wadl:resource[@id = current()/@rax:id]">
|
||||
<xsl:value-of select="//wadl:resource[@id = current()/@rax:id]/@path"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message terminate="no"> ERROR: Could not determine what title to use for
|
||||
<xsl:copy-of select="."/>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</title>
|
||||
<xsl:apply-templates
|
||||
select="//wadl:resource[@id = current()/@rax:id]/wadl:doc/*">
|
||||
<xsl:with-param name="xmlid" select="@xmlid"/>
|
||||
</xsl:apply-templates>
|
||||
<wadl:resources>
|
||||
<xsl:if test="normalize-space($xmlid) != ''">
|
||||
<xsl:attribute name="xml:id" select="$xmlid"/>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="//wadl:resource[@id = current()/@rax:id]"/>
|
||||
<xsl:apply-templates select="rax:resource" mode="continue-section"/>
|
||||
</wadl:resources>
|
||||
</section>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="rax:resource" mode="continue-section">
|
||||
<xsl:apply-templates
|
||||
select="//wadl:resource[@id = current()/@rax:id]"/>
|
||||
<xsl:apply-templates select="rax:resource" mode="continue-section"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- Unrelated stuff: Doesn't really belong here -->
|
||||
|
||||
<xsl:template match="processing-instruction('rax')[normalize-space(.) = 'fail']">
|
||||
<xsl:message terminate="yes">
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
<?rax fail?> found in the document.
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
</xsl:message>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="processing-instruction('rax')[normalize-space(.) = 'revhistory']" >
|
||||
<xsl:if test="//d:revhistory[1]/d:revision">
|
||||
<informaltable rules="all">
|
||||
<col width="20%"/>
|
||||
<col width="80%"/>
|
||||
<thead>
|
||||
<tr>
|
||||
<td align="center">Revision Date</td>
|
||||
<td align="center">Summary of Changes</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<xsl:apply-templates select="//d:revhistory[1]/d:revision" mode="revhistory"/>
|
||||
</tbody>
|
||||
</informaltable>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:revision" mode="revhistory">
|
||||
<tr>
|
||||
<td valign="top">
|
||||
<para>
|
||||
<xsl:call-template name="longDate">
|
||||
<xsl:with-param name="in" select="d:date"/>
|
||||
</xsl:call-template>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<xsl:copy-of select="d:revdescription/*"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,191 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:wadl="http://wadl.dev.java.net/2009/02"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:rax="http://docs.rackspace.com/api"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml"
|
||||
exclude-result-prefixes="wadl rax d xhtml"
|
||||
version="2.0">
|
||||
|
||||
|
||||
<!-- <xsl:output indent="yes"/> -->
|
||||
|
||||
<doc xmlns="http://www.oxygenxml.com/ns/doc/xsl">
|
||||
<desc>
|
||||
This xslt copies in content from the wadl when it is
|
||||
referred to by resource or by method.
|
||||
|
||||
The goal is to end up processing a DocBook document
|
||||
that contains pure wadl with not pointers outside
|
||||
the file.
|
||||
</desc>
|
||||
</doc>
|
||||
|
||||
<xsl:template match="@*|node()" >
|
||||
<xsl:param name="doc"/>
|
||||
<xsl:copy>
|
||||
<!-- <xsl:if test="self::wadl:method">
|
||||
<xsl:attribute name="rax:original-wadl" select="ancestor::wadl:application/@rax:original-wadl"/>
|
||||
</xsl:if>-->
|
||||
<xsl:apply-templates select="@*|node()" >
|
||||
<xsl:with-param name="doc" select="$doc"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wadl:doc[parent::wadl:method[ancestor::wadl:application]]">
|
||||
<xsl:param name="doc"/>
|
||||
<xsl:variable name="content">
|
||||
<xsl:if test="$doc">
|
||||
<xsl:apply-templates select="$doc" />
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="node()" />
|
||||
</xsl:variable>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*" />
|
||||
<xsl:choose>
|
||||
<xsl:when test="not($content//d:para) and not($content//d:formalpara) ">
|
||||
<para><xsl:copy-of select="$content"/></para>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:copy-of select="$content"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wadl:doc[ancestor::wadl:doc]">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wadl:method[@href]">
|
||||
<xsl:variable name="wadl-content" select="document(substring-before(parent::wadl:resource/@href, '#'))"/>
|
||||
<xsl:variable name="doc" select="wadl:doc/*"/>
|
||||
<xsl:variable name="parent-id" select="substring-after(parent::wadl:resource/@href,'#')"/>
|
||||
<xsl:variable name="thisMethodId">
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains(@href,'#')"><xsl:value-of select="substring-after(@href,'#')"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="@href"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="$wadl-content/wadl:application/wadl:resources/wadl:resource[@id = $parent-id]/wadl:method[@rax:id = $thisMethodId]/@*"/>
|
||||
<xsl:apply-templates select="$wadl-content/wadl:application/wadl:resources/wadl:resource[@id = $parent-id]/wadl:method[@rax:id = $thisMethodId]/node()">
|
||||
<xsl:with-param name="doc" select="$doc"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wadl:resource[@href and not(./wadl:method)]">
|
||||
<xsl:variable name="doc" select="wadl:doc/*"/>
|
||||
<xsl:variable name="wadl-content" select="document(substring-before(@href, '#'))"/>
|
||||
<xsl:apply-templates select="$wadl-content/wadl:application/wadl:resources/wadl:resource[@id = substring-after(current()/@href,'#')]">
|
||||
<xsl:with-param name="doc" select="$doc"/>
|
||||
</xsl:apply-templates>
|
||||
<xsl:apply-templates select="wadl:resource"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="wadl:resource[@href and ./wadl:method]">
|
||||
<xsl:variable name="doc" select="wadl:doc/*"/>
|
||||
<xsl:variable name="resourceId" select="substring-after(@href,'#')"/>
|
||||
<xsl:variable name="wadl-content" select="document(substring-before(@href, '#'))"/>
|
||||
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="$wadl-content/wadl:application/wadl:resources/wadl:resource[@id = $resourceId]/@*"/>
|
||||
<xsl:apply-templates select="$wadl-content/wadl:application/wadl:resources/wadl:resource[@id = $resourceId]/node()[not(self::wadl:method)]">
|
||||
<xsl:with-param name="doc" select="$doc"/>
|
||||
</xsl:apply-templates>
|
||||
|
||||
<xsl:apply-templates select="wadl:method|wadl:resource"/>
|
||||
</xsl:copy>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
<!-- xhtml2docbook -->
|
||||
|
||||
<xsl:template match="xhtml:p">
|
||||
<para>
|
||||
<xsl:apply-templates select="@*|node()"/>
|
||||
</para>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@class[parent::xhtml:*]">
|
||||
<xsl:attribute name="role" select="."/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:b|xhtml:strong" >
|
||||
<emphasis role="bold"><xsl:apply-templates/></emphasis>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:a[@href]" >
|
||||
<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="{@href}"><xsl:apply-templates /></link>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:i|xhtml:em" >
|
||||
<emphasis><xsl:apply-templates/></emphasis>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:code|xhtml:tt">
|
||||
<code><xsl:apply-templates/></code>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:span|xhtml:div">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:ul" >
|
||||
<itemizedlist>
|
||||
<xsl:apply-templates />
|
||||
</itemizedlist>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:ol" >
|
||||
<orderedlist>
|
||||
<xsl:apply-templates />
|
||||
</orderedlist>
|
||||
</xsl:template>
|
||||
|
||||
<!-- TODO: Try to make this less brittle. What if they have a li/ul or li/table? -->
|
||||
<xsl:template match="xhtml:li[not(xhtml:p)]" >
|
||||
<listitem>
|
||||
<para>
|
||||
<xsl:apply-templates/>
|
||||
</para>
|
||||
</listitem>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:li[xhtml:p]" >
|
||||
<listitem>
|
||||
<xsl:apply-templates/>
|
||||
</listitem>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:table">
|
||||
<informaltable>
|
||||
<xsl:copy-of select="@*"/>
|
||||
<xsl:apply-templates mode="xhtml2docbookns"/>
|
||||
</informaltable>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="*" mode="xhtml2docbookns">
|
||||
<xsl:element name="{local-name(.)}" namespace="http://docbook.org/ns/docbook">
|
||||
<xsl:apply-templates mode="xhtml2docbookns"/>
|
||||
</xsl:element>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="xhtml:pre" >
|
||||
<programlisting>
|
||||
<xsl:apply-templates />
|
||||
</programlisting>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:SXXP0005">
|
||||
<!-- This stupid template is here to avoid SXXP0005 errors from Saxon -->
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet exclude-result-prefixes="d"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:d="http://docbook.org/ns/docbook"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
version="1.0">
|
||||
<!--
|
||||
This replacement can happen on the title page.
|
||||
-->
|
||||
<xsl:template match="d:*[@role='this']" mode="titlepage.mode">
|
||||
<xsl:apply-templates select="."/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="d:productname[@role='this']">
|
||||
<xsl:call-template name="thisReference">
|
||||
<xsl:with-param name="this" select="/*/d:info/d:productname"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="thisReference">
|
||||
<xsl:param name="this"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$this">
|
||||
<xsl:value-of select="$this"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:call-template name="badMatch"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,186 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:db="http://docbook.org/ns/docbook"
|
||||
xmlns:f="http://nwalsh.com/ns/xslt/functions"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:cx="http://xmlcalabash.com/ns/extensions"
|
||||
exclude-result-prefixes="db f xlink xs cx"
|
||||
version="2.0">
|
||||
|
||||
<xsl:template match="element()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*,node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@xml:id" priority="100">
|
||||
<xsl:variable name="id" select="f:trans-id(.)"/>
|
||||
<xsl:if test="exists($id)">
|
||||
<xsl:attribute name="xml:id" select="$id"/>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@linkend|@xlink:href[starts-with(.,'#')]" priority="100">
|
||||
<xsl:variable name="hash" select="if (starts-with(.,'#')) then '#' else ''"/>
|
||||
<xsl:variable name="linkend"
|
||||
select="if ($hash='#') then substring-after(., '#') else ."/>
|
||||
|
||||
<xsl:variable name="xiroot" select="(ancestor-or-self::*[@db:idfixup or @db:idprefix])[last()]"/>
|
||||
<xsl:variable name="fixup" select="if($xiroot/@db:idfixup) then $xiroot/@db:idfixup else if($xiroot/@db:idprefix) then 'prefix' else 'none'"/>
|
||||
<xsl:variable name="linkscope" select="$xiroot/@db:linkscope"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="empty($fixup) or $linkscope='user'">
|
||||
<xsl:copy/>
|
||||
</xsl:when>
|
||||
|
||||
<xsl:when test="($fixup='prefix' or $fixup='auto')
|
||||
and $linkscope='local'">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$fixup='auto'">
|
||||
<xsl:variable name="id" select="concat('idf-', generate-id($xiroot), '-', .)"/>
|
||||
<xsl:attribute name="{node-name(.)}" select="concat($hash, $id)"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$fixup='prefix'">
|
||||
<xsl:variable name="id" select="concat($xiroot/@db:idprefix, .)"/>
|
||||
<xsl:attribute name="{node-name(.)}" select="concat($hash, $id)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
<xsl:text>Unrecognized db:idfixup value: </xsl:text>
|
||||
<xsl:value-of select="$fixup"/>
|
||||
</xsl:message>
|
||||
<xsl:copy/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
|
||||
<xsl:when test="$linkscope='local'">
|
||||
<xsl:message>
|
||||
<xsl:text>Error: linkscope 'local' cannot be used with fixup '</xsl:text>
|
||||
<xsl:value-of select="$fixup"/>
|
||||
<xsl:text>'. Link ignored.</xsl:text>
|
||||
</xsl:message>
|
||||
<xsl:copy/>
|
||||
</xsl:when>
|
||||
|
||||
<xsl:when test="$linkscope='near'">
|
||||
<xsl:variable name="link" as="xs:string?">
|
||||
<xsl:call-template name="f:trans-link">
|
||||
<xsl:with-param name="id" select="."/>
|
||||
<xsl:with-param name="targets"
|
||||
select="reverse(preceding::*[@xml:id=$linkend])"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="exists($link)">
|
||||
<xsl:attribute name="{node-name(.)}" select="concat($hash, $link)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:variable name="link" as="xs:string?">
|
||||
<xsl:call-template name="f:trans-link">
|
||||
<xsl:with-param name="id" select="."/>
|
||||
<xsl:with-param name="targets"
|
||||
select="following::*[@xml:id=$linkend]"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="exists($link)">
|
||||
<xsl:attribute name="{node-name(.)}" select="concat($hash, $link)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
<xsl:text>Failed to find near target for link: </xsl:text>
|
||||
<xsl:value-of select="$linkend"/>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<!-- assume $linkscope='global' -->
|
||||
<xsl:variable name="link" as="xs:string?">
|
||||
<xsl:call-template name="f:trans-link">
|
||||
<xsl:with-param name="id" select="."/>
|
||||
<xsl:with-param name="targets" select="//*[@xml:id=$linkend]"/>
|
||||
</xsl:call-template>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="exists($link)">
|
||||
<xsl:attribute name="{node-name(.)}" select="concat($hash, $link)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
<xsl:text>Failed to find global target for link: </xsl:text>
|
||||
<xsl:value-of select="$linkend"/>
|
||||
</xsl:message>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="@db:idfixup|@db:idprefix|@db:linkscope|@cx:root"/>
|
||||
|
||||
<xsl:template match="attribute()|text()|comment()|processing-instruction()">
|
||||
<xsl:copy/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- ============================================================ -->
|
||||
|
||||
<xsl:function name="f:trans-id" as="xs:string?">
|
||||
<xsl:param name="id" as="attribute(xml:id)"/>
|
||||
|
||||
<xsl:variable name="xiroot" select="($id/ancestor-or-self::*[@db:idfixup or @db:idprefix])[last()]"/>
|
||||
<xsl:variable name="fixup" select="if($xiroot/@db:idfixup) then $xiroot/@db:idfixup else if($xiroot/@db:idprefix) then 'prefix' else 'none'"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="empty($fixup) or $fixup='none'">
|
||||
<xsl:value-of select="$id"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$fixup='strip'">
|
||||
<xsl:if test="$xiroot is $id/parent::*">
|
||||
<xsl:value-of select="$id"/>
|
||||
</xsl:if>
|
||||
</xsl:when>
|
||||
<xsl:when test="$fixup='auto'">
|
||||
<xsl:value-of select="concat('idf-', generate-id($xiroot), '-', $id)"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$fixup='prefix'">
|
||||
<xsl:value-of select="concat($xiroot/@db:idprefix, $id)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:message>
|
||||
<xsl:text>Unrecognized db:idfixup value: </xsl:text>
|
||||
<xsl:value-of select="$fixup"/>
|
||||
</xsl:message>
|
||||
<xsl:value-of select="$id"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:function>
|
||||
|
||||
<xsl:template name="f:trans-link" as="xs:string?">
|
||||
<xsl:param name="id" required="yes" as="xs:string"/>
|
||||
<xsl:param name="targets" required="yes" as="element()*"/>
|
||||
|
||||
<xsl:if test="exists($targets)">
|
||||
<xsl:variable name="link" select="f:trans-id($targets[1]/@xml:id)"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="empty($link)">
|
||||
<xsl:call-template name="f:trans-link">
|
||||
<xsl:with-param name="id" select="$id"/>
|
||||
<xsl:with-param name="targets" select="$targets[position() > 1]"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$link"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,55 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:db="http://docbook.org/ns/docbook"
|
||||
xmlns:raxm="http://docs.rackspace.com/api/metadata"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
exclude-result-prefixes="xs raxm db" version="2.0">
|
||||
|
||||
<!--
|
||||
This xslt adds <?dbhtml stop-chunking?> processing instructions
|
||||
where appropriate for a given content type. This allows us to
|
||||
configure the DocBook xslts to chunk deeply
|
||||
-->
|
||||
|
||||
<xsl:template match="node() | @*">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="node() | @*"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="*[./db:info/raxm:metadata]">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*"/>
|
||||
<xsl:choose>
|
||||
<xsl:when
|
||||
test="
|
||||
(./db:info/raxm:metadata//raxm:type = 'concept' and not(.//db:section/db:info/raxm:metadata)) (: Concepts that don't have descendant concepts stop chunking :)
|
||||
">
|
||||
<xsl:processing-instruction name="dbhtml">stop-chunking</xsl:processing-instruction>
|
||||
</xsl:when>
|
||||
<xsl:otherwise/>
|
||||
</xsl:choose>
|
||||
<xsl:apply-templates select="node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="db:section">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*"/>
|
||||
<xsl:choose>
|
||||
<xsl:when
|
||||
test="
|
||||
ancestor::*[./db:info/raxm:metadata//raxm:type = 'tutorial'] (: Tutorials stop chunking after the first section. Tho there shouldn't be section/sections anyway :)
|
||||
">
|
||||
<xsl:processing-instruction name="dbhtml">stop-chunking</xsl:processing-instruction>
|
||||
</xsl:when>
|
||||
<xsl:otherwise/>
|
||||
</xsl:choose>
|
||||
<xsl:apply-templates select="node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
exclude-result-prefixes="xs"
|
||||
version="2.0">
|
||||
|
||||
<!-- Check and see if you added this stuff to the stock xsls and remove this if you did -->
|
||||
<xsl:param name="show.changebars">1</xsl:param>
|
||||
<xsl:template match="text()[ ancestor::*/@revisionflag] | xref[ ancestor::*/@revisionflag]">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$show.changebars != 0"><span class="{ancestor::*/@revisionflag[1]}"><xsl:apply-imports/></span></xsl:when>
|
||||
<xsl:otherwise><xsl:apply-imports/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
<xsl:template match="*[substring(local-name(.),string-length(local-name(.)) - 4,5) = 'list' and ancestor-or-self::*/@revisionflag]|para[ancestor-or-self::*/@revisionflag]|figure[ancestor-or-self::*/@revisionflag]|informalfigure[ancestor-or-self::*/@revisionflag]|table[ancestor-or-self::*/@revisionflag]|informaltable[ancestor-or-self::*/@revisionflag]|procedure[ancestor-or-self::*/@revisionflag]">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$show.changebars != 0"><div class="{ancestor-or-self::*/@revisionflag[1]}"><xsl:apply-imports/></div></xsl:when>
|
||||
<xsl:otherwise><xsl:apply-imports/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<!-- The following templates change the color of text flagged as reviewer, internal, or writeronly -->
|
||||
<xsl:template match="text()[ contains(concat(';',ancestor::*/@security,';'),';internal;') ] | xref[ contains(concat(';',ancestor::*/@security,';'),';internal;') ]"><span class="internal"><xsl:apply-imports/></span></xsl:template>
|
||||
<xsl:template match="text()[ contains(concat(';',ancestor::*/@security,';'),';writeronly;') ] | xref[ contains(concat(';',ancestor::*/@security,';'),';writeronly;') ]"><span class="writeronly"><xsl:apply-imports/></span></xsl:template>
|
||||
<xsl:template match="text()[ contains(concat(';',ancestor::*/@security,';'),';reviewer;') ] | xref[ contains(concat(';',ancestor::*/@security,';'),';reviewer;') ]"><span class="remark"><xsl:apply-imports/></span></xsl:template>
|
||||
<xsl:template match="text()[ ancestor::*/@role = 'highlight' ] | xref[ ancestor::*/@role = 'highlight' ]" priority="10"><span class="remark"><xsl:apply-imports/></span></xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
version="1.0">
|
||||
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
@ -1,3 +0,0 @@
|
||||
The DocBook XSL2 stylesheets are maintained by Norman Walsh
|
||||
<ndw@nwalsh.com> and members of the DocBook Project
|
||||
<docbook-developers@sf.net>
|
5
src/main/resources/cloud/war/dist/docs/BUGS
vendored
5
src/main/resources/cloud/war/dist/docs/BUGS
vendored
@ -1,5 +0,0 @@
|
||||
For information about open DocBook XSL2 stylesheets bugs, see the
|
||||
following:
|
||||
|
||||
http://sourceforge.net/tracker/?atid=373747&group_id=21935&func=browse
|
||||
http://sourceforge.net/tracker/?atid=516914&group_id=21935&func=browse
|
46
src/main/resources/cloud/war/dist/docs/COPYING
vendored
46
src/main/resources/cloud/war/dist/docs/COPYING
vendored
@ -1,46 +0,0 @@
|
||||
Copyright
|
||||
---------
|
||||
|
||||
Copyright (C) 2005 Norman Walsh
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the ``Software''), to deal in the Software without
|
||||
restriction, including without limitation the rights to use,
|
||||
copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following
|
||||
conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
Except as contained in this notice, the names of individuals
|
||||
credited with contribution to this software shall not be used in
|
||||
advertising or otherwise to promote the sale, use or other
|
||||
dealings in this Software without prior written authorization
|
||||
from the individuals in question.
|
||||
|
||||
Any stylesheet derived from this Software that is publically
|
||||
distributed will be identified with a different name and the
|
||||
version strings in any derived Software will be changed so that
|
||||
no possibility of confusion between the derived package and this
|
||||
Software will exist.
|
||||
|
||||
Warranty
|
||||
--------
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL NORMAN WALSH OR ANY OTHER
|
||||
CONTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
Contacting the Author
|
||||
---------------------
|
||||
|
||||
These stylesheets are maintained by Norman Walsh <ndw@nwalsh.com>
|
||||
and members of the DocBook Project <docbook-developers@sf.net>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user