shoes 4.0.0.pre2 → 4.0.0.pre3

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 (311) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -21
  3. metadata +18 -337
  4. data/CHANGELOG +0 -84
  5. data/Gemfile +0 -24
  6. data/Guardfile +0 -11
  7. data/Rakefile +0 -14
  8. data/app.yaml +0 -60
  9. data/benchmark/app_clear.rb +0 -21
  10. data/benchmark/clear.rb +0 -69
  11. data/benchmark/memory/text_dispose.rb +0 -9
  12. data/benchmark/para_creator.rb +0 -9
  13. data/benchmark/paras.rb +0 -52
  14. data/benchmark/urls.rb +0 -40
  15. data/bin/ruby-shoes +0 -6
  16. data/bin/shoes-guard +0 -8
  17. data/bin/shoes-stub +0 -59
  18. data/ext/install/Rakefile +0 -29
  19. data/ext/install/shoes.bat +0 -9
  20. data/lib/shoes.rb +0 -5
  21. data/lib/shoes/ui/cli.rb +0 -102
  22. data/lib/shoes/ui/help.rb +0 -535
  23. data/lib/shoes/ui/manual.rb +0 -6
  24. data/lib/shoes/version.rb +0 -3
  25. data/manifests/common.rb +0 -34
  26. data/manifests/shoes.rb +0 -44
  27. data/samples/Gemfile +0 -3
  28. data/samples/Gemfile.lock +0 -35
  29. data/samples/README +0 -97
  30. data/samples/boom.rb +0 -239
  31. data/samples/class-book-adjusted.rb +0 -45
  32. data/samples/class-book.rb +0 -43
  33. data/samples/class-book.yaml +0 -387
  34. data/samples/clicky.rb +0 -24
  35. data/samples/cy.png +0 -0
  36. data/samples/expert-definr.rb +0 -23
  37. data/samples/expert-funnies.rb +0 -60
  38. data/samples/expert-game-of-life-adjusted.rb +0 -249
  39. data/samples/expert-game-of-life.rb +0 -243
  40. data/samples/expert-irb-adjusted.rb +0 -110
  41. data/samples/expert-irb.rb +0 -112
  42. data/samples/expert-minesweeper-adjusted.rb +0 -272
  43. data/samples/expert-minesweeper.rb +0 -267
  44. data/samples/expert-othello-adjusted.rb +0 -325
  45. data/samples/expert-othello.rb +0 -318
  46. data/samples/expert-pong.rb +0 -62
  47. data/samples/expert-snake.rb +0 -78
  48. data/samples/expert-tankspank.rb +0 -385
  49. data/samples/flow.rb +0 -63
  50. data/samples/good-arc.rb +0 -45
  51. data/samples/good-clock.rb +0 -51
  52. data/samples/good-displace.rb +0 -98
  53. data/samples/good-follow.rb +0 -26
  54. data/samples/good-potato-chopping.rb +0 -22
  55. data/samples/good-reminder.rb +0 -174
  56. data/samples/good-vjot.rb +0 -58
  57. data/samples/gray.rb +0 -11
  58. data/samples/loogink.png +0 -0
  59. data/samples/nks_booklist.rb +0 -24
  60. data/samples/nks_breadsticks.rb +0 -7
  61. data/samples/nks_dancing_circle.rb +0 -13
  62. data/samples/nks_dictionary.rb +0 -23
  63. data/samples/nks_edit_box.rb +0 -4
  64. data/samples/nks_edit_line.rb +0 -6
  65. data/samples/nks_notes.rb +0 -16
  66. data/samples/nks_poem.rb +0 -22
  67. data/samples/nks_self.rb +0 -6
  68. data/samples/nks_text_sizes.rb +0 -10
  69. data/samples/nks_trurl.rb +0 -5
  70. data/samples/original-manual-adjusted.rb +0 -475
  71. data/samples/original-manual.rb +0 -472
  72. data/samples/packaging/package_me.rb +0 -6
  73. data/samples/potato_chopping/1258_s001.gif +0 -0
  74. data/samples/potato_chopping/1258_s002.gif +0 -0
  75. data/samples/potato_chopping/1258_s003.gif +0 -0
  76. data/samples/potato_chopping/1258_s004.gif +0 -0
  77. data/samples/potato_chopping/1258_s005.gif +0 -0
  78. data/samples/potato_chopping/1258_s006.gif +0 -0
  79. data/samples/potato_chopping/1258_s007.gif +0 -0
  80. data/samples/potato_chopping/1258_s008.gif +0 -0
  81. data/samples/potato_chopping/1258_s009.gif +0 -0
  82. data/samples/potato_chopping/1258_s010.gif +0 -0
  83. data/samples/potato_chopping/1258_s011.gif +0 -0
  84. data/samples/potato_chopping/1258_s012.gif +0 -0
  85. data/samples/potato_chopping/1258_s013.gif +0 -0
  86. data/samples/potato_chopping/1258_s014.gif +0 -0
  87. data/samples/potato_chopping/1258_s015.gif +0 -0
  88. data/samples/potato_chopping/1258_s016.gif +0 -0
  89. data/samples/potato_chopping/1258_s017.gif +0 -0
  90. data/samples/potato_chopping/1258_s018.gif +0 -0
  91. data/samples/potato_chopping/1258_s019.gif +0 -0
  92. data/samples/potato_chopping/1258_s020.gif +0 -0
  93. data/samples/potato_chopping/1258_s021.gif +0 -0
  94. data/samples/potato_chopping/1258_s022.gif +0 -0
  95. data/samples/potato_chopping/1258_s023.gif +0 -0
  96. data/samples/potato_chopping/1258_s024.gif +0 -0
  97. data/samples/potato_chopping/1258_s025.gif +0 -0
  98. data/samples/potato_chopping/1258_s026.gif +0 -0
  99. data/samples/potato_chopping/1258_s027.gif +0 -0
  100. data/samples/potato_chopping/1258_s028.gif +0 -0
  101. data/samples/potato_chopping/1258_s029.gif +0 -0
  102. data/samples/potato_chopping/1258_s030.gif +0 -0
  103. data/samples/potato_chopping/1258_s031.gif +0 -0
  104. data/samples/potato_chopping/1258_s032.gif +0 -0
  105. data/samples/potato_chopping/1258_s033.gif +0 -0
  106. data/samples/potato_chopping/1258_s034.gif +0 -0
  107. data/samples/potato_chopping/1258_s035.gif +0 -0
  108. data/samples/potato_chopping/1258_s036.gif +0 -0
  109. data/samples/potato_chopping/1258_s037.gif +0 -0
  110. data/samples/potato_chopping/1258_s038.gif +0 -0
  111. data/samples/potato_chopping/1258_s039.gif +0 -0
  112. data/samples/potato_chopping/1258_s040.gif +0 -0
  113. data/samples/potato_chopping/1258_s041.gif +0 -0
  114. data/samples/potato_chopping/1258_s042.gif +0 -0
  115. data/samples/potato_chopping/1258_s043.gif +0 -0
  116. data/samples/potato_chopping/1258_s044.gif +0 -0
  117. data/samples/potato_chopping/1258_s045.gif +0 -0
  118. data/samples/potato_chopping/1258_s046.gif +0 -0
  119. data/samples/potato_chopping/1258_s047.gif +0 -0
  120. data/samples/potato_chopping/1258_s048.gif +0 -0
  121. data/samples/potato_chopping/1258_s049.gif +0 -0
  122. data/samples/potato_chopping/1258_s050.gif +0 -0
  123. data/samples/potato_chopping/1258_s051.gif +0 -0
  124. data/samples/potato_chopping/1258_s052.gif +0 -0
  125. data/samples/potato_chopping/1258_s053.gif +0 -0
  126. data/samples/potato_chopping/1258_s054.gif +0 -0
  127. data/samples/potato_chopping/1258_s055.gif +0 -0
  128. data/samples/potato_chopping/1258_s056.gif +0 -0
  129. data/samples/potato_chopping/1258_s057.gif +0 -0
  130. data/samples/potato_chopping/1258_s058.gif +0 -0
  131. data/samples/potato_chopping/1258_s059.gif +0 -0
  132. data/samples/present.rb +0 -27
  133. data/samples/progress.rb +0 -10
  134. data/samples/sample1.rb +0 -30
  135. data/samples/sample12.rb +0 -21
  136. data/samples/sample13.rb +0 -13
  137. data/samples/sample14.rb +0 -64
  138. data/samples/sample15.rb +0 -18
  139. data/samples/sample16.rb +0 -10
  140. data/samples/sample17.rb +0 -10
  141. data/samples/sample2.rb +0 -14
  142. data/samples/sample21.rb +0 -5
  143. data/samples/sample23.rb +0 -8
  144. data/samples/sample24.rb +0 -21
  145. data/samples/sample27.rb +0 -18
  146. data/samples/sample3.rb +0 -14
  147. data/samples/sample31.rb +0 -22
  148. data/samples/sample34.rb +0 -27
  149. data/samples/sample35.rb +0 -32
  150. data/samples/sample37.rb +0 -8
  151. data/samples/sample4.rb +0 -7
  152. data/samples/sample42.rb +0 -14
  153. data/samples/sample45.rb +0 -11
  154. data/samples/sample56.rb +0 -10
  155. data/samples/sample6.rb +0 -9
  156. data/samples/sample7.rb +0 -3
  157. data/samples/sample8.rb +0 -7
  158. data/samples/sample9.rb +0 -10
  159. data/samples/simple-accordion.rb +0 -75
  160. data/samples/simple-anim-shapes.rb +0 -17
  161. data/samples/simple-anim-text.rb +0 -13
  162. data/samples/simple-animate.rb +0 -12
  163. data/samples/simple-arc.rb +0 -23
  164. data/samples/simple-bounce.rb +0 -24
  165. data/samples/simple-brightness-transitions.rb +0 -8
  166. data/samples/simple-button-animate.rb +0 -16
  167. data/samples/simple-calc-2.rb +0 -34
  168. data/samples/simple-calc.rb +0 -70
  169. data/samples/simple-color-selector.rb +0 -10
  170. data/samples/simple-color-transitions.rb +0 -11
  171. data/samples/simple-control-sizes.rb +0 -24
  172. data/samples/simple-curve.rb +0 -26
  173. data/samples/simple-dialogs-outside.rb +0 -12
  174. data/samples/simple-dialogs.rb +0 -32
  175. data/samples/simple-displace.rb +0 -15
  176. data/samples/simple-downloader.rb +0 -27
  177. data/samples/simple-draw.rb +0 -13
  178. data/samples/simple-editor.rb +0 -28
  179. data/samples/simple-face.rb +0 -14
  180. data/samples/simple-flow-wrap.rb +0 -11
  181. data/samples/simple-font.rb +0 -17
  182. data/samples/simple-form.rb +0 -29
  183. data/samples/simple-form.shy +0 -0
  184. data/samples/simple-fullscreen.rb +0 -4
  185. data/samples/simple-guess-game.rb +0 -28
  186. data/samples/simple-keypress.rb +0 -14
  187. data/samples/simple-manual.rb +0 -2
  188. data/samples/simple-mask.rb +0 -21
  189. data/samples/simple-menu.rb +0 -47
  190. data/samples/simple-mouse-follow.rb +0 -8
  191. data/samples/simple-move.rb +0 -13
  192. data/samples/simple-oval.rb +0 -3
  193. data/samples/simple-sample-executor.rb +0 -6
  194. data/samples/simple-shoes-intro.rb +0 -22
  195. data/samples/simple-slide.rb +0 -56
  196. data/samples/simple-sound.rb +0 -30
  197. data/samples/simple-sphere.rb +0 -28
  198. data/samples/simple-stripes.rb +0 -8
  199. data/samples/simple-tictactoe.rb +0 -238
  200. data/samples/simple-timer.rb +0 -15
  201. data/samples/simple-video.rb +0 -13
  202. data/samples/simple-visibility.rb +0 -11
  203. data/samples/simple-widget.rb +0 -9
  204. data/samples/sounds/102719__sarge4267__explosion.mp3 +0 -0
  205. data/samples/sounds/145622__andybrannan__train-fog-horn-long-wyomming.aiff +0 -0
  206. data/samples/sounds/46492__phreaksaccount__shields1.ogg +0 -0
  207. data/samples/sounds/61847__simon-rue__boink-v3.wav +0 -0
  208. data/samples/swt-raw.rb +0 -20
  209. data/samples/troll.rb +0 -22
  210. data/shoes.gemspec +0 -29
  211. data/snapshots/sample1.png +0 -0
  212. data/snapshots/sample10.png +0 -0
  213. data/snapshots/sample11.png +0 -0
  214. data/snapshots/sample12.png +0 -0
  215. data/snapshots/sample13.png +0 -0
  216. data/snapshots/sample14.png +0 -0
  217. data/snapshots/sample15.png +0 -0
  218. data/snapshots/sample16.png +0 -0
  219. data/snapshots/sample17.png +0 -0
  220. data/snapshots/sample18.png +0 -0
  221. data/snapshots/sample19.png +0 -0
  222. data/snapshots/sample2.png +0 -0
  223. data/snapshots/sample20.png +0 -0
  224. data/snapshots/sample21.png +0 -0
  225. data/snapshots/sample22.png +0 -0
  226. data/snapshots/sample23.png +0 -0
  227. data/snapshots/sample24.png +0 -0
  228. data/snapshots/sample27.png +0 -0
  229. data/snapshots/sample28.png +0 -0
  230. data/snapshots/sample29.png +0 -0
  231. data/snapshots/sample3.png +0 -0
  232. data/snapshots/sample30.png +0 -0
  233. data/snapshots/sample31.png +0 -0
  234. data/snapshots/sample34.png +0 -0
  235. data/snapshots/sample35.png +0 -0
  236. data/snapshots/sample36.png +0 -0
  237. data/snapshots/sample37.png +0 -0
  238. data/snapshots/sample4.png +0 -0
  239. data/snapshots/sample42.png +0 -0
  240. data/snapshots/sample44.png +0 -0
  241. data/snapshots/sample45.png +0 -0
  242. data/snapshots/sample46.png +0 -0
  243. data/snapshots/sample5.png +0 -0
  244. data/snapshots/sample56.png +0 -0
  245. data/snapshots/sample6.png +0 -0
  246. data/snapshots/sample7.png +0 -0
  247. data/snapshots/sample8.png +0 -0
  248. data/snapshots/sample9.png +0 -0
  249. data/snapshots/sample99.png +0 -0
  250. data/static/PKGBUILD +0 -47
  251. data/static/Shoes.icns +0 -0
  252. data/static/avatar.png +0 -0
  253. data/static/code_highlighter.js +0 -188
  254. data/static/code_highlighter_ruby.js +0 -26
  255. data/static/downloading.png +0 -0
  256. data/static/icon-debug.png +0 -0
  257. data/static/icon-error.png +0 -0
  258. data/static/icon-info.png +0 -0
  259. data/static/icon-warn.png +0 -0
  260. data/static/listbox_button1.png +0 -0
  261. data/static/listbox_button2.png +0 -0
  262. data/static/man-app.png +0 -0
  263. data/static/man-builds.png +0 -0
  264. data/static/man-builds1.png +0 -0
  265. data/static/man-editor-notepad.png +0 -0
  266. data/static/man-editor-osx.png +0 -0
  267. data/static/man-ele-background.png +0 -0
  268. data/static/man-ele-border.png +0 -0
  269. data/static/man-ele-button.png +0 -0
  270. data/static/man-ele-check.png +0 -0
  271. data/static/man-ele-editbox.png +0 -0
  272. data/static/man-ele-editline.png +0 -0
  273. data/static/man-ele-image.png +0 -0
  274. data/static/man-ele-listbox.png +0 -0
  275. data/static/man-ele-progress.png +0 -0
  276. data/static/man-ele-radio.png +0 -0
  277. data/static/man-ele-shape.png +0 -0
  278. data/static/man-ele-textblock.png +0 -0
  279. data/static/man-ele-video.png +0 -0
  280. data/static/man-intro-dmg.png +0 -0
  281. data/static/man-intro-exe.png +0 -0
  282. data/static/man-look-tiger.png +0 -0
  283. data/static/man-look-ubuntu.png +0 -0
  284. data/static/man-look-vista.png +0 -0
  285. data/static/man-run-osx.png +0 -0
  286. data/static/man-run-vista.png +0 -0
  287. data/static/man-run-xp.png +0 -0
  288. data/static/man-shot1.png +0 -0
  289. data/static/manual-en.txt +0 -3531
  290. data/static/manual-ja.txt +0 -2829
  291. data/static/manual.css +0 -184
  292. data/static/menu-corner1.png +0 -0
  293. data/static/menu-corner2.png +0 -0
  294. data/static/menu-gray.png +0 -0
  295. data/static/menu-left.png +0 -0
  296. data/static/menu-right.png +0 -0
  297. data/static/menu-top.png +0 -0
  298. data/static/shoes-dmg.jpg +0 -0
  299. data/static/shoes-icon-blue.png +0 -0
  300. data/static/shoes-icon-brown.png +0 -0
  301. data/static/shoes-icon.png +0 -0
  302. data/static/shoes-manual-apps.gif +0 -0
  303. data/static/shoes-manual-apps.png +0 -0
  304. data/static/shoes_main_window.png +0 -0
  305. data/static/stripe.png +0 -0
  306. data/static/tutor-back.png +0 -0
  307. data/tasks/changelog.rb +0 -92
  308. data/tasks/gem.rb +0 -38
  309. data/tasks/rspec.rb +0 -106
  310. data/tasks/sample.rb +0 -66
  311. data/tasks/yard.rb +0 -13
@@ -1,472 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- module Shoes::Manual
3
- PARA_RE = /\s*?(\{{3}(?:.+?)\}{3})|\n\n/m
4
- CODE_RE = /\{{3}(?:\s*\#![^\n]+)?(.+?)\}{3}/m
5
- IMAGE_RE = /\!(\{([^}\n]+)\})?([^!\n]+\.\w+)\!/
6
- CODE_STYLE = {:size => 9, :margin => 12}
7
- INTRO_STYLE = {:size => 16, :margin_bottom => 20, :stroke => "#000"}
8
- SUB_STYLE = {:stroke => "#CCC", :margin_top => 10}
9
- IMAGE_STYLE = {:margin => 8, :margin_left => 100}
10
- COLON = ": "
11
-
12
- [INTRO_STYLE, SUB_STYLE].each do |h|
13
- h[:font] = "MS UI Gothic"
14
- end if Shoes.language == 'ja'
15
-
16
- def self.path
17
- path = "#{DIR}/static/manual-#{Shoes.language}.txt"
18
- unless File.exists? path
19
- path = "#{DIR}/static/manual-en.txt"
20
- end
21
- path
22
- end
23
-
24
- def dewikify_hi(str, terms, intro = false)
25
- if terms
26
- code = []
27
- str = str.
28
- gsub(CODE_RE) { |x| code << x; "CODE#[#{code.length-1}]" }.
29
- gsub(/#{Regexp::quote(terms)}/i, '@\0@').
30
- gsub(/CODE#\[(\d+)\]/) { code[$1.to_i] }
31
- end
32
- dewikify(str, intro)
33
- end
34
-
35
- def dewikify_p(ele, str, *args)
36
- str = str.gsub(/\n+\s*/, " ").dump.
37
- gsub(/`(.+?)`/m, '", code("\1"), "').gsub(/\[\[BR\]\]/i, "\n").
38
- gsub(/\^(.+?)\^/m, '\1').
39
- gsub(/@(.+?)@/m, '", strong("\1", :fill => yellow), "').
40
- gsub(/'''(.+?)'''/m, '", strong("\1"), "').gsub(/''(.+?)''/m, '", em("\1"), "').
41
- gsub(/\[\[(\S+?)\]\]/m, '", link("\1".split(".", 2).last) { open_link("\1") }, "').
42
- gsub(/\[\[(\S+?) (.+?)\]\]/m, '", link("\2") { open_link("\1") }, "').
43
- gsub(IMAGE_RE, '", *args); stack(IMAGE_STYLE.merge({\2})) { image("#{DIR}/static/\3") }; #{ele}("')
44
- #debug str if str =~ /The list of special keys/
45
- a = str.split(', ", ", ')
46
- if a.size == 1
47
- eval("#{ele}(#{str}, *args)")
48
- else
49
- flow do
50
- a[0...-1].each{|s| eval("#{ele}(#{s}, ',', *args)")}
51
- eval("#{ele}(#{a[-1]}, *args)")
52
- end
53
- end
54
- end
55
-
56
- def dewikify_code(str)
57
- str = str.gsub(/\A\n+/, '').chomp
58
- stack :margin_bottom => 12 do
59
- background rgb(210, 210, 210), :curve => 4
60
- para code(str), CODE_STYLE
61
- stack :top => 0, :right => 2, :width => 70 do
62
- stack do
63
- background "#8A7", :margin => [0, 2, 0, 2], :curve => 4
64
- para link("Run this", :stroke => "#eee", :underline => "none") { run_code(str) },
65
- :margin => 4, :align => 'center', :weight => 'bold', :size => 9
66
- end
67
- end
68
- end
69
- end
70
-
71
- def wiki_tokens(str, intro = false)
72
- paras = str.split(PARA_RE).reject { |x| x.empty? }
73
- if intro
74
- yield :intro, paras.shift
75
- end
76
- paras.map do |ps|
77
- if ps =~ CODE_RE
78
- yield :code, $1
79
- else
80
- case ps
81
- when /\A\{COLORS\}/
82
- yield :colors, nil
83
- when /\A\{INDEX\}/
84
- yield :index, nil
85
- when /\A\{SAMPLES\}/
86
- yield :samples, nil
87
- when /\A \* (.+)/m
88
- yield :list, $1.split(/^ \* /)
89
- when /\A==== (.+) ====/
90
- yield :caption, $1
91
- when /\A=== (.+) ===/
92
- yield :tagline, $1
93
- when /\A== (.+) ==/
94
- yield :subtitle, $1
95
- when /\A= (.+) =/
96
- yield :title, $1
97
- else
98
- yield :para, ps
99
- end
100
- end
101
- end
102
- end
103
-
104
- def dewikify(str, intro = false)
105
- proc do
106
- wiki_tokens(str, intro) do |sym, text|
107
- case sym when :intro
108
- dewikify_p :para, text, INTRO_STYLE
109
- when :code
110
- dewikify_code(text)
111
- when :colors
112
- color_page
113
- when :index
114
- index_page
115
- when :samples
116
- sample_page
117
- when :list
118
- text.each { |t| stack(:margin_left => 30) {
119
- fill black; oval -10, 7, 6; dewikify_p :para, t } }
120
- else
121
- dewikify_p sym, text
122
- end
123
- end
124
- end
125
- end
126
-
127
- def sample_page
128
- folder = File.join DIR, 'samples'
129
- h = {}
130
- Dir.glob(File.join folder, '*').each do |file|
131
- if File.extname(file) == '.rb'
132
- key = File.basename(file).split('-')[0]
133
- h[key] ? h[key].push(file) : h[key] = [file]
134
- end
135
- end
136
- stack do
137
- h.each do |k, v|
138
- subtitle k
139
- flow do
140
- v.each do |file|
141
- para link(File.basename(file).split('-')[1..-1].join('-')[0..-4]){
142
- Dir.chdir(folder){eval IO.read(file).force_encoding("UTF-8"), TOPLEVEL_BINDING}
143
- }
144
- end
145
- end
146
- end
147
- end
148
- end
149
-
150
- def color_page
151
- color_names = (Shoes::COLORS.keys*"\n").split("\n").sort
152
- flow do
153
- color_names.each do |color|
154
- flow :width => 0.33 do
155
- c = send(color)
156
- background c
157
- para strong(color), "\n", c, :stroke => (c.dark? ? white : black),
158
- :margin => 4, :align => 'center'
159
- end
160
- end
161
- end
162
- end
163
-
164
- def class_tree
165
- tree = {}
166
- Shoes.constants.each do |c|
167
- k = Shoes.const_get(c)
168
- next unless k.respond_to? :superclass
169
-
170
- c = "Shoes::#{c}"
171
- if k.superclass == Object
172
- tree[c] ||= []
173
- else
174
- k.ancestors[1..-1].each do |sk|
175
- break if [Object, Kernel].include? sk
176
- next unless sk.is_a? Class #don't show mixins
177
- (tree[sk.name] ||= []) << c
178
- c = sk.name
179
- end
180
- end
181
- end
182
- tree
183
- end
184
-
185
- def index_page
186
- tree = class_tree
187
- shown = []
188
- index_p = proc do |k, subs|
189
- unless shown.include? k
190
- stack :margin_left => 20 do
191
- flow do
192
- para "▸ ", :font => case RUBY_PLATFORM
193
- when /mingw/; "MS UI Gothic"
194
- when /darwin/; "AppleGothic, Arial"
195
- else "Arial"
196
- end
197
- para k
198
- end
199
- subs.uniq.sort.each do |s|
200
- index_p[s, tree[s]]
201
- end if subs
202
- end
203
- shown << k
204
- end
205
- end
206
- tree.sort.each &index_p
207
- end
208
-
209
- def run_code str
210
- eval(str, TOPLEVEL_BINDING)
211
- end
212
-
213
- def load_docs path
214
- return @docs if @docs
215
- str = Shoes.read_file(path)
216
- @search = Shoes::Search.new
217
- @sections, @methods, @mindex = {}, {}, {}
218
- @docs =
219
- (str.split(/^= (.+?) =/)[1..-1]/2).map do |k,v|
220
- sparts = v.split(/^== (.+?) ==/)
221
-
222
- sections = (sparts[1..-1]/2).map do |k2,v2|
223
- meth = v2.split(/^=== (.+?) ===/)
224
- k2t = k2[/^(?:The )?([\-\w]+)/, 1]
225
- meth_plain = meth[0].gsub(IMAGE_RE, '')
226
- @search.add_document :uri => "T #{k2t}", :body => "#{k2}\n#{meth_plain}".downcase
227
-
228
- hsh = {'title' => k2, 'section' => k,
229
- 'description' => meth[0],
230
- 'methods' => (meth[1..-1]/2).map { |_k,_v|
231
- @search.add_document :uri => "M #{k}#{COLON}#{k2t}#{COLON}#{_k}", :body => "#{_k}\n#{_v}".downcase
232
- @mindex["#{k2t}.#{_k[/[\w\.]+/]}"] = [k2t, _k]
233
- [_k, _v]
234
- }}
235
- @methods[k2t] = hsh
236
- [k2t, hsh]
237
- end
238
-
239
- @search.add_document :uri => "S #{k}", :body => "#{k}\n#{sparts[0]}".downcase
240
- hsh = {'description' => sparts[0], 'sections' => sections,
241
- 'class' => "toc" + k.downcase.gsub(/\W+/, '')}
242
- @sections[k] = hsh
243
- [k, hsh]
244
- end
245
- @search.finish!
246
- @docs
247
- end
248
-
249
- def show_search
250
- @toc.each { |k,v| v.hide }
251
- @title.replace "Search"
252
- @doc.clear do
253
- dewikify_p :para, "Try method names (like `button` or `arrow`) or topics (like `slots`)", :align => 'center'
254
- flow :margin_left => 60 do
255
- edit_line :width => -60 do |terms|
256
- @results.clear do
257
- termd = terms.text.downcase
258
- #found = termd.empty? ? [] : manual_search(termd)
259
- found = (termd.empty? or termd[0] == 'z' or termd[0] == 'y') ? [] : manual_search(termd)
260
- para "#{found.length} matches", :align => "center", :margin_bottom => 0
261
- found.each do |typ, head|
262
- flow :margin => 4 do
263
- case typ
264
- when "S"
265
- background "#333", :curve => 4
266
- caption strong(link(head, :stroke => white) { open_section(head, terms.text) })
267
- para "Section header", Shoes::Manual::SUB_STYLE
268
- when "T"
269
- background "#777", :curve => 4
270
- caption strong(link(head, :stroke => "#EEE") { open_methods(head, terms.text) })
271
- hsh = @methods[head]
272
- para "Sub-section under #{hsh['section']} (#{hsh['methods'].length} methods)", Shoes::Manual::SUB_STYLE
273
- when "M"
274
- background "#CCC", :curve => 4
275
- sect, subhead, head = head.split(Shoes::Manual::COLON, 3)
276
- para strong(sect, Shoes::Manual::COLON, subhead, Shoes::Manual::COLON, link(head) { open_methods(subhead, terms.text, head) })
277
- end
278
- end
279
- end
280
- end
281
- end
282
- end
283
- @results = stack
284
- end
285
- app.slot.scroll_top = 0
286
- end
287
-
288
- def open_link(head)
289
- if head == "Search"
290
- show_search
291
- elsif @sections.has_key? head
292
- open_section(head)
293
- elsif @methods.has_key? head
294
- open_methods(head)
295
- elsif @mindex.has_key? head
296
- head, sub = @mindex[head]
297
- open_methods(head, nil, sub)
298
- elsif head =~ /^http:\/\//
299
- debug head
300
- visit head
301
- end
302
- end
303
-
304
- def add_next_link(docn, optn)
305
- opt1, optn = @docs[docn][1], optn + 1
306
- if opt1['sections'][optn]
307
- @doc.para "Next: ",
308
- link(opt1['sections'][optn][1]['title']) { open_methods(opt1['sections'][optn][0]) },
309
- :align => "right"
310
- elsif @docs[docn + 1]
311
- @doc.para "Next: ",
312
- link(@docs[docn + 1][0]) { open_section(@docs[docn + 1][0].gsub(/\W/, '')) },
313
- :align => "right"
314
- end
315
- end
316
-
317
- def open_section(sect_s, terms = nil)
318
- sect_h = @sections[sect_s]
319
- sect_cls = sect_h['class']
320
- @toc.each { |k,v| v.send(k == sect_cls ? :show : :hide) }
321
- @title.replace sect_s
322
- @doc.clear(&dewikify_hi(sect_h['description'], terms, true))
323
- add_next_link(@docs.index { |x,| x == sect_s }, -1) rescue nil
324
- app.slot.scroll_top = 0
325
- end
326
-
327
- def open_methods(meth_s, terms = nil, meth_a = nil)
328
- meth_h = @methods[meth_s]
329
- @title.replace meth_h['title']
330
- @doc.clear do
331
- unless meth_a
332
- instance_eval &dewikify_hi(meth_h['description'], terms, true)
333
- end
334
- meth_h['methods'].each do |mname, expl|
335
- if meth_a.nil? or meth_a == mname
336
- sig, val = mname.split("»", 2)
337
- stack(:margin_top => 8, :margin_bottom => 8) {
338
- background "#333".."#666", :curve => 3, :angle => 90
339
- tagline sig, (span("»", val, :stroke => "#BBB") if val), :margin => 4 }
340
- instance_eval &dewikify_hi(expl, terms)
341
- end
342
- end
343
- end
344
- optn = nil
345
- docn = @docs.index { |_,h| optn = h['sections'].index { |x,| x == meth_s } } rescue nil
346
- add_next_link(docn, optn) if docn
347
- app.slot.scroll_top = 0
348
- end
349
-
350
- def manual_search(terms)
351
- terms += " " if terms.length == 1
352
- @search.find_all(terms).map do |title, count|
353
- title.split(" ", 2)
354
- end
355
- end
356
-
357
- def make_html(path, title, menu, &blk)
358
- require 'hpricot'
359
- File.open(path, 'w') do |f|
360
- f << Hpricot do
361
- xhtml_transitional do
362
- head do
363
- meta :"http-equiv" => "Content-Type", "content" => "text/html; charset=utf-8"
364
- title "The Shoes Manual // #{title}"
365
- script :type => "text/javascript", :src => "static/code_highlighter.js"
366
- script :type => "text/javascript", :src => "static/code_highlighter_ruby.js"
367
- style :type => "text/css" do
368
- text "@import 'static/manual.css';"
369
- end
370
- end
371
- body do
372
- div.main! do
373
- div.manual! &blk
374
- div.sidebar do
375
- img :src => "static/shoes-icon.png"
376
- ul do
377
- li { a.prime "HELP", :href => "./" }
378
- menu.each do |m, sm|
379
- li do
380
- a m, :href => "#{m[/^\w+/]}.html"
381
- if sm
382
- ul.sub do
383
- sm.each { |smm| li { a smm, :href => "#{smm}.html" } }
384
- end
385
- end
386
- end
387
- end
388
-
389
- end
390
- end
391
- end
392
- end
393
- end
394
- end.to_html
395
- end
396
- end
397
- end
398
-
399
- def Shoes.make_help_page
400
- font "#{DIR}/fonts/Coolvetica.ttf" unless Shoes::FONTS.include? "Coolvetica"
401
- proc do
402
- extend Shoes::Manual
403
- docs = load_docs Shoes::Manual.path
404
-
405
- style(Shoes::Image, :margin => 8, :margin_left => 100)
406
- style(Shoes::Code, :stroke => "#C30")
407
- style(Shoes::LinkHover, :stroke => green, :fill => nil)
408
- style(Shoes::Para, :size => 12, :stroke => "#332")
409
- style(Shoes::Tagline, :size => 12, :weight => "bold", :stroke => "#eee", :margin => 6)
410
- style(Shoes::Caption, :size => 24)
411
- background "#ddd".."#fff", :angle => 90
412
-
413
- [Shoes::LinkHover, Shoes::Para, Shoes::Tagline, Shoes::Caption].each do |type|
414
- style(type, :font => "MS UI Gothic")
415
- end if Shoes.language == 'ja'
416
-
417
- stack do
418
- background black
419
- stack :margin_left => 118 do
420
- para "The Shoes Manual", :stroke => "#eee", :margin_top => 8, :margin_left => 17,
421
- :margin_bottom => 0
422
- @title = title docs[0][0], :stroke => white, :margin => 4, :margin_left => 14,
423
- :margin_top => 0, :font => "Coolvetica"
424
- end
425
- background "rgb(66, 66, 66, 180)".."rgb(0, 0, 0, 0)", :height => 0.7
426
- background "rgb(66, 66, 66, 100)".."rgb(255, 255, 255, 0)", :height => 20, :bottom => 0
427
- end
428
- @doc =
429
- stack :margin_left => 130, :margin_top => 20, :margin_bottom => 50, :margin_right => 50 + gutter,
430
- &dewikify(docs[0][-1]['description'], true)
431
- add_next_link(0, -1)
432
- stack :top => 80, :left => 0, :attach => Shoes::Window do
433
- @toc = {}
434
- stack :margin => 12, :width => 130, :margin_top => 20 do
435
- docs.each do |sect_s, sect_h|
436
- sect_cls = sect_h['class']
437
- para strong(link(sect_s, :stroke => black) { open_section(sect_s) }),
438
- :size => 11, :margin => 4, :margin_top => 0
439
- @toc[sect_cls] =
440
- stack :hidden => @toc.empty? ? false : true do
441
- links = sect_h['sections'].map do |meth_s, meth_h|
442
- [link(meth_s) { open_methods(meth_s) }, "\n"]
443
- end.flatten
444
- links[-1] = {:size => 9, :margin => 4, :margin_left => 10}
445
- para *links
446
- end
447
- end
448
- end
449
- stack :margin => 12, :width => 118, :margin_top => 6 do
450
- background "#330", :curve => 4
451
- para "Not finding it? Try ", strong(link("Search", :stroke => white) { show_search }), "!", :stroke => "#ddd", :size => 9, :align => "center", :margin => 6
452
- end
453
- stack :margin => 12, :width => 118 do
454
- inscription "Shoes #{Shoes::RELEASE_NAME}\nRevision: #{Shoes::REVISION}",
455
- :size => 7, :align => "center", :stroke => "#999"
456
- end
457
- end
458
- image :width => 120, :height => 120, :top => -18, :left => 6 do
459
- image "#{DIR}/static/shoes-icon.png", :width => 100, :height => 100, :top => 10, :left => 10
460
- glow 2
461
- end
462
- end
463
- rescue => e
464
- p e.message
465
- p e.class
466
- end
467
-
468
-
469
- Shoes::Help = Shoes.make_help_page
470
-
471
- # added to start the app, was Shoes.manual_as :shoes
472
- Shoes.app(:width => 720, :height => 640, &Shoes::Help)