├── .gitignore ├── INSTALL.md ├── README.md ├── build.bat ├── build.sh ├── css ├── asciidoc.css ├── docbook-xsl.css ├── pygments.css ├── slidy.css ├── toc2.css ├── uber-custom.css └── xhtml11-quirks.css ├── includes ├── error-sample.js ├── error-sample.xml ├── full-example.js ├── full-example.xml ├── message-model.xml ├── search-sample.js ├── search-sample.xml ├── uber-query-string.txt └── uber-request-body.txt ├── js ├── ASCIIMathML.js ├── LaTeXMathML.js ├── asciidoc.js ├── slidy.js └── toc.js ├── uber-hypermedia.asciidoc └── uber-hypermedia.html /.gitignore: -------------------------------------------------------------------------------- 1 | _site/ 2 | .sass-cache/ 3 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | ## Installation 2 | 3 | If you want to contribute to the specification document and properly render HTML version from the AsciiDoc, you will need to install and configure following tools. 4 | 5 | ### On Mac / OS-X 6 | 7 | ```bash 8 | > brew install asciidoc 9 | > brew install source-highlight 10 | ``` 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | specification 2 | ============= 3 | 4 | [![Join the chat at https://gitter.im/uber-hypermedia/specification](https://badges.gitter.im/uber-hypermedia/specification.svg)](https://gitter.im/uber-hypermedia/specification?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 5 | 6 | UBER Hypermedia Specification 7 | -------------------------------------------------------------------------------- /build.bat: -------------------------------------------------------------------------------- 1 | @REM build.bat 2 | @ECHO off 3 | python %PATH_ASCII%\asciidoc.py -b html5 -n -a data-uri -a icons uber-hypermedia.asciidoc %* 4 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | asciidoc -b html5 -n -a data-uri -a icons uber-hypermedia.asciidoc 4 | -------------------------------------------------------------------------------- /css/asciidoc.css: -------------------------------------------------------------------------------- 1 | /* Shared CSS for AsciiDoc xhtml11 and html5 backends */ 2 | 3 | /* Default font. */ 4 | body { 5 | font-family: Georgia,serif; 6 | } 7 | 8 | /* Title font. */ 9 | h1, h2, h3, h4, h5, h6, 10 | div.title, caption.title, 11 | thead, p.table.header, 12 | #toctitle, 13 | #author, #revnumber, #revdate, #revremark, 14 | #footer { 15 | font-family: Arial,Helvetica,sans-serif; 16 | } 17 | 18 | body { 19 | margin: 1em 5% 1em 5%; 20 | } 21 | 22 | a { 23 | color: blue; 24 | text-decoration: underline; 25 | } 26 | a:visited { 27 | color: fuchsia; 28 | } 29 | 30 | em { 31 | font-style: italic; 32 | color: navy; 33 | } 34 | 35 | strong { 36 | font-weight: bold; 37 | color: #083194; 38 | } 39 | 40 | h1, h2, h3, h4, h5, h6 { 41 | color: #527bbd; 42 | margin-top: 1.2em; 43 | margin-bottom: 0.5em; 44 | line-height: 1.3; 45 | } 46 | 47 | h1, h2, h3 { 48 | border-bottom: 2px solid silver; 49 | } 50 | h2 { 51 | padding-top: 0.5em; 52 | } 53 | h3 { 54 | float: left; 55 | } 56 | h3 + * { 57 | clear: left; 58 | } 59 | h5 { 60 | font-size: 1.0em; 61 | } 62 | 63 | div.sectionbody { 64 | margin-left: 0; 65 | } 66 | 67 | hr { 68 | border: 1px solid silver; 69 | } 70 | 71 | p { 72 | margin-top: 0.5em; 73 | margin-bottom: 0.5em; 74 | } 75 | 76 | ul, ol, li > p { 77 | margin-top: 0; 78 | } 79 | ul > li { color: #aaa; } 80 | ul > li > * { color: black; } 81 | 82 | .monospaced, code, pre { 83 | font-family: "Courier New", Courier, monospace; 84 | font-size: inherit; 85 | color: navy; 86 | padding: 0; 87 | margin: 0; 88 | } 89 | pre { 90 | white-space: pre-wrap; 91 | } 92 | 93 | #author { 94 | color: #527bbd; 95 | font-weight: bold; 96 | font-size: 1.1em; 97 | } 98 | #email { 99 | } 100 | #revnumber, #revdate, #revremark { 101 | } 102 | 103 | #footer { 104 | font-size: small; 105 | border-top: 2px solid silver; 106 | padding-top: 0.5em; 107 | margin-top: 4.0em; 108 | } 109 | #footer-text { 110 | float: left; 111 | padding-bottom: 0.5em; 112 | } 113 | #footer-badges { 114 | float: right; 115 | padding-bottom: 0.5em; 116 | } 117 | 118 | #preamble { 119 | margin-top: 1.5em; 120 | margin-bottom: 1.5em; 121 | } 122 | div.imageblock, div.exampleblock, div.verseblock, 123 | div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, 124 | div.admonitionblock { 125 | margin-top: 1.0em; 126 | margin-bottom: 1.5em; 127 | } 128 | div.admonitionblock { 129 | margin-top: 2.0em; 130 | margin-bottom: 2.0em; 131 | margin-right: 10%; 132 | color: #606060; 133 | } 134 | 135 | div.content { /* Block element content. */ 136 | padding: 0; 137 | } 138 | 139 | /* Block element titles. */ 140 | div.title, caption.title { 141 | color: #527bbd; 142 | font-weight: bold; 143 | text-align: left; 144 | margin-top: 1.0em; 145 | margin-bottom: 0.5em; 146 | } 147 | div.title + * { 148 | margin-top: 0; 149 | } 150 | 151 | td div.title:first-child { 152 | margin-top: 0.0em; 153 | } 154 | div.content div.title:first-child { 155 | margin-top: 0.0em; 156 | } 157 | div.content + div.title { 158 | margin-top: 0.0em; 159 | } 160 | 161 | div.sidebarblock > div.content { 162 | background: #ffffee; 163 | border: 1px solid #dddddd; 164 | border-left: 4px solid #f0f0f0; 165 | padding: 0.5em; 166 | } 167 | 168 | div.listingblock > div.content { 169 | border: 1px solid #dddddd; 170 | border-left: 5px solid #f0f0f0; 171 | background: #f8f8f8; 172 | padding: 0.5em; 173 | } 174 | 175 | div.quoteblock, div.verseblock { 176 | padding-left: 1.0em; 177 | margin-left: 1.0em; 178 | margin-right: 10%; 179 | border-left: 5px solid #f0f0f0; 180 | color: #888; 181 | } 182 | 183 | div.quoteblock > div.attribution { 184 | padding-top: 0.5em; 185 | text-align: right; 186 | } 187 | 188 | div.verseblock > pre.content { 189 | font-family: inherit; 190 | font-size: inherit; 191 | } 192 | div.verseblock > div.attribution { 193 | padding-top: 0.75em; 194 | text-align: left; 195 | } 196 | /* DEPRECATED: Pre version 8.2.7 verse style literal block. */ 197 | div.verseblock + div.attribution { 198 | text-align: left; 199 | } 200 | 201 | div.admonitionblock .icon { 202 | vertical-align: top; 203 | font-size: 1.1em; 204 | font-weight: bold; 205 | text-decoration: underline; 206 | color: #527bbd; 207 | padding-right: 0.5em; 208 | } 209 | div.admonitionblock td.content { 210 | padding-left: 0.5em; 211 | border-left: 3px solid #dddddd; 212 | } 213 | 214 | div.exampleblock > div.content { 215 | border-left: 3px solid #dddddd; 216 | padding-left: 0.5em; 217 | } 218 | 219 | div.imageblock div.content { padding-left: 0; } 220 | span.image img { border-style: none; vertical-align: text-bottom; } 221 | a.image:visited { color: white; } 222 | 223 | dl { 224 | margin-top: 0.8em; 225 | margin-bottom: 0.8em; 226 | } 227 | dt { 228 | margin-top: 0.5em; 229 | margin-bottom: 0; 230 | font-style: normal; 231 | color: navy; 232 | } 233 | dd > *:first-child { 234 | margin-top: 0.1em; 235 | } 236 | 237 | ul, ol { 238 | list-style-position: outside; 239 | } 240 | ol.arabic { 241 | list-style-type: decimal; 242 | } 243 | ol.loweralpha { 244 | list-style-type: lower-alpha; 245 | } 246 | ol.upperalpha { 247 | list-style-type: upper-alpha; 248 | } 249 | ol.lowerroman { 250 | list-style-type: lower-roman; 251 | } 252 | ol.upperroman { 253 | list-style-type: upper-roman; 254 | } 255 | 256 | div.compact ul, div.compact ol, 257 | div.compact p, div.compact p, 258 | div.compact div, div.compact div { 259 | margin-top: 0.1em; 260 | margin-bottom: 0.1em; 261 | } 262 | 263 | tfoot { 264 | font-weight: bold; 265 | } 266 | td > div.verse { 267 | white-space: pre; 268 | } 269 | 270 | div.hdlist { 271 | margin-top: 0.8em; 272 | margin-bottom: 0.8em; 273 | } 274 | div.hdlist tr { 275 | padding-bottom: 15px; 276 | } 277 | dt.hdlist1.strong, td.hdlist1.strong { 278 | font-weight: bold; 279 | } 280 | td.hdlist1 { 281 | vertical-align: top; 282 | font-style: normal; 283 | padding-right: 0.8em; 284 | color: navy; 285 | } 286 | td.hdlist2 { 287 | vertical-align: top; 288 | } 289 | div.hdlist.compact tr { 290 | margin: 0; 291 | padding-bottom: 0; 292 | } 293 | 294 | .comment { 295 | background: yellow; 296 | } 297 | 298 | .footnote, .footnoteref { 299 | font-size: 0.8em; 300 | } 301 | 302 | span.footnote, span.footnoteref { 303 | vertical-align: super; 304 | } 305 | 306 | #footnotes { 307 | margin: 20px 0 20px 0; 308 | padding: 7px 0 0 0; 309 | } 310 | 311 | #footnotes div.footnote { 312 | margin: 0 0 5px 0; 313 | } 314 | 315 | #footnotes hr { 316 | border: none; 317 | border-top: 1px solid silver; 318 | height: 1px; 319 | text-align: left; 320 | margin-left: 0; 321 | width: 20%; 322 | min-width: 100px; 323 | } 324 | 325 | div.colist td { 326 | padding-right: 0.5em; 327 | padding-bottom: 0.3em; 328 | vertical-align: top; 329 | } 330 | div.colist td img { 331 | margin-top: 0.3em; 332 | } 333 | 334 | @media print { 335 | #footer-badges { display: none; } 336 | } 337 | 338 | #toc { 339 | margin-bottom: 2.5em; 340 | } 341 | 342 | #toctitle { 343 | color: #527bbd; 344 | font-size: 1.1em; 345 | font-weight: bold; 346 | margin-top: 1.0em; 347 | margin-bottom: 0.1em; 348 | } 349 | 350 | div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { 351 | margin-top: 0; 352 | margin-bottom: 0; 353 | } 354 | div.toclevel2 { 355 | margin-left: 2em; 356 | font-size: 0.9em; 357 | } 358 | div.toclevel3 { 359 | margin-left: 4em; 360 | font-size: 0.9em; 361 | } 362 | div.toclevel4 { 363 | margin-left: 6em; 364 | font-size: 0.9em; 365 | } 366 | 367 | span.aqua { color: aqua; } 368 | span.black { color: black; } 369 | span.blue { color: blue; } 370 | span.fuchsia { color: fuchsia; } 371 | span.gray { color: gray; } 372 | span.green { color: green; } 373 | span.lime { color: lime; } 374 | span.maroon { color: maroon; } 375 | span.navy { color: navy; } 376 | span.olive { color: olive; } 377 | span.purple { color: purple; } 378 | span.red { color: red; } 379 | span.silver { color: silver; } 380 | span.teal { color: teal; } 381 | span.white { color: white; } 382 | span.yellow { color: yellow; } 383 | 384 | span.aqua-background { background: aqua; } 385 | span.black-background { background: black; } 386 | span.blue-background { background: blue; } 387 | span.fuchsia-background { background: fuchsia; } 388 | span.gray-background { background: gray; } 389 | span.green-background { background: green; } 390 | span.lime-background { background: lime; } 391 | span.maroon-background { background: maroon; } 392 | span.navy-background { background: navy; } 393 | span.olive-background { background: olive; } 394 | span.purple-background { background: purple; } 395 | span.red-background { background: red; } 396 | span.silver-background { background: silver; } 397 | span.teal-background { background: teal; } 398 | span.white-background { background: white; } 399 | span.yellow-background { background: yellow; } 400 | 401 | span.big { font-size: 2em; } 402 | span.small { font-size: 0.6em; } 403 | 404 | span.underline { text-decoration: underline; } 405 | span.overline { text-decoration: overline; } 406 | span.line-through { text-decoration: line-through; } 407 | 408 | div.unbreakable { page-break-inside: avoid; } 409 | 410 | 411 | /* 412 | * xhtml11 specific 413 | * 414 | * */ 415 | 416 | div.tableblock { 417 | margin-top: 1.0em; 418 | margin-bottom: 1.5em; 419 | } 420 | div.tableblock > table { 421 | border: 3px solid #527bbd; 422 | } 423 | thead, p.table.header { 424 | font-weight: bold; 425 | color: #527bbd; 426 | } 427 | p.table { 428 | margin-top: 0; 429 | } 430 | /* Because the table frame attribute is overriden by CSS in most browsers. */ 431 | div.tableblock > table[frame="void"] { 432 | border-style: none; 433 | } 434 | div.tableblock > table[frame="hsides"] { 435 | border-left-style: none; 436 | border-right-style: none; 437 | } 438 | div.tableblock > table[frame="vsides"] { 439 | border-top-style: none; 440 | border-bottom-style: none; 441 | } 442 | 443 | 444 | /* 445 | * html5 specific 446 | * 447 | * */ 448 | 449 | table.tableblock { 450 | margin-top: 1.0em; 451 | margin-bottom: 1.5em; 452 | } 453 | thead, p.tableblock.header { 454 | font-weight: bold; 455 | color: #527bbd; 456 | } 457 | p.tableblock { 458 | margin-top: 0; 459 | } 460 | table.tableblock { 461 | border-width: 3px; 462 | border-spacing: 0px; 463 | border-style: solid; 464 | border-color: #527bbd; 465 | border-collapse: collapse; 466 | } 467 | th.tableblock, td.tableblock { 468 | border-width: 1px; 469 | padding: 4px; 470 | border-style: solid; 471 | border-color: #527bbd; 472 | } 473 | 474 | table.tableblock.frame-topbot { 475 | border-left-style: hidden; 476 | border-right-style: hidden; 477 | } 478 | table.tableblock.frame-sides { 479 | border-top-style: hidden; 480 | border-bottom-style: hidden; 481 | } 482 | table.tableblock.frame-none { 483 | border-style: hidden; 484 | } 485 | 486 | th.tableblock.halign-left, td.tableblock.halign-left { 487 | text-align: left; 488 | } 489 | th.tableblock.halign-center, td.tableblock.halign-center { 490 | text-align: center; 491 | } 492 | th.tableblock.halign-right, td.tableblock.halign-right { 493 | text-align: right; 494 | } 495 | 496 | th.tableblock.valign-top, td.tableblock.valign-top { 497 | vertical-align: top; 498 | } 499 | th.tableblock.valign-middle, td.tableblock.valign-middle { 500 | vertical-align: middle; 501 | } 502 | th.tableblock.valign-bottom, td.tableblock.valign-bottom { 503 | vertical-align: bottom; 504 | } 505 | 506 | 507 | /* 508 | * manpage specific 509 | * 510 | * */ 511 | 512 | body.manpage h1 { 513 | padding-top: 0.5em; 514 | padding-bottom: 0.5em; 515 | border-top: 2px solid silver; 516 | border-bottom: 2px solid silver; 517 | } 518 | body.manpage h2 { 519 | border-style: none; 520 | } 521 | body.manpage div.sectionbody { 522 | margin-left: 3em; 523 | } 524 | 525 | @media print { 526 | body.manpage div#toc { display: none; } 527 | } 528 | -------------------------------------------------------------------------------- /css/docbook-xsl.css: -------------------------------------------------------------------------------- 1 | /* 2 | CSS stylesheet for XHTML produced by DocBook XSL stylesheets. 3 | */ 4 | 5 | body { 6 | font-family: Georgia,serif; 7 | } 8 | 9 | code, pre { 10 | font-family: "Courier New", Courier, monospace; 11 | } 12 | 13 | span.strong { 14 | font-weight: bold; 15 | } 16 | 17 | body blockquote { 18 | margin-top: .75em; 19 | line-height: 1.5; 20 | margin-bottom: .75em; 21 | } 22 | 23 | html body { 24 | margin: 1em 5% 1em 5%; 25 | line-height: 1.2; 26 | } 27 | 28 | body div { 29 | margin: 0; 30 | } 31 | 32 | h1, h2, h3, h4, h5, h6 33 | { 34 | color: #527bbd; 35 | font-family: Arial,Helvetica,sans-serif; 36 | } 37 | 38 | div.toc p:first-child, 39 | div.list-of-figures p:first-child, 40 | div.list-of-tables p:first-child, 41 | div.list-of-examples p:first-child, 42 | div.example p.title, 43 | div.sidebar p.title 44 | { 45 | font-weight: bold; 46 | color: #527bbd; 47 | font-family: Arial,Helvetica,sans-serif; 48 | margin-bottom: 0.2em; 49 | } 50 | 51 | body h1 { 52 | margin: .0em 0 0 -4%; 53 | line-height: 1.3; 54 | border-bottom: 2px solid silver; 55 | } 56 | 57 | body h2 { 58 | margin: 0.5em 0 0 -4%; 59 | line-height: 1.3; 60 | border-bottom: 2px solid silver; 61 | } 62 | 63 | body h3 { 64 | margin: .8em 0 0 -3%; 65 | line-height: 1.3; 66 | } 67 | 68 | body h4 { 69 | margin: .8em 0 0 -3%; 70 | line-height: 1.3; 71 | } 72 | 73 | body h5 { 74 | margin: .8em 0 0 -2%; 75 | line-height: 1.3; 76 | } 77 | 78 | body h6 { 79 | margin: .8em 0 0 -1%; 80 | line-height: 1.3; 81 | } 82 | 83 | body hr { 84 | border: none; /* Broken on IE6 */ 85 | } 86 | div.footnotes hr { 87 | border: 1px solid silver; 88 | } 89 | 90 | div.navheader th, div.navheader td, div.navfooter td { 91 | font-family: Arial,Helvetica,sans-serif; 92 | font-size: 0.9em; 93 | font-weight: bold; 94 | color: #527bbd; 95 | } 96 | div.navheader img, div.navfooter img { 97 | border-style: none; 98 | } 99 | div.navheader a, div.navfooter a { 100 | font-weight: normal; 101 | } 102 | div.navfooter hr { 103 | border: 1px solid silver; 104 | } 105 | 106 | body td { 107 | line-height: 1.2 108 | } 109 | 110 | body th { 111 | line-height: 1.2; 112 | } 113 | 114 | ol { 115 | line-height: 1.2; 116 | } 117 | 118 | ul, body dir, body menu { 119 | line-height: 1.2; 120 | } 121 | 122 | html { 123 | margin: 0; 124 | padding: 0; 125 | } 126 | 127 | body h1, body h2, body h3, body h4, body h5, body h6 { 128 | margin-left: 0 129 | } 130 | 131 | body pre { 132 | margin: 0.5em 10% 0.5em 1em; 133 | line-height: 1.0; 134 | color: navy; 135 | } 136 | 137 | tt.literal, code.literal { 138 | color: navy; 139 | } 140 | 141 | .programlisting, .screen { 142 | border: 1px solid silver; 143 | background: #f4f4f4; 144 | margin: 0.5em 10% 0.5em 0; 145 | padding: 0.5em 1em; 146 | } 147 | 148 | div.sidebar { 149 | background: #ffffee; 150 | margin: 1.0em 10% 0.5em 0; 151 | padding: 0.5em 1em; 152 | border: 1px solid silver; 153 | } 154 | div.sidebar * { padding: 0; } 155 | div.sidebar div { margin: 0; } 156 | div.sidebar p.title { 157 | margin-top: 0.5em; 158 | margin-bottom: 0.2em; 159 | } 160 | 161 | div.bibliomixed { 162 | margin: 0.5em 5% 0.5em 1em; 163 | } 164 | 165 | div.glossary dt { 166 | font-weight: bold; 167 | } 168 | div.glossary dd p { 169 | margin-top: 0.2em; 170 | } 171 | 172 | dl { 173 | margin: .8em 0; 174 | line-height: 1.2; 175 | } 176 | 177 | dt { 178 | margin-top: 0.5em; 179 | } 180 | 181 | dt span.term { 182 | font-style: normal; 183 | color: navy; 184 | } 185 | 186 | div.variablelist dd p { 187 | margin-top: 0; 188 | } 189 | 190 | div.itemizedlist li, div.orderedlist li { 191 | margin-left: -0.8em; 192 | margin-top: 0.5em; 193 | } 194 | 195 | ul, ol { 196 | list-style-position: outside; 197 | } 198 | 199 | div.sidebar ul, div.sidebar ol { 200 | margin-left: 2.8em; 201 | } 202 | 203 | div.itemizedlist p.title, 204 | div.orderedlist p.title, 205 | div.variablelist p.title 206 | { 207 | margin-bottom: -0.8em; 208 | } 209 | 210 | div.revhistory table { 211 | border-collapse: collapse; 212 | border: none; 213 | } 214 | div.revhistory th { 215 | border: none; 216 | color: #527bbd; 217 | font-family: Arial,Helvetica,sans-serif; 218 | } 219 | div.revhistory td { 220 | border: 1px solid silver; 221 | } 222 | 223 | /* Keep TOC and index lines close together. */ 224 | div.toc dl, div.toc dt, 225 | div.list-of-figures dl, div.list-of-figures dt, 226 | div.list-of-tables dl, div.list-of-tables dt, 227 | div.indexdiv dl, div.indexdiv dt 228 | { 229 | line-height: normal; 230 | margin-top: 0; 231 | margin-bottom: 0; 232 | } 233 | 234 | /* 235 | Table styling does not work because of overriding attributes in 236 | generated HTML. 237 | */ 238 | div.table table, 239 | div.informaltable table 240 | { 241 | margin-left: 0; 242 | margin-right: 5%; 243 | margin-bottom: 0.8em; 244 | } 245 | div.informaltable table 246 | { 247 | margin-top: 0.4em 248 | } 249 | div.table thead, 250 | div.table tfoot, 251 | div.table tbody, 252 | div.informaltable thead, 253 | div.informaltable tfoot, 254 | div.informaltable tbody 255 | { 256 | /* No effect in IE6. */ 257 | border-top: 3px solid #527bbd; 258 | border-bottom: 3px solid #527bbd; 259 | } 260 | div.table thead, div.table tfoot, 261 | div.informaltable thead, div.informaltable tfoot 262 | { 263 | font-weight: bold; 264 | } 265 | 266 | div.mediaobject img { 267 | margin-bottom: 0.8em; 268 | } 269 | div.figure p.title, 270 | div.table p.title 271 | { 272 | margin-top: 1em; 273 | margin-bottom: 0.4em; 274 | } 275 | 276 | div.calloutlist p 277 | { 278 | margin-top: 0em; 279 | margin-bottom: 0.4em; 280 | } 281 | 282 | a img { 283 | border-style: none; 284 | } 285 | 286 | @media print { 287 | div.navheader, div.navfooter { display: none; } 288 | } 289 | 290 | span.aqua { color: aqua; } 291 | span.black { color: black; } 292 | span.blue { color: blue; } 293 | span.fuchsia { color: fuchsia; } 294 | span.gray { color: gray; } 295 | span.green { color: green; } 296 | span.lime { color: lime; } 297 | span.maroon { color: maroon; } 298 | span.navy { color: navy; } 299 | span.olive { color: olive; } 300 | span.purple { color: purple; } 301 | span.red { color: red; } 302 | span.silver { color: silver; } 303 | span.teal { color: teal; } 304 | span.white { color: white; } 305 | span.yellow { color: yellow; } 306 | 307 | span.aqua-background { background: aqua; } 308 | span.black-background { background: black; } 309 | span.blue-background { background: blue; } 310 | span.fuchsia-background { background: fuchsia; } 311 | span.gray-background { background: gray; } 312 | span.green-background { background: green; } 313 | span.lime-background { background: lime; } 314 | span.maroon-background { background: maroon; } 315 | span.navy-background { background: navy; } 316 | span.olive-background { background: olive; } 317 | span.purple-background { background: purple; } 318 | span.red-background { background: red; } 319 | span.silver-background { background: silver; } 320 | span.teal-background { background: teal; } 321 | span.white-background { background: white; } 322 | span.yellow-background { background: yellow; } 323 | 324 | span.big { font-size: 2em; } 325 | span.small { font-size: 0.6em; } 326 | 327 | span.underline { text-decoration: underline; } 328 | span.overline { text-decoration: overline; } 329 | span.line-through { text-decoration: line-through; } 330 | -------------------------------------------------------------------------------- /css/pygments.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffffcc } 2 | .highlight { background: #f8f8f8; } 3 | .highlight .c { color: #408080; font-style: italic } /* Comment */ 4 | .highlight .err { border: 1px solid #FF0000 } /* Error */ 5 | .highlight .k { color: #008000; font-weight: bold } /* Keyword */ 6 | .highlight .o { color: #666666 } /* Operator */ 7 | .highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ 8 | .highlight .cp { color: #BC7A00 } /* Comment.Preproc */ 9 | .highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ 10 | .highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ 11 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #FF0000 } /* Generic.Error */ 14 | .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 15 | .highlight .gi { color: #00A000 } /* Generic.Inserted */ 16 | .highlight .go { color: #808080 } /* Generic.Output */ 17 | .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ 18 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 19 | .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 20 | .highlight .gt { color: #0040D0 } /* Generic.Traceback */ 21 | .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ 22 | .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ 23 | .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ 24 | .highlight .kp { color: #008000 } /* Keyword.Pseudo */ 25 | .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #B00040 } /* Keyword.Type */ 27 | .highlight .m { color: #666666 } /* Literal.Number */ 28 | .highlight .s { color: #BA2121 } /* Literal.String */ 29 | .highlight .na { color: #7D9029 } /* Name.Attribute */ 30 | .highlight .nb { color: #008000 } /* Name.Builtin */ 31 | .highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #880000 } /* Name.Constant */ 33 | .highlight .nd { color: #AA22FF } /* Name.Decorator */ 34 | .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ 35 | .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ 36 | .highlight .nf { color: #0000FF } /* Name.Function */ 37 | .highlight .nl { color: #A0A000 } /* Name.Label */ 38 | .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ 39 | .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ 40 | .highlight .nv { color: #19177C } /* Name.Variable */ 41 | .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ 42 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 43 | .highlight .mf { color: #666666 } /* Literal.Number.Float */ 44 | .highlight .mh { color: #666666 } /* Literal.Number.Hex */ 45 | .highlight .mi { color: #666666 } /* Literal.Number.Integer */ 46 | .highlight .mo { color: #666666 } /* Literal.Number.Oct */ 47 | .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ 48 | .highlight .sc { color: #BA2121 } /* Literal.String.Char */ 49 | .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ 50 | .highlight .s2 { color: #BA2121 } /* Literal.String.Double */ 51 | .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ 52 | .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ 53 | .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ 54 | .highlight .sx { color: #008000 } /* Literal.String.Other */ 55 | .highlight .sr { color: #BB6688 } /* Literal.String.Regex */ 56 | .highlight .s1 { color: #BA2121 } /* Literal.String.Single */ 57 | .highlight .ss { color: #19177C } /* Literal.String.Symbol */ 58 | .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ 59 | .highlight .vc { color: #19177C } /* Name.Variable.Class */ 60 | .highlight .vg { color: #19177C } /* Name.Variable.Global */ 61 | .highlight .vi { color: #19177C } /* Name.Variable.Instance */ 62 | .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ 63 | -------------------------------------------------------------------------------- /css/slidy.css: -------------------------------------------------------------------------------- 1 | /* slidy.css 2 | 3 | Copyright (c) 2005-2010 W3C (MIT, ERCIM, Keio), All Rights Reserved. 4 | W3C liability, trademark, document use and software licensing 5 | rules apply, see: 6 | 7 | http://www.w3.org/Consortium/Legal/copyright-documents 8 | http://www.w3.org/Consortium/Legal/copyright-software 9 | */ 10 | 11 | /* 12 | SJR: 2010-09-29: Modified for AsciiDoc slidy backend. 13 | Mostly just commented out stuff that is handled by AsciiDoc's CSS files. 14 | */ 15 | 16 | body 17 | { 18 | margin: 0 0 0 0; 19 | padding: 0 0 0 0; 20 | width: 100%; 21 | height: 100%; 22 | color: black; 23 | background-color: white; 24 | /* 25 | font-family: "Gill Sans MT", "Gill Sans", GillSans, sans-serif; 26 | */ 27 | font-size: 14pt; 28 | } 29 | 30 | div.toolbar { 31 | position: fixed; z-index: 200; 32 | top: auto; bottom: 0; left: 0; right: 0; 33 | height: 1.2em; text-align: right; 34 | padding-left: 1em; 35 | padding-right: 1em; 36 | font-size: 60%; 37 | color: red; 38 | background-color: rgb(240,240,240); 39 | border-top: solid 1px rgb(180,180,180); 40 | } 41 | 42 | div.toolbar span.copyright { 43 | color: black; 44 | margin-left: 0.5em; 45 | } 46 | 47 | div.initial_prompt { 48 | position: absolute; 49 | z-index: 1000; 50 | bottom: 1.2em; 51 | width: 90%; 52 | background-color: rgb(200,200,200); 53 | opacity: 0.35; 54 | background-color: rgb(200,200,200, 0.35); 55 | cursor: pointer; 56 | } 57 | 58 | div.initial_prompt p.help { 59 | text-align: center; 60 | } 61 | 62 | div.initial_prompt p.close { 63 | text-align: right; 64 | font-style: italic; 65 | } 66 | 67 | div.slidy_toc { 68 | position: absolute; 69 | z-index: 300; 70 | width: 60%; 71 | max-width: 30em; 72 | height: 30em; 73 | overflow: auto; 74 | top: auto; 75 | right: auto; 76 | left: 4em; 77 | bottom: 4em; 78 | padding: 1em; 79 | background: rgb(240,240,240); 80 | border-style: solid; 81 | border-width: 2px; 82 | font-size: 60%; 83 | } 84 | 85 | div.slidy_toc .toc_heading { 86 | text-align: center; 87 | width: 100%; 88 | margin: 0; 89 | margin-bottom: 1em; 90 | border-bottom-style: solid; 91 | border-bottom-color: rgb(180,180,180); 92 | border-bottom-width: 1px; 93 | } 94 | 95 | div.slide { 96 | z-index: 20; 97 | margin: 0 0 0 0; 98 | padding-top: 0; 99 | padding-bottom: 0; 100 | padding-left: 20px; 101 | padding-right: 20px; 102 | border-width: 0; 103 | clear: both; 104 | top: 0; 105 | bottom: 0; 106 | left: 0; 107 | right: 0; 108 | line-height: 120%; 109 | background-color: transparent; 110 | } 111 | 112 | div.background { 113 | display: none; 114 | } 115 | 116 | div.handout { 117 | margin-left: 20px; 118 | margin-right: 20px; 119 | } 120 | 121 | div.slide.titlepage { 122 | text-align: center; 123 | } 124 | 125 | div.slide.titlepage.h1 { 126 | padding-top: 10%; 127 | } 128 | 129 | div.slide h1 { 130 | padding-left: 0; 131 | padding-right: 20pt; 132 | padding-top: 4pt; 133 | padding-bottom: 4pt; 134 | margin-top: 0; 135 | margin-left: 0; 136 | margin-right: 60pt; 137 | margin-bottom: 0.5em; 138 | display: block; 139 | font-size: 160%; 140 | line-height: 1.2em; 141 | background: transparent; 142 | } 143 | 144 | div.toc { 145 | position: absolute; 146 | top: auto; 147 | bottom: 4em; 148 | left: 4em; 149 | right: auto; 150 | width: 60%; 151 | max-width: 30em; 152 | height: 30em; 153 | border: solid thin black; 154 | padding: 1em; 155 | background: rgb(240,240,240); 156 | color: black; 157 | z-index: 300; 158 | overflow: auto; 159 | display: block; 160 | visibility: visible; 161 | } 162 | 163 | div.toc-heading { 164 | width: 100%; 165 | border-bottom: solid 1px rgb(180,180,180); 166 | margin-bottom: 1em; 167 | text-align: center; 168 | } 169 | 170 | /* 171 | pre { 172 | font-size: 80%; 173 | font-weight: bold; 174 | line-height: 120%; 175 | padding-top: 0.2em; 176 | padding-bottom: 0.2em; 177 | padding-left: 1em; 178 | padding-right: 1em; 179 | border-style: solid; 180 | border-left-width: 1em; 181 | border-top-width: thin; 182 | border-right-width: thin; 183 | border-bottom-width: thin; 184 | border-color: #95ABD0; 185 | color: #00428C; 186 | background-color: #E4E5E7; 187 | } 188 | */ 189 | 190 | /* 191 | li pre { margin-left: 0; } 192 | 193 | blockquote { font-style: italic } 194 | 195 | img { background-color: transparent } 196 | 197 | p.copyright { font-size: smaller } 198 | */ 199 | 200 | .center { text-align: center } 201 | .footnote { font-size: smaller; margin-left: 2em; } 202 | 203 | /* 204 | a img { border-width: 0; border-style: none } 205 | */ 206 | 207 | a:visited { color: navy } 208 | a:link { color: navy } 209 | a:hover { color: red; text-decoration: underline } 210 | a:active { color: red; text-decoration: underline } 211 | 212 | a {text-decoration: none} 213 | .navbar a:link {color: white} 214 | .navbar a:visited {color: yellow} 215 | .navbar a:active {color: red} 216 | .navbar a:hover {color: red} 217 | 218 | /* 219 | ul { list-style-type: square; } 220 | ul ul { list-style-type: disc; } 221 | ul ul ul { list-style-type: circle; } 222 | ul ul ul ul { list-style-type: disc; } 223 | li { margin-left: 0.5em; margin-top: 0.5em; } 224 | li li { font-size: 85%; font-style: italic } 225 | li li li { font-size: 85%; font-style: normal } 226 | */ 227 | 228 | div dt 229 | { 230 | margin-left: 0; 231 | margin-top: 1em; 232 | margin-bottom: 0.5em; 233 | font-weight: bold; 234 | } 235 | div dd 236 | { 237 | margin-left: 2em; 238 | margin-bottom: 0.5em; 239 | } 240 | 241 | 242 | /* 243 | p,pre,ul,ol,blockquote,h2,h3,h4,h5,h6,dl,table { 244 | margin-left: 1em; 245 | margin-right: 1em; 246 | } 247 | */ 248 | 249 | p.subhead { font-weight: bold; margin-top: 2em; } 250 | 251 | .smaller { font-size: smaller } 252 | .bigger { font-size: 130% } 253 | 254 | /* 255 | td,th { padding: 0.2em } 256 | */ 257 | 258 | ul { 259 | margin: 0.5em 1.5em 0.5em 1.5em; 260 | padding: 0; 261 | } 262 | 263 | ol { 264 | margin: 0.5em 1.5em 0.5em 1.5em; 265 | padding: 0; 266 | } 267 | 268 | ul { list-style-type: square; } 269 | ul ul { list-style-type: disc; } 270 | ul ul ul { list-style-type: circle; } 271 | ul ul ul ul { list-style-type: disc; } 272 | 273 | /* 274 | ul li { 275 | list-style: square; 276 | margin: 0.1em 0em 0.6em 0; 277 | padding: 0 0 0 0; 278 | line-height: 140%; 279 | } 280 | 281 | ol li { 282 | margin: 0.1em 0em 0.6em 1.5em; 283 | padding: 0 0 0 0px; 284 | line-height: 140%; 285 | list-style-type: decimal; 286 | } 287 | 288 | li ul li { 289 | font-size: 85%; 290 | font-style: italic; 291 | list-style-type: disc; 292 | background: transparent; 293 | padding: 0 0 0 0; 294 | } 295 | li li ul li { 296 | font-size: 85%; 297 | font-style: normal; 298 | list-style-type: circle; 299 | background: transparent; 300 | padding: 0 0 0 0; 301 | } 302 | li li li ul li { 303 | list-style-type: disc; 304 | background: transparent; 305 | padding: 0 0 0 0; 306 | } 307 | 308 | li ol li { 309 | list-style-type: decimal; 310 | } 311 | 312 | 313 | li li ol li { 314 | list-style-type: decimal; 315 | } 316 | */ 317 | 318 | /* 319 | setting class="outline" on ol or ul makes it behave as an 320 | ouline list where blocklevel content in li elements is 321 | hidden by default and can be expanded or collapsed with 322 | mouse click. Set class="expand" on li to override default 323 | */ 324 | 325 | ol.outline li:hover { cursor: pointer } 326 | ol.outline li.nofold:hover { cursor: default } 327 | 328 | ul.outline li:hover { cursor: pointer } 329 | ul.outline li.nofold:hover { cursor: default } 330 | 331 | ol.outline { list-style:decimal; } 332 | ol.outline ol { list-style-type:lower-alpha } 333 | 334 | ol.outline li.nofold { 335 | padding: 0 0 0 20px; 336 | background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em; 337 | } 338 | ol.outline li.unfolded { 339 | padding: 0 0 0 20px; 340 | background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em; 341 | } 342 | ol.outline li.folded { 343 | padding: 0 0 0 20px; 344 | background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em; 345 | } 346 | ol.outline li.unfolded:hover { 347 | padding: 0 0 0 20px; 348 | background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em; 349 | } 350 | ol.outline li.folded:hover { 351 | padding: 0 0 0 20px; 352 | background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em; 353 | } 354 | 355 | ul.outline li.nofold { 356 | padding: 0 0 0 20px; 357 | background: transparent url(../graphics/nofold-dim.gif) no-repeat 0px 0.5em; 358 | } 359 | ul.outline li.unfolded { 360 | padding: 0 0 0 20px; 361 | background: transparent url(../graphics/fold-dim.gif) no-repeat 0px 0.5em; 362 | } 363 | ul.outline li.folded { 364 | padding: 0 0 0 20px; 365 | background: transparent url(../graphics/unfold-dim.gif) no-repeat 0px 0.5em; 366 | } 367 | ul.outline li.unfolded:hover { 368 | padding: 0 0 0 20px; 369 | background: transparent url(../graphics/fold.gif) no-repeat 0px 0.5em; 370 | } 371 | ul.outline li.folded:hover { 372 | padding: 0 0 0 20px; 373 | background: transparent url(../graphics/unfold.gif) no-repeat 0px 0.5em; 374 | } 375 | 376 | /* for slides with class "title" in table of contents */ 377 | a.titleslide { font-weight: bold; font-style: italic } 378 | 379 | /* 380 | hide images for work around for save as bug 381 | where browsers fail to save images used by CSS 382 | */ 383 | img.hidden { display: none; visibility: hidden } 384 | div.initial_prompt { display: none; visibility: hidden } 385 | 386 | div.slide { 387 | visibility: visible; 388 | position: inherit; 389 | } 390 | div.handout { 391 | border-top-style: solid; 392 | border-top-width: thin; 393 | border-top-color: black; 394 | } 395 | 396 | @media screen { 397 | .hidden { display: none; visibility: visible } 398 | 399 | div.slide.hidden { display: block; visibility: visible } 400 | div.handout.hidden { display: block; visibility: visible } 401 | div.background { display: none; visibility: hidden } 402 | body.single_slide div.initial_prompt { display: block; visibility: visible } 403 | body.single_slide div.background { display: block; visibility: visible } 404 | body.single_slide div.background.hidden { display: none; visibility: hidden } 405 | body.single_slide .invisible { visibility: hidden } 406 | body.single_slide .hidden { display: none; visibility: hidden } 407 | body.single_slide div.slide { position: absolute } 408 | body.single_slide div.handout { display: none; visibility: hidden } 409 | } 410 | 411 | @media print { 412 | .hidden { display: block; visibility: visible } 413 | 414 | /* 415 | div.slide pre { font-size: 60%; padding-left: 0.5em; } 416 | */ 417 | div.toolbar { display: none; visibility: hidden; } 418 | div.slidy_toc { display: none; visibility: hidden; } 419 | div.background { display: none; visibility: hidden; } 420 | div.slide { page-break-before: always } 421 | /* :first-child isn't reliable for print media */ 422 | div.slide.first-slide { page-break-before: avoid } 423 | } 424 | 425 | 426 | /* SJR: AsciiDoc slidy backend tweaks */ 427 | 428 | ol, ul { 429 | margin: 0.8em 1.5em 0.8em 1.8em; 430 | } 431 | li > ul, li > ol { 432 | margin-top: 0.5em; 433 | } 434 | 435 | .outline > li.folded, 436 | .outline > li.unfolded { 437 | color: #527bbd; 438 | } 439 | ul > li{ color: #aaa; } 440 | ul > li > *, ol > li > * { color: black; } 441 | 442 | li { 443 | margin-top: 0.5em; 444 | margin-bottom: 0.5em; 445 | } 446 | -------------------------------------------------------------------------------- /css/toc2.css: -------------------------------------------------------------------------------- 1 | @media screen { 2 | body { 3 | max-width: 50em; /* approximately 80 characters wide */ 4 | margin-left: 16em; 5 | } 6 | 7 | #toc { 8 | position: fixed; 9 | top: 0; 10 | left: 0; 11 | bottom: 0; 12 | width: 13em; 13 | padding: 0.5em; 14 | padding-bottom: 1.5em; 15 | margin: 0; 16 | overflow: auto; 17 | border-right: 3px solid #f8f8f8; 18 | background-color: white; 19 | } 20 | 21 | #toc .toclevel1 { 22 | margin-top: 0.5em; 23 | } 24 | 25 | #toc .toclevel2 { 26 | margin-top: 0.25em; 27 | display: list-item; 28 | color: #aaaaaa; 29 | } 30 | 31 | #toctitle { 32 | margin-top: 0.5em; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /css/uber-custom.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uber-hypermedia/specification/69a7c809a828e2a5c08ca16c75338400cb74f290/css/uber-custom.css -------------------------------------------------------------------------------- /css/xhtml11-quirks.css: -------------------------------------------------------------------------------- 1 | /* Workarounds for IE6's broken and incomplete CSS2. */ 2 | 3 | div.sidebar-content { 4 | background: #ffffee; 5 | border: 1px solid silver; 6 | padding: 0.5em; 7 | } 8 | div.sidebar-title, div.image-title { 9 | color: #527bbd; 10 | font-family: Arial,Helvetica,sans-serif; 11 | font-weight: bold; 12 | margin-top: 0.0em; 13 | margin-bottom: 0.5em; 14 | } 15 | 16 | div.listingblock div.content { 17 | border: 1px solid silver; 18 | background: #f4f4f4; 19 | padding: 0.5em; 20 | } 21 | 22 | div.quoteblock-attribution { 23 | padding-top: 0.5em; 24 | text-align: right; 25 | } 26 | 27 | pre.verseblock-content { 28 | font-family: inherit; 29 | } 30 | div.verseblock-attribution { 31 | padding-top: 0.75em; 32 | text-align: left; 33 | } 34 | 35 | div.exampleblock-content { 36 | border-left: 3px solid #dddddd; 37 | padding-left: 0.5em; 38 | } 39 | 40 | div.imageblock.latex div.image-title { margin-top: 0.5em; } 41 | 42 | /* IE6 sets dynamically generated links as visited. */ 43 | div#toc a:visited { color: blue; } 44 | -------------------------------------------------------------------------------- /includes/error-sample.js: -------------------------------------------------------------------------------- 1 | { 2 | "uber" : 3 | { 4 | "version" : "1.0", 5 | "error" : 6 | { 7 | "data" : 8 | [ 9 | { 10 | "name" : "type", 11 | "rel" : ["https://example.com/rels/http-problem#type"], 12 | "value" : "out-of-credit" 13 | }, 14 | { 15 | "name" : "title", 16 | "rel" : ["https://example.com/rels/http-problem#title"], 17 | "value" : "You do not have enough credit" 18 | }, 19 | { 20 | "name" : "detail", 21 | "rel" : ["https://example.com/rels/http-problem#detail"], 22 | "value" : "Your balance is 30, but the cost is 50." 23 | }, 24 | { 25 | "name" : "balance", 26 | "rel" : ["https://example.com/rels/http-problem#balance"], 27 | "value" : "30" 28 | } 29 | ] 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /includes/error-sample.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | out-of-credit 6 | 7 | 9 | You do not have enough credit 10 | 11 | 13 | Your current balance is 30, but the cost is 50 14 | 15 | 17 | 30 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /includes/full-example.js: -------------------------------------------------------------------------------- 1 | { 2 | "uber" : 3 | { 4 | "version" : "1.0", 5 | "data" : 6 | [ 7 | {"rel" : ["self"], "url" : "http://example.org/"}, 8 | {"rel" : ["profile"], "url" : "http://example.org/profiles/people-and-places"}, 9 | { 10 | "id" : "people", 11 | "rel" : ["collection","http://example.org/rels/people"], 12 | "url" : "http://example.org/people/", 13 | "data" : 14 | [ 15 | { 16 | "name" : "create", 17 | "rel" : ["http://example.org/rels/create"], 18 | "url" : "http://example.org/people/", 19 | "model" : "g={givenName}&f={familyName}&e={email}", 20 | "action" : "append" 21 | }, 22 | { 23 | "name" : "search", 24 | "rel" : ["search","collection"], 25 | "url" : "http://example.org/people/search{?givenName,familyName,email}", 26 | "templated" : "true" 27 | }, 28 | { 29 | "name" : "person", 30 | "rel" : ["item","http://example.org/rels/person"], 31 | "url" : "http://example.org/people/1", 32 | "data" : 33 | [ 34 | {"name" : "givenName", "value" : "Mike", "label" : "First Name"}, 35 | {"name" : "familyName", "value" : "Amundsen", "label" : "Last Name"}, 36 | {"name" : "email", "value" : "mike@example.org", "label" : "E-mail"}, 37 | {"name" : "avatarUrl", "transclude" : "true", 38 | "url" : "http://example.org/avatars/1", 39 | "value" : "User Photo", 40 | "accepting" : ["image/*"] 41 | } 42 | ] 43 | }, 44 | { 45 | "name" : "person", 46 | "rel" : ["item","http://example.org/rels/person"], 47 | "url" : "http://example.org/people/2", 48 | "data" : 49 | [ 50 | {"name" : "givenName", "value" : "Mildred", "label" : "First Name"}, 51 | {"name" : "familyName", "value" : "Amundsen", "label" : "Last Name"}, 52 | {"name" : "email", "value" : "mildred@example.org", "label" : "E-mail"}, 53 | {"name" : "avatarUrl", "transclude" : "true", 54 | "url" : "http://example.org/avatars/2", 55 | "value" : "User Photo", 56 | "accepting" : ["image/*"] 57 | } 58 | ] 59 | } 60 | ] 61 | }, 62 | 63 | { 64 | "id" : "places", 65 | "rel" : ["collection","http://example.org/rels/places"], 66 | "url" : "http://example.org/places/", 67 | "data" : 68 | [ 69 | { 70 | "name" : "search", 71 | "rel" : ["search","collection"], 72 | "url" : "http://example.org/places/search{?addressRegion,addressLocality,postalCode}", 73 | "templated" : "true" 74 | }, 75 | { 76 | "name" : "place", 77 | "rel" : ["item","http://example.org/rels/place"], 78 | "url" : "http://example.org/places/a", 79 | "data" : 80 | [ 81 | { 82 | "name" : "name", 83 | "value" : "Home" 84 | }, 85 | { 86 | "name" : "address", 87 | "data" : 88 | [ 89 | {"name" : "streetAddress", "value" : "123 Main Street", "label" : "Street Address"}, 90 | {"name" : "addressLocality", "value" : "Byteville", "label" : "City"}, 91 | {"name" : "addressRegion", "value" : "MD", "label" : "State"}, 92 | {"name" : "postalCode", "value" : "12345", "label" : "ZIP"} 93 | ] 94 | } 95 | ] 96 | }, 97 | { 98 | "name" : "place", 99 | "rel" : ["item","http://example.org/rels/place"], 100 | "url" : "http://example.org/places/b", 101 | "data" : 102 | [ 103 | { 104 | "name" : "name", 105 | "value" : "Work" 106 | }, 107 | { 108 | "name" : "address", 109 | "data" : 110 | [ 111 | {"name" : "streetAddress", "value" : "1456 Grand Ave.", "label" : "Street Address"}, 112 | {"name" : "addressLocality", "value" : "Byteville", "label" : "City"}, 113 | {"name" : "addressRegion", "value" : "MD", "label" : "State"}, 114 | {"name" : "postalCode", "value" : "12345", "label" : "ZIP"} 115 | ] 116 | } 117 | ] 118 | } 119 | ] 120 | } 121 | ] 122 | } 123 | } 124 | 125 | -------------------------------------------------------------------------------- /includes/full-example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 15 | 16 | 17 | Mildred 18 | Amundsen 19 | mildred@example.org 20 | User Photo 22 | 23 | 24 | Mildred 25 | Amundsen 26 | mildred@example.org 27 | User Photo 29 | 30 | 31 | 32 | 33 | 37 | 38 | 39 | Home 40 | 41 | 123 Main 42 | Byteville 43 | MD 44 | 12345 45 | 46 | 47 | 48 | Work 49 | 50 | 456 Grand Ave. 51 | Byteville 52 | MD 53 | 12345 54 | 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /includes/message-model.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /includes/search-sample.js: -------------------------------------------------------------------------------- 1 | { 2 | "uber" : 3 | { 4 | "version" : "1.0", 5 | "data" : 6 | [ 7 | { 8 | "rel" : ["self"], 9 | "url" : "http://example.org/" 10 | }, 11 | { 12 | "name" : "list", 13 | "label" : "ToDo List", 14 | "rel" : ["collection"], 15 | "url" : "http://example.org/list/" 16 | }, 17 | { 18 | "name" : "search", 19 | "label" : "Search", 20 | "rel" : ["search","collection"], 21 | "url" : "http://example.org/search{?title}", 22 | "templated" : "true" 23 | }, 24 | { 25 | "name" : "todo", 26 | "rel" : ["item","http://example.org/rels/todo"], 27 | "url" : "http://example.org/list/1", 28 | "data" : 29 | [ 30 | {"name" : "title", "label" : "Title", "value" : "Clean house"}, 31 | {"name" : "dueDate", "label" : "Date Due", "value" : "2014-05-01"} 32 | ] 33 | }, 34 | { 35 | "name" : "todo", 36 | "rel" : ["item","http://example.org/rels/todo"], 37 | "url" : "http://example.org/list/2", 38 | "data" : 39 | [ 40 | {"name" : "title", "label" : "Title", "value" : "Paint the fence"}, 41 | {"name" : "dueDate", "label" : "Date Due", "value" : "2014-06-01"} 42 | ] 43 | } 44 | ] 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /includes/search-sample.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Clean House 7 | 2014-05-01 8 | 9 | 10 | Paint the fence 11 | 2014-06-01 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /includes/uber-query-string.txt: -------------------------------------------------------------------------------- 1 | 2 |