├── .editorconfig ├── .github └── workflows │ ├── nodejs.yml │ └── publish.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── LICENSE.md ├── README.md ├── bin └── wmscapabilities ├── example ├── css │ ├── prism.css │ ├── style.css │ ├── topcoat-desktop-dark.css │ └── topcoat-desktop-light.css ├── font │ ├── LICENSE.txt │ ├── SourceCodePro-Black.otf │ ├── SourceCodePro-Bold.otf │ ├── SourceCodePro-ExtraLight.otf │ ├── SourceCodePro-Light.otf │ ├── SourceCodePro-Regular.otf │ ├── SourceCodePro-Semibold.otf │ ├── SourceSansPro-Black.otf │ ├── SourceSansPro-BlackIt.otf │ ├── SourceSansPro-Bold.otf │ ├── SourceSansPro-BoldIt.otf │ ├── SourceSansPro-ExtraLight.otf │ ├── SourceSansPro-ExtraLightIt.otf │ ├── SourceSansPro-It.otf │ ├── SourceSansPro-Light.otf │ ├── SourceSansPro-LightIt.otf │ ├── SourceSansPro-Regular.otf │ ├── SourceSansPro-Semibold.otf │ └── SourceSansPro-SemiboldIt.otf ├── img │ └── dropdown.svg ├── index.html ├── js │ ├── app.js │ ├── bundle.js │ ├── json-format.js │ ├── prism.js │ └── xml-format.js └── less │ ├── style.less │ └── topcoat-select.less ├── index.d.ts ├── index.html ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── externs.js ├── index.js ├── node_types.js ├── parsers.js ├── utils │ ├── isdef.js │ ├── setifundefined.js │ └── string.js ├── xlink.js ├── xml_parser.js └── xsd.js └── test ├── fixtures ├── analyses.xml ├── dmsp.xml ├── forecasts.xml ├── obs.xml └── wwa.xml └── index.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | insert_final_newline = true 5 | indent_style = space 6 | indent_size = 2 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | 10 | [*{.scss,.less}] 11 | indent_style = tab 12 | 13 | [*.json] 14 | indent_style = space 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.github/workflows/nodejs.yml: -------------------------------------------------------------------------------- 1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions 3 | 4 | name: Node.js CI 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | matrix: 19 | node-version: [10.x, 12.x] 20 | 21 | steps: 22 | - uses: actions/checkout@v2 23 | - name: Use Node.js ${{ matrix.node-version }} 24 | uses: actions/setup-node@v1 25 | with: 26 | node-version: ${{ matrix.node-version }} 27 | - run: npm ci 28 | - run: npm run build --if-present 29 | - run: npm test 30 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | tags: 4 | - 'v*.*.*' 5 | 6 | jobs: 7 | publish: 8 | 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - uses: actions/checkout@v1 13 | - uses: actions/setup-node@v1 14 | with: 15 | node-version: 12 16 | - run: npm ci 17 | - run: npm run build 18 | - run: npm test 19 | - uses: JS-DevTools/npm-publish@v1 20 | with: 21 | token: ${{ secrets.NPM_TOKEN }} 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Directory for instrumented libs generated by jscoverage/JSCover 11 | lib-cov 12 | 13 | # Coverage directory used by tools like istanbul 14 | coverage 15 | 16 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 17 | .grunt 18 | 19 | # Compiled binary addons (http://nodejs.org/api/addons.html) 20 | build/Release 21 | 22 | # Dependency directory 23 | # Commenting this out is preferred by some people, see 24 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git- 25 | node_modules 26 | 27 | # Users Environment Variables 28 | .lock-wscript 29 | 30 | .reify-cache 31 | dist 32 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | example 2 | test 3 | .reify-cache 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry=https://registry.npmjs.org/ 2 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2005-2016 OpenLayers Contributors. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, 4 | are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this 7 | list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation and/or 11 | other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY OPENLAYERS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS 14 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 15 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 16 | SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 17 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 18 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 20 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 21 | OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 22 | ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 | 24 | The views and conclusions contained in the software and documentation are those 25 | of the authors and should not be interpreted as representing official policies, 26 | either expressed or implied, of OpenLayers Contributors. 27 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WMS `GetCapabilities` parser 2 | [](http://badge.fury.io/js/wms-capabilities) 3 | 4 | Parses [WMS](http://en.wikipedia.org/wiki/Web_Map_Service) capabilities XML format to JSON. This is a simplified excerpt from [OpenLayers](https://github.com/openlayers/ol3) code to be used separately from its large codebase. 5 | 6 | ## [Demo](https://w8r.github.io/wms-capabilities) 7 | 8 | ## Usage 9 | 10 | ### ES 11 | ``` 12 | npm install wms-capabilities --save 13 | ``` 14 | ```js 15 | import WMSCapabilities from 'wms-capabilities'; 16 | ... 17 | new WMSCapabilities().parse(xmlString); 18 | //or 19 | new WMSCapabilities(xmlString).toJSON(); 20 | // or 21 | new WMSCapabilities().readFromDocument(xmldoc); 22 | ``` 23 | ### Browser 24 | ```html 25 | 26 | ... 27 | new WMSCapabilities().parse(xmlString); 28 | ``` 29 | 30 | ### Node 31 | 32 | Requires `xmldom` to traverse XML 33 | ```sh 34 | $npm install --save xmldom 35 | ``` 36 | then 37 | ```js 38 | import xmldom from 'xmldom'; // 'xmldom' doesn't 'export' the DOMParser 39 | import WMSCapabilities from 'wms-capabilities'; 40 | ... 41 | new WMSCapabilities(xmlString, xmldom.DOMParser).toJSON(); 42 | ``` 43 | 44 | ### Command-line 45 | 46 | ```sh 47 | $ npm install -g wms-capabilities 48 | $ cat capabilities.xml | wmscapabilities > out.json 49 | $ # or 50 | $ wmscapabilities capabilities.json > out.json 51 | ``` 52 | -------------------------------------------------------------------------------- /bin/wmscapabilities: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var xmldom = require('xmldom'); 4 | var WMSCapabilites = require('../dist/wms-capabilities.min.js'); 5 | var fs = require('fs'); 6 | var path = require('path'); 7 | 8 | var pkg = require('../package.json'); 9 | var xml = ''; 10 | 11 | var args = process.argv.slice(2); 12 | var arg = args[0]; 13 | 14 | var stream = process.stdin; 15 | 16 | if (arg === '--version') { 17 | console.log(pkg.version) 18 | process.exit(0) 19 | } else if (arg === '--help') { 20 | console.log('\n WMS Capabilities converter', pkg.version, '\n'); 21 | console.log(' $ cat capabilities.xml | wmscapabilities > out.json'); 22 | console.log(' $ wmscapabilities capabilities.xml > out.json\n'); 23 | process.exit(0); 24 | } else if (arg) { 25 | stream = fs.createReadStream(path.join(process.cwd(), arg)); 26 | } 27 | 28 | stream.on('data', function (data) { 29 | xml += data; 30 | }); 31 | 32 | stream.resume(); 33 | 34 | stream.on('end', function () { 35 | var json = new WMSCapabilites(xml, xmldom.DOMParser).toJSON(); 36 | process.stdout.write(JSON.stringify(json, 0, 2) + '\n'); 37 | }); 38 | 39 | -------------------------------------------------------------------------------- /example/css/prism.css: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism-twilight&languages=markup+twig+clike+javascript&plugins=line-numbers */ 2 | /** 3 | * prism.js Twilight theme 4 | * Based (more or less) on the Twilight theme originally of Textmate fame. 5 | * @author Remy Bach 6 | */ 7 | code[class*="language-"], 8 | pre[class*="language-"] { 9 | color: white; 10 | direction: ltr; 11 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 12 | text-align: left; 13 | text-shadow: 0 -.1em .2em black; 14 | white-space: pre; 15 | word-spacing: normal; 16 | word-break: normal; 17 | line-height: 1.5; 18 | 19 | -moz-tab-size: 4; 20 | -o-tab-size: 4; 21 | tab-size: 4; 22 | 23 | -webkit-hyphens: none; 24 | -moz-hyphens: none; 25 | -ms-hyphens: none; 26 | hyphens: none; 27 | } 28 | 29 | pre[class*="language-"], 30 | :not(pre) > code[class*="language-"] { 31 | background: hsl(0, 0%, 8%); /* #141414 */ 32 | } 33 | 34 | /* Code blocks */ 35 | pre[class*="language-"] { 36 | border-radius: .5em; 37 | border: .3em solid hsl(0, 0%, 33%); /* #282A2B */ 38 | box-shadow: 1px 1px .5em black inset; 39 | margin: .5em 0; 40 | overflow: auto; 41 | padding: 1em; 42 | } 43 | 44 | pre[class*="language-"]::selection { 45 | /* Safari */ 46 | background: hsl(200, 4%, 16%); /* #282A2B */ 47 | } 48 | 49 | pre[class*="language-"]::selection { 50 | /* Firefox */ 51 | background: hsl(200, 4%, 16%); /* #282A2B */ 52 | } 53 | 54 | /* Text Selection colour */ 55 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 56 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 57 | text-shadow: none; 58 | background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */ 59 | } 60 | 61 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 62 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 63 | text-shadow: none; 64 | background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */ 65 | } 66 | 67 | /* Inline code */ 68 | :not(pre) > code[class*="language-"] { 69 | border-radius: .3em; 70 | border: .13em solid hsl(0, 0%, 33%); /* #545454 */ 71 | box-shadow: 1px 1px .3em -.1em black inset; 72 | padding: .15em .2em .05em; 73 | } 74 | 75 | .token.comment, 76 | .token.prolog, 77 | .token.doctype, 78 | .token.cdata { 79 | color: hsl(0, 0%, 47%); /* #777777 */ 80 | } 81 | 82 | .token.punctuation { 83 | opacity: .7; 84 | } 85 | 86 | .namespace { 87 | opacity: .7; 88 | } 89 | 90 | .token.tag, 91 | .token.boolean, 92 | .token.number, 93 | .token.deleted { 94 | color: hsl(14, 58%, 55%); /* #CF6A4C */ 95 | } 96 | 97 | .token.keyword, 98 | .token.property, 99 | .token.selector, 100 | .token.constant, 101 | .token.symbol, 102 | .token.builtin { 103 | color: hsl(53, 89%, 79%); /* #F9EE98 */ 104 | } 105 | 106 | .token.attr-name, 107 | .token.attr-value, 108 | .token.string, 109 | .token.char, 110 | .token.operator, 111 | .token.entity, 112 | .token.url, 113 | .language-css .token.string, 114 | .style .token.string, 115 | .token.variable, 116 | .token.inserted { 117 | color: hsl(76, 21%, 52%); /* #8F9D6A */ 118 | } 119 | 120 | .token.atrule { 121 | color: hsl(218, 22%, 55%); /* #7587A6 */ 122 | } 123 | 124 | .token.regex, 125 | .token.important { 126 | color: hsl(42, 75%, 65%); /* #E9C062 */ 127 | } 128 | 129 | .token.important, 130 | .token.bold { 131 | font-weight: bold; 132 | } 133 | .token.italic { 134 | font-style: italic; 135 | } 136 | 137 | .token.entity { 138 | cursor: help; 139 | } 140 | 141 | pre[data-line] { 142 | padding: 1em 0 1em 3em; 143 | position: relative; 144 | } 145 | 146 | /* Markup */ 147 | .language-markup .token.tag, 148 | .language-markup .token.attr-name, 149 | .language-markup .token.punctuation { 150 | color: hsl(33, 33%, 52%); /* #AC885B */ 151 | } 152 | 153 | /* Make the tokens sit above the line highlight so the colours don't look faded. */ 154 | .token { 155 | position: relative; 156 | z-index: 1; 157 | } 158 | 159 | .line-highlight { 160 | background: -moz-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ 161 | background: -o-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ 162 | background: -webkit-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ 163 | background: hsla(0, 0%, 33%, 0.25); /* #545454 */ 164 | background: linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ 165 | border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */ 166 | border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */ 167 | left: 0; 168 | line-height: inherit; 169 | margin-top: 0.75em; /* Same as .prism’s padding-top */ 170 | padding: inherit 0; 171 | pointer-events: none; 172 | position: absolute; 173 | right: 0; 174 | white-space: pre; 175 | z-index: 0; 176 | } 177 | 178 | .line-highlight:before, 179 | .line-highlight[data-end]:after { 180 | background-color: hsl(215, 15%, 59%); /* #8794A6 */ 181 | border-radius: 999px; 182 | box-shadow: 0 1px white; 183 | color: hsl(24, 20%, 95%); /* #F5F2F0 */ 184 | content: attr(data-start); 185 | font: bold 65%/1.5 sans-serif; 186 | left: .6em; 187 | min-width: 1em; 188 | padding: 0 .5em; 189 | position: absolute; 190 | text-align: center; 191 | text-shadow: none; 192 | top: .4em; 193 | vertical-align: .3em; 194 | } 195 | 196 | .line-highlight[data-end]:after { 197 | bottom: .4em; 198 | content: attr(data-end); 199 | top: auto; 200 | } 201 | 202 | pre.line-numbers { 203 | position: relative; 204 | padding-left: 3.8em; 205 | counter-reset: linenumber; 206 | } 207 | 208 | pre.line-numbers > code { 209 | position: relative; 210 | } 211 | 212 | .line-numbers .line-numbers-rows { 213 | position: absolute; 214 | pointer-events: none; 215 | top: 0; 216 | font-size: 100%; 217 | left: -3.8em; 218 | width: 3em; /* works for line-numbers below 1000 lines */ 219 | letter-spacing: -1px; 220 | border-right: 1px solid #999; 221 | 222 | -webkit-user-select: none; 223 | -moz-user-select: none; 224 | -ms-user-select: none; 225 | user-select: none; 226 | 227 | } 228 | 229 | .line-numbers-rows > span { 230 | pointer-events: none; 231 | display: block; 232 | counter-increment: linenumber; 233 | } 234 | 235 | .line-numbers-rows > span:before { 236 | content: counter(linenumber); 237 | color: #999; 238 | display: block; 239 | padding-right: 0.8em; 240 | text-align: right; 241 | } 242 | -------------------------------------------------------------------------------- /example/css/style.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | color: #F0F1F1; 6 | background: #4A4D4E; 7 | } 8 | .topcoat-select { 9 | padding: 0; 10 | margin: 0; 11 | font: inherit; 12 | color: inherit; 13 | background: transparent; 14 | border: none; 15 | } 16 | .topcoat-select { 17 | vertical-align: top; 18 | outline: none; 19 | } 20 | .topcoat-select { 21 | cursor: default; 22 | -webkit-user-select: none; 23 | -moz-user-select: none; 24 | -ms-user-select: none; 25 | user-select: none; 26 | } 27 | .topcoat-select { 28 | -moz-box-sizing: border-box; 29 | box-sizing: border-box; 30 | background-clip: padding-box; 31 | } 32 | .topcoat-select { 33 | position: relative; 34 | display: inline-block; 35 | vertical-align: top; 36 | } 37 | .topcoat-select:disabled { 38 | opacity: 0.3; 39 | cursor: default; 40 | pointer-events: none; 41 | } 42 | .topcoat-select { 43 | -moz-appearance: none; 44 | -webkit-appearance: none; 45 | } 46 | .topcoat-select::-ms-expand { 47 | display: none; 48 | } 49 | /* topdoc 50 | name: Topcoat Select 51 | description: A component that lets you select things 52 | modifiers: 53 | :disabled: Disabled state 54 | :focus: Focused 55 | :invalid: Hover state 56 | markup: 57 | 63 | 69 | tags: 70 | - desktop 71 | - mobile 72 | - text 73 | - input 74 | */ 75 | .topcoat-select { 76 | -webkit-user-select: none; 77 | -moz-user-select: none; 78 | -ms-user-select: none; 79 | user-select: none; 80 | cursor: pointer; 81 | appearance: button; 82 | text-indent: 0.01px; 83 | text-overflow: ''; 84 | padding: 0.7rem 1.3rem 0.7rem 1rem; 85 | font-size: 16px; 86 | font-weight: 400; 87 | height: 3rem; 88 | letter-spacing: 1px; 89 | color: hsl(180, 2%, 78%); 90 | text-shadow: 0 -1px hsla(0, 0%, 0%, 0.69); 91 | border-radius: 6px; 92 | background-color: hsl(180, 1%, 35%); 93 | box-shadow: inset 0 1px hsl(0, 0%, 45%); 94 | border: 1px solid hsl(180, 1%, 20%); 95 | background-image: url('../img/dropdown.svg'); 96 | background-repeat: no-repeat; 97 | background-position: center right; 98 | } 99 | .topcoat-select:hover { 100 | background-color: hsl(200, 2%, 39%); 101 | } 102 | .topcoat-select:active { 103 | background-color: hsl(210, 2%, 25%); 104 | box-shadow: inset 0 1px hsla(0, 0%, 0%, 0.05); 105 | } 106 | .topcoat-select:focus { 107 | border: 1px solid hsl(227, 100%, 50%); 108 | box-shadow: 0 0 0 2px hsl(208, 82%, 69%); 109 | outline: 0; 110 | } 111 | h2, 112 | h3 { 113 | font-weight: 300; 114 | } 115 | .container { 116 | margin: 0 auto; 117 | } 118 | .container a { 119 | color: #288edf; 120 | text-decoration: none; 121 | } 122 | .container a:hover { 123 | text-decoration: underline; 124 | } 125 | .container header { 126 | position: relative; 127 | } 128 | .container header:before { 129 | content: ''; 130 | width: 100%; 131 | display: block; 132 | position: absolute; 133 | left: 0; 134 | top: 23px; 135 | } 136 | .container .wrapper { 137 | padding: 30px; 138 | } 139 | .container .github-button { 140 | color: transparent; 141 | } 142 | .container .code, 143 | .container .code:focus { 144 | max-height: 350px; 145 | margin-right: 20px; 146 | border-radius: 0.5em; 147 | border: 0.3em solid hsl(0, 0%, 33%); 148 | box-shadow: 1px 1px 0.5em black inset; 149 | margin: 0; 150 | overflow: auto; 151 | padding: 1em; 152 | background: hsl(0, 0%, 8%); 153 | color: white; 154 | direction: ltr; 155 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 156 | text-align: left; 157 | text-shadow: 0 -0.1em 0.2em black; 158 | white-space: pre; 159 | word-spacing: normal; 160 | word-break: normal; 161 | line-height: 1.5; 162 | -moz-tab-size: 4; 163 | -o-tab-size: 4; 164 | tab-size: 4; 165 | -webkit-hyphens: none; 166 | -moz-hyphens: none; 167 | -ms-hyphens: none; 168 | hyphens: none; 169 | width: 95%; 170 | } 171 | .container #input-area { 172 | display: none; 173 | } 174 | .container .outputs { 175 | clear: both; 176 | padding-bottom: 40px; 177 | } 178 | .container .output { 179 | width: 49%; 180 | vertical-align: top; 181 | display: inline-block; 182 | min-width: 600px; 183 | } 184 | @media (min-width: 900px) { 185 | #map { 186 | width: 60%; 187 | height: 100%; 188 | } 189 | #controls { 190 | width: 40%; 191 | } 192 | #controls .control.range { 193 | display: inline-block; 194 | } 195 | } 196 | -------------------------------------------------------------------------------- /example/font/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. 2 | 3 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 4 | 5 | This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL 6 | 7 | 8 | ----------------------------------------------------------- 9 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 10 | ----------------------------------------------------------- 11 | 12 | PREAMBLE 13 | The goals of the Open Font License (OFL) are to stimulate worldwide 14 | development of collaborative font projects, to support the font creation 15 | efforts of academic and linguistic communities, and to provide a free and 16 | open framework in which fonts may be shared and improved in partnership 17 | with others. 18 | 19 | The OFL allows the licensed fonts to be used, studied, modified and 20 | redistributed freely as long as they are not sold by themselves. The 21 | fonts, including any derivative works, can be bundled, embedded, 22 | redistributed and/or sold with any software provided that any reserved 23 | names are not used by derivative works. The fonts and derivatives, 24 | however, cannot be released under any other type of license. The 25 | requirement for fonts to remain under this license does not apply 26 | to any document created using the fonts or their derivatives. 27 | 28 | DEFINITIONS 29 | "Font Software" refers to the set of files released by the Copyright 30 | Holder(s) under this license and clearly marked as such. This may 31 | include source files, build scripts and documentation. 32 | 33 | "Reserved Font Name" refers to any names specified as such after the 34 | copyright statement(s). 35 | 36 | "Original Version" refers to the collection of Font Software components as 37 | distributed by the Copyright Holder(s). 38 | 39 | "Modified Version" refers to any derivative made by adding to, deleting, 40 | or substituting -- in part or in whole -- any of the components of the 41 | Original Version, by changing formats or by porting the Font Software to a 42 | new environment. 43 | 44 | "Author" refers to any designer, engineer, programmer, technical 45 | writer or other person who contributed to the Font Software. 46 | 47 | PERMISSION & CONDITIONS 48 | Permission is hereby granted, free of charge, to any person obtaining 49 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 50 | redistribute, and sell modified and unmodified copies of the Font 51 | Software, subject to the following conditions: 52 | 53 | 1) Neither the Font Software nor any of its individual components, 54 | in Original or Modified Versions, may be sold by itself. 55 | 56 | 2) Original or Modified Versions of the Font Software may be bundled, 57 | redistributed and/or sold with any software, provided that each copy 58 | contains the above copyright notice and this license. These can be 59 | included either as stand-alone text files, human-readable headers or 60 | in the appropriate machine-readable metadata fields within text or 61 | binary files as long as those fields can be easily viewed by the user. 62 | 63 | 3) No Modified Version of the Font Software may use the Reserved Font 64 | Name(s) unless explicit written permission is granted by the corresponding 65 | Copyright Holder. This restriction only applies to the primary font name as 66 | presented to the users. 67 | 68 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 69 | Software shall not be used to promote, endorse or advertise any 70 | Modified Version, except to acknowledge the contribution(s) of the 71 | Copyright Holder(s) and the Author(s) or with their explicit written 72 | permission. 73 | 74 | 5) The Font Software, modified or unmodified, in part or in whole, 75 | must be distributed entirely under this license, and must not be 76 | distributed under any other license. The requirement for fonts to 77 | remain under this license does not apply to any document created 78 | using the Font Software. 79 | 80 | TERMINATION 81 | This license becomes null and void if any of the above conditions are 82 | not met. 83 | 84 | DISCLAIMER 85 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 86 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 87 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 88 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 89 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 90 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 91 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 92 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 93 | OTHER DEALINGS IN THE FONT SOFTWARE. 94 | -------------------------------------------------------------------------------- /example/font/SourceCodePro-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceCodePro-Black.otf -------------------------------------------------------------------------------- /example/font/SourceCodePro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceCodePro-Bold.otf -------------------------------------------------------------------------------- /example/font/SourceCodePro-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceCodePro-ExtraLight.otf -------------------------------------------------------------------------------- /example/font/SourceCodePro-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceCodePro-Light.otf -------------------------------------------------------------------------------- /example/font/SourceCodePro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceCodePro-Regular.otf -------------------------------------------------------------------------------- /example/font/SourceCodePro-Semibold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceCodePro-Semibold.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-Black.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-BlackIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-BlackIt.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-Bold.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-BoldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-BoldIt.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-ExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-ExtraLight.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-ExtraLightIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-ExtraLightIt.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-It.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-It.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-Light.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-LightIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-LightIt.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-Regular.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-Semibold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-Semibold.otf -------------------------------------------------------------------------------- /example/font/SourceSansPro-SemiboldIt.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/w8r/wms-capabilities/f6ade93d2dd6c357047b940f787f9425b524d21c/example/font/SourceSansPro-SemiboldIt.otf -------------------------------------------------------------------------------- /example/img/dropdown.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |