haml-more 0.4.0.a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. data/README.md +79 -0
  2. data/lib/haml/more/coffee_script.rb +137 -0
  3. data/lib/haml/more/content_for.rb +25 -0
  4. data/lib/haml/more.rb +45 -0
  5. data/lib/haml-more.rb +1 -0
  6. data/lib/sass/more.rb +16 -0
  7. data/lib/sass-more.rb +1 -0
  8. data/spec/sass/more_spec.rb +21 -0
  9. data/vendor/coffee-script/Cakefile +57 -0
  10. data/vendor/coffee-script/LICENSE +22 -0
  11. data/vendor/coffee-script/README +41 -0
  12. data/vendor/coffee-script/Rakefile +20 -0
  13. data/vendor/coffee-script/bin/cake +7 -0
  14. data/vendor/coffee-script/bin/coffee +7 -0
  15. data/vendor/coffee-script/documentation/coffee/aliases.coffee +9 -0
  16. data/vendor/coffee-script/documentation/coffee/arguments.coffee +4 -0
  17. data/vendor/coffee-script/documentation/coffee/array_comprehensions.coffee +7 -0
  18. data/vendor/coffee-script/documentation/coffee/assignment.coffee +2 -0
  19. data/vendor/coffee-script/documentation/coffee/cake_tasks.coffee +5 -0
  20. data/vendor/coffee-script/documentation/coffee/comparisons.coffee +5 -0
  21. data/vendor/coffee-script/documentation/coffee/conditionals.coffee +9 -0
  22. data/vendor/coffee-script/documentation/coffee/embedded.coffee +5 -0
  23. data/vendor/coffee-script/documentation/coffee/existence.coffee +8 -0
  24. data/vendor/coffee-script/documentation/coffee/expressions.coffee +9 -0
  25. data/vendor/coffee-script/documentation/coffee/expressions_assignment.coffee +1 -0
  26. data/vendor/coffee-script/documentation/coffee/expressions_comprehension.coffee +3 -0
  27. data/vendor/coffee-script/documentation/coffee/expressions_try.coffee +6 -0
  28. data/vendor/coffee-script/documentation/coffee/fat_arrow.coffee +6 -0
  29. data/vendor/coffee-script/documentation/coffee/functions.coffee +2 -0
  30. data/vendor/coffee-script/documentation/coffee/heredocs.coffee +5 -0
  31. data/vendor/coffee-script/documentation/coffee/multiple_return_values.coffee +5 -0
  32. data/vendor/coffee-script/documentation/coffee/object_comprehensions.coffee +4 -0
  33. data/vendor/coffee-script/documentation/coffee/object_extraction.coffee +13 -0
  34. data/vendor/coffee-script/documentation/coffee/objects_and_arrays.coffee +13 -0
  35. data/vendor/coffee-script/documentation/coffee/overview.coffee +29 -0
  36. data/vendor/coffee-script/documentation/coffee/parallel_assignment.coffee +4 -0
  37. data/vendor/coffee-script/documentation/coffee/range_comprehensions.coffee +6 -0
  38. data/vendor/coffee-script/documentation/coffee/scope.coffee +5 -0
  39. data/vendor/coffee-script/documentation/coffee/slices.coffee +6 -0
  40. data/vendor/coffee-script/documentation/coffee/soaks.coffee +1 -0
  41. data/vendor/coffee-script/documentation/coffee/splats.coffee +25 -0
  42. data/vendor/coffee-script/documentation/coffee/splices.coffee +5 -0
  43. data/vendor/coffee-script/documentation/coffee/strings.coffee +8 -0
  44. data/vendor/coffee-script/documentation/coffee/super.coffee +34 -0
  45. data/vendor/coffee-script/documentation/coffee/switch.coffee +10 -0
  46. data/vendor/coffee-script/documentation/coffee/try.coffee +7 -0
  47. data/vendor/coffee-script/documentation/coffee/while.coffee +10 -0
  48. data/vendor/coffee-script/documentation/css/docs.css +213 -0
  49. data/vendor/coffee-script/documentation/css/idle.css +63 -0
  50. data/vendor/coffee-script/documentation/css/logo.png +0 -0
  51. data/vendor/coffee-script/documentation/index.html.erb +967 -0
  52. data/vendor/coffee-script/documentation/js/aliases.js +14 -0
  53. data/vendor/coffee-script/documentation/js/arguments.js +8 -0
  54. data/vendor/coffee-script/documentation/js/array_comprehensions.js +26 -0
  55. data/vendor/coffee-script/documentation/js/assignment.js +5 -0
  56. data/vendor/coffee-script/documentation/js/cake_tasks.js +14 -0
  57. data/vendor/coffee-script/documentation/js/comparisons.js +5 -0
  58. data/vendor/coffee-script/documentation/js/conditionals.js +12 -0
  59. data/vendor/coffee-script/documentation/js/embedded.js +6 -0
  60. data/vendor/coffee-script/documentation/js/existence.js +7 -0
  61. data/vendor/coffee-script/documentation/js/expressions.js +13 -0
  62. data/vendor/coffee-script/documentation/js/expressions_assignment.js +4 -0
  63. data/vendor/coffee-script/documentation/js/expressions_comprehension.js +12 -0
  64. data/vendor/coffee-script/documentation/js/expressions_try.js +9 -0
  65. data/vendor/coffee-script/documentation/js/fat_arrow.js +15 -0
  66. data/vendor/coffee-script/documentation/js/functions.js +9 -0
  67. data/vendor/coffee-script/documentation/js/heredocs.js +4 -0
  68. data/vendor/coffee-script/documentation/js/intro.js +7 -0
  69. data/vendor/coffee-script/documentation/js/multiple_return_values.js +11 -0
  70. data/vendor/coffee-script/documentation/js/object_comprehensions.js +17 -0
  71. data/vendor/coffee-script/documentation/js/object_extraction.js +17 -0
  72. data/vendor/coffee-script/documentation/js/objects_and_arrays.js +10 -0
  73. data/vendor/coffee-script/documentation/js/overview.js +43 -0
  74. data/vendor/coffee-script/documentation/js/parallel_assignment.js +8 -0
  75. data/vendor/coffee-script/documentation/js/punctuation.js +8 -0
  76. data/vendor/coffee-script/documentation/js/range_comprehensions.js +21 -0
  77. data/vendor/coffee-script/documentation/js/scope.js +10 -0
  78. data/vendor/coffee-script/documentation/js/slices.js +6 -0
  79. data/vendor/coffee-script/documentation/js/soaks.js +4 -0
  80. data/vendor/coffee-script/documentation/js/splats.js +16 -0
  81. data/vendor/coffee-script/documentation/js/splices.js +5 -0
  82. data/vendor/coffee-script/documentation/js/strings.js +9 -0
  83. data/vendor/coffee-script/documentation/js/super.js +37 -0
  84. data/vendor/coffee-script/documentation/js/switch.js +18 -0
  85. data/vendor/coffee-script/documentation/js/try.js +10 -0
  86. data/vendor/coffee-script/documentation/js/while.js +22 -0
  87. data/vendor/coffee-script/documentation/underscore.html +627 -0
  88. data/vendor/coffee-script/examples/beautiful_code/binary_search.coffee +16 -0
  89. data/vendor/coffee-script/examples/beautiful_code/quicksort_runtime.coffee +13 -0
  90. data/vendor/coffee-script/examples/beautiful_code/regular_expression_matcher.coffee +34 -0
  91. data/vendor/coffee-script/examples/blocks.coffee +57 -0
  92. data/vendor/coffee-script/examples/code.coffee +173 -0
  93. data/vendor/coffee-script/examples/computer_science/README +4 -0
  94. data/vendor/coffee-script/examples/computer_science/binary_search.coffee +25 -0
  95. data/vendor/coffee-script/examples/computer_science/bubble_sort.coffee +11 -0
  96. data/vendor/coffee-script/examples/computer_science/linked_list.coffee +106 -0
  97. data/vendor/coffee-script/examples/computer_science/luhn_algorithm.coffee +36 -0
  98. data/vendor/coffee-script/examples/computer_science/merge_sort.coffee +19 -0
  99. data/vendor/coffee-script/examples/computer_science/selection_sort.coffee +23 -0
  100. data/vendor/coffee-script/examples/poignant.coffee +186 -0
  101. data/vendor/coffee-script/examples/potion.coffee +205 -0
  102. data/vendor/coffee-script/examples/underscore.coffee +603 -0
  103. data/vendor/coffee-script/examples/web_server.coffee +12 -0
  104. data/vendor/coffee-script/extras/CoffeeScript.tmbundle/Preferences/CoffeeScript.tmPreferences +24 -0
  105. data/vendor/coffee-script/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage +361 -0
  106. data/vendor/coffee-script/extras/CoffeeScript.tmbundle/info.plist +10 -0
  107. data/vendor/coffee-script/extras/EXTRAS +20 -0
  108. data/vendor/coffee-script/extras/coffee.vim +117 -0
  109. data/vendor/coffee-script/index.html +1847 -0
  110. data/vendor/coffee-script/lib/bin/cake +7 -0
  111. data/vendor/coffee-script/lib/bin/coffee +7 -0
  112. data/vendor/coffee-script/lib/cake.js +80 -0
  113. data/vendor/coffee-script/lib/coffee-script.js +61 -0
  114. data/vendor/coffee-script/lib/command_line.js +201 -0
  115. data/vendor/coffee-script/lib/grammar.js +564 -0
  116. data/vendor/coffee-script/lib/lexer.js +405 -0
  117. data/vendor/coffee-script/lib/narwhal.js +44 -0
  118. data/vendor/coffee-script/lib/nodes.js +1328 -0
  119. data/vendor/coffee-script/lib/optparse.js +117 -0
  120. data/vendor/coffee-script/lib/parser.js +536 -0
  121. data/vendor/coffee-script/lib/repl.js +32 -0
  122. data/vendor/coffee-script/lib/rewriter.js +383 -0
  123. data/vendor/coffee-script/lib/scope.js +114 -0
  124. data/vendor/coffee-script/package.json +7 -0
  125. data/vendor/coffee-script/src/cake.coffee +45 -0
  126. data/vendor/coffee-script/src/coffee-script.coffee +45 -0
  127. data/vendor/coffee-script/src/command_line.coffee +130 -0
  128. data/vendor/coffee-script/src/grammar.coffee +456 -0
  129. data/vendor/coffee-script/src/lexer.coffee +327 -0
  130. data/vendor/coffee-script/src/narwhal.coffee +42 -0
  131. data/vendor/coffee-script/src/nodes.coffee +1045 -0
  132. data/vendor/coffee-script/src/optparse.coffee +79 -0
  133. data/vendor/coffee-script/src/repl.coffee +23 -0
  134. data/vendor/coffee-script/src/rewriter.coffee +253 -0
  135. data/vendor/coffee-script/src/scope.coffee +75 -0
  136. data/vendor/coffee-script/test/test_arguments.coffee +34 -0
  137. data/vendor/coffee-script/test/test_array_comprehension.coffee +42 -0
  138. data/vendor/coffee-script/test/test_assignment.coffee +26 -0
  139. data/vendor/coffee-script/test/test_blocks.coffee +4 -0
  140. data/vendor/coffee-script/test/test_calling_super.coffee +42 -0
  141. data/vendor/coffee-script/test/test_chained_calls.coffee +25 -0
  142. data/vendor/coffee-script/test/test_destructuring_assignment.coffee +62 -0
  143. data/vendor/coffee-script/test/test_everything.coffee +29 -0
  144. data/vendor/coffee-script/test/test_exceptions.coffee +2 -0
  145. data/vendor/coffee-script/test/test_existence.coffee +81 -0
  146. data/vendor/coffee-script/test/test_expressions.coffee +30 -0
  147. data/vendor/coffee-script/test/test_fancy_if_statement.coffee +26 -0
  148. data/vendor/coffee-script/test/test_functions.coffee +80 -0
  149. data/vendor/coffee-script/test/test_funky_comments.coffee +25 -0
  150. data/vendor/coffee-script/test/test_heredocs.coffee +46 -0
  151. data/vendor/coffee-script/test/test_lexical_scope.coffee +10 -0
  152. data/vendor/coffee-script/test/test_literals.coffee +56 -0
  153. data/vendor/coffee-script/test/test_nested_comprehensions.coffee +11 -0
  154. data/vendor/coffee-script/test/test_newline_escaping.coffee +6 -0
  155. data/vendor/coffee-script/test/test_operations.coffee +18 -0
  156. data/vendor/coffee-script/test/test_range_comprehension.coffee +20 -0
  157. data/vendor/coffee-script/test/test_ranges_and_slices.coffee +16 -0
  158. data/vendor/coffee-script/test/test_splats.coffee +47 -0
  159. data/vendor/coffee-script/test/test_splices.coffee +5 -0
  160. data/vendor/coffee-script/test/test_switch.coffee +64 -0
  161. data/vendor/coffee-script/test/test_while.coffee +30 -0
  162. data/vendor/coffee-script/vendor/jison/Jakefile +31 -0
  163. data/vendor/coffee-script/vendor/jison/README.md +347 -0
  164. data/vendor/coffee-script/vendor/jison/bin/jison +3 -0
  165. data/vendor/coffee-script/vendor/jison/bin/json2jison +3 -0
  166. data/vendor/coffee-script/vendor/jison/examples/ansic.jison +415 -0
  167. data/vendor/coffee-script/vendor/jison/examples/basic.json +8 -0
  168. data/vendor/coffee-script/vendor/jison/examples/basic2.json +9 -0
  169. data/vendor/coffee-script/vendor/jison/examples/basic2_lex.json +16 -0
  170. data/vendor/coffee-script/vendor/jison/examples/basic_lex.json +15 -0
  171. data/vendor/coffee-script/vendor/jison/examples/calculator.jison +38 -0
  172. data/vendor/coffee-script/vendor/jison/examples/calculator.jisonlex +14 -0
  173. data/vendor/coffee-script/vendor/jison/examples/calculator.json +42 -0
  174. data/vendor/coffee-script/vendor/jison/examples/classy.json +105 -0
  175. data/vendor/coffee-script/vendor/jison/examples/classy_ast.json +126 -0
  176. data/vendor/coffee-script/vendor/jison/examples/dism.json +25 -0
  177. data/vendor/coffee-script/vendor/jison/examples/dism_lr0.json +26 -0
  178. data/vendor/coffee-script/vendor/jison/examples/json.js +80 -0
  179. data/vendor/coffee-script/vendor/jison/examples/json_ast.js +83 -0
  180. data/vendor/coffee-script/vendor/jison/examples/precedence.json +26 -0
  181. data/vendor/coffee-script/vendor/jison/examples/reduce_conflict.json +13 -0
  182. data/vendor/coffee-script/vendor/jison/lib/jison/bnf.js +43 -0
  183. data/vendor/coffee-script/vendor/jison/lib/jison/jisonlex.js +18 -0
  184. data/vendor/coffee-script/vendor/jison/lib/jison/json2jison.js +146 -0
  185. data/vendor/coffee-script/vendor/jison/lib/jison/lexer.js +224 -0
  186. data/vendor/coffee-script/vendor/jison/lib/jison/util/bnf-parser.js +383 -0
  187. data/vendor/coffee-script/vendor/jison/lib/jison/util/lex-parser.js +407 -0
  188. data/vendor/coffee-script/vendor/jison/lib/jison/util/set.js +94 -0
  189. data/vendor/coffee-script/vendor/jison/lib/jison/util/typal.js +90 -0
  190. data/vendor/coffee-script/vendor/jison/lib/jison.js +1414 -0
  191. data/vendor/coffee-script/vendor/jison/package.json +14 -0
  192. data/vendor/coffee-script/vendor/jison/src/bnf.jison +110 -0
  193. data/vendor/coffee-script/vendor/jison/src/bnf.jisonlex +25 -0
  194. data/vendor/coffee-script/vendor/jison/src/bnf.lex.json +24 -0
  195. data/vendor/coffee-script/vendor/jison/src/jisonlex.jison +129 -0
  196. data/vendor/coffee-script/vendor/jison/src/jisonlex.jisonlex +31 -0
  197. data/vendor/coffee-script/vendor/jison/src/jisonlex.lex.json +30 -0
  198. data/vendor/coffee-script/vendor/jison/tests/all-tests.js +8 -0
  199. data/vendor/coffee-script/vendor/jison/tests/grammar/bnf.js +91 -0
  200. data/vendor/coffee-script/vendor/jison/tests/grammar/bnf_parse.js +65 -0
  201. data/vendor/coffee-script/vendor/jison/tests/grammar/grammar-tests.js +10 -0
  202. data/vendor/coffee-script/vendor/jison/tests/grammar/json2jison.js +24 -0
  203. data/vendor/coffee-script/vendor/jison/tests/grammar/lex/ansic.jisonlex +115 -0
  204. data/vendor/coffee-script/vendor/jison/tests/grammar/lex/bnf.jisonlex +25 -0
  205. data/vendor/coffee-script/vendor/jison/tests/grammar/lex/bnf.lex.json +24 -0
  206. data/vendor/coffee-script/vendor/jison/tests/grammar/lex/lex_grammar.jisonlex +31 -0
  207. data/vendor/coffee-script/vendor/jison/tests/grammar/lex/lex_grammar.lex.json +30 -0
  208. data/vendor/coffee-script/vendor/jison/tests/grammar/lex.jison +119 -0
  209. data/vendor/coffee-script/vendor/jison/tests/grammar/lex.js +58 -0
  210. data/vendor/coffee-script/vendor/jison/tests/grammar/lex_parse.js +117 -0
  211. data/vendor/coffee-script/vendor/jison/tests/lexer/lexer-tests.js +6 -0
  212. data/vendor/coffee-script/vendor/jison/tests/lexer/regexplexer.js +417 -0
  213. data/vendor/coffee-script/vendor/jison/tests/parser/actions.js +311 -0
  214. data/vendor/coffee-script/vendor/jison/tests/parser/api.js +236 -0
  215. data/vendor/coffee-script/vendor/jison/tests/parser/generator.js +196 -0
  216. data/vendor/coffee-script/vendor/jison/tests/parser/lalr.js +183 -0
  217. data/vendor/coffee-script/vendor/jison/tests/parser/lr0.js +72 -0
  218. data/vendor/coffee-script/vendor/jison/tests/parser/lr1.js +119 -0
  219. data/vendor/coffee-script/vendor/jison/tests/parser/parser-tests.js +14 -0
  220. data/vendor/coffee-script/vendor/jison/tests/parser/precedence.js +237 -0
  221. data/vendor/coffee-script/vendor/jison/tests/parser/slr.js +52 -0
  222. data/vendor/coffee-script/vendor/jison/tests/parser/tables.js +126 -0
  223. data/vendor/coffee-script/vendor/jison/tests/performance.js +110 -0
  224. data/vendor/coffee-script/vendor/jison/tests/setup.js +3 -0
  225. metadata +324 -0
@@ -0,0 +1,186 @@
1
+ # Examples from the Poignant Guide.
2
+
3
+ # ['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
4
+
5
+ ['toast', 'wine', 'cheese'].each (food) -> print(food.capitalize())
6
+
7
+
8
+
9
+ # class LotteryTicket
10
+ # def picks; @picks; end
11
+ # def picks=(var); @picks = var; end
12
+ # def purchased; @purchased; end
13
+ # def purchased=(var); @purchased = var; end
14
+ # end
15
+
16
+ LotteryTicket: {
17
+ get_picks: -> this.picks
18
+ set_picks: (nums) -> this.picks: nums
19
+ get_purchase: -> this.purchase
20
+ set_purchase: (amount) -> this.purchase: amount
21
+ }
22
+
23
+
24
+
25
+ # class << LotteryDraw
26
+ # def play
27
+ # result = LotteryTicket.new_random
28
+ # winners = {}
29
+ # @@tickets.each do |buyer, ticket_list|
30
+ # ticket_list.each do |ticket|
31
+ # score = ticket.score( result )
32
+ # next if score.zero?
33
+ # winners[buyer] ||= []
34
+ # winners[buyer] << [ ticket, score ]
35
+ # end
36
+ # end
37
+ # @@tickets.clear
38
+ # winners
39
+ # end
40
+ # end
41
+
42
+ LotteryDraw: {
43
+ play: ->
44
+ result: LotteryTicket.new_random()
45
+ winners: {}
46
+ this.tickets.each (buyer, ticket_list) ->
47
+ ticket_list.each (ticket) ->
48
+ score: ticket.score(result)
49
+ return if score is 0
50
+ winners[buyer] ||= []
51
+ winners[buyer].push([ticket, score])
52
+ this.tickets: {}
53
+ winners
54
+ }
55
+
56
+
57
+
58
+ # module WishScanner
59
+ # def scan_for_a_wish
60
+ # wish = self.read.detect do |thought|
61
+ # thought.index( 'wish: ' ) == 0
62
+ # end
63
+ # wish.gsub( 'wish: ', '' )
64
+ # end
65
+ # end
66
+
67
+ WishScanner: {
68
+ scan_for_a_wish: ->
69
+ wish: this.read().detect((thought) -> thought.index('wish: ') is 0)
70
+ wish.replace('wish: ', '')
71
+ }
72
+
73
+
74
+
75
+ # class Creature
76
+ #
77
+ # # This method applies a hit taken during a fight.
78
+ # def hit( damage )
79
+ # p_up = rand( charisma )
80
+ # if p_up % 9 == 7
81
+ # @life += p_up / 4
82
+ # puts "[#{ self.class } magick powers up #{ p_up }!]"
83
+ # end
84
+ # @life -= damage
85
+ # puts "[#{ self.class } has died.]" if @life <= 0
86
+ # end
87
+ #
88
+ # # This method takes one turn in a fight.
89
+ # def fight( enemy, weapon )
90
+ # if life <= 0
91
+ # puts "[#{ self.class } is too dead to fight!]"
92
+ # return
93
+ # end
94
+ #
95
+ # # Attack the opponent
96
+ # your_hit = rand( strength + weapon )
97
+ # puts "[You hit with #{ your_hit } points of damage!]"
98
+ # enemy.hit( your_hit )
99
+ #
100
+ # # Retaliation
101
+ # p enemy
102
+ # if enemy.life > 0
103
+ # enemy_hit = rand( enemy.strength + enemy.weapon )
104
+ # puts "[Your enemy hit with #{ enemy_hit } points of damage!]"
105
+ # self.hit( enemy_hit )
106
+ # end
107
+ # end
108
+ #
109
+ # end
110
+
111
+ Creature : {
112
+
113
+ # This method applies a hit taken during a fight.
114
+ hit: (damage) ->
115
+ p_up: Math.rand(this.charisma)
116
+ if p_up % 9 is 7
117
+ this.life += p_up / 4
118
+ puts("[" + this.name + " magick powers up " + p_up + "!]")
119
+ this.life -= damage
120
+ if this.life <= 0 then puts("[" + this.name + " has died.]")
121
+
122
+ # This method takes one turn in a fight.
123
+ fight: (enemy, weapon) ->
124
+ if this.life <= 0 then return puts("[" + this.name + "is too dead to fight!]")
125
+
126
+ # Attack the opponent.
127
+ your_hit: Math.rand(this.strength + weapon)
128
+ puts("[You hit with " + your_hit + "points of damage!]")
129
+ enemy.hit(your_hit)
130
+
131
+ # Retaliation.
132
+ puts(enemy)
133
+ if enemy.life > 0
134
+ enemy_hit: Math.rand(enemy.strength + enemy.weapon)
135
+ puts("[Your enemy hit with " + enemy_hit + "points of damage!]")
136
+ this.hit(enemy_hit)
137
+
138
+ }
139
+
140
+
141
+
142
+ # # Get evil idea and swap in code words
143
+ # print "Enter your new idea: "
144
+ # idea = gets
145
+ # code_words.each do |real, code|
146
+ # idea.gsub!( real, code )
147
+ # end
148
+ #
149
+ # # Save the jibberish to a new file
150
+ # print "File encoded. Please enter a name for this idea: "
151
+ # idea_name = gets.strip
152
+ # File::open( "idea-" + idea_name + ".txt", "w" ) do |f|
153
+ # f << idea
154
+ # end
155
+
156
+ # Get evil idea and swap in code words
157
+ print("Enter your new idea: ")
158
+ idea: gets()
159
+ code_words.each((real, code) -> idea.replace(real, code))
160
+
161
+ # Save the jibberish to a new file
162
+ print("File encoded. Please enter a name for this idea: ")
163
+ idea_name: gets().strip()
164
+ File.open("idea-" + idea_name + '.txt', 'w', (file) -> file.write(idea))
165
+
166
+
167
+
168
+ # def wipe_mutterings_from( sentence )
169
+ # unless sentence.respond_to? :include?
170
+ # raise ArgumentError,
171
+ # "cannot wipe mutterings from a #{ sentence.class }"
172
+ # end
173
+ # while sentence.include? '('
174
+ # open = sentence.index( '(' )
175
+ # close = sentence.index( ')', open )
176
+ # sentence[open..close] = '' if close
177
+ # end
178
+ # end
179
+
180
+ wipe_mutterings_from: (sentence) ->
181
+ throw new Error("cannot wipe mutterings") unless sentence.indexOf
182
+ while sentence.indexOf('(') >= 0
183
+ open: sentence.indexOf('(') - 1
184
+ close: sentence.indexOf(')') + 1
185
+ sentence: sentence[0..open] + sentence[close..sentence.length]
186
+ sentence
@@ -0,0 +1,205 @@
1
+ # Examples from _why's Potion, the Readme and "Potion: A Short Pamphlet".
2
+
3
+ # 5 times: "Odelay!" print.
4
+
5
+ print("Odelay!") for i in [1..5]
6
+
7
+
8
+ # add = (x, y): x + y.
9
+ # add(2, 4) string print
10
+
11
+ add: (x, y) -> x + y
12
+ print(add(2, 4))
13
+
14
+
15
+ # loop: 'quaff' print.
16
+
17
+ while true
18
+ print('quaff')
19
+
20
+
21
+ # ('cheese', 'bread', 'mayo') at (1) print
22
+
23
+ print(['cheese', 'bread', 'mayo'][1])
24
+
25
+
26
+ # (language='Potion', pointless=true) at (key='language') print
27
+
28
+ print({language: 'Potion', pointless: true}['language'])
29
+
30
+
31
+ # minus = (x, y): x - y.
32
+ # minus (y=10, x=6)
33
+
34
+ minus: (x, y) -> x - y
35
+ minus(6, 10)
36
+
37
+
38
+ # foods = ('cheese', 'bread', 'mayo')
39
+ # foods (2)
40
+
41
+ foods: ['cheese', 'bread', 'mayo']
42
+ foods[2]
43
+
44
+
45
+ # (dog='canine', cat='feline', fox='vulpine') each (key, val):
46
+ # (key, ' is a ', val) join print.
47
+
48
+ for key, val of {dog: 'canine', cat: 'feline', fox: 'vulpine'}
49
+ print(key + ' is a ' + val)
50
+
51
+
52
+ # Person = class: /name, /age, /sex.
53
+ # Person print = ():
54
+ # ('My name is ', /name, '.') join print.
55
+
56
+ Person: ->
57
+ Person::print: ->
58
+ print('My name is ' + this.name + '.')
59
+
60
+
61
+ # p = Person ()
62
+ # p /name string print
63
+
64
+ p: new Person()
65
+ print(p.name)
66
+
67
+
68
+ # Policeman = Person class (rank): /rank = rank.
69
+ # Policeman print = ():
70
+ # ('My name is ', /name, ' and I'm a ', /rank, '.') join print.
71
+ #
72
+ # Policeman ('Constable') print
73
+
74
+ Policeman: (rank) -> this.rank: rank
75
+ Policeman extends Person
76
+ Policeman::print: ->
77
+ print('My name is ' + this.name + " and I'm a " + this.rank + '.')
78
+
79
+ print(new Policeman('Constable'))
80
+
81
+
82
+ # app = [window (width=200, height=400)
83
+ # [para 'Welcome.', button 'OK']]
84
+ # app first name
85
+
86
+ app = {
87
+ window: {width: 200, height: 200}
88
+ para: 'Welcome.'
89
+ button: 'OK'
90
+ }
91
+ app.window
92
+
93
+
94
+ # x = 1
95
+ # y = 2
96
+ #
97
+ # x = 1, y = 2
98
+
99
+ x: 1
100
+ y: 2
101
+
102
+ x: 1; y: 2
103
+
104
+
105
+ # table = (language='Potion'
106
+ # pointless=true)
107
+
108
+ table: {
109
+ language: 'Potion'
110
+ pointless: yes
111
+ }
112
+
113
+
114
+ # # this foul business...
115
+ # String length = (): 10.
116
+
117
+ # this foul business...
118
+ String::length: -> 10
119
+
120
+
121
+ # block = :
122
+ # 'potion' print.
123
+
124
+ block: ->
125
+ print('potion')
126
+
127
+
128
+ # if (age > 100): 'ancient'.
129
+
130
+ if age > 100 then 'ancient'
131
+
132
+
133
+ # author =
134
+ # if (title == 'Jonathan Strange & Mr. Norrell'):
135
+ # 'Susanna Clarke'.
136
+ # elsif (title == 'The Star Diaries'):
137
+ # 'Stanislaw Lem'.
138
+ # elsif (title == 'The Slynx'):
139
+ # 'Tatyana Tolstaya'.
140
+ # else:
141
+ # '... probably Philip K. Dick'.
142
+
143
+ switch author
144
+ when 'Jonathan Strange & Mr. Norrell'
145
+ 'Susanna Clarke'
146
+ when 'The Star Diaries'
147
+ 'Stanislaw Lem'
148
+ when 'The Slynx'
149
+ 'Tatyana Tolstaya'
150
+ else
151
+ '... probably Philip K. Dick'
152
+
153
+
154
+ # count = 8
155
+ # while (count > 0):
156
+ # 'quaff' print
157
+ # count--.
158
+
159
+ count: 8
160
+ while count > 0
161
+ print('quaff')
162
+ count--
163
+
164
+
165
+ # 1 to 5 (a):
166
+ # a string print.
167
+
168
+ print(a) for a in [1..5]
169
+
170
+
171
+ # if (3 ?gender):
172
+ # "Huh? Numbers are sexed? That's amazing." print.
173
+
174
+ if (3).gender?
175
+ print("Huh? Numbers are sexed? That's amazing.")
176
+
177
+
178
+ # HomePage get = (url):
179
+ # session = url query ? at ('session').
180
+
181
+ HomePage::get: (url) ->
182
+ session: url.query.session if url.query?
183
+
184
+
185
+ # BTree = class: /left, /right.
186
+ # b = BTree ()
187
+ # b /left = BTree ()
188
+ # b /right = BTree ()
189
+
190
+ BTree: ->
191
+ b: new BTree()
192
+ b.left: new BTree()
193
+ b.right: new BTree()
194
+
195
+
196
+ # BTree = class: /left, /right.
197
+ # b = BTree ()
198
+ #
199
+ # if (b ? /left):
200
+ # 'left path found!' print.
201
+
202
+ BTree: ->
203
+ b: new BTree()
204
+
205
+ print('left path found!') if b.left?