Initial import yay!!

This commit is contained in:
Jeremy Wall 2019-10-02 21:06:34 -05:00
commit e1e88def86
18 changed files with 709 additions and 0 deletions

33
.Xdefaults Normal file
View File

@ -0,0 +1,33 @@
URxvt*saveLines:12000
URxvt*foreground:White
URxvt*background:Black
URxvt*font: xft:Bitstream Vera Sans Mono:pixelsize=12
URxvt*scrollBar:true
URxvt*scrollBar_right:true
URxvt*scrollstyle:rxvt
URxvt.cutchars: "()*,<>[]{}|'
rxvt*saveLines:12000
rxvt*foreground:White
rxvt*background:Black
rxvt*font: xft:Bitstream Vera Sans Mono:pixelsize=12
rxvt*scrollBar:true
rxvt*scrollBar_right:true
rxvt*scrollstyle:rxvt
rxvt.cutchars: "()*,<>[]{}|'
Rxvt*saveLines:12000
Rxvt*foreground:White
Rxvt*background:Black
Rxvt*font: xft:Bitstream Vera Sans Mono:pixelsize=12
Rxvt*scrollBar:true
Rxvt*scrollBar_right:true
Rxvt*scrollstyle:rxvt
Rxvt.cutchars: "()*,<>[]{}|'
XTerm*saveLines:12000
XTerm*foreground:White
XTerm*background:Black
XTerm*font: xft:Bitstream Vera Sans Mono:pixelsize=12
XTerm*scrollBar:true
XTerm*scrollBar_right:true
XTerm*scrollstyle:rxvt
XTerm.cutchars: "()*,<>[]{}|'
remote*termname: xterm

2
.ackrc Normal file
View File

@ -0,0 +1,2 @@
--type-add=borg=.borg
--type-add=clojure=.clj

3
.bash_profile.backup Normal file
View File

@ -0,0 +1,3 @@
export AQSISHOME=/Applications/Aqsis.app # Entry managed by Aqsis Renderer
export PATH=$AQSISHOME/Contents/MacOS:$PATH # Entry managed by Aqsis Renderer
source ~/.bashrc

49
.bashrc Normal file
View File

@ -0,0 +1,49 @@
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
# color table:
# Black 0;30
# Blue 0;34
# Green 0;32
# Cyan 0;36
# Red 0;31
# Purple 0;35
# Brown 0;33
# [Note: Replace 0 with 1 for dark color]
export bash_rc_files=$(find -L ~/.bash_rc.d/ -type f | grep -v '\.swp$' | sort)
for rc_file in $bash_rc_files; do
#echo "sourcing ${rc_file}"
source $rc_file;
done
# User specific aliases and functions go here (override system defaults)
if [[ $TERM == "dumb" ]]; then
PS1='\u@\h$ '
else
PS1='[\e[1;36m$(date +%H:%M)\e[m] [\e[01;32m\u@\h\e[m] (\e[01;32m\]$(pwd)\e[m\])\n\$> '
fi
insert_path_element_before /opt/brew/bin
insert_path_element_before ~/bin
function re_source() {
source ~/.bashrc
}
export PAGER="less -R"
export PATH=/Users/jwall/.local/bin/luna-studio:$PATH
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

86
.bashrc_home Normal file
View File

@ -0,0 +1,86 @@
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
export HISTCONTROL=ignoredups
# ... and ignore same sucessive entries.
export HISTCONTROL=ignoreboth
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
;;
*)
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
;;
esac
# Comment in the above and uncomment this below for a color prompt
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\] ~~ \[\033[01;32m\]\w\[\033[00m\]\n\$> '
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
;;
*)
;;
esac
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
#if [ -f ~/.bash_aliases ]; then
# . ~/.bash_aliases
#fi
# enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
#alias dir='ls --color=auto --format=vertical'
#alias vdir='ls --color=auto --format=long'
fi
# some more ls aliases
#alias ll='ls -l'
#alias la='ls -A'
#alias l='ls -CF'
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
#/etc/perl
#/usr/local/lib/perl/5.8.8
#/usr/local/share/perl/5.8.8
#/usr/lib/perl5
#/usr/share/perl5
#/usr/lib/perl/5.8
#/usr/share/perl/5.8
#/usr/local/lib/site_perl
export PATH=$PATH:~/bin:~/perl/bin
export EDITOR=/usr/bin/vim
export PERL5LIB=~/perl/lib/perl/5.8:~/perl/share/perl/5.8:~/perl/lib/perl/5.8/auto:~/perl/share/perl/5.8/auto:~/perl/lib/perl/5.8.8:~/perl/share/perl/5.8.8:~/perl/lib/perl/5.8.8/auto:~/perl/share/perl/5.8.8/auto:~/perl/lib/perl/5.8.8/site_perl:~/perl/lib/perl/5.8/site_perl:$PERL5LIB

17
.hgignore Normal file
View File

@ -0,0 +1,17 @@
.bash_rc.d/99.local.sh
.cabal/bin
.cabal/config.platform
.cabal/lib
.cabal/logs
.cabal/packages
.cabal/share
.cabal/world
.emacs.d/ac-comphist.dat
.emacs.d/auto-save-list
.emacs.d/elpa
.emacs.d/srecode-map.el
.emacs.d/tramp
.emacs.d/url
.emacs.d/semantic
.emacs.d/session

57
.hgrc Normal file
View File

@ -0,0 +1,57 @@
%include .hgauth
[ui]
username = Jeremy Wall (zaphar) <jeremy@marzhillstudios.com>
merge = internal:merge
[alias]
qstatus = status --rev -2
stash = qnew -e
apply = qpush
modified = status -m
added = status -a
graphlog = log -l 9 --graph
secrets = log -r 'secret()'
drafts = log -r 'draft()'
current = identify -i -n -B
hist = log -f -r 'ancestors(.)'
show = log -r . --template "Revision: {node|short}\n---------\n{desc}\n\n"
showrev = log --template "Revision: {node|short}\n---------\n{desc}\n\n" -r
[pull]
update=1
[qnew]
edit=1
[bookmarks]
track.current = True
[email]
from = Jeremy Wall (zaphar) <jeremy@marzhillstudios.com>
method = smtp
[smtp]
host = smtp.gmail.com
port = 587
tls = starttls
username = jeremy@marzhillstudios.com
[extensions]
convert =
hgext.bookmarks =
hgext.convert =
mq =
record =
graphlog =
transplant =
fetch =
histedit =
rebase =
shelve =
purge =
patchbomb =
churn =
[web]
#cacerts = /etc/hg-dummy-cert.pem

1
.hgtags Normal file
View File

@ -0,0 +1 @@
b17db60bd576fa4c3fdb084ba78b85719090c6c9 foo

82
.juliarc.jl Normal file
View File

@ -0,0 +1,82 @@
LOCAL_LIB_PATH = expanduser("~/lib/julia")
# My local package paths are in lib/julia
append!(LOAD_PATH, [LOCAL_LIB_PATH])
# macro that implements import Module as Alias mostly used as a helper in the
# repl. Not to be used in Packages since this macro is not guaranteed to exist
# elsewhere.
macro imports(mexpr, mod, sexpr)
# enforce our syntax
if mod != :as
error("Expected as modifier for import got $mod")
end
# mexpr must be a symbol
if typeof(mexpr) != Symbol
error("invalid import statement, expected identifier got $mexpr")
end
# sexpr must be a symbol
if typeof(sexpr) != Symbol
error("invalid import statement, expected identifier got $mexpr")
end
# We can't just quote the import syntax so we construct the import
# expression by hand
iexpr = Expr(:import)
iexpr.args = [mexpr]
expr2 = quote
$iexpr
$sexpr = $mexpr
end
# finally we escape the whole thing since we need all the symbols to be
# evaluated/created in the callers scope.
return esc(:($(eval(expr2))))
end
containedtypes(m::Module) = whos(m, r"[[:upper:]]")
# non sampled versions of some statistics functions
variance(v::Vector) = mean((v - mean(v)).^2)
stddev(v::Vector) = sqrt(variance(v))
# multiprocess configuration helpers
function procsetup()
delta = CPU_CORES - nprocs()
if delta > 0
addprocs(delta)
end
end
# array utilities
hasprefix(prefix::Vector, len, str) = length(str) >= len && str[1:len] == prefix
hasprefix(prefix::Vector, str) = hasprefix(prefix, length(prefix), str)
function eagerzip(iters...)
numiters = length(iters)
minlen = minimum(map(length, iters))
ar = [tuple(map(x->x[1], iters)...)]
for i in 2:minlen
push!(ar, tuple(map(x->x[i], iters)...))
end
return ar
end
guid2base64(input) = base64(hex2bytes(replace(input, "-", "")))
#Using Codecs
#
#Tobytes(s) = convert(Vector{Uint8}, s)
#
#Base64decode(text::UTF8String) = base64decode(tobytes(text))
#Base64decode(text::ASCIIString) = base64decode(tobytes(text))
#Base64decode(text::Vector{Uint8}) = decode(Base64, filter(c -> c != '\n', text))
# all factors not just prime factors.
function factors(n)
f = [one(n)]
for (p,e) in factor(n)
f = reduce(vcat, f, [f*p^j for j in 1:e])
end
return f
end

3
.profile Normal file
View File

@ -0,0 +1,3 @@
source ~/.bashrc
export PATH="$HOME/.cargo/bin:$PATH"

12
.screenrc Normal file
View File

@ -0,0 +1,12 @@
startup_message off
defscrollback 5000
termcapinfo xterm ti@:te@
termcapinfo xterm-color ti@:te@
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m/%d/%Y %{W}%c %{g}]'
vbell off
shell /bin/bash
logtstamp on
logtstamp after 1
logfile flush
term screen-256color

62
.tmux.conf Normal file
View File

@ -0,0 +1,62 @@
# global settings
set-option -ga update-environment " GOPATH"
## mimic the screen prefix key
unbind-key C-b
set-option -g prefix C-a
## correctly handle utf8
#setw -g utf8 on
#sest -g utf8 on
## we like colors
set -g default-terminal "screen-256color"
## Useful KeyBindings
### example of some useful key-bindings
#bind-key "~" split-window "exec htop"
bind-key "R" source-file ~/.tmux.conf
#bind-key "a" select-window -l
#bind-key "C-a" select-window -l
### vim stile pane navigation
#bind-key -r C-W select-pane -l
bind-key -r j select-pane -t :.-
bind-key -r k select-pane -t :.+
bind-key -r C-j select-pane -t :.-
bind-key -r C-k select-pane -t :.+
#### Tab style pane cycling
bind-key -r Tab select-pane -t :.+
### window cycling
bind-key q confirm-before kill-pane
bind-key Q confirm-before kill-window
## Status bar settings
set -g status-keys vi
### colors
set -g status-fg green
set -g status-bg black
### unicode
#set -g status-utf8 on
### status string
set -g status-justify centre
set -g status-left-length 20
set -g status-left "#[fg=yellow](#S)"
set -g status-right-length 45
set -g status-interval 300
# Each of these must be exclusive since there is a race condition between them.
## Default
#set -g status-right "#[fg=green][%D %H:%M]"
## Linux
if-shell 'uname | grep Linux' 'set -g status-right "#[fg=cyan]#(cat /proc/loadavg)#[fg=green] [%D %H:%M]"'
## Darwin
if-shell 'uname | grep Darwin' 'set -g status-right "#[fg=cyan]#(sysctl vm.loadavg)#[fg=green] %D %H:%M"'

35
.vimrc Normal file
View File

@ -0,0 +1,35 @@
" genera editing options
set nocompatible
set tabstop=4
set expandtab
set paste
set nowrap
set autoindent
set linebreak
syntax on
filetype plugin indent on
" file specific overrides
au BufNewFile,BufRead *Makefile,*.mk set noexpandtab
au BufNewFile,BufRead *.py,*.java set tabstop=2
au BufNewFile,BufRead *.app set filetype=erlang
au BufNewFile,BufRead .bash_* set filetype=sh
au BufNewFile,BufRead *.erl filetype indent off
au BufNewFile,BufRead *.hrl filetype indent off
nmap <C-t> :execute "!make && make test"<CR>
let g:BASH_AuthorName = 'Jeremy Wall'
let g:BASH_AuthorRef = 'jw'
let g:BASH_Email = 'jeremy@marzhillstudios.com'
let g:BASH_Company = 'Marzhillstudios.com'
let g:clj_want_gorilla = 1
let g:clj_highlight_builtins = 1
let g:clj_highlight_contrib = 1
let g:clj_paren_rainbow = 1
let vimclojure#NailgunClient = "/Users/jwall/bin/ng"
let g:erlangFoldSplitFunction=0
colorscheme desert256

14
.xmobarrc Normal file
View File

@ -0,0 +1,14 @@
Config { font = "-misc-fixed-*-*-*-*-13-*-*-*-*-*-*-*"
, bgColor = "black"
, fgColor = "lightgrey"
, commands = [ Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
, Run MultiCpu ["-L","15","-H","50","--normal","green","--high","red"] 10
, Run Memory ["-t","Mem: Used <usedratio>% - Free <free>"] 10
, Run Swap [] 10
, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
, Run StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = "%StdinReader% }{ %multicpu% | %memory% | %swap% | %eth0% | %date%"
}

39
bootstrap_brew.sh Normal file
View File

@ -0,0 +1,39 @@
brew_script=/tmp/brew_install.sh
curl -fsSL \
https://raw.githubusercontent.com/Homebrew/install/master/install \
> $brew_script
less $brew_script
read -p 'Execute brew install script? [y|N] ' prompt
if [ $prompt != "y" ]; then
exit 1;
fi
/usr/bin/ruby $brew_script
brew install ansible
brew install autoconf
brew install automake
brew install cmake
brew install erlang
brew install git
brew install gmp
brew install htop-osx
brew install imagemagick
brew install inkscape
brew install irssi
brew install jq
brew install leiningen
brew install mercurial
brew install openssl
brew install p7zip
brew install pkg-config
brew install taglib
brew install tesseract
brew install tmux
brew install watch
brew install xpdf
brew install xz

12
bootstrap_git_repos.sh Normal file
View File

@ -0,0 +1,12 @@
mkdir -p ~/sandbox/apps/
cd ~/sandbox/apps
git clone https://github.com/witheve/Eve
git clone https://github.com/bazelbuild/bazel.git
git clone https://go.googlesource.com/go
git clone https://github.com/OmniSharp/omnisharp-roslyn.git
git clone https://github.com/urbit/urbit
cd ~/sandbox/
hg clone https://bitbucket.org/zaphar/ansible-playbooks

49
restore.sh Normal file
View File

@ -0,0 +1,49 @@
dot_dir=$(dirname $0)
cd $dot_dir
for f in $(find -L $(pwd) -maxdepth 1 -type f); do
echo "Linking ${f}"
rm -f ${HOME}/$(basename $f);
ln -s $f ${HOME}/$(basename $f);
done;
dirs=$(pwd)/.bash_rc.d
dirs="$dirs $(pwd)/.emacs.d"
dirs="$dirs $(pwd)/.irssi"
dirs="$dirs $(pwd)/.vim"
dirs="$dirs $(pwd)/.yi"
dirs="$dirs $(pwd)/.cabal"
dirs="$dirs $(pwd)/.xmonad"
for d in $dirs; do
echo "Linking ${d}"
rm -f ${HOME}/$(basename $d);
ln -s $d ${HOME}/$(basename $d);
done;
for f in $(find -L $(pwd)/bin -maxdepth 1 -type f); do
echo "Linking ${f}"
rm -f ${HOME}/$(basename $f);
ln -s $f ${HOME}/$(basename $f);
done;
touch ~/.hgauth
rm -f ~/restore.sh
# setup my hg cacerts
openssl req -new -x509
-nodes \
-extensions v3_ca \
-keyout /dev/null \
-out dummycert.pem \
-subj "C=US/ST=Illinois/L=Chicago/O=Marzhillstudios/CN=jeremy.marzhillstudios.com" \
-days 3650
sudo mv dummycert.pem /etc/hg-dummy-cert.pem
# essential libs
## python
mkdir -p ~/sandbox/apps
mkdir -p ~/lib/py
cd ~/lib/py

153
uuidhelpers.js Normal file
View File

@ -0,0 +1,153 @@
// Javascript helper functions for parsing and displaying UUIDs in the MongoDB shell.
// This is a temporary solution until SERVER-3153 is implemented.
// To create BinData values corresponding to the various driver encodings use:
// var s = "{00112233-4455-6677-8899-aabbccddeeff}";
// var uuid = UUID(s); // new Standard encoding
// var juuid = JUUID(s); // JavaLegacy encoding
// var csuuid = CSUUID(s); // CSharpLegacy encoding
// var pyuuid = PYUUID(s); // PythonLegacy encoding
// To convert the various BinData values back to human readable UUIDs use:
// uuid.toUUID() => 'UUID("00112233-4455-6677-8899-aabbccddeeff")'
// juuid.ToJUUID() => 'JUUID("00112233-4455-6677-8899-aabbccddeeff")'
// csuuid.ToCSUUID() => 'CSUUID("00112233-4455-6677-8899-aabbccddeeff")'
// pyuuid.ToPYUUID() => 'PYUUID("00112233-4455-6677-8899-aabbccddeeff")'
// With any of the UUID variants you can use toHexUUID to echo the raw BinData with subtype and hex string:
// uuid.toHexUUID() => 'HexData(4, "00112233-4455-6677-8899-aabbccddeeff")'
// juuid.toHexUUID() => 'HexData(3, "77665544-3322-1100-ffee-ddccbbaa9988")'
// csuuid.toHexUUID() => 'HexData(3, "33221100-5544-7766-8899-aabbccddeeff")'
// pyuuid.toHexUUID() => 'HexData(3, "00112233-4455-6677-8899-aabbccddeeff")'
function HexToBase64(hex) {
var base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64 = "";
var group;
for (var i = 0; i < 30; i += 6) {
group = parseInt(hex.substr(i, 6), 16);
base64 += base64Digits[(group >> 18) & 0x3f];
base64 += base64Digits[(group >> 12) & 0x3f];
base64 += base64Digits[(group >> 6) & 0x3f];
base64 += base64Digits[group & 0x3f];
}
group = parseInt(hex.substr(30, 2), 16);
base64 += base64Digits[(group >> 2) & 0x3f];
base64 += base64Digits[(group << 4) & 0x3f];
base64 += "==";
return base64;
}
function Base64ToHex(base64) {
var base64Digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var hexDigits = "0123456789abcdef";
var hex = "";
for (var i = 0; i < 24; ) {
var e1 = base64Digits.indexOf(base64[i++]);
var e2 = base64Digits.indexOf(base64[i++]);
var e3 = base64Digits.indexOf(base64[i++]);
var e4 = base64Digits.indexOf(base64[i++]);
var c1 = (e1 << 2) | (e2 >> 4);
var c2 = ((e2 & 15) << 4) | (e3 >> 2);
var c3 = ((e3 & 3) << 6) | e4;
hex += hexDigits[c1 >> 4];
hex += hexDigits[c1 & 15];
if (e3 != 64) {
hex += hexDigits[c2 >> 4];
hex += hexDigits[c2 & 15];
}
if (e4 != 64) {
hex += hexDigits[c3 >> 4];
hex += hexDigits[c3 & 15];
}
}
return hex;
}
function UUID(uuid) {
var hex = uuid.replace(/[{}-]/g, ""); // remove extra characters
var base64 = HexToBase64(hex);
return new BinData(4, base64); // new subtype 4
}
function JUUID(uuid) {
var hex = uuid.replace(/[{}-]/g, ""); // remove extra characters
var msb = hex.substr(0, 16);
var lsb = hex.substr(16, 16);
msb = msb.substr(14, 2) + msb.substr(12, 2) + msb.substr(10, 2) + msb.substr(8, 2) + msb.substr(6, 2) + msb.substr(4, 2) + msb.substr(2, 2) + msb.substr(0, 2);
lsb = lsb.substr(14, 2) + lsb.substr(12, 2) + lsb.substr(10, 2) + lsb.substr(8, 2) + lsb.substr(6, 2) + lsb.substr(4, 2) + lsb.substr(2, 2) + lsb.substr(0, 2);
hex = msb + lsb;
var base64 = HexToBase64(hex);
return new BinData(3, base64);
}
function CSUUID(uuid) {
var hex = uuid.replace(/[{}-]/g, ""); // remove extra characters
var a = hex.substr(6, 2) + hex.substr(4, 2) + hex.substr(2, 2) + hex.substr(0, 2);
var b = hex.substr(10, 2) + hex.substr(8, 2);
var c = hex.substr(14, 2) + hex.substr(12, 2);
var d = hex.substr(16, 16);
hex = a + b + c + d;
var base64 = HexToBase64(hex);
return new BinData(3, base64);
}
function PYUUID(uuid) {
var hex = uuid.replace(/[{}-]/g, ""); // remove extra characters
var base64 = HexToBase64(hex);
return new BinData(3, base64);
}
BinData.prototype.toUUID = function () {
var hex = Base64ToHex(this.base64()); // don't use BinData's hex function because it has bugs in older versions of the shell
var uuid = hex.substr(0, 8) + '-' + hex.substr(8, 4) + '-' + hex.substr(12, 4) + '-' + hex.substr(16, 4) + '-' + hex.substr(20, 12);
return 'UUID("' + uuid + '")';
}
BinData.prototype.toJUUID = function () {
var hex = Base64ToHex(this.base64()); // don't use BinData's hex function because it has bugs in older versions of the shell
var msb = hex.substr(0, 16);
var lsb = hex.substr(16, 16);
msb = msb.substr(14, 2) + msb.substr(12, 2) + msb.substr(10, 2) + msb.substr(8, 2) + msb.substr(6, 2) + msb.substr(4, 2) + msb.substr(2, 2) + msb.substr(0, 2);
lsb = lsb.substr(14, 2) + lsb.substr(12, 2) + lsb.substr(10, 2) + lsb.substr(8, 2) + lsb.substr(6, 2) + lsb.substr(4, 2) + lsb.substr(2, 2) + lsb.substr(0, 2);
hex = msb + lsb;
var uuid = hex.substr(0, 8) + '-' + hex.substr(8, 4) + '-' + hex.substr(12, 4) + '-' + hex.substr(16, 4) + '-' + hex.substr(20, 12);
return 'JUUID("' + uuid + '")';
}
BinData.prototype.toCSUUID = function () {
var hex = Base64ToHex(this.base64()); // don't use BinData's hex function because it has bugs in older versions of the shell
var a = hex.substr(6, 2) + hex.substr(4, 2) + hex.substr(2, 2) + hex.substr(0, 2);
var b = hex.substr(10, 2) + hex.substr(8, 2);
var c = hex.substr(14, 2) + hex.substr(12, 2);
var d = hex.substr(16, 16);
hex = a + b + c + d;
var uuid = hex.substr(0, 8) + '-' + hex.substr(8, 4) + '-' + hex.substr(12, 4) + '-' + hex.substr(16, 4) + '-' + hex.substr(20, 12);
return 'CSUUID("' + uuid + '")';
}
BinData.prototype.toPYUUID = function () {
var hex = Base64ToHex(this.base64()); // don't use BinData's hex function because it has bugs
var uuid = hex.substr(0, 8) + '-' + hex.substr(8, 4) + '-' + hex.substr(12, 4) + '-' + hex.substr(16, 4) + '-' + hex.substr(20, 12);
return 'PYUUID("' + uuid + '")';
}
BinData.prototype.toHexUUID = function () {
var hex = Base64ToHex(this.base64()); // don't use BinData's hex function because it has bugs
var uuid = hex.substr(0, 8) + '-' + hex.substr(8, 4) + '-' + hex.substr(12, 4) + '-' + hex.substr(16, 4) + '-' + hex.substr(20, 12);
return 'HexData(' + this.subtype() + ', "' + uuid + '")';
}
function TestUUIDHelperFunctions() {
var s = "{00112233-4455-6677-8899-aabbccddeeff}";
var uuid = UUID(s);
var juuid = JUUID(s);
var csuuid = CSUUID(s);
var pyuuid = PYUUID(s);
print(uuid.toUUID());
print(juuid.toJUUID());
print(csuuid.toCSUUID());
print(pyuuid.toPYUUID());
print(uuid.toHexUUID());
print(juuid.toHexUUID());
print(csuuid.toHexUUID());
print(pyuuid.toHexUUID());
}