-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Publish pages from devlooped/avatar@d806768ad
- Loading branch information
0 parents
commit d898a9d
Showing
57 changed files
with
1,647 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,271 @@ | ||
.highlight table td { padding: 5px; } | ||
|
||
.highlight table pre { margin: 0; } | ||
|
||
.highlight .cm { color: #777772; font-style: italic; } | ||
|
||
.highlight .cp { color: #797676; font-weight: bold; } | ||
|
||
.highlight .c1 { color: #777772; font-style: italic; } | ||
|
||
.highlight .cs { color: #797676; font-weight: bold; font-style: italic; } | ||
|
||
.highlight .c, .highlight .cd { color: #777772; font-style: italic; } | ||
|
||
.highlight .err { color: #a61717; background-color: #e3d2d2; } | ||
|
||
.highlight .gd { color: #000000; background-color: #ffdddd; } | ||
|
||
.highlight .ge { color: #000000; font-style: italic; } | ||
|
||
.highlight .gr { color: #aa0000; } | ||
|
||
.highlight .gh { color: #797676; } | ||
|
||
.highlight .gi { color: #000000; background-color: #ddffdd; } | ||
|
||
.highlight .go { color: #888888; } | ||
|
||
.highlight .gp { color: #555555; } | ||
|
||
.highlight .gs { font-weight: bold; } | ||
|
||
.highlight .gu { color: #aaaaaa; } | ||
|
||
.highlight .gt { color: #aa0000; } | ||
|
||
.highlight .kc { color: #000000; font-weight: bold; } | ||
|
||
.highlight .kd { color: #000000; font-weight: bold; } | ||
|
||
.highlight .kn { color: #000000; font-weight: bold; } | ||
|
||
.highlight .kp { color: #000000; font-weight: bold; } | ||
|
||
.highlight .kr { color: #000000; font-weight: bold; } | ||
|
||
.highlight .kt { color: #445588; font-weight: bold; } | ||
|
||
.highlight .k, .highlight .kv { color: #000000; font-weight: bold; } | ||
|
||
.highlight .mf { color: #009999; } | ||
|
||
.highlight .mh { color: #009999; } | ||
|
||
.highlight .il { color: #009999; } | ||
|
||
.highlight .mi { color: #009999; } | ||
|
||
.highlight .mo { color: #009999; } | ||
|
||
.highlight .m, .highlight .mb, .highlight .mx { color: #009999; } | ||
|
||
.highlight .sb { color: #d14; } | ||
|
||
.highlight .sc { color: #d14; } | ||
|
||
.highlight .sd { color: #d14; } | ||
|
||
.highlight .s2 { color: #d14; } | ||
|
||
.highlight .se { color: #d14; } | ||
|
||
.highlight .sh { color: #d14; } | ||
|
||
.highlight .si { color: #d14; } | ||
|
||
.highlight .sx { color: #d14; } | ||
|
||
.highlight .sr { color: #009926; } | ||
|
||
.highlight .s1 { color: #d14; } | ||
|
||
.highlight .ss { color: #990073; } | ||
|
||
.highlight .s { color: #d14; } | ||
|
||
.highlight .na { color: #008080; } | ||
|
||
.highlight .bp { color: #797676; } | ||
|
||
.highlight .nb { color: #0086B3; } | ||
|
||
.highlight .nc { color: #445588; font-weight: bold; } | ||
|
||
.highlight .no { color: #008080; } | ||
|
||
.highlight .nd { color: #3c5d5d; font-weight: bold; } | ||
|
||
.highlight .ni { color: #800080; } | ||
|
||
.highlight .ne { color: #990000; font-weight: bold; } | ||
|
||
.highlight .nf { color: #990000; font-weight: bold; } | ||
|
||
.highlight .nl { color: #990000; font-weight: bold; } | ||
|
||
.highlight .nn { color: #555555; } | ||
|
||
.highlight .nt { color: #000080; } | ||
|
||
.highlight .vc { color: #008080; } | ||
|
||
.highlight .vg { color: #008080; } | ||
|
||
.highlight .vi { color: #008080; } | ||
|
||
.highlight .nv { color: #008080; } | ||
|
||
.highlight .ow { color: #000000; font-weight: bold; } | ||
|
||
.highlight .o { color: #000000; font-weight: bold; } | ||
|
||
.highlight .w { color: #bbbbbb; } | ||
|
||
.highlight { background-color: #f8f8f8; } | ||
|
||
/******************************************************************************* | ||
MeyerWeb Reset | ||
*******************************************************************************/ | ||
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font: inherit; vertical-align: baseline; } | ||
|
||
/* HTML5 display-role reset for older browsers */ | ||
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } | ||
|
||
ol, ul { list-style: none; } | ||
|
||
table { border-collapse: collapse; border-spacing: 0; } | ||
|
||
/******************************************************************************* | ||
Theme Styles | ||
*******************************************************************************/ | ||
body { box-sizing: border-box; color: #373737; background: #212121; font-size: 16px; font-family: 'Myriad Pro', Calibri, Helvetica, Arial, sans-serif; line-height: 1.5; -webkit-font-smoothing: antialiased; } | ||
|
||
h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-weight: 700; color: #222222; font-family: 'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif; letter-spacing: -1px; } | ||
|
||
h1 { font-size: 36px; font-weight: 700; } | ||
|
||
h2 { padding-bottom: 10px; font-size: 32px; background: url("../images/bg_hr.png") repeat-x bottom; } | ||
|
||
h3 { font-size: 24px; } | ||
|
||
h4 { font-size: 21px; } | ||
|
||
h5 { font-size: 18px; } | ||
|
||
h6 { font-size: 16px; } | ||
|
||
p { margin: 10px 0 15px 0; } | ||
|
||
footer p { color: #f2f2f2; } | ||
|
||
a { text-decoration: none; color: #0F79D0; text-shadow: none; transition: color 0.5s ease; transition: text-shadow 0.5s ease; -webkit-transition: color 0.5s ease; -webkit-transition: text-shadow 0.5s ease; -moz-transition: color 0.5s ease; -moz-transition: text-shadow 0.5s ease; -o-transition: color 0.5s ease; -o-transition: text-shadow 0.5s ease; -ms-transition: color 0.5s ease; -ms-transition: text-shadow 0.5s ease; } | ||
|
||
a:hover, a:focus { text-decoration: underline; } | ||
|
||
footer a { color: #F2F2F2; text-decoration: underline; } | ||
|
||
em, cite { font-style: italic; } | ||
|
||
strong { font-weight: bold; } | ||
|
||
img { position: relative; margin: 0 auto; max-width: 739px; padding: 5px; margin: 10px 0 10px 0; border: 1px solid #ebebeb; box-shadow: 0 0 5px #ebebeb; -webkit-box-shadow: 0 0 5px #ebebeb; -moz-box-shadow: 0 0 5px #ebebeb; -o-box-shadow: 0 0 5px #ebebeb; -ms-box-shadow: 0 0 5px #ebebeb; } | ||
|
||
p img { display: inline; margin: 0; padding: 0; vertical-align: middle; text-align: center; border: none; } | ||
|
||
pre, code { color: #222; background-color: #fff; font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace; font-size: 14px; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; } | ||
|
||
pre { padding: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); overflow: auto; } | ||
|
||
code { padding: 3px; margin: 0 3px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } | ||
|
||
pre code { display: block; box-shadow: none; } | ||
|
||
blockquote { color: #666; margin-bottom: 20px; padding: 0 0 0 20px; border-left: 3px solid #bbb; } | ||
|
||
ul, ol, dl { margin-bottom: 15px; } | ||
|
||
ul { list-style-position: inside; list-style: disc; padding-left: 20px; } | ||
|
||
ol { list-style-position: inside; list-style: decimal; padding-left: 20px; } | ||
|
||
dl dt { font-weight: bold; } | ||
|
||
dl dd { padding-left: 20px; font-style: italic; } | ||
|
||
dl p { padding-left: 20px; font-style: italic; } | ||
|
||
hr { height: 1px; margin-bottom: 5px; border: none; background: url("../images/bg_hr.png") repeat-x center; } | ||
|
||
table { border: 1px solid #373737; margin-bottom: 20px; text-align: left; } | ||
|
||
th { font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif; padding: 10px; background: #373737; color: #fff; } | ||
|
||
td { padding: 10px; border: 1px solid #373737; } | ||
|
||
form { background: #f2f2f2; padding: 20px; } | ||
|
||
/******************************************************************************* | ||
Full-Width Styles | ||
*******************************************************************************/ | ||
.outer { width: 100%; } | ||
|
||
.inner { position: relative; max-width: 640px; padding: 20px 10px; margin: 0 auto; } | ||
|
||
#forkme_banner { display: block; position: absolute; top: 0; right: 10px; z-index: 10; padding: 10px 50px 10px 10px; color: #fff; background: url("../images/blacktocat.png") #0090ff no-repeat 95% 50%; font-weight: 700; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; } | ||
|
||
#header_wrap { background: #212121; background: -moz-linear-gradient(top, #373737, #212121); background: -webkit-linear-gradient(top, #373737, #212121); background: -ms-linear-gradient(top, #373737, #212121); background: -o-linear-gradient(top, #373737, #212121); background: linear-gradient(to top, #373737, #212121); } | ||
|
||
#header_wrap .inner { padding: 50px 10px 30px 10px; } | ||
|
||
#project_title { margin: 0; color: #fff; font-size: 42px; font-weight: 700; text-shadow: #111 0px 0px 10px; } | ||
|
||
#project_tagline { color: #fff; font-size: 24px; font-weight: 300; background: none; text-shadow: #111 0px 0px 10px; } | ||
|
||
#downloads { position: absolute; width: 210px; z-index: 10; bottom: -40px; right: 0; height: 70px; background: url("../images/icon_download.png") no-repeat 0% 90%; } | ||
|
||
.zip_download_link { display: block; float: right; width: 90px; height: 70px; text-indent: -5000px; overflow: hidden; background: url(../images/sprite_download.png) no-repeat bottom left; } | ||
|
||
.tar_download_link { display: block; float: right; width: 90px; height: 70px; text-indent: -5000px; overflow: hidden; background: url(../images/sprite_download.png) no-repeat bottom right; margin-left: 10px; } | ||
|
||
.zip_download_link:hover { background: url(../images/sprite_download.png) no-repeat top left; } | ||
|
||
.tar_download_link:hover { background: url(../images/sprite_download.png) no-repeat top right; } | ||
|
||
#main_content_wrap { background: #f2f2f2; border-top: 1px solid #111; border-bottom: 1px solid #111; } | ||
|
||
#main_content { padding-top: 40px; } | ||
|
||
#footer_wrap { background: #212121; } | ||
|
||
/******************************************************************************* | ||
Small Device Styles | ||
*******************************************************************************/ | ||
@media screen and (max-width: 992px) { img { max-width: 100%; } } | ||
@media screen and (max-width: 480px) { body { font-size: 14px; } | ||
#downloads { display: none; } | ||
.inner { min-width: 320px; max-width: 480px; } | ||
#project_title { font-size: 32px; } | ||
h1 { font-size: 28px; } | ||
h2 { font-size: 24px; } | ||
h3 { font-size: 21px; } | ||
h4 { font-size: 18px; } | ||
h5 { font-size: 14px; } | ||
h6 { font-size: 12px; } | ||
code, pre { font-size: 11px; } } | ||
@media screen and (max-width: 320px) { body { font-size: 14px; } | ||
#downloads { display: none; } | ||
.inner { min-width: 240px; max-width: 320px; } | ||
#project_title { font-size: 28px; } | ||
h1 { font-size: 24px; } | ||
h2 { font-size: 21px; } | ||
h3 { font-size: 18px; } | ||
h4 { font-size: 16px; } | ||
h5 { font-size: 14px; } | ||
h6 { font-size: 12px; } | ||
code, pre { min-width: 240px; max-width: 320px; font-size: 11px; } } | ||
.inner { max-width: 960px; } | ||
|
||
pre, code { background-color: unset; font-size: unset; } | ||
|
||
code { font-size: 0.80em; } |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
<!DOCTYPE html> | ||
<html lang="en-US"> | ||
|
||
<head> | ||
<meta charset='utf-8'> | ||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
<meta name="viewport" content="width=device-width,maximum-scale=2"> | ||
<link rel="stylesheet" type="text/css" media="screen" href="/avatar/assets/css/style.css?v=d806768ad099ddb4806d4bcaacd8747ae17bcdad"> | ||
|
||
<!-- Begin Jekyll SEO tag v2.6.1 --> | ||
<title>Avatar API | avatar</title> | ||
<meta name="generator" content="Jekyll v3.9.0" /> | ||
<meta property="og:title" content="Avatar API" /> | ||
<meta property="og:locale" content="en_US" /> | ||
<meta name="description" content="A modern compile-time generated interception/proxy library" /> | ||
<meta property="og:description" content="A modern compile-time generated interception/proxy library" /> | ||
<meta property="og:site_name" content="avatar" /> | ||
<script type="application/ld+json"> | ||
{"@type":"WebPage","url":"/avatar/docs/api/","headline":"Avatar API","description":"A modern compile-time generated interception/proxy library","@context":"https://schema.org"}</script> | ||
<!-- End Jekyll SEO tag --> | ||
|
||
</head> | ||
|
||
<body> | ||
|
||
<!-- HEADER --> | ||
<div id="header_wrap" class="outer"> | ||
<header class="inner"> | ||
<a id="forkme_banner" href="https://github.com/devlooped/avatar">View on GitHub</a> | ||
|
||
<h1 id="project_title">avatar</h1> | ||
<h2 id="project_tagline">A modern compile-time generated interception/proxy library</h2> | ||
|
||
|
||
</header> | ||
</div> | ||
|
||
<!-- MAIN CONTENT --> | ||
<div id="main_content_wrap" class="outer"> | ||
<section id="main_content" class="inner"> | ||
<h1 id="avatar-api">Avatar API</h1> | ||
|
||
<p>Main entry point API is <code class="language-plaintext highlighter-rouge">Avatar.Of<T></code>, which creates an object that implements <code class="language-plaintext highlighter-rouge">T</code>:</p> | ||
|
||
<div class="language-csharp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ICalculator</span> <span class="n">calculator</span> <span class="p">=</span> <span class="n">Avatar</span><span class="p">.</span><span class="n">Of</span><span class="p"><</span><span class="n">ICalculator</span><span class="p">>();</span> | ||
|
||
<span class="c1">// Extension methods to easily add behaviors without having </span> | ||
<span class="c1">// to cast to IAvatar</span> | ||
<span class="n">calculator</span><span class="p">.</span><span class="nf">AddBehavior</span><span class="p">((</span><span class="n">invocation</span><span class="p">,</span> <span class="n">next</span><span class="p">)</span> <span class="p">=></span> <span class="p">...);</span> | ||
|
||
<span class="n">Console</span><span class="p">.</span><span class="nf">WriteLine</span><span class="p">(</span><span class="n">calculator</span><span class="p">.</span><span class="nf">Add</span><span class="p">(</span><span class="m">2</span><span class="p">,</span> <span class="m">5</span><span class="p">));</span> | ||
</code></pre></div></div> | ||
|
||
<p>There are overloads for implementing additional types, as well as passing constructor | ||
arguments if the base type <code class="language-plaintext highlighter-rouge">T</code> (which must be the first in the list, like in regular | ||
C# type declarations) is a class that provides a constructor with matching parameters: | ||
<code class="language-plaintext highlighter-rouge">Avatar.Of<T, T1...Tn>(arg1, ... argn)</code></p> | ||
|
||
<p>For anonymous behaviors, the delegate/lambda based overloads are typically sufficient. | ||
For more advanced or reusable behaviors, you can implement <code class="language-plaintext highlighter-rouge">IAvatarBehavior</code> instead.</p> | ||
|
||
</section> | ||
</div> | ||
|
||
<!-- FOOTER --> | ||
<div id="footer_wrap" class="outer"> | ||
<footer class="inner"> | ||
|
||
<p class="copyright">avatar maintained by <a href="https://github.com/devlooped">devlooped</a></p> | ||
|
||
<p>Published with <a href="https://pages.github.com">GitHub Pages</a></p> | ||
</footer> | ||
</div> | ||
|
||
|
||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Avatar API | ||
|
||
Main entry point API is `Avatar.Of<T>`, which creates an object that implements `T`: | ||
|
||
```csharp | ||
ICalculator calculator = Avatar.Of<ICalculator>(); | ||
|
||
// Extension methods to easily add behaviors without having | ||
// to cast to IAvatar | ||
calculator.AddBehavior((invocation, next) => ...); | ||
|
||
Console.WriteLine(calculator.Add(2, 5)); | ||
``` | ||
|
||
There are overloads for implementing additional types, as well as passing constructor | ||
arguments if the base type `T` (which must be the first in the list, like in regular | ||
C# type declarations) is a class that provides a constructor with matching parameters: | ||
`Avatar.Of<T, T1...Tn>(arg1, ... argn)` | ||
|
||
For anonymous behaviors, the delegate/lambda based overloads are typically sufficient. | ||
For more advanced or reusable behaviors, you can implement `IAvatarBehavior` instead. |
Oops, something went wrong.