Skip to content

Instantly share code, notes, and snippets.

@serebro
Created December 14, 2014 14:53
Show Gist options
  • Save serebro/8aa2004555914738282a to your computer and use it in GitHub Desktop.
Save serebro/8aa2004555914738282a to your computer and use it in GitHub Desktop.
Encode any JavaScript program to Japanese style emoticons (^_^)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>aaencode - Encode any JavaScript program to Japanese style emoticons (^_^)</title>
<script type="text/javascript">
<!--
function aaencode( text )
{
var t;
var b = [
"(c^_^o)",
"(゚Θ゚)",
"((o^_^o) - (゚Θ゚))",
"(o^_^o)",
"(゚ー゚)",
"((゚ー゚) + (゚Θ゚))",
"((o^_^o) +(o^_^o))",
"((゚ー゚) + (o^_^o))",
"((゚ー゚) + (゚ー゚))",
"((゚ー゚) + (゚ー゚) + (゚Θ゚))",
"(゚Д゚) .゚ω゚ノ",
"(゚Д゚) .゚Θ゚ノ",
"(゚Д゚) ['c']",
"(゚Д゚) .゚ー゚ノ",
"(゚Д゚) .゚Д゚ノ",
"(゚Д゚) [゚Θ゚]"
];
var r = "゚ω゚ノ= /`m´)ノ ~┻━┻ //*´∇`*/ ['_']; o=(゚ー゚) =_=3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); ";
if( /ひだまりスケッチ×(365|356)\s*来週も見てくださいね[!!]/.test( text ) ){
r += "X=_=3; ";
r += "\r\n\r\n X / _ / X < \"来週も見てくださいね!\";\r\n\r\n";
}
r += "(゚Д゚) =(゚Θ゚)= (o^_^o)/ (o^_^o);"+
"(゚Д゚)={゚Θ゚: '_' ,゚ω゚ノ : ((゚ω゚ノ==3) +'_') [゚Θ゚] "+
",゚ー゚ノ :(゚ω゚ノ+ '_')[o^_^o -(゚Θ゚)] "+
",゚Д゚ノ:((゚ー゚==3) +'_')[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ==3) +'_') [c^_^o];"+
"(゚Д゚) ['c'] = ((゚Д゚)+'_') [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];"+
"(゚Д゚) ['o'] = ((゚Д゚)+'_') [゚Θ゚];"+
"(゚o゚)=(゚Д゚) ['c']+(゚Д゚) ['o']+(゚ω゚ノ +'_')[゚Θ゚]+ ((゚ω゚ノ==3) +'_') [゚ー゚] + "+
"((゚Д゚) +'_') [(゚ー゚)+(゚ー゚)]+ ((゚ー゚==3) +'_') [゚Θ゚]+"+
"((゚ー゚==3) +'_') [(゚ー゚) - (゚Θ゚)]+(゚Д゚) ['c']+"+
"((゚Д゚)+'_') [(゚ー゚)+(゚ー゚)]+ (゚Д゚) ['o']+"+
"((゚ー゚==3) +'_') [゚Θ゚];(゚Д゚) ['_'] =(o^_^o) [゚o゚] [゚o゚];"+
"(゚ε゚)=((゚ー゚==3) +'_') [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+"+
"((゚Д゚)+'_') [(゚ー゚) + (゚ー゚)]+((゚ー゚==3) +'_') [o^_^o -゚Θ゚]+"+
"((゚ー゚==3) +'_') [゚Θ゚]+ (゚ω゚ノ +'_') [゚Θ゚]; "+
"(゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]='\\\\'; "+
"(゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o^_^o -(゚Θ゚)];"+
"(o゚ー゚o)=(゚ω゚ノ +'_')[c^_^o];"+//TODO
"(゚Д゚) [゚o゚]='\\\"';"+
"(゚Д゚) ['_'] ( (゚Д゚) ['_'] (゚ε゚+";
r += "(゚Д゚)[゚o゚]+ ";
for( var i = 0; i < text.length; i++ ){
n = text.charCodeAt( i );
t = "(゚Д゚)[゚ε゚]+";
if( n <= 127 ){
t += n.toString( 8 ).replace( /[0-7]/g, function(c){ return b[ c ] + "+ "; } );
}else{
var m = /[0-9a-f]{4}$/.exec( "000" + n.toString(16 ) )[0];
t += "(o゚ー゚o)+ " + m.replace( /[0-9a-f]/gi, function(c){ return b[ parseInt( c,16 ) ] + "+ "; } );
}
r += t;
}
r += "(゚Д゚)[゚o゚]) (゚Θ゚)) ('_');";
return r;
}
function jjencode( gv, text )
{
var r="";
var n;
var t;
var b=[ "___", "__$", "_$_", "_$$", "$__", "$_$", "$$_", "$$$", "$___", "$__$", "$_$_", "$_$$", "$$__", "$$_$", "$$$_", "$$$$", ];
var s = "";
for( var i = 0; i < text.length; i++ ){
n = text.charCodeAt( i );
if( n == 0x22 || n == 0x5c ){
s += "\\\\\\" + text.charAt( i ).toString(16);
}else if( (0x20 <= n && n <= 0x2f) || (0x3A <= n == 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){
s += text.charAt( i );
}else if( (0x30 <= n && n <= 0x39 ) || (0x61 <= n && n <= 0x66 ) ){
if( s ) r += "\"" + s +"\"+";
r += gv + "." + b[ n < 0x40 ? n - 0x30 : n - 0x57 ] + "+";
s="";
}else if( n == 0x6c ){ // 'l'
if( s ) r += "\"" + s + "\"+";
r += "(![]+\"\")[" + gv + "._$_]+";
s = "";
}else if( n == 0x6f ){ // 'o'
if( s ) r += "\"" + s + "\"+";
r += gv + "._$+";
s = "";
}else if( n == 0x74 ){ // 'u'
if( s ) r += "\"" + s + "\"+";
r += gv + ".__+";
s = "";
}else if( n == 0x75 ){ // 'u'
if( s ) r += "\"" + s + "\"+";
r += gv + "._+";
s = "";
}else if( n < 128 ){
if( s ) r += "\"" + s;
else r += "\"";
r += "\\\\\"+" + n.toString( 8 ).replace( /[0-7]/g, function(c){ return gv + "."+b[ c ]+"+" } );
s = "";
}else{
if( s ) r += "\"" + s;
else r += "\"";
r += "\\\\\"+" + gv + "._+" + n.toString(16).replace( /[0-9a-f]/gi, function(c){ return gv + "."+b[parseInt(c,16)]+"+"} );
s = "";
}
}
if( s ) r += "\"" + s + "\"+";
r =
gv + "=~[];" +
gv + "={___:++" + gv +",$$$$:(![]+\"\")["+gv+"],__$:++"+gv+",$_$_:(![]+\"\")["+gv+"],_$_:++"+
gv+",$_$$:({}+\"\")["+gv+"],$$_$:("+gv+"["+gv+"]+\"\")["+gv+"],_$$:++"+gv+",$$$_:(!\"\"+\"\")["+
gv+"],$__:++"+gv+",$_$:++"+gv+",$$__:({}+\"\")["+gv+"],$$_:++"+gv+",$$$:++"+gv+",$___:++"+gv+",$__$:++"+gv+"};"+
gv+".$_="+
"("+gv+".$_="+gv+"+\"\")["+gv+".$_$]+"+
"("+gv+"._$="+gv+".$_["+gv+".__$])+"+
"("+gv+".$$=("+gv+".$+\"\")["+gv+".__$])+"+
"((!"+gv+")+\"\")["+gv+"._$$]+"+
"("+gv+".__="+gv+".$_["+gv+".$$_])+"+
"("+gv+".$=(!\"\"+\"\")["+gv+".__$])+"+
"("+gv+"._=(!\"\"+\"\")["+gv+"._$_])+"+
gv+".$_["+gv+".$_$]+"+
gv+".__+"+
gv+"._$+"+
gv+".$;"+
gv+".$$="+
gv+".$+"+
"(!\"\"+\"\")["+gv+"._$$]+"+
gv+".__+"+
gv+"._+"+
gv+".$+"+
gv+".$$;"+
gv+".$=("+gv+".___)["+gv+".$_]["+gv+".$_];"+
gv+".$("+gv+".$("+gv+".$$+\"\\\"\"+" + r + "\"\\\"\")())();";
return r;
}
var _prev;
function keyup( force )
{
var t = document.getElementById( "src" ).value;
var d;
if( _prev != ( t ) || force ){
d = aaencode( t );
document.getElementById("dst").value= d;
_prev = t;
document.getElementById( "permalink").setAttribute( "href",
location.href.replace( /\?.*$/, "" ) + "?src=" + encodeURIComponent( t ) );
document.getElementById( "eval").setAttribute( "href", "javascript:" + d );
}
}
function init()
{
var q = document.location.search && document.location.search.substring( 1 ).split( "&" );
for( var i = 0; i < q.length; i++ ){
if( q[ i ].substring( 0, 4 ) == "src=" ){
document.getElementById( "src" ).value = decodeURIComponent( q[ i ].substring( 4 ) );
}else if( q[ i ].substring( 0, 4 ) == "var=" ){
document.getElementById( "var" ).value = decodeURIComponent( q[ i ].substring( 4 ) );
}
}
keyup( true );
document.getElementById( 'src' ).focus();
}
-->
</script>
</head>
<body style="width:60%; background-color:#e0e0e0;" onload="javascript:init()">
<div>
<h1 style="font-size:120%;font-weight:bold">aaencode demo
<!-- <span class="gp" style="text-align:right"><g:plusone size="small"></g:plusone></span> -->
<span data-button="hatena-bookmark"></span>
<span data-button="tweet"></span>
</h1>
<div>aaencode - Encode any JavaScript program to Japanese style emoticons (^_^)</div>
Enter JavaScript source:<br />
<textarea style="width:100%;height:5em" id="src" onkeyup="javascript:keyup( false )" cols="" rows="" >
alert("Hello, JavaScript")</textarea>
</div>
<div style="text-align:right">
<input type="button" value="aaencode" onclick="javascript:keyup( true )" />
</div>
<div>
<textarea style="width:100%;height:20em;line-height:130%;" id="dst" rows="" cols="" ></textarea>
</div>
<div style="text-align:right">
[ <a href="" id="eval" target="_blank" >eval</a> ]
[ <a href="" id="permalink">Permalink</a> ]
</div>
<div style="text-align:right;margin-top:2em;padding-top:0.5em;border-top:solid 1px black">[<a href="http://utf-8.jp/">utf-8.jp/</a>]</div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-340076-6";
urchinTracker();
</script>
<!-- <script type="text/javascript" src="http://apis.google.com/js/plusone.js"></script> -->
<script type="text/javascript" src="/js/parts.js"></script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment