jashkenas--coffeescript/examples/poignant.coffee

186 lines
4.7 KiB
CoffeeScript
Raw Normal View History

2009-12-14 15:00:31 +00:00
# Examples from the Poignant Guide.
# ['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
['toast', 'wine', 'cheese'].each (food) => print(food.capitalize())
2009-12-14 15:00:31 +00:00
# class LotteryTicket
# def picks; @picks; end
# def picks=(var); @picks = var; end
# def purchased; @purchased; end
# def purchased=(var); @purchased = var; end
# end
LotteryTicket: {
get_picks: => this.picks
set_picks: (nums) => this.picks: nums
get_purchase: => this.purchase
set_purchase: (amount) => this.purchase: amount
2009-12-14 15:00:31 +00:00
}
2010-01-25 01:04:28 +00:00
# class << LotteryDraw
# def play
# result = LotteryTicket.new_random
# winners = {}
# @@tickets.each do |buyer, ticket_list|
# ticket_list.each do |ticket|
# score = ticket.score( result )
# next if score.zero?
# winners[buyer] ||= []
# winners[buyer] << [ ticket, score ]
# end
# end
# @@tickets.clear
# winners
# end
# end
LotteryDraw: {
play: =>
2010-01-25 01:04:28 +00:00
result: LotteryTicket.new_random()
winners: {}
this.tickets.each (buyer, ticket_list) =>
ticket_list.each (ticket) =>
2010-01-25 01:04:28 +00:00
score: ticket.score(result)
return if score is 0
winners[buyer] ||= []
winners[buyer].push([ticket, score])
this.tickets: {}
winners
}
2009-12-14 15:00:31 +00:00
# module WishScanner
# def scan_for_a_wish
# wish = self.read.detect do |thought|
# thought.index( 'wish: ' ) == 0
# end
# wish.gsub( 'wish: ', '' )
# end
# end
WishScanner: {
scan_for_a_wish: =>
wish: this.read().detect((thought) => thought.index('wish: ') is 0)
wish.replace('wish: ', '')
2009-12-14 15:00:31 +00:00
}
# class Creature
#
# # This method applies a hit taken during a fight.
# def hit( damage )
# p_up = rand( charisma )
# if p_up % 9 == 7
# @life += p_up / 4
# puts "[#{ self.class } magick powers up #{ p_up }!]"
# end
# @life -= damage
# puts "[#{ self.class } has died.]" if @life <= 0
# end
#
# # This method takes one turn in a fight.
# def fight( enemy, weapon )
# if life <= 0
# puts "[#{ self.class } is too dead to fight!]"
# return
# end
#
# # Attack the opponent
# your_hit = rand( strength + weapon )
# puts "[You hit with #{ your_hit } points of damage!]"
# enemy.hit( your_hit )
#
# # Retaliation
# p enemy
# if enemy.life > 0
# enemy_hit = rand( enemy.strength + enemy.weapon )
# puts "[Your enemy hit with #{ enemy_hit } points of damage!]"
# self.hit( enemy_hit )
# end
# end
#
# end
Creature : {
# This method applies a hit taken during a fight.
hit: (damage) =>
p_up: Math.rand(this.charisma)
2009-12-14 15:00:31 +00:00
if p_up % 9 is 7
this.life += p_up / 4
puts("[" + this.name + " magick powers up " + p_up + "!]")
this.life -= damage
if this.life <= 0 then puts("[" + this.name + " has died.]")
2009-12-14 15:00:31 +00:00
# This method takes one turn in a fight.
fight: (enemy, weapon) =>
if this.life <= 0 then return puts("[" + this.name + "is too dead to fight!]")
2009-12-14 15:00:31 +00:00
# Attack the opponent.
your_hit: Math.rand(this.strength + weapon)
puts("[You hit with " + your_hit + "points of damage!]")
enemy.hit(your_hit)
2009-12-14 15:00:31 +00:00
# Retaliation.
puts(enemy)
2009-12-14 15:00:31 +00:00
if enemy.life > 0
enemy_hit: Math.rand(enemy.strength + enemy.weapon)
puts("[Your enemy hit with " + enemy_hit + "points of damage!]")
this.hit(enemy_hit)
2009-12-14 15:00:31 +00:00
2009-12-18 14:55:31 +00:00
}
# # Get evil idea and swap in code words
# print "Enter your new idea: "
# idea = gets
# code_words.each do |real, code|
# idea.gsub!( real, code )
# end
#
# # Save the jibberish to a new file
# print "File encoded. Please enter a name for this idea: "
# idea_name = gets.strip
# File::open( "idea-" + idea_name + ".txt", "w" ) do |f|
# f << idea
# end
# Get evil idea and swap in code words
print("Enter your new idea: ")
idea: gets()
code_words.each((real, code) => idea.replace(real, code))
2009-12-18 14:55:31 +00:00
# Save the jibberish to a new file
print("File encoded. Please enter a name for this idea: ")
idea_name: gets().strip()
File.open("idea-" + idea_name + '.txt', 'w', (file) => file.write(idea))
2009-12-18 14:55:31 +00:00
# def wipe_mutterings_from( sentence )
# unless sentence.respond_to? :include?
# raise ArgumentError,
# "cannot wipe mutterings from a #{ sentence.class }"
# end
# while sentence.include? '('
# open = sentence.index( '(' )
# close = sentence.index( ')', open )
# sentence[open..close] = '' if close
# end
# end
wipe_mutterings_from: (sentence) =>
2009-12-18 14:55:31 +00:00
throw new Error("cannot wipe mutterings") unless sentence.indexOf
while sentence.indexOf('(') >= 0
open: sentence.indexOf('(') - 1
close: sentence.indexOf(')') + 1
sentence: sentence[0..open] + sentence[close..sentence.length]
sentence