haml-more 0.4.0.a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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?