Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa AssociationThis page requires JavaScript to function properly.
If you are using Microsoft Internet Explorer you may need to click on the yellow bar above and select 'Allow Blocked Content'. You must then click 'Yes' on the following security warning.<!--{{{--> <link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/> <!--}}}-->Background: #fff Foreground: #000 PrimaryPale: #8cf PrimaryLight: #18f PrimaryMid: #04b PrimaryDark: #014 SecondaryPale: #ffc SecondaryLight: #fe8 SecondaryMid: #db4 SecondaryDark: #841 TertiaryPale: #eee TertiaryLight: #ccc TertiaryMid: #999 TertiaryDark: #666 Error: #f88/*{{{*/ body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];} a {color:[[ColorPalette::PrimaryMid]];} a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];} a img {border:0;} h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;} h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];} h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];} .button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];} .button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];} .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];} .header {background:[[ColorPalette::PrimaryMid]];} .headerShadow {color:[[ColorPalette::Foreground]];} .headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];} .headerForeground {color:[[ColorPalette::Background]];} .headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];} .tabSelected{color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border-left:1px solid [[ColorPalette::TertiaryLight]]; border-top:1px solid [[ColorPalette::TertiaryLight]]; border-right:1px solid [[ColorPalette::TertiaryLight]]; } .tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];} .tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];} .tabContents .button {border:0;} #sidebar {} #sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];} #sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];} #sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];} #sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];} #sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];} .wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];} .wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;} .wizard h2 {color:[[ColorPalette::Foreground]]; border:none;} .wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]]; border:1px solid [[ColorPalette::PrimaryMid]];} .wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];} .wizardFooter {background:[[ColorPalette::PrimaryPale]];} .wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];} .wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid; border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];} .wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];} .wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid; border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];} #messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];} #messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;} .popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];} .popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];} .popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;} .popup li.disabled {color:[[ColorPalette::TertiaryMid]];} .popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;} .popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;} .popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;} .popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];} .listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];} .tiddler .defaultCommand {font-weight:bold;} .shadow .title {color:[[ColorPalette::TertiaryDark]];} .title {color:[[ColorPalette::SecondaryDark]];} .subtitle {color:[[ColorPalette::TertiaryDark]];} .toolbar {color:[[ColorPalette::PrimaryMid]];} .toolbar a {color:[[ColorPalette::TertiaryLight]];} .selected .toolbar a {color:[[ColorPalette::TertiaryMid]];} .selected .toolbar a:hover {color:[[ColorPalette::Foreground]];} .tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];} .selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];} .tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];} .tagging .button, .tagged .button {border:none;} .footer {color:[[ColorPalette::TertiaryLight]];} .selected .footer {color:[[ColorPalette::TertiaryMid]];} .sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;} .sparktick {background:[[ColorPalette::PrimaryDark]];} .error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];} .warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];} .lowlight {background:[[ColorPalette::TertiaryLight]];} .zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];} .imageLink, #displayArea .imageLink {background:transparent;} .annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];} .viewer .listTitle {list-style-type:none; margin-left:-2em;} .viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];} .viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];} .viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];} .viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];} .viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];} .viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];} .viewer code {color:[[ColorPalette::SecondaryDark]];} .viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];} .highlight, .marked {background:[[ColorPalette::SecondaryLight]];} .editor input {border:1px solid [[ColorPalette::PrimaryMid]];} .editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;} .editorFooter {color:[[ColorPalette::TertiaryMid]];} #backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];} #backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;} #backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; } #backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];} #backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;} #backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;} #backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];} .backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];} .backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];} #backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';} /*}}}*//*{{{*/ * html .tiddler {height:1%;} body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;} h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;} h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;} h4,h5,h6 {margin-top:1em;} h1 {font-size:1.35em;} h2 {font-size:1.25em;} h3 {font-size:1.1em;} h4 {font-size:1em;} h5 {font-size:.9em;} hr {height:1px;} a {text-decoration:none;} dt {font-weight:bold;} ol {list-style-type:decimal;} ol ol {list-style-type:lower-alpha;} ol ol ol {list-style-type:lower-roman;} ol ol ol ol {list-style-type:decimal;} ol ol ol ol ol {list-style-type:lower-alpha;} ol ol ol ol ol ol {list-style-type:lower-roman;} ol ol ol ol ol ol ol {list-style-type:decimal;} .txtOptionInput {width:11em;} #contentWrapper .chkOptionInput {border:0;} .externalLink {text-decoration:underline;} .indent {margin-left:3em;} .outdent {margin-left:3em; text-indent:-3em;} code.escaped {white-space:nowrap;} .tiddlyLinkExisting {font-weight:bold;} .tiddlyLinkNonExisting {font-style:italic;} /* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */ a.tiddlyLinkNonExisting.shadow {font-weight:bold;} #mainMenu .tiddlyLinkExisting, #mainMenu .tiddlyLinkNonExisting, #sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;} #sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;} .header {position:relative;} .header a:hover {background:transparent;} .headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;} .headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;} .siteTitle {font-size:3em;} .siteSubtitle {font-size:1.2em;} #mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;} #sidebar {position:absolute; right:3px; width:16em; font-size:.9em;} #sidebarOptions {padding-top:0.3em;} #sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;} #sidebarOptions input {margin:0.4em 0.5em;} #sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;} #sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;} #sidebarOptions .sliderPanel input {margin:0 0 .3em 0;} #sidebarTabs .tabContents {width:15em; overflow:hidden;} .wizard {padding:0.1em 1em 0em 2em;} .wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;} .wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;} .wizardStep {padding:1em 1em 1em 1em;} .wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;} .wizardFooter {padding:0.8em 0.4em 0.8em 0em;} .wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;} .wizard .button {padding:0.1em 0.2em 0.1em 0.2em;} #messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;} .messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;} #messageArea a {text-decoration:underline;} .tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;} .popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;} .popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;} .popup .popupMessage {padding:0.4em;} .popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;} .popup li.disabled {padding:0.4em;} .popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;} .listBreak {font-size:1px; line-height:1px;} .listBreak div {margin:2px 0;} .tabset {padding:1em 0em 0em 0.5em;} .tab {margin:0em 0em 0em 0.25em; padding:2px;} .tabContents {padding:0.5em;} .tabContents ul, .tabContents ol {margin:0; padding:0;} .txtMainTab .tabContents li {list-style:none;} .tabContents li.listLink { margin-left:.75em;} #contentWrapper {display:block;} #splashScreen {display:none;} #displayArea {margin:1em 17em 0em 14em;} .toolbar {text-align:right; font-size:.9em;} .tiddler {padding:1em 1em 0em 1em;} .missing .viewer,.missing .title {font-style:italic;} .title {font-size:1.6em; font-weight:bold;} .missing .subtitle {display:none;} .subtitle {font-size:1.1em;} .tiddler .button {padding:0.2em 0.4em;} .tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;} .isTag .tagging {display:block;} .tagged {margin:0.5em; float:right;} .tagging, .tagged {font-size:0.9em; padding:0.25em;} .tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;} .tagClear {clear:both;} .footer {font-size:.9em;} .footer li {display:inline;} .annotation {padding:0.5em; margin:0.5em;} * html .viewer pre {width:99%; padding:0 0 1em 0;} .viewer {line-height:1.4em; padding-top:0.5em;} .viewer .button {margin:0em 0.25em; padding:0em 0.25em;} .viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;} .viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;} .viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;} .viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;} table.listView {font-size:0.85em; margin:0.8em 1.0em;} table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;} .viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;} .viewer code {font-size:1.2em; line-height:1.4em;} .editor {font-size:1.1em;} .editor input, .editor textarea {display:block; width:100%; font:inherit;} .editorFooter {padding:0.25em 0em; font-size:.9em;} .editorFooter .button {padding-top:0px; padding-bottom:0px;} .fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;} .sparkline {line-height:1em;} .sparktick {outline:0;} .zoomer {font-size:1.1em; position:absolute; overflow:hidden;} .zoomer div {padding:1em;} * html #backstage {width:99%;} * html #backstageArea {width:99%;} #backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;} #backstageToolbar {position:relative;} #backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;} #backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;} #backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;} #backstage {position:relative; width:100%; z-index:50;} #backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;} .backstagePanelFooter {padding-top:0.2em; float:right;} .backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;} #backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;} .whenBackstage {display:none;} .backstageVisible .whenBackstage {display:block;} /*}}}*//*** StyleSheet for use when a translation requires any css style changes. This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes. ***/ /*{{{*/ body {font-size:0.8em;} #sidebarOptions {font-size:1.05em;} #sidebarOptions a {font-style:normal;} #sidebarOptions .sliderPanel {font-size:0.95em;} .subtitle {font-size:0.8em;} .viewer table.listView {font-size:0.95em;} /*}}}*//*{{{*/ @media print { #mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;} #displayArea {margin: 1em 1em 0em 1em;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */ noscript {display:none;} } /*}}}*/<!--{{{--> <div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'> <div class='headerShadow'> <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span> </div> <div class='headerForeground'> <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span> <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span> </div> </div> <div id='mainMenu' refresh='content' tiddler='MainMenu'></div> <div id='sidebar'> <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div> <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div> </div> <div id='displayArea'> <div id='messageArea'></div> <div id='tiddlerDisplay'></div> </div> <!--}}}--><!--{{{--> <div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div> <div class='title' macro='view title'></div> <div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div> <div class='tagging' macro='tagging'></div> <div class='tagged' macro='tags'></div> <div class='viewer' macro='view text wikified'></div> <div class='tagClear'></div> <!--}}}--><!--{{{--> <div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div> <div class='title' macro='view title'></div> <div class='editor' macro='edit title'></div> <div macro='annotations'></div> <div class='editor' macro='edit text'></div> <div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div> <!--}}}-->To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers: * SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar) * MainMenu: The menu (usually on the left) * DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened You'll also need to enter your username for signing your edits: <<option txtUserName>>These InterfaceOptions for customising TiddlyWiki are saved in your browser Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs) <<option txtUserName>> <<option chkSaveBackups>> SaveBackups <<option chkAutoSave>> AutoSave <<option chkRegExpSearch>> RegExpSearch <<option chkCaseSensitiveSearch>> CaseSensitiveSearch <<option chkAnimate>> EnableAnimations ---- Also see AdvancedOptions<<importTiddlers>>1. Click on [[Guardian]] 2. Pick a link to a story 3. Click on 'new here' to [[make an entry]] tagged with 'Guardian' (see the grey box to the right - tags: Guardian) 4. [[Link to another entry|The Fed]]/*** |''Name:''|CryptoFunctionsPlugin| |''Description:''|Support for cryptographic functions| ***/ //{{{ if(!version.extensions.CryptoFunctionsPlugin) { version.extensions.CryptoFunctionsPlugin = {installed:true}; //-- //-- Crypto functions and associated conversion routines //-- // Crypto "namespace" function Crypto() {} // Convert a string to an array of big-endian 32-bit words Crypto.strToBe32s = function(str) { var be = Array(); var len = Math.floor(str.length/4); var i, j; for(i=0, j=0; i<len; i++, j+=4) { be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff); } while (j<str.length) { be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32); j++; } return be; }; // Convert an array of big-endian 32-bit words to a string Crypto.be32sToStr = function(be) { var str = ""; for(var i=0;i<be.length*32;i+=8) str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff); return str; }; // Convert an array of big-endian 32-bit words to a hex string Crypto.be32sToHex = function(be) { var hex = "0123456789ABCDEF"; var str = ""; for(var i=0;i<be.length*4;i++) str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF); return str; }; // Return, in hex, the SHA-1 hash of a string Crypto.hexSha1Str = function(str) { return Crypto.be32sToHex(Crypto.sha1Str(str)); }; // Return the SHA-1 hash of a string Crypto.sha1Str = function(str) { return Crypto.sha1(Crypto.strToBe32s(str),str.length); }; // Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words Crypto.sha1 = function(x,blen) { // Add 32-bit integers, wrapping at 32 bits add32 = function(a,b) { var lsw = (a&0xFFFF)+(b&0xFFFF); var msw = (a>>16)+(b>>16)+(lsw>>16); return (msw<<16)|(lsw&0xFFFF); }; // Add five 32-bit integers, wrapping at 32 bits add32x5 = function(a,b,c,d,e) { var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF); var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16); return (msw<<16)|(lsw&0xFFFF); }; // Bitwise rotate left a 32-bit integer by 1 bit rol32 = function(n) { return (n>>>31)|(n<<1); }; var len = blen*8; // Append padding so length in bits is 448 mod 512 x[len>>5] |= 0x80 << (24-len%32); // Append length x[((len+64>>9)<<4)+15] = len; var w = Array(80); var k1 = 0x5A827999; var k2 = 0x6ED9EBA1; var k3 = 0x8F1BBCDC; var k4 = 0xCA62C1D6; var h0 = 0x67452301; var h1 = 0xEFCDAB89; var h2 = 0x98BADCFE; var h3 = 0x10325476; var h4 = 0xC3D2E1F0; for(var i=0;i<x.length;i+=16) { var j,t; var a = h0; var b = h1; var c = h2; var d = h3; var e = h4; for(j = 0;j<16;j++) { w[j] = x[i+j]; t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1); e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t; } for(j=16;j<20;j++) { w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]); t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1); e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t; } for(j=20;j<40;j++) { w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]); t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2); e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t; } for(j=40;j<60;j++) { w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]); t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3); e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t; } for(j=60;j<80;j++) { w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]); t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4); e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t; } h0 = add32(h0,a); h1 = add32(h1,b); h2 = add32(h2,c); h3 = add32(h3,d); h4 = add32(h4,e); } return Array(h0,h1,h2,h3,h4); }; } //}}}[[How to use]] [[An Example]]<<rssReader asHTML http://del.icio.us/rss/network/AlexHough?private=58ed86b165296361624b193c7971bac0>>/*** |''Name:''|DeprecatedFunctionsPlugin| |''Description:''|Support for deprecated functions removed from core| ***/ //{{{ if(!version.extensions.DeprecatedFunctionsPlugin) { version.extensions.DeprecatedFunctionsPlugin = {installed:true}; //-- //-- Deprecated code //-- // @Deprecated: Use createElementAndWikify and this.termRegExp instead config.formatterHelpers.charFormatHelper = function(w) { w.subWikify(createTiddlyElement(w.output,this.element),this.terminator); }; // @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead config.formatterHelpers.monospacedByLineHelper = function(w) { var lookaheadRegExp = new RegExp(this.lookahead,"mg"); lookaheadRegExp.lastIndex = w.matchStart; var lookaheadMatch = lookaheadRegExp.exec(w.source); if(lookaheadMatch && lookaheadMatch.index == w.matchStart) { var text = lookaheadMatch[1]; if(config.browser.isIE) text = text.replace(/\n/g,"\r"); createTiddlyElement(w.output,"pre",null,null,text); w.nextMatch = lookaheadRegExp.lastIndex; } }; // @Deprecated: Use <br> or <br /> instead of <<br>> config.macros.br = {}; config.macros.br.handler = function(place) { createTiddlyElement(place,"br"); }; // Find an entry in an array. Returns the array index or null // @Deprecated: Use indexOf instead Array.prototype.find = function(item) { var i = this.indexOf(item); return i == -1 ? null : i; }; // Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed() // @Deprecated: Use store.getLoader().internalizeTiddler instead Tiddler.prototype.loadFromDiv = function(divRef,title) { return store.getLoader().internalizeTiddler(store,this,title,divRef); }; // Format the text for storage in an HTML DIV // @Deprecated Use store.getSaver().externalizeTiddler instead. Tiddler.prototype.saveToDiv = function() { return store.getSaver().externalizeTiddler(store,this); }; // @Deprecated: Use store.allTiddlersAsHtml() instead function allTiddlersAsHtml() { return store.allTiddlersAsHtml(); } // @Deprecated: Use refreshPageTemplate instead function applyPageTemplate(title) { refreshPageTemplate(title); } // @Deprecated: Use story.displayTiddlers instead function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3) { story.displayTiddlers(srcElement,titles,template,animate); } // @Deprecated: Use story.displayTiddler instead function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3) { story.displayTiddler(srcElement,title,template,animate); } // @Deprecated: Use functions on right hand side directly instead var createTiddlerPopup = Popup.create; var scrollToTiddlerPopup = Popup.show; var hideTiddlerPopup = Popup.remove; // @Deprecated: Use right hand side directly instead var regexpBackSlashEn = new RegExp("\\\\n","mg"); var regexpBackSlash = new RegExp("\\\\","mg"); var regexpBackSlashEss = new RegExp("\\\\s","mg"); var regexpNewLine = new RegExp("\n","mg"); var regexpCarriageReturn = new RegExp("\r","mg"); } //}}}<<rssReader noDesc http://www.economist.com/rss/the_world_this_week_rss.xml>>To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers: * SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar) * MainMenu: The menu (usually on the left) * DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened You'll also need to enter your username for signing your edits: <<option txtUserName>><<rssReader asHtml http://www.guardian.co.uk/business/rss>>Find a story you want to record Click on new hew on the source of the story *This opens a record card "aka a tiddler" tagged with the source. Read the story Cut and paste the URL and any text Expand on the text. Give the record a title. CloseThis is a Pipe which aggregates many feeds. <<rssReader noDesc http://pipes.yahoo.com/pipes/pipe.run?_id=fELaGmGz2xGtBTC3qe5lkA&_render=rss&textinput1=IMF>><<rssReader asHTML http://pipes.yahoo.com/pipes/pipe.run?_id=bOmbC3nO3BGAztnIy6ky6g&_render=rss>>The Pipe delivers only blog entries with "creative" in the title. <<rssReader noDesc http://pipes.yahoo.com/pipes/pipe.run?_id=MOV_D3jO3BG__z0aouNLYQ&_render=rss>>/*** |''Name:''|LegacyStrikeThroughPlugin| |''Description:''|Support for legacy (pre 2.1) strike through formatting| |''Version:''|1.0.2| |''Date:''|Jul 21, 2006| |''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin| |''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)| |''License:''|[[BSD open source license]]| |''CoreVersion:''|2.1.0| ***/ //{{{ // Ensure that the LegacyStrikeThrough Plugin is only installed once. if(!version.extensions.LegacyStrikeThroughPlugin) { version.extensions.LegacyStrikeThroughPlugin = {installed:true}; config.formatters.push( { name: "legacyStrikeByChar", match: "==", termRegExp: /(==)/mg, element: "strike", handler: config.formatterHelpers.createElementAndWikify }); } //# end of "install only once" //}}}Type the text for 'Link to another entry'[[Media]] [[Pipes]] [[How to use|An Example]] [[MainMenu]]Click on one of the items that "media" tags/*** | Name:|NewHerePlugin| | Description:|Creates the new here and new journal macros| | Version:|3.0 ($Rev: 1845 $)| | Date:|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $| | Source:|http://mptw.tiddlyspot.com/#NewHerePlugin| | Author:|Simon Baird <simon...@gmail.com>| | License|http://mptw.tiddlyspot.com/#TheBSDLicense| ***/ //{{{ merge(config.macros, { newHere: { handler: function(place,macroName,params,wikifier,paramString,tiddler) { wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler); } }, newJournalHere: { handler: function(place,macroName,params,wikifier,paramString,tiddler) { wikify("<<newJournal "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler); } } }); //}}}For more info see http://pipes.yahoo.com/pipes//*** |''Name:''|RSSReaderPlugin| |''Description:''|This plugin provides a RSSReader for TiddlyWiki| |''Version:''|1.1.1| |''Date:''|Apr 21, 2007| |''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin| |''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc| |''Author:''|BidiX (BidiX (at) bidix (dot) info)| |''Credit:''|BramChen for RssNewsMacro| |''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]| |''~CoreVersion:''|2.2.0| |''OptionalRequires:''|http://www.tiddlytools.com/#NestedSlidersPlugin| ***/ //{{{ version.extensions.RSSReaderPlugin = { major: 1, minor: 1, revision: 1, date: new Date("Apr 21, 2007"), source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin", author: "BidiX", coreVersion: '2.2.0' }; config.macros.rssReader = { dateFormat: "DDD, DD MMM YYYY", itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed '@@'+itemStyle+itemText+'@@' msg:{ permissionDenied: "Permission to read preferences was denied.", noRSSFeed: "No RSS Feed at this address %0", urlNotAccessible: " Access to %0 is not allowed" }, cache: [], // url => XMLHttpRequest.responseXML desc: "noDesc", handler: function(place,macroName,params,wikifier,paramString,tiddler) { var desc = params[0]; var feedURL = params[1]; var toFilter = (params[2] ? true : false); var filterString = (toFilter?(params[2].substr(0,1) == ' '? tiddler.title:params[2]):''); var place = createTiddlyElement(place, "div", "RSSReader"); wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place); if (this.cache[feedURL]) { this.displayRssFeed(this.cache[feedURL], feedURL, place, desc, toFilter, filterString); } else { var r = loadRemoteFile(feedURL,config.macros.rssReader.processResponse, [place, desc, toFilter, filterString]); if (typeof r == "string") displayMessage(r); } }, // callback for loadRemoteFile // params : [place, desc, toFilter, filterString] processResponse: function(status, params, responseText, url, xhr) { // feedURL, place, desc, toFilter, filterString) { if (window.netscape){ try { if (document.location.protocol.indexOf("http") == -1) { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); } } catch (e) { displayMessage(e.description?e.description:e.toString()); } } if (xhr.status == httpStatus.NotFound) { displayMessage(config.macros.rssReader.noRSSFeed.format([url])); return; } if (!status) { displayMessage(config.macros.rssReader.noRSSFeed.format([url])); return; } if (xhr.responseXML) { // response is interpreted as XML config.macros.rssReader.cache[url] = xhr.responseXML; config.macros.rssReader.displayRssFeed(xhr.responseXML, params[0], url, params[1], params[2], params[3]); } else { if (responseText.substr(0,5) == "<?xml") { // response exists but not return as XML -> try to parse it var dom = (new DOMParser()).parseFromString(responseText, "text/xml"); if (dom) { // parsing successful so use it config.macros.rssReader.cache[url] = dom; config.macros.rssReader.displayRssFeed(dom, params[0], url, params[1], params[2], params[3]); return; } } // no XML display as html wikify("<html>" + responseText + "</html>", params[0]); displayMessage(config.macros.rssReader.msg.noRSSFeed.format([url])); } }, // explore down the DOM tree displayRssFeed: function(xml, place, feedURL, desc, toFilter, filterString){ // Channel var chanelNode = xml.getElementsByTagName('channel').item(0); var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null); var chanelTitle = ""; if ((chanelTitleElement) && (chanelTitleElement.firstChild)) chanelTitle = chanelTitleElement.firstChild.nodeValue; var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null); var chanelLink = ""; if (chanelLinkElement) chanelLink = chanelLinkElement.firstChild.nodeValue; var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n"; var title = createTiddlyElement(place,"div",null,"ChanelTitle",null); wikify(titleTxt,title); // ItemList var itemList = xml.getElementsByTagName('item'); var article = createTiddlyElement(place,"ul",null,null,null); var lastDate; var re; if (toFilter) re = new RegExp(filterString.escapeRegExp()); for (var i=0; i<itemList.length; i++){ var titleElm = itemList[i].getElementsByTagName('title').item(0); var titleText = (titleElm ? titleElm.firstChild.nodeValue : ''); if (toFilter && ! titleText.match(re)) { continue; } var descText = ''; descElem = itemList[i].getElementsByTagName('description').item(0); if (descElem){ try{ for (var ii=0; ii<descElem.childNodes.length; ii++) { descText += descElem.childNodes[ii].nodeValue; } } catch(e){} descText = descText.replace(/<br \/>/g,'\n'); if (desc == "asHtml") descText = "<html>"+descText+"</html>"; } var linkElm = itemList[i].getElementsByTagName("link").item(0); var linkURL = linkElm.firstChild.nodeValue; var pubElm = itemList[i].getElementsByTagName('pubDate').item(0); var pubDate; if (!pubElm) { pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us if (pubElm) { pubDate = pubElm.firstChild.nodeValue; pubDate = this.formatDateString(this.dateFormat, pubDate); } else { pubDate = '0'; } } else { pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0); pubDate = this.formatDate(this.dateFormat, pubDate); } titleText = titleText.replace(/\[|\]/g,''); var rssText = '*'+'[[' + titleText + '|' + linkURL + ']]' + '' ; if ((desc != "noDesc") && descText){ rssText = rssText.replace(/\n/g,' '); descText = '@@'+this.itemStyle+descText + '@@\n'; if (version.extensions.nestedSliders){ descText = '+++[...]' + descText + '==='; } rssText = rssText + descText; } var story; if ((lastDate != pubDate) && ( pubDate != '0')) { story = createTiddlyElement(article,"li",null,"RSSItem",pubDate); lastDate = pubDate; } else { lastDate = pubDate; } story = createTiddlyElement(article,"div",null,"RSSItem",null); wikify(rssText,story); } }, formatDate: function(template, date){ var dateString = new Date(date); // template = template.replace(/hh|mm|ss/g,''); return dateString.formatString(template); }, formatDateString: function(template, date){ var dateString = new Date(date.substr(0,4), date.substr(5,2) - 1, date.substr(8,2) ); return dateString.formatString(template); } }; config.macros.rssFeedUpdate = { label: "Update", prompt: "Clear the cache and redisplay this RssFeed", handler: function(place,macroName,params) { var feedURL = params[0]; var tiddlerTitle = params[1]; createTiddlyButton(place, this.label, this.prompt, function () { if (config.macros.rssReader.cache[feedURL]) { config.macros.rssReader.cache[feedURL] = null; } story.refreshTiddler(tiddlerTitle,null, true); return false;}); } }; //}}}<<rssReader asHTML http://pipes.yahoo.com/pipes/pipe.run?_id=4Pc0XXrO3BGsLxhQEpPZnA&_render=rss>>A tool to monitor new sources and make non linear notesFeeds Note Book/*** |''Name:''|SparklinePlugin| |''Description:''|Sparklines macro| ***/ //{{{ if(!version.extensions.SparklinePlugin) { version.extensions.SparklinePlugin = {installed:true}; //-- //-- Sparklines //-- config.macros.sparkline = {}; config.macros.sparkline.handler = function(place,macroName,params) { var data = []; var min = 0; var max = 0; var v; for(var t=0; t<params.length; t++) { v = parseInt(params[t]); if(v < min) min = v; if(v > max) max = v; data.push(v); } if(data.length < 1) return; var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160)); box.title = data.join(","); var w = box.offsetWidth; var h = box.offsetHeight; box.style.paddingRight = (data.length * 2 - w) + "px"; box.style.position = "relative"; for(var d=0; d<data.length; d++) { var tick = document.createElement("img"); tick.border = 0; tick.className = "sparktick"; tick.style.position = "absolute"; tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B"; tick.style.left = d*2 + "px"; tick.style.width = "2px"; v = Math.floor(((data[d] - min)/(max-min)) * h); tick.style.top = (h-v) + "px"; tick.style.height = v + "px"; box.appendChild(tick); } }; } //}}}<!--{{{--> <div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'><span macro='newHere label:"new here"'></span></div> <div class='title' macro='view title'></div> <div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div> <div class='tagging' macro='tagging'></div> <div class='tagged' macro='tags'></div> <div class='viewer' macro='view text wikified'></div> <div class='tagClear'></div> <!--}}}-->double click to cut and paste / add text click done when finished to make an link to another record suround a phrase with [[[Double Brackets]]] If you double click you will be able to see how the link The Fed for example [[The Fed]] "Expectations are of at least another half-point cut in US interest rates, with the Fed Funds futures currently indicating around an 85% chance of this happening..." http://www.guardian.co.uk/business/2008/jan/29/creditcrunch.marketturmoil?gusrc=rss&feed=business
Downloading the attachment from the Google Groups web interface seems to
work fine for me:
http://tinyurl.com/2q9e9f
(http://groups.google.com/group/TiddlyWiki/attach/e38e73c168ee1dd4/Feeds_and_notes.html?part=4)
-- F.