Created
April 8, 2011 15:47
-
-
Save azu/910151 to your computer and use it in GitHub Desktop.
CoffeeScriptをコンパイルしたもの
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
console.log "hello World"; | |
# 一行コメントはコンパイル時に消える | |
### | |
複数行の場合はコンパイル後も残る | |
### | |
# // 私の役目はないの? | |
#変数宣言 | |
age = 22 | |
name="azu" | |
#数値いじりはJavaScriptと同じ | |
numberA = 1 | |
numberB = 2 | |
sumA_B = numberA + numberB | |
console.log(sumA_B) | |
#文字列は複数行にかける いいね! | |
str = "文字列ですよ | |
実は複数行にもかけるけど | |
改行はどっかにいく仕様" | |
#念願のヒアドキュメントを手に入れた | |
heredoc = ''' | |
先頭の文字列はどこ | |
改行は反映されるよ | |
HERE | |
Document | |
''' | |
console.log(str , heredoc) | |
# 先頭に\を入れると空白も残る | |
# http://satyr.github.com/cup/#e:%27%27%27%0A\%20%200%0A\%20%201%0A%27%27%27 | |
heredoc = ''' | |
\ DOCUMENT | |
\ HERE | |
''' | |
#式展開 E4Xみたい | |
strT = "変数を展開できるので #{str}" | |
# といっても、下のように結合処理が入るので糖衣構文なのかな | |
# strT = "変数を展開できるので " + str; | |
#配列 | |
ary = [1,2,3] #いつものタイプ | |
nary = [1 | |
2 | |
3] #改行が区切りの代わり 見た目悪い | |
#連番作成 | |
renAry = [1..100] #1~100 | |
#これも 1,2...100みたいに作るわけではなく、forループで作ってる | |
less_greater = [1...100] #1~99 | |
slideAry = renAry[20..40] # 20-40を取り出す | |
#分割代入 | |
[a,b,c]=[10,20,30] #変数aに10,変数bに20、変数cに30を代入 | |
# 配列の長さに対して調節する きもい | |
[a,b,c...,d]=[1...10] # cは[3, 4, 5, 6, 7, 8] | |
#オブジェクト(連想配列) | |
# {}なしでインデントで表せる | |
object= | |
name: "nodamushi" | |
age : "19++++++++" | |
tell:"090-9876-5432" | |
# 演算子 | |
# http://d.hatena.ne.jp/nodamushi/20110108/1294518316#cope | |
# of -> in | |
#存在演算子 ? | |
if a? | |
console.log "aの存在確認" | |
a = b ? 1 #bがあればaにbを、そうでなければaに1を | |
a ?= 1 #aが無ければaに1を代入する。 | |
#?.アクセス演算子 | |
obj?.a?.b # aが存在してなくてもエラーでない | |
# if/else | |
# unlessという偽だったらというのが増えてる | |
if !a? | |
alert 1 | |
else unless a is b # else if a isnt bとおなじ | |
alert 2 | |
#ループ | |
#whileが配列を返すだと… | |
loopf =-> | |
t = 10 | |
while t-=1 | |
t*2 # ここでpushしてる | |
loopf_b =-> | |
t = 10 | |
while t-=1 | |
t*2 # 似た目通りの演算 | |
null #明示的に返すものを指定すると配列じゃなくなる | |
# 配列ループ | |
for i in object | |
dosomething?(i) | |
for i of object | |
dosomething?(i) | |
### 見比べると分かるがinの役割が変わってる | |
for (_l = 0, _len = object.length; _l < _len; _l++) { | |
i = object[_l]; | |
if (typeof dosomething == "function") { | |
dosomething(i); | |
} | |
} | |
for (i in object) { | |
if (typeof dosomething == "function") { | |
dosomething(i); | |
} | |
} | |
#### | |
dosomthine?(i) for i of object # 最初に処理を書くこともできる | |
# 飛び飛びのforループ by | |
# for 変数名 in 配列 by 次の要素までの距離 | |
# 関数 かんすう! | |
# ->が関数の目安 | |
# 仮引数に...と置けば残りの可変長引数を請け負ってくれる | |
fnName =(arg1 ,arg2 , arg3over...)-> | |
dosome?() | |
#初期値もかける | |
fnS = (arg1=1)=> | |
#関数バインディング | |
# thisをfnbindにbindする | |
fnbind =-> | |
@param="test" | |
setTimeout => | |
alert @param | |
, 100 | |
# クラスがある => | |
# prototype使ってるだけ | |
class classFn | |
# コンストラクタもある | |
constructor :(arg)-> | |
init?(arg) | |
member : 1 | |
member2: 2 | |
classFn::member = 1+2 | |
instance = new classFn() | |
# 普通に関数(クラス)のプロパティをつけるには | |
class Test | |
@test: 1 | |
@func: -> | |
# privateなものをつかうには | |
class Test | |
valeu=1 #varで宣言される =を使う | |
func=(v)-> | |
alert v | |
a:->func(privatevalue) #メンバー = prototype | |
# 正規表現 | |
#複数行に正規表現かけるようになったよ! | |
# /// で囲めばいい | |
/// | |
\A | |
(?:(?:[a-z]:|\\\\[a-z0-9_.$]+\\[a-z0-9_.$]+)\\| # ドライブ | |
\\?[^\\/:*?"<>|\r\n]+\\?) # 相対パス | |
(?:[^\\/:*?"<>|\r\n]+\\)* # フォルダ | |
[^\\/:*?"<>|\r\n]* # ファイル | |
\Z | |
///g | |
# こうなる | |
# /\A(?:(?:[a-z]:|\\\\[a-z0-9_.$]+\\[a-z0-9_.$]+)\\|\\?[^\\\/:*?"<>|\r\n]+\\?)(?:[^\\\/:*?"<>|\r\n]+\\)*[^\\\/:*?"<>|\r\n]*\Z/g; | |
# 例外処理は同じ | |
try | |
throw "error" | |
catch e | |
console.log e |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function() { | |
var Test, a, age, ary, b, c, classFn, d, fnName, fnS, fnbind, heredoc, i, instance, less_greater, loopf, loopf_b, name, nary, numberA, numberB, object, renAry, slideAry, str, strT, sumA_B, _i, _j, _k, _l, _len, _ref, _ref2, _ref3, _results, _results2; | |
var __slice = Array.prototype.slice, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; | |
console.log("hello World"); | |
/* | |
複数行の場合はコンパイル後も残る | |
*/ | |
age = 22; | |
name = "azu"; | |
numberA = 1; | |
numberB = 2; | |
sumA_B = numberA + numberB; | |
console.log(sumA_B); | |
str = "文字列ですよ 実は複数行にもかけるけど 改行はどっかにいく仕様"; | |
heredoc = '先頭の文字列はどこ\n改行は反映されるよ\nHERE\nDocument'; | |
console.log(str, heredoc); | |
heredoc = '\ DOCUMENT\n\ HERE'; | |
strT = "変数を展開できるので " + str; | |
ary = [1, 2, 3]; | |
nary = [1, 2, 3]; | |
renAry = (function() { | |
_results = []; | |
for (_i = 1; _i <= 100; _i++){ _results.push(_i); } | |
return _results; | |
}).apply(this, arguments); | |
less_greater = (function() { | |
_results2 = []; | |
for (_j = 1; _j < 100; _j++){ _results2.push(_j); } | |
return _results2; | |
}).apply(this, arguments); | |
slideAry = renAry.slice(20, 41); | |
_ref = [10, 20, 30], a = _ref[0], b = _ref[1], c = _ref[2]; | |
_ref2 = [1, 2, 3, 4, 5, 6, 7, 8, 9], a = _ref2[0], b = _ref2[1], c = 4 <= _ref2.length ? __slice.call(_ref2, 2, _k = _ref2.length - 1) : (_k = 2, []), d = _ref2[_k++]; | |
object = { | |
name: "nodamushi", | |
age: "19++++++++" | |
}; | |
({ | |
tell: "090-9876-5432" | |
}); | |
if (a != null) { | |
console.log("aの存在確認"); | |
} | |
a = b != null ? b : 1; | |
a != null ? a : a = 1; | |
if (typeof obj != "undefined" && obj !== null) { | |
if ((_ref3 = obj.a) != null) { | |
_ref3.b; | |
} | |
} | |
if (!(a != null)) { | |
alert(1); | |
} else if (a !== b) { | |
alert(2); | |
} | |
loopf = function() { | |
var t, _results; | |
t = 10; | |
_results = []; | |
while (t -= 1) { | |
_results.push(t * 2); | |
} | |
return _results; | |
}; | |
loopf_b = function() { | |
var t; | |
t = 10; | |
while (t -= 1) { | |
t * 2; | |
} | |
return null; | |
}; | |
for (_l = 0, _len = object.length; _l < _len; _l++) { | |
i = object[_l]; | |
if (typeof dosomething == "function") { | |
dosomething(i); | |
} | |
} | |
for (i in object) { | |
if (typeof dosomething == "function") { | |
dosomething(i); | |
} | |
} | |
/* 見比べると分かるがinの役割が変わってる | |
for (_l = 0, _len = object.length; _l < _len; _l++) { | |
i = object[_l]; | |
if (typeof dosomething == "function") { | |
dosomething(i); | |
} | |
} | |
for (i in object) { | |
if (typeof dosomething == "function") { | |
dosomething(i); | |
} | |
} | |
*/ | |
for (i in object) { | |
if (typeof dosomthine == "function") { | |
dosomthine(i); | |
} | |
} | |
fnName = function() { | |
var arg1, arg2, arg3over; | |
arg1 = arguments[0], arg2 = arguments[1], arg3over = 3 <= arguments.length ? __slice.call(arguments, 2) : []; | |
return typeof dosome == "function" ? dosome() : void 0; | |
}; | |
fnS = __bind(function(arg1) { | |
if (arg1 == null) { | |
arg1 = 1; | |
} | |
}, this); | |
fnbind = function() { | |
this.param = "test"; | |
return setTimeout(__bind(function() { | |
return alert(this.param); | |
}, this), 100); | |
}; | |
classFn = (function() { | |
function classFn(arg) { | |
if (typeof init == "function") { | |
init(arg); | |
} | |
} | |
classFn.prototype.member = 1; | |
classFn.prototype.member2 = 2; | |
return classFn; | |
})(); | |
classFn.prototype.member = 1 + 2; | |
instance = new classFn(); | |
Test = (function() { | |
function Test() {} | |
Test.test = 1; | |
Test.func = function() {}; | |
return Test; | |
})(); | |
Test = (function() { | |
var func, valeu; | |
function Test() {} | |
valeu = 1; | |
func = function(v) { | |
return alert(v); | |
}; | |
Test.prototype.a = function() { | |
return func(privatevalue); | |
}; | |
return Test; | |
})(); | |
/\A(?:(?:[a-z]:|\\\\[a-z0-9_.$]+\\[a-z0-9_.$]+)\\|\\?[^\\\/:*?"<>|\r\n]+\\?)(?:[^\\\/:*?"<>|\r\n]+\\)*[^\\\/:*?"<>|\r\n]*\Z/g; | |
try { | |
throw "error"; | |
} catch (e) { | |
console.log(e); | |
} | |
}).call(this); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment