packages feed

punycode (empty) → 0.0.1.0

raw patch · 79 files changed

+893/−0 lines, 79 filesdep +basedep +bytestringdep +parsecsetup-changedbinary-added

Dependencies added: base, bytestring, parsec, text, text-icu

Files

+ .git/COMMIT_EDITMSG view
@@ -0,0 +1,13 @@+we want our encode function to return the input for non-international labels+# Please enter the commit message for your changes. Lines starting+# with '#' will be ignored, and an empty message aborts the commit.+# On branch master+# Changes to be committed:+#   (use "git reset HEAD <file>..." to unstage)+#+#	modified:   Data/Text/Punycode.hs+#+# Untracked files:+#   (use "git add <file>..." to include in what will be committed)+#+#	dist/
+ .git/HEAD view
@@ -0,0 +1,1 @@+ref: refs/heads/master
+ .git/config view
@@ -0,0 +1,11 @@+[core]+	repositoryformatversion = 0+	filemode = true+	bare = false+	logallrefupdates = true+[remote "origin"]+	url = git@github.com:jonkri/punycode.git+	fetch = +refs/heads/*:refs/remotes/origin/*+[branch "master"]+	remote = origin+	merge = refs/heads/master
+ .git/description view
@@ -0,0 +1,1 @@+Unnamed repository; edit this file 'description' to name the repository.
+ .git/hooks/applypatch-msg.sample view
@@ -0,0 +1,15 @@+#!/bin/sh+#+# An example hook script to check the commit log message taken by+# applypatch from an e-mail message.+#+# The hook should exit with non-zero status after issuing an+# appropriate message if it wants to stop the commit.  The hook is+# allowed to edit the commit message file.+#+# To enable this hook, rename this file to "applypatch-msg".++. git-sh-setup+test -x "$GIT_DIR/hooks/commit-msg" &&+	exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}+:
+ .git/hooks/commit-msg.sample view
@@ -0,0 +1,24 @@+#!/bin/sh+#+# An example hook script to check the commit log message.+# Called by "git commit" with one argument, the name of the file+# that has the commit message.  The hook should exit with non-zero+# status after issuing an appropriate message if it wants to stop the+# commit.  The hook is allowed to edit the commit message file.+#+# To enable this hook, rename this file to "commit-msg".++# Uncomment the below to add a Signed-off-by line to the message.+# Doing this in a hook is a bad idea in general, but the prepare-commit-msg+# hook is more suited to it.+#+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"++# This example catches duplicate Signed-off-by lines.++test "" = "$(grep '^Signed-off-by: ' "$1" |+	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || {+	echo >&2 Duplicate Signed-off-by lines.+	exit 1+}
+ .git/hooks/post-commit.sample view
@@ -0,0 +1,8 @@+#!/bin/sh+#+# An example hook script that is called after a successful+# commit is made.+#+# To enable this hook, rename this file to "post-commit".++: Nothing
+ .git/hooks/post-receive.sample view
@@ -0,0 +1,15 @@+#!/bin/sh+#+# An example hook script for the "post-receive" event.+#+# The "post-receive" script is run after receive-pack has accepted a pack+# and the repository has been updated.  It is passed arguments in through+# stdin in the form+#  <oldrev> <newrev> <refname>+# For example:+#  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master+#+# see contrib/hooks/ for a sample, or uncomment the next line and+# rename the file to "post-receive".++#. /usr/share/git-core/contrib/hooks/post-receive-email
+ .git/hooks/post-update.sample view
@@ -0,0 +1,8 @@+#!/bin/sh+#+# An example hook script to prepare a packed repository for use over+# dumb transports.+#+# To enable this hook, rename this file to "post-update".++exec git update-server-info
+ .git/hooks/pre-applypatch.sample view
@@ -0,0 +1,14 @@+#!/bin/sh+#+# An example hook script to verify what is about to be committed+# by applypatch from an e-mail message.+#+# The hook should exit with non-zero status after issuing an+# appropriate message if it wants to stop the commit.+#+# To enable this hook, rename this file to "pre-applypatch".++. git-sh-setup+test -x "$GIT_DIR/hooks/pre-commit" &&+	exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}+:
+ .git/hooks/pre-commit.sample view
@@ -0,0 +1,46 @@+#!/bin/sh+#+# An example hook script to verify what is about to be committed.+# Called by "git commit" with no arguments.  The hook should+# exit with non-zero status after issuing an appropriate message if+# it wants to stop the commit.+#+# To enable this hook, rename this file to "pre-commit".++if git rev-parse --verify HEAD >/dev/null 2>&1+then+	against=HEAD+else+	# Initial commit: diff against an empty tree object+	against=4b825dc642cb6eb9a060e54bf8d69288fbee4904+fi++# If you want to allow non-ascii filenames set this variable to true.+allownonascii=$(git config hooks.allownonascii)++# Cross platform projects tend to avoid non-ascii filenames; prevent+# them from being added to the repository. We exploit the fact that the+# printable range starts at the space character and ends with tilde.+if [ "$allownonascii" != "true" ] &&+	# Note that the use of brackets around a tr range is ok here, (it's+	# even required, for portability to Solaris 10's /usr/bin/tr), since+	# the square bracket bytes happen to fall in the designated range.+	test "$(git diff --cached --name-only --diff-filter=A -z $against |+	  LC_ALL=C tr -d '[ -~]\0')"+then+	echo "Error: Attempt to add a non-ascii file name."+	echo+	echo "This can cause problems if you want to work"+	echo "with people on other platforms."+	echo+	echo "To be portable it is advisable to rename the file ..."+	echo+	echo "If you know what you are doing you can disable this"+	echo "check using:"+	echo+	echo "  git config hooks.allownonascii true"+	echo+	exit 1+fi++exec git diff-index --check --cached $against --
+ .git/hooks/pre-rebase.sample view
@@ -0,0 +1,169 @@+#!/bin/sh+#+# Copyright (c) 2006, 2008 Junio C Hamano+#+# The "pre-rebase" hook is run just before "git rebase" starts doing+# its job, and can prevent the command from running by exiting with+# non-zero status.+#+# The hook is called with the following parameters:+#+# $1 -- the upstream the series was forked from.+# $2 -- the branch being rebased (or empty when rebasing the current branch).+#+# This sample shows how to prevent topic branches that are already+# merged to 'next' branch from getting rebased, because allowing it+# would result in rebasing already published history.++publish=next+basebranch="$1"+if test "$#" = 2+then+	topic="refs/heads/$2"+else+	topic=`git symbolic-ref HEAD` ||+	exit 0 ;# we do not interrupt rebasing detached HEAD+fi++case "$topic" in+refs/heads/??/*)+	;;+*)+	exit 0 ;# we do not interrupt others.+	;;+esac++# Now we are dealing with a topic branch being rebased+# on top of master.  Is it OK to rebase it?++# Does the topic really exist?+git show-ref -q "$topic" || {+	echo >&2 "No such branch $topic"+	exit 1+}++# Is topic fully merged to master?+not_in_master=`git rev-list --pretty=oneline ^master "$topic"`+if test -z "$not_in_master"+then+	echo >&2 "$topic is fully merged to master; better remove it."+	exit 1 ;# we could allow it, but there is no point.+fi++# Is topic ever merged to next?  If so you should not be rebasing it.+only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`+only_next_2=`git rev-list ^master           ${publish} | sort`+if test "$only_next_1" = "$only_next_2"+then+	not_in_topic=`git rev-list "^$topic" master`+	if test -z "$not_in_topic"+	then+		echo >&2 "$topic is already up-to-date with master"+		exit 1 ;# we could allow it, but there is no point.+	else+		exit 0+	fi+else+	not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`+	/usr/bin/perl -e '+		my $topic = $ARGV[0];+		my $msg = "* $topic has commits already merged to public branch:\n";+		my (%not_in_next) = map {+			/^([0-9a-f]+) /;+			($1 => 1);+		} split(/\n/, $ARGV[1]);+		for my $elem (map {+				/^([0-9a-f]+) (.*)$/;+				[$1 => $2];+			} split(/\n/, $ARGV[2])) {+			if (!exists $not_in_next{$elem->[0]}) {+				if ($msg) {+					print STDERR $msg;+					undef $msg;+				}+				print STDERR " $elem->[1]\n";+			}+		}+	' "$topic" "$not_in_next" "$not_in_master"+	exit 1+fi++exit 0++################################################################++This sample hook safeguards topic branches that have been+published from being rewound.++The workflow assumed here is:++ * Once a topic branch forks from "master", "master" is never+   merged into it again (either directly or indirectly).++ * Once a topic branch is fully cooked and merged into "master",+   it is deleted.  If you need to build on top of it to correct+   earlier mistakes, a new topic branch is created by forking at+   the tip of the "master".  This is not strictly necessary, but+   it makes it easier to keep your history simple.++ * Whenever you need to test or publish your changes to topic+   branches, merge them into "next" branch.++The script, being an example, hardcodes the publish branch name+to be "next", but it is trivial to make it configurable via+$GIT_DIR/config mechanism.++With this workflow, you would want to know:++(1) ... if a topic branch has ever been merged to "next".  Young+    topic branches can have stupid mistakes you would rather+    clean up before publishing, and things that have not been+    merged into other branches can be easily rebased without+    affecting other people.  But once it is published, you would+    not want to rewind it.++(2) ... if a topic branch has been fully merged to "master".+    Then you can delete it.  More importantly, you should not+    build on top of it -- other people may already want to+    change things related to the topic as patches against your+    "master", so if you need further changes, it is better to+    fork the topic (perhaps with the same name) afresh from the+    tip of "master".++Let's look at this example:++		   o---o---o---o---o---o---o---o---o---o "next"+		  /       /           /           /+		 /   a---a---b A     /           /+		/   /               /           /+	       /   /   c---c---c---c B         /+	      /   /   /             \         /+	     /   /   /   b---b C     \       /+	    /   /   /   /             \     /+    ---o---o---o---o---o---o---o---o---o---o---o "master"+++A, B and C are topic branches.++ * A has one fix since it was merged up to "next".++ * B has finished.  It has been fully merged up to "master" and "next",+   and is ready to be deleted.++ * C has not merged to "next" at all.++We would want to allow C to be rebased, refuse A, and encourage+B to be deleted.++To compute (1):++	git rev-list ^master ^topic next+	git rev-list ^master        next++	if these match, topic has not merged in next at all.++To compute (2):++	git rev-list master..topic++	if this is empty, it is fully merged to "master".
+ .git/hooks/prepare-commit-msg.sample view
@@ -0,0 +1,36 @@+#!/bin/sh+#+# An example hook script to prepare the commit log message.+# Called by "git commit" with the name of the file that has the+# commit message, followed by the description of the commit+# message's source.  The hook's purpose is to edit the commit+# message file.  If the hook fails with a non-zero status,+# the commit is aborted.+#+# To enable this hook, rename this file to "prepare-commit-msg".++# This hook includes three examples.  The first comments out the+# "Conflicts:" part of a merge commit.+#+# The second includes the output of "git diff --name-status -r"+# into the message, just before the "git status" output.  It is+# commented because it doesn't cope with --amend or with squashed+# commits.+#+# The third example adds a Signed-off-by line to the message, that can+# still be edited.  This is rarely a good idea.++case "$2,$3" in+  merge,)+    /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;++# ,|template,)+#   /usr/bin/perl -i.bak -pe '+#      print "\n" . `git diff --cached --name-status -r`+#	 if /^#/ && $first++ == 0' "$1" ;;++  *) ;;+esac++# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
+ .git/hooks/update.sample view
@@ -0,0 +1,128 @@+#!/bin/sh+#+# An example hook script to blocks unannotated tags from entering.+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new+#+# To enable this hook, rename this file to "update".+#+# Config+# ------+# hooks.allowunannotated+#   This boolean sets whether unannotated tags will be allowed into the+#   repository.  By default they won't be.+# hooks.allowdeletetag+#   This boolean sets whether deleting tags will be allowed in the+#   repository.  By default they won't be.+# hooks.allowmodifytag+#   This boolean sets whether a tag may be modified after creation. By default+#   it won't be.+# hooks.allowdeletebranch+#   This boolean sets whether deleting branches will be allowed in the+#   repository.  By default they won't be.+# hooks.denycreatebranch+#   This boolean sets whether remotely creating branches will be denied+#   in the repository.  By default this is allowed.+#++# --- Command line+refname="$1"+oldrev="$2"+newrev="$3"++# --- Safety check+if [ -z "$GIT_DIR" ]; then+	echo "Don't run this script from the command line." >&2+	echo " (if you want, you could supply GIT_DIR then run" >&2+	echo "  $0 <ref> <oldrev> <newrev>)" >&2+	exit 1+fi++if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then+	echo "Usage: $0 <ref> <oldrev> <newrev>" >&2+	exit 1+fi++# --- Config+allowunannotated=$(git config --bool hooks.allowunannotated)+allowdeletebranch=$(git config --bool hooks.allowdeletebranch)+denycreatebranch=$(git config --bool hooks.denycreatebranch)+allowdeletetag=$(git config --bool hooks.allowdeletetag)+allowmodifytag=$(git config --bool hooks.allowmodifytag)++# check for no description+projectdesc=$(sed -e '1q' "$GIT_DIR/description")+case "$projectdesc" in+"Unnamed repository"* | "")+	echo "*** Project description file hasn't been set" >&2+	exit 1+	;;+esac++# --- Check types+# if $newrev is 0000...0000, it's a commit to delete a ref.+zero="0000000000000000000000000000000000000000"+if [ "$newrev" = "$zero" ]; then+	newrev_type=delete+else+	newrev_type=$(git cat-file -t $newrev)+fi++case "$refname","$newrev_type" in+	refs/tags/*,commit)+		# un-annotated tag+		short_refname=${refname##refs/tags/}+		if [ "$allowunannotated" != "true" ]; then+			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2+			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2+			exit 1+		fi+		;;+	refs/tags/*,delete)+		# delete tag+		if [ "$allowdeletetag" != "true" ]; then+			echo "*** Deleting a tag is not allowed in this repository" >&2+			exit 1+		fi+		;;+	refs/tags/*,tag)+		# annotated tag+		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1+		then+			echo "*** Tag '$refname' already exists." >&2+			echo "*** Modifying a tag is not allowed in this repository." >&2+			exit 1+		fi+		;;+	refs/heads/*,commit)+		# branch+		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then+			echo "*** Creating a branch is not allowed in this repository" >&2+			exit 1+		fi+		;;+	refs/heads/*,delete)+		# delete branch+		if [ "$allowdeletebranch" != "true" ]; then+			echo "*** Deleting a branch is not allowed in this repository" >&2+			exit 1+		fi+		;;+	refs/remotes/*,commit)+		# tracking branch+		;;+	refs/remotes/*,delete)+		# delete tracking branch+		if [ "$allowdeletebranch" != "true" ]; then+			echo "*** Deleting a tracking branch is not allowed in this repository" >&2+			exit 1+		fi+		;;+	*)+		# Anything else (is there anything else?)+		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2+		exit 1+		;;+esac++# --- Finished+exit 0
+ .git/index view

binary file changed (absent → 416 bytes)

+ .git/info/exclude view
@@ -0,0 +1,6 @@+# git ls-files --others --exclude-from=.git/info/exclude+# Lines that start with '#' are comments.+# For a project mostly in C, the following would be a good set of+# exclude patterns (uncomment them if you want to use them):+# *.[oa]+# *~
+ .git/logs/HEAD view
@@ -0,0 +1,12 @@+0000000000000000000000000000000000000000 53eba928bca75be4bf30ed746f8677fa80597829 Jon Kristensen <info@jonkristensen.com> 1309724349 +0200	commit (initial): initial commit with README file+53eba928bca75be4bf30ed746f8677fa80597829 0163dcbb5a184f54262f50a3596a181f586f3aa5 Jon Kristensen <info@jonkristensen.com> 1309724429 +0200	commit: added LICENSE file+0163dcbb5a184f54262f50a3596a181f586f3aa5 f185e80639824829958ad776ea7849477768ced1 Jon Kristensen <info@jonkristensen.com> 1309724680 +0200	commit: added Cabal file+f185e80639824829958ad776ea7849477768ced1 8f6a06e70e51dcb660d55f99392342cc5fcac890 Jon Kristensen <info@jonkristensen.com> 1309724712 +0200	commit: added Setup.hs file+8f6a06e70e51dcb660d55f99392342cc5fcac890 2b7f6a6b20f86b7d4c8f6773320bb129f1fbfa78 Jon Kristensen <info@jonkristensen.com> 1309724820 +0200	commit: added Punycode module and updated the Cabal file+2b7f6a6b20f86b7d4c8f6773320bb129f1fbfa78 0608637f3a9663403bcf5aa5fbb912293817c7df Jon Kristensen <info@jonkristensen.com> 1309781060 +0200	commit: Made an implementation of the adapt function+0608637f3a9663403bcf5aa5fbb912293817c7df 8512c51cba7ca3ee75b665f16d7bd67c94754713 Jon Kristensen <info@jonkristensen.com> 1309783508 +0200	commit: some Haddock documentation, some clean-up, some minor Cabal changes, some stubs+8512c51cba7ca3ee75b665f16d7bd67c94754713 0d568849e909c947e83f21120b4603a34461459d Jon Kristensen <info@jonkristensen.com> 1309809242 +0200	commit: prototyped the encode function. it seems to mostly work+0d568849e909c947e83f21120b4603a34461459d 5bff51646c0ee8c33c07478a0f1933a3cbea6bd8 Jon Kristensen <info@jonkristensen.com> 1309852382 +0200	commit: fixed the suffix bug+5bff51646c0ee8c33c07478a0f1933a3cbea6bd8 029db06c06e1114f3cf89e750eadc5ba087f07b2 Jon Kristensen <info@jonkristensen.com> 1309855512 +0200	commit: some minor changes. if no more bugs are detected today or tomorrow, this will be 0.0.1.0+029db06c06e1114f3cf89e750eadc5ba087f07b2 130df5810ba24bd068a65b15c75743e8734c2472 Jon Kristensen <info@jonkristensen.com> 1309855699 +0200	commit: updated the README file+130df5810ba24bd068a65b15c75743e8734c2472 5c1c69bbf6b0e2183b189cfd51cfdb89661eb69e Jon Kristensen <info@jonkristensen.com> 1309864002 +0200	commit: we want our encode function to return the input for non-international labels
+ .git/logs/refs/heads/master view
@@ -0,0 +1,12 @@+0000000000000000000000000000000000000000 53eba928bca75be4bf30ed746f8677fa80597829 Jon Kristensen <info@jonkristensen.com> 1309724349 +0200	commit (initial): initial commit with README file+53eba928bca75be4bf30ed746f8677fa80597829 0163dcbb5a184f54262f50a3596a181f586f3aa5 Jon Kristensen <info@jonkristensen.com> 1309724429 +0200	commit: added LICENSE file+0163dcbb5a184f54262f50a3596a181f586f3aa5 f185e80639824829958ad776ea7849477768ced1 Jon Kristensen <info@jonkristensen.com> 1309724680 +0200	commit: added Cabal file+f185e80639824829958ad776ea7849477768ced1 8f6a06e70e51dcb660d55f99392342cc5fcac890 Jon Kristensen <info@jonkristensen.com> 1309724712 +0200	commit: added Setup.hs file+8f6a06e70e51dcb660d55f99392342cc5fcac890 2b7f6a6b20f86b7d4c8f6773320bb129f1fbfa78 Jon Kristensen <info@jonkristensen.com> 1309724820 +0200	commit: added Punycode module and updated the Cabal file+2b7f6a6b20f86b7d4c8f6773320bb129f1fbfa78 0608637f3a9663403bcf5aa5fbb912293817c7df Jon Kristensen <info@jonkristensen.com> 1309781060 +0200	commit: Made an implementation of the adapt function+0608637f3a9663403bcf5aa5fbb912293817c7df 8512c51cba7ca3ee75b665f16d7bd67c94754713 Jon Kristensen <info@jonkristensen.com> 1309783508 +0200	commit: some Haddock documentation, some clean-up, some minor Cabal changes, some stubs+8512c51cba7ca3ee75b665f16d7bd67c94754713 0d568849e909c947e83f21120b4603a34461459d Jon Kristensen <info@jonkristensen.com> 1309809242 +0200	commit: prototyped the encode function. it seems to mostly work+0d568849e909c947e83f21120b4603a34461459d 5bff51646c0ee8c33c07478a0f1933a3cbea6bd8 Jon Kristensen <info@jonkristensen.com> 1309852382 +0200	commit: fixed the suffix bug+5bff51646c0ee8c33c07478a0f1933a3cbea6bd8 029db06c06e1114f3cf89e750eadc5ba087f07b2 Jon Kristensen <info@jonkristensen.com> 1309855512 +0200	commit: some minor changes. if no more bugs are detected today or tomorrow, this will be 0.0.1.0+029db06c06e1114f3cf89e750eadc5ba087f07b2 130df5810ba24bd068a65b15c75743e8734c2472 Jon Kristensen <info@jonkristensen.com> 1309855699 +0200	commit: updated the README file+130df5810ba24bd068a65b15c75743e8734c2472 5c1c69bbf6b0e2183b189cfd51cfdb89661eb69e Jon Kristensen <info@jonkristensen.com> 1309864002 +0200	commit: we want our encode function to return the input for non-international labels
+ .git/logs/refs/remotes/origin/master view
@@ -0,0 +1,12 @@+0000000000000000000000000000000000000000 53eba928bca75be4bf30ed746f8677fa80597829 Jon Kristensen <info@jonkristensen.com> 1309724379 +0200	update by push+53eba928bca75be4bf30ed746f8677fa80597829 0163dcbb5a184f54262f50a3596a181f586f3aa5 Jon Kristensen <info@jonkristensen.com> 1309724441 +0200	update by push+0163dcbb5a184f54262f50a3596a181f586f3aa5 f185e80639824829958ad776ea7849477768ced1 Jon Kristensen <info@jonkristensen.com> 1309724700 +0200	update by push+f185e80639824829958ad776ea7849477768ced1 8f6a06e70e51dcb660d55f99392342cc5fcac890 Jon Kristensen <info@jonkristensen.com> 1309724731 +0200	update by push+8f6a06e70e51dcb660d55f99392342cc5fcac890 2b7f6a6b20f86b7d4c8f6773320bb129f1fbfa78 Jon Kristensen <info@jonkristensen.com> 1309724839 +0200	update by push+2b7f6a6b20f86b7d4c8f6773320bb129f1fbfa78 0608637f3a9663403bcf5aa5fbb912293817c7df Jon Kristensen <info@jonkristensen.com> 1309781092 +0200	update by push+0608637f3a9663403bcf5aa5fbb912293817c7df 8512c51cba7ca3ee75b665f16d7bd67c94754713 Jon Kristensen <info@jonkristensen.com> 1309783544 +0200	update by push+8512c51cba7ca3ee75b665f16d7bd67c94754713 0d568849e909c947e83f21120b4603a34461459d Jon Kristensen <info@jonkristensen.com> 1309809371 +0200	update by push+0d568849e909c947e83f21120b4603a34461459d 5bff51646c0ee8c33c07478a0f1933a3cbea6bd8 Jon Kristensen <info@jonkristensen.com> 1309852413 +0200	update by push+5bff51646c0ee8c33c07478a0f1933a3cbea6bd8 029db06c06e1114f3cf89e750eadc5ba087f07b2 Jon Kristensen <info@jonkristensen.com> 1309855556 +0200	update by push+029db06c06e1114f3cf89e750eadc5ba087f07b2 130df5810ba24bd068a65b15c75743e8734c2472 Jon Kristensen <info@jonkristensen.com> 1309855715 +0200	update by push+130df5810ba24bd068a65b15c75743e8734c2472 5c1c69bbf6b0e2183b189cfd51cfdb89661eb69e Jon Kristensen <info@jonkristensen.com> 1309864034 +0200	update by push
+ .git/objects/01/63dcbb5a184f54262f50a3596a181f586f3aa5 view

binary file changed (absent → 175 bytes)

+ .git/objects/02/9db06c06e1114f3cf89e750eadc5ba087f07b2 view
@@ -0,0 +1,2 @@+x¥KNÄ0DYç½Eí_âH±†SøÓž˜»‘íшÛã`YO¥Ò«À¥äJ˜§ÑˆÀYt&šè“‡Ñ›NÒÈݐJ‚¤öÇNvF…Ë·kTŸ’›ÞÙ TÀ]ïÖa‡RNOnóÑ.î>NnðÁ>[îƒj§+¯¹&~ÿâzýckàòBáa1BÂ3JÄeÒ):èKçBPrátõB}…œ 2nþ~é0oA¤AaP„ÁÑýÀ¬žÆgîðÈ·x\q+.¿wAgO
+ .git/objects/06/08637f3a9663403bcf5aa5fbb912293817c7df view
@@ -0,0 +1,1 @@+x¥ŽKn!³æ½5`Ó E–×±r>Ý2I€Ñßßdãx[O¯Ty´V'Òosg’ì1ÃH´I>g-ž=Z>Úâ‚%íÕwîë˜H\tÉ x—¨²Gd­Á”´	¢%I$¯â}^Ç_£Ãe¯·ÉýÆ>k—qþý÷É>òh'Ðyá
¢Zt…N~A¡¾caˆjÛþ¸­ü8ëê󺆷	rïùŸªåNYM
+ .git/objects/0d/568849e909c947e83f21120b4603a34461459d view
@@ -0,0 +1,3 @@+x¥P;nÄ LÍ)^ŸhƀWŠ¢ÔÉ)ð㓵y`9{û°M.fŠÑü4Èۖh;>µBˆFÍÖ)ÂIê C”ÒÌhôHh¢“c¤ôÖ±ûB¹ÁdÔÐ-8{‡^93[k¢²ÁÍÁ:¼ŽÎŒNi᏶pÎðYRm”+exM9òû7çÛwAÞÞ@iyäux–½St¶mô±nÜî;heä@Œ-q¾@?¢mÃÆµ­w8¹Ü„x¨çãR…¾M™@Y
ç’pôG¥+NJ%@=bL?/àLë++ó
|ë…àKáSüJyà
+ .git/objects/0d/f8fa07e84fe3fed2a2aec504a82fe3c062829b view

binary file changed (absent → 801 bytes)

+ .git/objects/13/0df5810ba24bd068a65b15c75743e8734c2472 view

binary file changed (absent → 176 bytes)

+ .git/objects/18/a76a36c99a177df4fa1d4edfa3254f21198b3e view

binary file changed (absent → 2789 bytes)

+ .git/objects/27/ffeecc508bb39739af2def53d22f9db96f7233 view

binary file changed (absent → 184 bytes)

+ .git/objects/2a/76dd32a10dac62fab910b5d4e1c29001a13ba4 view

binary file changed (absent → 46 bytes)

+ .git/objects/2b/7f6a6b20f86b7d4c8f6773320bb129f1fbfa78 view

binary file changed (absent → 189 bytes)

+ .git/objects/35/653898400ef0f128dc9f629abaeb1704c6b7c4 view

binary file changed (absent → 121 bytes)

+ .git/objects/39/255027b23d0c3728f63493a0169b16e9db3de9 view

binary file changed (absent → 831 bytes)

+ .git/objects/3d/2f3f6f30b28b332f278e720594b388883a25e1 view

binary file changed (absent → 56 bytes)

+ .git/objects/3f/bb0e281a38c4ef74db799ff0adf2279f97782a view

binary file changed (absent → 56 bytes)

+ .git/objects/46/ad3d63640865c60723d6d4e0c6b9c8cddc8871 view

binary file changed (absent → 46 bytes)

+ .git/objects/53/eba928bca75be4bf30ed746f8677fa80597829 view
@@ -0,0 +1,2 @@+x¥ÍM+Â0@a×9Åì™æ§5 ¢`7Šo“	mH#^߂àܾÅ÷|ž&® \ÕBQ#ÝDk¼iÑÉ.(gP™ÐÞ}°Úm±sDÖ÷ªC.pÎ	.…çJi¦;N19=mãó´‡F¡í¤VÚÂ%¢Xê2®ô!8qe7Âׂ7×nýñtí!òHâQ×FF
+ .git/objects/5b/ff51646c0ee8c33c07478a0f1933a3cbea6bd8 view
@@ -0,0 +1,2 @@+x¥ŽK+Â0@]ç³d2ùt"®õi3±UšH›‚Ç·+/àò½Åã
už§d»C[D@ò€˜8!']çS’1'Œ¹#4htìÕ;.R`ržÙ	†`;a“IkÂÞz4ÑXëµu!©¸µ±.p«îË´6)«8O%×볖×ϝ†:_@ìÈ0Á	QívmòGBåé#	Ú(°ny跇úN:Ob
+ .git/objects/5c/1c69bbf6b0e2183b189cfd51cfdb89661eb69e view

binary file changed (absent → 203 bytes)

+ .git/objects/62/cad6920027644a32e8791f6c043b635e74eb20 view

binary file changed (absent → 785 bytes)

+ .git/objects/6a/5da3c83e102878b6a5d504c5b9cd272a0408b2 view

binary file changed (absent → 46 bytes)

+ .git/objects/74/1d6a4f06115b0ea1d047c8cf2ec08785395bd0 view

binary file changed (absent → 185 bytes)

+ .git/objects/78/05a40b998fdfba12625f5ad8bf8fcfbeb439f4 view

binary file changed (absent → 46 bytes)

+ .git/objects/7b/772f5040ca692e15127ab20087d8dc08122d46 view

binary file changed (absent → 46 bytes)

+ .git/objects/7b/8db4acfd92fea8939354f9e07091635a6540d4 view

binary file changed (absent → 404 bytes)

+ .git/objects/7d/cad7423ffee1641921b3ec7cb7c8bd9efe950c view

binary file changed (absent → 46 bytes)

+ .git/objects/7f/c85a942ed2e07e912b8cc1f8e803e53d693718 view

binary file changed (absent → 184 bytes)

+ .git/objects/84/99ea1219f0dc85651bd99eeba130f757b35311 view

binary file changed (absent → 56 bytes)

+ .git/objects/85/12c51cba7ca3ee75b665f16d7bd67c94754713 view
@@ -0,0 +1,1 @@+x¥ÁJ1D=ç+ú¾*™´“L@dÁ‹èWt’nwv7É2Éü¿AÀKAUAñ*֜רíCߘÁ8æg½„€Þ¡'1‰eÆdŒø¼gՍ6.´Õ‹E'HÞZ|Ñ¢ÌD³„à'c<.“‹.‰¢½ŸêŸµÀ×¶¶Î¥q×µH=žk¹üeϱæ7˜P{·àÀ€ƒ6Z«‘ÐÎÿ˜P­f†J©ÆÙó¸@}­å~»xe*OûínóZò;ºB<QùævoZßCS?O<eë
+ .git/objects/87/03890913fdb53e96d74639df2085cfff491422 view

binary file changed (absent → 56 bytes)

+ .git/objects/87/b967ef95d00f5e64258d720281208bb1d323f7 view

binary file changed (absent → 184 bytes)

+ .git/objects/8b/f24ce8f6c08355ad229ed9049f3f69176fdd04 view

binary file changed (absent → 2515 bytes)

+ .git/objects/8f/6a06e70e51dcb660d55f99392342cc5fcac890 view

binary file changed (absent → 169 bytes)

+ .git/objects/9b/fa009ea8720edb4754ff445a88b0f089b7049b view

binary file changed (absent → 2547 bytes)

+ .git/objects/a8/0a5d5dbf4c95464f25275e3f1e24b97e827530 view

binary file changed (absent → 184 bytes)

+ .git/objects/b0/d07da498268c45494abecd22354f48ba5cb97e view

binary file changed (absent → 827 bytes)

+ .git/objects/b5/823f3a2b78cac7f13dc982e8ce6321e5e2a6dd view

binary file changed (absent → 788 bytes)

+ .git/objects/c7/87e0f52ea535f9601401e5cfc3a0884d97466f view

binary file changed (absent → 56 bytes)

+ .git/objects/cc/51b671ec803d0df005bc534ec5f704d200a6a5 view

binary file changed (absent → 184 bytes)

+ .git/objects/d0/898a171ae32850864a60a47264aa45f451b544 view

binary file changed (absent → 46 bytes)

+ .git/objects/d4/a955a7c342d457f00ae7191982120dd60228ce view

binary file changed (absent → 82 bytes)

+ .git/objects/df/8539007d0f3099536b78dbe30dd697ac711b81 view

binary file changed (absent → 306 bytes)

+ .git/objects/e8/ef27dbba9992f80d9271a60892aadc63c9ef36 view

binary file changed (absent → 60 bytes)

+ .git/objects/eb/aab0733f361ac8dcbd89fa042713114c919092 view

binary file changed (absent → 185 bytes)

+ .git/objects/ef/c092828d08e8d6a576db0ef0fd0af7203031ab view

binary file changed (absent → 184 bytes)

+ .git/objects/f1/830f88eccad143bc84b219633c85d8503efb27 view

binary file changed (absent → 56 bytes)

+ .git/objects/f1/85e80639824829958ad776ea7849477768ced1 view

binary file changed (absent → 167 bytes)

+ .git/objects/f3/f5940b48982e8e840339162bda5d49ec434155 view

binary file changed (absent → 56 bytes)

+ .git/objects/f4/00d41f95c560a27d3a5035d6bcd94a807aee9c view

binary file changed (absent → 51 bytes)

+ .git/objects/f5/1e9243591607b228887c501811a8d68a36fbf4 view

binary file changed (absent → 2787 bytes)

+ .git/objects/f5/daa3932cab2c8ee9bc73a6475a20c8ff20960b view

binary file changed (absent → 1720 bytes)

+ .git/objects/fb/f918c9e7d1bc84f134134dbd8f2000c10d4e1c view

binary file changed (absent → 154 bytes)

+ .git/objects/fd/ea5be35e03f22dce0423511443ffad7221107e view
@@ -0,0 +1,2 @@+xuSËnœ0횯8»ÎC@ª4‰,’*RW­š|@Ll2ր=әªé¿÷Úb”	û¾Î=Üs]ÖºD–]§ŸÍûZà3ló(Nfó³Wž58îD+¢(âƒaF Î¿(%ë°Ýâ»2âE´Þ+¨ ÿIT¬¯ÍY¬_ós(€Å)åW"*Y'Xo¸¸Œ"ÓȰ£·©ÒFØ),rvœŠº½8†!gޕýñ憜M<Ӕx¬×¸ouƒ_÷w¸ør#~ÏFj…ËM–l)nSª^y'ãì`b.jÃVªoZ*Ó­*ÙvÆÈF¸¡¬0ù`vB¡®ŒfàO.ÃR±ø€¨iç“rŸñ>¸„g5±IÞÒ÷Ô,õæq'i=|çı›ÿvÖ	>ÓÉN‰ÃÉÁ5Jñ"•/ĬfaªmºÇ¶ƒ÷Åý¥¦o•‹Æ3+”žYŽŸç1üÚVÉ$‰"7ú@G¬oƵµ×[­ëÀ5æsÚºŠÕZ‚/Ürú71î:_°Óò’·pBz9žhÌON2¯ÖèɉýxWÑTï:¾=­€[pg'8R{µ|(˜§”ÿsO&Ü(¶8>}¦Ü<󚶵=JZF¯ây™‹d³¸ƒHôœ6¼Ýˆod'ÇíuMÇ
+ .git/objects/fe/658ec2983d9b15c4ba1b0fb8d98535ce085d38 view

binary file changed (absent → 73 bytes)

+ .git/refs/heads/master view
@@ -0,0 +1,1 @@+5c1c69bbf6b0e2183b189cfd51cfdb89661eb69e
+ .git/refs/remotes/origin/master view
@@ -0,0 +1,1 @@+5c1c69bbf6b0e2183b189cfd51cfdb89661eb69e
+ Data/Text/Punycode.hs view
@@ -0,0 +1,238 @@+-- |+-- Module:      $Header$+-- Description: Encoding function for Punycode+-- Copyright:   Copyright © 2011 Jon Kristensen+-- License:     BSD3+--+-- Maintainer:  jon.kristensen@pontarius.org+-- Stability:   unstable+-- Portability: portable+--+-- Uniquely and reversibly transform a Unicode string into an ASCII string.+-- 0.0.2.0 will support going the other way - from ASCII to Unicode.+++-- TODO: Assmuption: All code points less than initial_n (128) are basic code+-- points; code points are unsigned.+++module Data.Text.Punycode (encode) where+++import Data.Text (Text)++import Data.Char (chr, intToDigit, isAlphaNum, isAscii, ord, toUpper)+++base :: Int++base = 36+++tmin :: Int++tmin = 1+++tmax :: Int++tmax = 26+++skew :: Int++skew = 38+++damp :: Int++damp = 700+++initial_bias :: Int++initial_bias = 72+++initial_n :: Int++initial_n = 128 -- The first character after the ASCII characters+++-- decode will implement the following pseudo code from Section 6.2 of RFC 3492:+--+-- let n = initial_n+-- let i = 0+-- let bias = initial_bias+-- let output = an empty string indexed from 0+-- consume all code points before the last delimiter (if there is one)+--   and copy them to output, fail on any non-basic code point+-- if more than zero code points were consumed then consume one more+--   (which will be the last delimiter)+-- while the input is not exhausted do begin+--   let oldi = i+--   let w = 1+--   for k = base to infinity in steps of base do begin+--     consume a code point, or fail if there was none to consume+--     let digit = the code point's digit-value, fail if it has none+--     let i = i + digit * w, fail on overflow+--     let t = tmin if k <= bias {+ tmin}, or+--             tmax if k >= bias + tmax, or k - bias otherwise+--     if digit < t then break+--     let w = w * (base - t), fail on overflow+--   end+--   let bias = adapt(i - oldi, length(output) + 1, test oldi is 0?)+--   let n = n + i div (length(output) + 1), fail on overflow+--   let i = i mod (length(output) + 1)+--   {if n is a basic code point then fail}+--   insert n into output at position i+--   increment i+-- end+++-- |+-- Encodes a Unicode label to a Punycode-encoded ASCII string. The encoding does+-- not prepend the IDNA @\"xn--\"@ prefix. The output is lower-cased.++-- TODO: Support for mixed cases (see Appendix A in the RFC)++-- encode implements the following pseudo code from Section 6.3 of RFC 3492:+--+-- let n = initial_n+-- let delta = 0+-- let bias = initial_bias+-- let h = b = the number of basic code points in the input+-- copy them to the output in order, followed by a delimiter if b > 0+-- {if the input contains a non-basic code point < n then fail}+-- while h < length(input) do begin+--   let m = the minimum {non-basic} code point >= n in the input+--   let delta = delta + (m - n) * (h + 1), fail on overflow+--   let n = m+--   for each code point c in the input (in order) do begin+--     if c < n {or c is basic} then increment delta, fail on overflow+--     if c == n then begin+--       let q = delta+--       for k = base to infinity in steps of base do begin+--         let t = tmin if k <= bias {+ tmin}, or+--                 tmax if k >= bias + tmax, or k - bias otherwise+--         if q < t then break+--         output the code point for digit t + ((q - t) mod (base - t))+--         let q = (q - t) div (base - t)+--       end+--       output the code point for digit q+--       let bias = adapt(delta, h + 1, test h equals b?)+--       let delta = 0+--       increment h+--     end+--   end+--   increment delta and n+-- end++encode :: String -> Maybe String++encode i = let n = initial_n+               delta = 0+               bias = initial_bias+               h = b+               output = if (length $ basic_codepoints) == 0+                        then ""+                        else basic_codepoints ++ ['-']+           -- TODO: Fail for non-basic code point < n+           in if b == length i then Just i else loop output n delta bias h+    where++        b :: Int+        b = length basic_codepoints++        basic_codepoints :: String+        basic_codepoints = filter isAsciiAlphaNum i++        -- while h < length(input)+        loop :: String -> Int -> Int -> Int -> Int -> Maybe String+        loop output n delta bias h+            | h < (length i) = let m = minimum $ filter (>= n) $ map ord i+                                   delta' = delta + (m - n) * (h + 1) -- TODO: Overflow?+                                   n' = m+                                   (output', delta'', h') = loop' i output n' delta' bias h+                               in loop output' (n' + 1) (delta'' + 1) bias h'+            | otherwise = Just output++        -- for each code point+        loop' :: String -> String -> Int -> Int -> Int -> Int -> (String, Int, Int)+        loop' [] output _ delta _ h = (output, delta, h)+        loop' (c:cs) output n delta bias h+            | ord c < n = loop' cs output n delta bias h+            | ord c == n = let q = delta+                               (output', q') = loop'' base output bias q+                               -- TODO: output'' seems to add an unnecessary+                               -- character... I'll investigate this more+                               -- tomorrow+                               output'' = output' ++ [toDigitValue q']+                           in loop' cs output'' n 0 (adapt delta (h + 1) (h == b)) (h + 1)++        -- for k = base...+        loop'' :: Int -> String -> Int -> Int -> (String, Int)+        loop'' k output bias q+            | q < t = (output, q)+            | otherwise = let output' = output ++ [toDigitValue (t + ((q - t) `mod` (base - t)))]+                              q' = (q - t) `div` (base - t)+                          in loop'' (k + base) output' bias q'+            where+                t = if k <= bias + tmin then tmin else if k >= bias + tmax then tmax else k - bias+                          -- TODO: ^^^^+++-- Returns true if the Char is ASCII, alpha-numeric, or a hyphen.++-- TODO: Ugly function++isAsciiAlphaNum :: Char -> Bool++isAsciiAlphaNum '-' = True++isAsciiAlphaNum c = isAscii c && isAlphaNum c+++-- adapt implements the following pseudo code from Section 6.1 of RFC 3492:+--+-- function adapt(delta,numpoints,firsttime):+--   if firsttime then let delta = delta div damp+--   else let delta = delta div 2+--   let delta = delta + (delta div numpoints)+--   let k = 0+--   while delta > ((base - tmin) * tmax) div 2 do begin+--     let delta = delta div (base - tmin)+--     let k = k + base+--   end+--   return k + (((base - tmin + 1) * delta) div (delta + skew))++adapt :: Int -> Int -> Bool -> Int++adapt d n f = loop 0 d'+    where++        d' :: Int+        d' = if f then d `div` damp else d `div` 2 + d `div` n++        loop :: Int -> Int -> Int+        loop k d''+            | d'' > ((base - tmin) * tmax) `div` 2 = loop (k + base)+                (d'' `div` (base - tmin))+            | otherwise = k + ((base - tmin + 1) * d'') `div` (d'' + skew)+++-- Maps a character to its Punycode digit value; 0-25 for characters, 26-35 for+-- digits.++-- toDigitValue :: Char -> Int+--+-- toDigitValue c | c `elem` ['0'..'9'] = digitToInt c + 30+--                | toUpper c `elem` ['A'..'Z'] = ord (toUpper c) - 65+++-- The 0-25 digits are mapped to 'a'-'z', 26-35 to '0'-'9'.++toDigitValue :: Int -> Char++toDigitValue i | i >= 0 && i <= 25 = chr $ 97 + i+               | i >= 26 && i <= 35 = intToDigit $ i - 26
+ LICENSE view
@@ -0,0 +1,28 @@+Copyright © 2010-2011, Jon Kristensen.++All rights reserved.++Redistribution and use in source and binary forms, with or without modification,+are permitted provided that the following conditions are met:++  * Redistributions of source code must retain the above copyright notice, this+    list of conditions and the following disclaimer.++  * Redistributions in binary form must reproduce the above copyright notice,+    this list of conditions and the following disclaimer in the documentation+    and/or other materials provided with the distribution.++  * The names of the punycode project's contributors may not be used to endorse+    or promote products derived from this software without specific prior+    written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE+DISCLAIMED. IN NO EVENT SHALL JON KRISTENSEN BE LIABLE FOR ANY DIRECT, INDIRECT,+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ README view
@@ -0,0 +1,14 @@+The goal of this Haskell library is to support unique and reversible+transformations of Unicode strings to ASCII strings, and the other way around.+It will be an implementation of RFC 3492: Punycode: A Bootstring encoding of+Unicode for Internationalized Domain Names in Applications (IDNA).++The current version, 0.0.1.0, supports encoding a Unicode string to an ASCII+string. Note however that the code is currently prototyped and untested.++0.0.2.0 will add support for the ASCII to Unicode transformation.++Copyright © 2011, Jon Kristensen.+All rights reserved.++This library is licensed under a BSD-3 license. See LICENSE for details.
+ Setup.hs view
@@ -0,0 +1,3 @@+import Distribution.Simple++main = defaultMain
+ punycode.cabal view
@@ -0,0 +1,64 @@+Name:               punycode+Version:            0.0.1.0+Cabal-Version:      >= 1.6+Build-Type:         Simple+License:            BSD3+License-File:       LICENSE+Copyright:          Copyright © 2011, Jon Kristensen+Author:             Jon Kristensen+Maintainer:         jon.kristensen@pontarius.org+Stability:          alpha+-- Homepage:+Bug-Reports:        mailto:jon.kristensen@pontarius.org+-- Package-URL:+Synopsis:           Punycode encoder+Description:        Punicode library to uniquely and reversibly transform a+                    Unicode string into an ASCII string. This is a partial+                    implementation of RFC 3492: Punycode: A Bootstring encoding+                    of Unicode for Internationalized Domain Names in+                    Applications (IDNA). 0.0.2.0 will ship with support for+                    Punycode decoding. The code is currently prototyped and+                    untested.+Category:           Network+Tested-With:        GHC ==7.0.2+-- Data-Files:+-- Data-Dir:+-- Extra-Source-Files:+-- Extra-Tmp-Files:++Library+  Exposed-Modules:   Data.Text.Punycode+  Exposed:           True+  Build-Depends:     base >= 2 && < 5, parsec, text, bytestring, text-icu+  -- Other-Modules:+  -- HS-Source-Dirs:+  -- Extensions:+  -- Build-Tools:+  -- Buildable:+  -- GHC-Options:+  -- GHC-Prof-Options:+  -- Hugs-Options:+  -- NHC98-Options:+  -- Includes:+  -- Install-Includes:+  -- Include-Dirs:+  -- C-Sources:+  -- Extra-Libraries:+  -- Extra-Lib-Dirs:+  -- CC-Options:+  -- LD-Options:+  -- Pkgconfig-Depends:+  -- Frameworks:++Source-Repository head+  Type:     git+  -- Module:+  Location: git://github.com/jonkri/punycode.git+  -- Subdir:++Source-Repository this+  Type:     git+  -- Module:+  Location: git://github.com/jonkri/punycode.git+  Tag:      0.0.1.0+  -- Subdir: