ruote 0.9.18 → 0.9.19

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 (323) hide show
  1. data/README.txt +2 -0
  2. data/examples/about_state.rb +29 -29
  3. data/examples/bigflow.rb +9 -9
  4. data/examples/csv_weather.rb +4 -4
  5. data/examples/engine_template.rb +141 -129
  6. data/examples/flowtracing.rb +8 -8
  7. data/examples/homeworkreview.rb +15 -15
  8. data/examples/kotoba.rb +9 -9
  9. data/examples/mano_tracker.rb +63 -63
  10. data/examples/openwferu.rb +22 -20
  11. data/examples/quotereporter.rb +79 -79
  12. data/lib/openwfe/contextual.rb +72 -72
  13. data/lib/openwfe/def.rb +21 -21
  14. data/lib/openwfe/engine.rb +19 -19
  15. data/lib/openwfe/engine/engine.rb +578 -614
  16. data/lib/openwfe/engine/expool_methods.rb +144 -115
  17. data/lib/openwfe/engine/file_persisted_engine.rb +77 -77
  18. data/lib/openwfe/engine/participant_methods.rb +96 -96
  19. data/lib/openwfe/engine/status_methods.rb +271 -247
  20. data/lib/openwfe/engine/update_exp_methods.rb +69 -69
  21. data/lib/openwfe/exceptions.rb +25 -25
  22. data/lib/openwfe/expool/errorjournal.rb +334 -348
  23. data/lib/openwfe/expool/expool_pause_methods.rb +98 -0
  24. data/lib/openwfe/expool/expressionpool.rb +793 -800
  25. data/lib/openwfe/expool/expstorage.rb +284 -313
  26. data/lib/openwfe/expool/history.rb +193 -105
  27. data/lib/openwfe/expool/journal.rb +163 -163
  28. data/lib/openwfe/expool/journal_replay.rb +228 -228
  29. data/lib/openwfe/expool/parser.rb +178 -142
  30. data/lib/openwfe/{orest/exception.rb → expool/paused_error.rb} +49 -32
  31. data/lib/openwfe/expool/representation.rb +59 -59
  32. data/lib/openwfe/expool/threadedexpstorage.rb +137 -134
  33. data/lib/openwfe/expool/wfidgen.rb +289 -287
  34. data/lib/openwfe/expool/yamlexpstorage.rb +154 -154
  35. data/lib/openwfe/expressions/condition.rb +175 -168
  36. data/lib/openwfe/expressions/environment.rb +165 -165
  37. data/lib/openwfe/expressions/expressionmap.rb +135 -131
  38. data/lib/openwfe/expressions/fe_cancel.rb +68 -68
  39. data/lib/openwfe/expressions/fe_command.rb +190 -190
  40. data/lib/openwfe/expressions/fe_concurrence.rb +531 -531
  41. data/lib/openwfe/expressions/fe_cron.rb +152 -197
  42. data/lib/openwfe/expressions/fe_cursor.rb +152 -186
  43. data/lib/openwfe/expressions/fe_define.rb +118 -118
  44. data/lib/openwfe/expressions/fe_do.rb +109 -109
  45. data/lib/openwfe/expressions/fe_equals.rb +219 -219
  46. data/lib/openwfe/expressions/fe_filter.rb +98 -98
  47. data/lib/openwfe/expressions/fe_filter_definition.rb +122 -122
  48. data/lib/openwfe/expressions/fe_fqv.rb +203 -203
  49. data/lib/openwfe/expressions/fe_http.rb +212 -0
  50. data/lib/openwfe/expressions/fe_if.rb +214 -214
  51. data/lib/openwfe/expressions/fe_iterator.rb +91 -91
  52. data/lib/openwfe/expressions/fe_listen.rb +268 -268
  53. data/lib/openwfe/expressions/fe_losfor.rb +73 -73
  54. data/lib/openwfe/expressions/fe_misc.rb +343 -351
  55. data/lib/openwfe/expressions/fe_participant.rb +206 -206
  56. data/lib/openwfe/expressions/fe_reserve.rb +153 -142
  57. data/lib/openwfe/expressions/fe_save.rb +226 -226
  58. data/lib/openwfe/expressions/fe_sequence.rb +66 -56
  59. data/lib/openwfe/expressions/fe_set.rb +80 -80
  60. data/lib/openwfe/expressions/fe_sleep.rb +132 -125
  61. data/lib/openwfe/expressions/fe_step.rb +113 -111
  62. data/lib/openwfe/expressions/fe_subprocess.rb +139 -136
  63. data/lib/openwfe/expressions/fe_timeout.rb +74 -78
  64. data/lib/openwfe/expressions/fe_wait.rb +48 -49
  65. data/lib/openwfe/expressions/fe_when.rb +106 -106
  66. data/lib/openwfe/expressions/filter.rb +60 -60
  67. data/lib/openwfe/expressions/flowexpression.rb +618 -612
  68. data/lib/openwfe/expressions/iterator.rb +158 -158
  69. data/lib/openwfe/expressions/merge.rb +53 -53
  70. data/lib/openwfe/expressions/raw.rb +396 -397
  71. data/lib/openwfe/expressions/rprocdef.rb +261 -266
  72. data/lib/openwfe/expressions/time.rb +238 -243
  73. data/lib/openwfe/expressions/timeout.rb +135 -135
  74. data/lib/openwfe/expressions/value.rb +55 -55
  75. data/lib/openwfe/extras/engine/db_persisted_engine.rb +94 -0
  76. data/lib/openwfe/extras/expool/dberrorjournal.rb +189 -0
  77. data/lib/openwfe/extras/expool/dbexpstorage.rb +355 -0
  78. data/lib/openwfe/extras/expool/dbhistory.rb +135 -0
  79. data/lib/openwfe/extras/listeners/sqslisteners.rb +146 -0
  80. data/lib/openwfe/extras/misc/activityfeed.rb +264 -0
  81. data/lib/openwfe/extras/misc/basecamp.rb +485 -0
  82. data/lib/openwfe/extras/participants/activeparticipants.rb +749 -0
  83. data/lib/openwfe/extras/participants/atomfeed_participants.rb +173 -0
  84. data/lib/openwfe/extras/participants/atompub_participants.rb +267 -0
  85. data/lib/openwfe/extras/participants/basecamp_participants.rb +87 -0
  86. data/lib/openwfe/extras/participants/csvparticipants.rb +127 -0
  87. data/lib/openwfe/extras/participants/sqsparticipants.rb +125 -0
  88. data/lib/openwfe/extras/participants/twitterparticipants.rb +176 -0
  89. data/lib/openwfe/filterdef.rb +191 -191
  90. data/lib/openwfe/flowexpressionid.rb +271 -269
  91. data/lib/openwfe/listeners/listener.rb +61 -61
  92. data/lib/openwfe/listeners/listeners.rb +81 -81
  93. data/lib/openwfe/listeners/socketlisteners.rb +189 -189
  94. data/lib/openwfe/logging.rb +74 -74
  95. data/lib/openwfe/omixins.rb +55 -54
  96. data/lib/openwfe/orest/definitions.rb +90 -90
  97. data/lib/openwfe/orest/osocket.rb +91 -91
  98. data/lib/openwfe/orest/xmlcodec.rb +471 -459
  99. data/lib/openwfe/participants.rb +19 -19
  100. data/lib/openwfe/participants/enoparticipants.rb +187 -187
  101. data/lib/openwfe/participants/participant.rb +100 -100
  102. data/lib/openwfe/participants/participantmap.rb +170 -170
  103. data/lib/openwfe/participants/participants.rb +316 -316
  104. data/lib/openwfe/participants/soapparticipants.rb +90 -90
  105. data/lib/openwfe/participants/socketparticipants.rb +143 -143
  106. data/lib/openwfe/participants/storeparticipants.rb +198 -198
  107. data/lib/openwfe/rexml.rb +44 -0
  108. data/lib/openwfe/rudefinitions.rb +87 -91
  109. data/lib/openwfe/service.rb +65 -65
  110. data/lib/openwfe/storage/yamlcustom.rb +71 -71
  111. data/lib/openwfe/storage/yamlfilestorage.rb +190 -190
  112. data/lib/openwfe/tools/flowtracer.rb +41 -45
  113. data/lib/openwfe/util/dollar.rb +125 -139
  114. data/lib/openwfe/util/irb.rb +42 -42
  115. data/lib/openwfe/util/observable.rb +93 -99
  116. data/lib/openwfe/util/ometa.rb +36 -36
  117. data/lib/openwfe/util/treechecker.rb +122 -0
  118. data/lib/openwfe/util/workqueue.rb +73 -73
  119. data/lib/openwfe/util/xml.rb +285 -279
  120. data/lib/openwfe/utils.rb +415 -442
  121. data/lib/openwfe/version.rb +1 -1
  122. data/lib/openwfe/workitem.rb +444 -437
  123. data/lib/openwfe/worklist/oldrest.rb +161 -161
  124. data/lib/openwfe/worklist/storelocks.rb +218 -218
  125. data/lib/openwfe/worklist/storeparticipant.rb +19 -19
  126. data/lib/openwfe/worklist/worklist.rb +223 -223
  127. data/test/back_0916_test.rb +57 -59
  128. data/test/bm/bm_1_xml_vs_prog.rb +25 -22
  129. data/test/bm/bm_2_step.rb +81 -81
  130. data/test/bm/ft_0f_5ms.rb +13 -13
  131. data/test/bm/ft_26_load.rb +177 -179
  132. data/test/bm/ft_26b_load.rb +57 -59
  133. data/test/bm/ft_26c_load.rb +70 -65
  134. data/test/bm/ft_recu.rb +51 -51
  135. data/test/clone_test.rb +145 -99
  136. data/test/concurrence_test.rb +41 -41
  137. data/test/condition_test.rb +104 -90
  138. data/test/description_test.rb +46 -45
  139. data/test/eno_test.rb +36 -36
  140. data/test/expmap_test.rb +26 -26
  141. data/test/extras/README.txt +5 -0
  142. data/test/extras/active_connection.rb +48 -0
  143. data/test/extras/active_with_engine_test.rb +140 -0
  144. data/test/extras/activityfeed_test.rb +85 -0
  145. data/test/extras/ap_0_test.rb +287 -0
  146. data/test/extras/ap_1_test.rb +53 -0
  147. data/test/extras/ap_test_base.rb +24 -0
  148. data/test/extras/atomfeedp_test.rb +113 -0
  149. data/test/extras/atompubp_test.rb +91 -0
  150. data/test/extras/basecamp_test.rb +53 -0
  151. data/test/extras/db_errorjournal_utest.rb +75 -0
  152. data/test/extras/db_expstorage_utest.rb +171 -0
  153. data/test/extras/db_history_0_test.rb +58 -0
  154. data/test/extras/ft_19_csv.rb +58 -0
  155. data/test/extras/ft_71_b14008.rb +85 -0
  156. data/test/extras/sqs_test.rb +57 -0
  157. data/test/extras/twitter_test.rb +62 -0
  158. data/test/fe_lookup_att_test.rb +41 -41
  159. data/test/fei_test.rb +131 -131
  160. data/test/file_persisted_engine_test.rb +30 -30
  161. data/test/file_persistence_test.rb +112 -111
  162. data/test/filep_cancel_test.rb +58 -58
  163. data/test/filter_test.rb +67 -67
  164. data/test/flowtestbase.rb +207 -219
  165. data/test/ft_0.rb +35 -35
  166. data/test/ft_0b_sequence.rb +15 -15
  167. data/test/ft_0c_testname.rb +12 -12
  168. data/test/ft_0d_participant.rb +9 -9
  169. data/test/ft_0e_multibody.rb +11 -11
  170. data/test/ft_10_loop.rb +103 -104
  171. data/test/ft_11_ppd.rb +285 -289
  172. data/test/ft_11b_ppd.rb +26 -26
  173. data/test/ft_12_blockparticipant.rb +57 -57
  174. data/test/ft_13_eno.rb +31 -31
  175. data/test/ft_14_subprocess.rb +45 -45
  176. data/test/ft_14b_subprocess.rb +107 -107
  177. data/test/ft_14c_subprocess.rb +33 -33
  178. data/test/ft_15_iterator.rb +127 -127
  179. data/test/ft_15b_iterator.rb +41 -41
  180. data/test/ft_16_fqv.rb +44 -44
  181. data/test/ft_17_condition.rb +48 -48
  182. data/test/ft_18_pname.rb +26 -26
  183. data/test/ft_1_unset.rb +140 -140
  184. data/test/ft_1b_unset.rb +17 -17
  185. data/test/ft_20_cron.rb +33 -33
  186. data/test/ft_21_cron.rb +51 -51
  187. data/test/ft_21b_cron_pause.rb +41 -41
  188. data/test/ft_22_history.rb +45 -41
  189. data/test/ft_23_when.rb +51 -51
  190. data/test/ft_23b_when.rb +43 -43
  191. data/test/ft_23c_wait.rb +48 -48
  192. data/test/ft_23d_cww.rb +28 -28
  193. data/test/ft_24_def.rb +15 -15
  194. data/test/ft_25_cancel.rb +57 -54
  195. data/test/ft_27_getflowpos.rb +79 -83
  196. data/test/ft_28_fileparticipant.rb +25 -25
  197. data/test/ft_29_httprb.rb +57 -57
  198. data/test/ft_2_concurrence.rb +99 -97
  199. data/test/ft_2b_concurrence.rb +132 -132
  200. data/test/ft_2c_concurrence.rb +37 -37
  201. data/test/ft_30_socketlistener.rb +133 -133
  202. data/test/ft_31_flowname.rb +15 -16
  203. data/test/ft_32_journal.rb +48 -48
  204. data/test/ft_32c_journal.rb +54 -54
  205. data/test/ft_32d_journal.rb +43 -46
  206. data/test/ft_33_description.rb +62 -62
  207. data/test/ft_34_cancelwfid.rb +37 -37
  208. data/test/ft_35_localdefs.rb +36 -34
  209. data/test/ft_36_subprocids.rb +61 -61
  210. data/test/ft_37_pnames.rb +33 -33
  211. data/test/ft_38_tag.rb +82 -82
  212. data/test/ft_38b_tag.rb +97 -97
  213. data/test/ft_38c_tag.rb +50 -50
  214. data/test/ft_38d_tag.rb +53 -0
  215. data/test/ft_39_reserve.rb +33 -33
  216. data/test/ft_39b_reserve.rb +59 -59
  217. data/test/ft_3_equals.rb +131 -131
  218. data/test/ft_3b_lookup_vf.rb +43 -43
  219. data/test/ft_40_defined.rb +33 -33
  220. data/test/ft_41_case.rb +80 -80
  221. data/test/ft_42_environments.rb +48 -48
  222. data/test/ft_43_pat10.rb +51 -51
  223. data/test/ft_44_save.rb +37 -37
  224. data/test/ft_44b_restore.rb +151 -151
  225. data/test/ft_45_citerator.rb +149 -149
  226. data/test/ft_45b_citerator.rb +77 -0
  227. data/test/ft_46_pparams.rb +27 -27
  228. data/test/ft_47_filter.rb +100 -100
  229. data/test/ft_48_fe_filter.rb +41 -41
  230. data/test/ft_49_condition.rb +101 -94
  231. data/test/ft_4_misc.rb +185 -190
  232. data/test/ft_50_xml_attribute.rb +101 -104
  233. data/test/ft_51_stack.rb +30 -30
  234. data/test/ft_52_obs_participant.rb +73 -73
  235. data/test/ft_53_null_noop_participant.rb +31 -31
  236. data/test/ft_54_listen.rb +183 -183
  237. data/test/ft_54b_listen.rb +32 -32
  238. data/test/ft_54c_listen.rb +60 -60
  239. data/test/ft_55_ptimeout.rb +29 -30
  240. data/test/ft_56_timeout.rb +29 -29
  241. data/test/ft_57_a.rb +105 -102
  242. data/test/ft_58_ejournal.rb +83 -80
  243. data/test/ft_58b_ejournal.rb +82 -0
  244. data/test/ft_59_ps.rb +148 -86
  245. data/test/ft_5_time.rb +77 -77
  246. data/test/ft_60_ecancel.rb +98 -98
  247. data/test/ft_61_elsub.rb +23 -23
  248. data/test/ft_62_procparticipant.rb +46 -46
  249. data/test/ft_63_pause.rb +82 -69
  250. data/test/ft_64_alias.rb +56 -57
  251. data/test/ft_65_stringlaunch.rb +29 -29
  252. data/test/ft_66_subforget.rb +42 -42
  253. data/test/ft_67_schedlaunch.rb +58 -59
  254. data/test/ft_68_ifparticipant.rb +39 -39
  255. data/test/ft_69_cancelmissing.rb +23 -21
  256. data/test/ft_6_lambda.rb +37 -37
  257. data/test/ft_70_lookupvar.rb +25 -25
  258. data/test/ft_71_log.rb +35 -35
  259. data/test/ft_72_lookup_processes.rb +43 -40
  260. data/test/ft_73_cancel_sub.rb +79 -79
  261. data/test/ft_74_block_and_workitem_dup.rb +42 -42
  262. data/test/ft_75_ruby_attributes.rb +53 -51
  263. data/test/ft_76_merge_isolate.rb +57 -57
  264. data/test/ft_77_segments.rb +13 -13
  265. data/test/ft_78_eval.rb +94 -94
  266. data/test/ft_79_tticket.rb +79 -79
  267. data/test/ft_79b_tticket.rb +73 -73
  268. data/test/ft_79c_outcome.rb +36 -36
  269. data/test/ft_7_lose.rb +73 -73
  270. data/test/ft_7b_lose.rb +49 -49
  271. data/test/ft_80_spname.rb +65 -65
  272. data/test/ft_81_exp.rb +30 -30
  273. data/test/ft_82_trecu.rb +30 -24
  274. data/test/ft_83_badpause.rb +35 -35
  275. data/test/ft_84_updateexp.rb +118 -118
  276. data/test/ft_84b_subrepr.rb +72 -0
  277. data/test/ft_85_dolhash.rb +18 -18
  278. data/test/ft_86_dollar_fv.rb +33 -33
  279. data/test/ft_87_define.rb +47 -47
  280. data/test/ft_88_http.rb +100 -0
  281. data/test/ft_8_forget.rb +25 -25
  282. data/test/ft_9_cursor.rb +119 -110
  283. data/test/ft_9b_cursor.rb +70 -70
  284. data/test/ft_tests.rb +6 -0
  285. data/test/hash_test.rb +52 -34
  286. data/test/hparticipant_test.rb +92 -88
  287. data/test/lookup_att_test.rb +70 -70
  288. data/test/lookup_vf_test.rb +52 -52
  289. data/test/misc_test.rb +55 -51
  290. data/test/obs_test.rb +82 -82
  291. data/test/param_test.rb +181 -181
  292. data/test/participant_test.rb +46 -46
  293. data/test/pending.rb +12 -12
  294. data/test/ps_representation.rb +70 -70
  295. data/test/rake_ltest.rb +2 -2
  296. data/test/rake_qtest.rb +11 -11
  297. data/test/raw_prog_test.rb +303 -308
  298. data/test/restart_cron_test.rb +74 -74
  299. data/test/restart_paused_test.rb +52 -47
  300. data/test/restart_sleep_test.rb +80 -80
  301. data/test/restart_when_test.rb +64 -64
  302. data/test/ruby_procdef_test.rb +71 -71
  303. data/test/rutest_utils.rb +32 -32
  304. data/test/sec_test.rb +143 -142
  305. data/test/slock_test.rb +41 -41
  306. data/test/storage_test.rb +15 -15
  307. data/test/timeout_test.rb +53 -53
  308. data/test/treechecker_test.rb +111 -0
  309. data/test/util_xml_test.rb +57 -57
  310. data/test/wfid_test.rb +93 -93
  311. data/test/wi_test.rb +58 -58
  312. metadata +64 -19
  313. data/examples/scheduler_cron_usage.rb +0 -48
  314. data/examples/scheduler_usage.rb +0 -56
  315. data/lib/openwfe/orest/controlclient.rb +0 -119
  316. data/lib/openwfe/orest/oldrestservlet.rb +0 -279
  317. data/lib/openwfe/orest/restclient.rb +0 -176
  318. data/lib/openwfe/orest/workitem.rb +0 -206
  319. data/lib/openwfe/orest/worklistclient.rb +0 -272
  320. data/test/bm/ft_26d_load.rb +0 -97
  321. data/test/ft_59b_ps_for_pat.rb +0 -58
  322. data/test/ft_64_clone.rb +0 -69
  323. data/test/orest_test.rb +0 -251
@@ -2,31 +2,31 @@
2
2
  #--
3
3
  # Copyright (c) 2006-2008, John Mettraux, OpenWFE.org
4
4
  # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
7
  # modification, are permitted provided that the following conditions are met:
8
- #
8
+ #
9
9
  # . Redistributions of source code must retain the above copyright notice, this
10
- # list of conditions and the following disclaimer.
11
- #
12
- # . Redistributions in binary form must reproduce the above copyright notice,
13
- # this list of conditions and the following disclaimer in the documentation
10
+ # list of conditions and the following disclaimer.
11
+ #
12
+ # . Redistributions in binary form must reproduce the above copyright notice,
13
+ # this list of conditions and the following disclaimer in the documentation
14
14
  # and/or other materials provided with the distribution.
15
- #
15
+ #
16
16
  # . Neither the name of the "OpenWFE" nor the names of its contributors may be
17
17
  # used to endorse or promote products derived from this software without
18
18
  # specific prior written permission.
19
- #
20
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
- # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
30
  # POSSIBILITY OF SUCH DAMAGE.
31
31
  #++
32
32
  #
@@ -38,180 +38,166 @@
38
38
  #
39
39
 
40
40
  require 'rufus/dollar' # gem 'rufus-dollar'
41
- require 'rufus/eval' # gem 'rufus-eval'
42
41
 
43
42
  require 'openwfe/utils'
43
+ require 'openwfe/util/treechecker'
44
44
 
45
- #
46
- # 'dollar notation' implementation in Ruby
47
- #
48
45
 
49
46
  module OpenWFE
50
47
 
51
- DSUB_SAFETY_LEVEL = 4
52
- #
53
- # Ruby code ${ruby:...} will be evaluated with this
54
- # safety level.
55
- # (see http://www.rubycentral.com/book/taint.html )
56
-
57
- #
58
- # Performs 'dollar substitution' on a piece of text with as input
59
- # a flow expression and a workitem (fields and variables).
60
- #
61
- def OpenWFE.dosub (text, flow_expression, workitem)
48
+ #
49
+ # Performs 'dollar substitution' on a piece of text with as input
50
+ # a flow expression and a workitem (fields and variables).
51
+ #
52
+ def OpenWFE.dosub (text, flow_expression, workitem)
62
53
 
63
- #
64
- # patch by Nick Petrella (2008/03/20)
65
- #
54
+ #
55
+ # patch by Nick Petrella (2008/03/20)
56
+ #
66
57
 
67
- if text.is_a?(String)
58
+ if text.is_a?(String)
68
59
 
69
- Rufus::dsub(text, FlowDict.new(flow_expression, workitem))
60
+ Rufus::dsub(text, FlowDict.new(flow_expression, workitem))
70
61
 
71
- elsif text.is_a?(Array)
62
+ elsif text.is_a?(Array)
72
63
 
73
- text.collect { |e| dosub(e, flow_expression, workitem) }
64
+ text.collect { |e| dosub(e, flow_expression, workitem) }
74
65
 
75
- elsif text.is_a?(Hash)
66
+ elsif text.is_a?(Hash)
76
67
 
77
- text.inject({}) do |r, (k, v)|
68
+ text.inject({}) do |r, (k, v)|
78
69
 
79
- r[dosub(k, flow_expression, workitem)] =
80
- dosub(v, flow_expression, workitem)
81
- r
82
- end
83
-
84
- else
85
-
86
- text
87
- end
70
+ r[dosub(k, flow_expression, workitem)] =
71
+ dosub(v, flow_expression, workitem)
72
+ r
88
73
  end
89
74
 
90
- #
91
- # Wrapping a process expression and the current workitem as a
92
- # Hash object ready for lookup at substitution time.
93
- #
94
- class FlowDict
75
+ else
76
+
77
+ text
78
+ end
79
+ end
95
80
 
96
- def initialize (flow_expression, workitem, default_prefix='v')
81
+ #
82
+ # Wrapping a process expression and the current workitem as a
83
+ # Hash object ready for lookup at substitution time.
84
+ #
85
+ class FlowDict
97
86
 
98
- @flow_expression = flow_expression
99
- @workitem = workitem
100
- @default_prefix = default_prefix
101
- end
87
+ def initialize (flow_expression, workitem, default_prefix='v')
102
88
 
103
- def [] (key)
89
+ @flow_expression = flow_expression
90
+ @workitem = workitem
91
+ @default_prefix = default_prefix
92
+ end
104
93
 
105
- pr, k = extract_prefix key
94
+ def [] (key)
106
95
 
107
- # stage 0
96
+ pr, k = extract_prefix key
108
97
 
109
- v = lookup(pr[0, 1], k)
110
- return v if v != nil
98
+ # stage 0
111
99
 
112
- # stage 1
100
+ v = lookup(pr[0, 1], k)
101
+ return v if v != nil
113
102
 
114
- return "" if pr.size < 2
103
+ # stage 1
115
104
 
116
- lookup(pr[1, 1], k)
117
- end
105
+ return '' if pr.size < 2
118
106
 
119
- def []= (key, value)
107
+ lookup(pr[1, 1], k)
108
+ end
120
109
 
121
- pr, k = extract_prefix key
122
- pr = pr[0, 1]
110
+ def []= (key, value)
123
111
 
124
- if pr == 'f'
112
+ pr, k = extract_prefix key
113
+ pr = pr[0, 1]
125
114
 
126
- @workitem.set_attribute k, value
115
+ if pr == 'f'
127
116
 
128
- elsif @flow_expression
117
+ @workitem.set_attribute k, value
129
118
 
130
- @flow_expression.set_variable k, value
131
- end
132
- end
119
+ elsif @flow_expression
133
120
 
134
- def has_key? (key)
121
+ @flow_expression.set_variable k, value
122
+ end
123
+ end
135
124
 
136
- pr, k = extract_prefix key
125
+ def has_key? (key)
137
126
 
138
- return true if pr == 'r'
127
+ pr, k = extract_prefix key
139
128
 
140
- (self[key] != nil)
141
- end
129
+ return true if pr == 'r'
142
130
 
143
- protected
131
+ (self[key] != nil)
132
+ end
144
133
 
145
- def lookup (pr, key)
134
+ protected
146
135
 
147
- case pr
148
- when 'v' then @flow_expression.lookup_variable(key)
149
- when 'f' then @workitem.lookup_attribute(key)
150
- when 'r' then call_ruby(key)
151
- else nil
152
- end
153
- end
136
+ def lookup (pr, key)
154
137
 
155
- def extract_prefix (key)
138
+ case pr
139
+ when 'v' then @flow_expression.lookup_variable(key)
140
+ when 'f' then @workitem.lookup_attribute(key)
141
+ when 'r' then call_ruby(key)
142
+ else nil
143
+ end
144
+ end
156
145
 
157
- i = key.index(':')
146
+ def extract_prefix (key)
158
147
 
159
- return [ @default_prefix, key ] if not i
148
+ i = key.index(':')
160
149
 
161
- pr = key[0..i-1] # until ':'
162
- pr = pr[0, 2] # the first two chars
150
+ return [ @default_prefix, key ] if not i
163
151
 
164
- pr = pr[0, 1] unless (pr == 'vf') or (pr == 'fv')
152
+ pr = key[0..i-1] # until ':'
153
+ pr = pr[0, 2] # the first two chars
165
154
 
166
- [ pr, key[i+1..-1] ]
167
- end
155
+ pr = pr[0, 1] unless (pr == 'vf') or (pr == 'fv')
168
156
 
169
- #--
170
- #def call_function (function_name)
171
- # #"function '#{function_name}' is not implemented"
172
- # "functions are not yet implemented"
173
- # #
174
- # # no need for them... we have Ruby :)
175
- #end
176
- #++
157
+ [ pr, key[i+1..-1] ]
158
+ end
177
159
 
178
- #
179
- # The ${r:1+2} stuff. ("3").
180
- #
181
- def call_ruby (ruby_code)
160
+ #--
161
+ #def call_function (function_name)
162
+ # #"function '#{function_name}' is not implemented"
163
+ # "functions are not yet implemented"
164
+ # #
165
+ # # no need for them... we have Ruby :)
166
+ #end
167
+ #++
182
168
 
183
- if @flow_expression
184
- return "" \
185
- if @flow_expression.ac[:ruby_eval_allowed] != true
186
- end
169
+ #
170
+ # The ${r:1+2} stuff. ("3").
171
+ #
172
+ def call_ruby (ruby_code)
187
173
 
188
- #binding = nil
189
- #binding = @flow_expression.get_binding if @flow_expression
190
- #eval(ruby_code, binding).to_s
174
+ #if @flow_expression and @flow_expression.ac[:ruby_eval_allowed] != true
175
+ # return ''
176
+ #end
177
+ return '' if @flow_expression.ac[:ruby_eval_allowed] != true
191
178
 
192
- wi = @workitem
193
- workitem = @workitem
179
+ wi = @workitem
180
+ workitem = @workitem
194
181
 
195
- fexp = nil
196
- flow_expression = nil
197
- fei = nil
182
+ #fexp = nil
183
+ #flow_expression = nil
184
+ #fei = nil
198
185
 
199
- if @flow_expression
200
- fexp = @flow_expression
201
- flow_expression = @flow_expression
202
- fei = @flow_expression.fei
203
- end
204
- #
205
- # some simple notations made available to ${ruby:...}
206
- # notations
186
+ #if @flow_expression
187
+ fexp = @flow_expression
188
+ flow_expression = @flow_expression
189
+ fei = @flow_expression.fei
190
+ #end
191
+ #
192
+ # some simple notations made available to ${ruby:...}
193
+ # notations
207
194
 
208
- #eval(ruby_code, binding).to_s
209
- #eval(ruby_code).to_s
195
+ #TreeChecker.check ruby_code
196
+ fexp.ac[:s_tree_checker].check(ruby_code)
210
197
 
211
- Rufus::eval_safely(
212
- ruby_code, DSUB_SAFETY_LEVEL, binding()).to_s
213
- end
198
+ eval(ruby_code, binding()).to_s
214
199
  end
200
+ end
215
201
 
216
202
  end
217
203
 
@@ -2,31 +2,31 @@
2
2
  #--
3
3
  # Copyright (c) 2007, John Mettraux, OpenWFE.org
4
4
  # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
7
  # modification, are permitted provided that the following conditions are met:
8
- #
8
+ #
9
9
  # . Redistributions of source code must retain the above copyright notice, this
10
- # list of conditions and the following disclaimer.
11
- #
12
- # . Redistributions in binary form must reproduce the above copyright notice,
13
- # this list of conditions and the following disclaimer in the documentation
10
+ # list of conditions and the following disclaimer.
11
+ #
12
+ # . Redistributions in binary form must reproduce the above copyright notice,
13
+ # this list of conditions and the following disclaimer in the documentation
14
14
  # and/or other materials provided with the distribution.
15
- #
15
+ #
16
16
  # . Neither the name of the "OpenWFE" nor the names of its contributors may be
17
17
  # used to endorse or promote products derived from this software without
18
18
  # specific prior written permission.
19
- #
20
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
- # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
19
+ #
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
30
  # POSSIBILITY OF SUCH DAMAGE.
31
31
  #++
32
32
  #
@@ -43,44 +43,44 @@ require 'irb'
43
43
  require 'irb/completion'
44
44
 
45
45
  #
46
- # borrowing ideas from
46
+ # borrowing ideas from
47
47
  #
48
48
  # http://groups.google.com/group/ruby-talk-google/browse_frm/thread/60ef4f8cff701e14/26ae883a7cc1da7f
49
49
 
50
50
 
51
51
  module OpenWFE
52
52
 
53
- #
54
- # Binds the SIGINT signal so that a console is opened with the bindings
55
- # specified in 'args'.
56
- #
57
- def OpenWFE.trap_int_irb (*args)
58
- trap 'INT' do
59
- OpenWFE.start_irb_session(*args)
60
- #OpenWFE.trap_int_irb(*args) if $openwfe_irb
61
- OpenWFE.trap_int_irb(*args)
62
- end
53
+ #
54
+ # Binds the SIGINT signal so that a console is opened with the bindings
55
+ # specified in 'args'.
56
+ #
57
+ def OpenWFE.trap_int_irb (*args)
58
+ trap 'INT' do
59
+ OpenWFE.start_irb_session(*args)
60
+ #OpenWFE.trap_int_irb(*args) if $openwfe_irb
61
+ OpenWFE.trap_int_irb(*args)
63
62
  end
63
+ end
64
64
 
65
- protected
65
+ protected
66
66
 
67
- def OpenWFE.start_irb_session (*args)
67
+ def OpenWFE.start_irb_session (*args)
68
68
 
69
- IRB::setup nil unless $openwfe_irb
69
+ IRB::setup nil unless $openwfe_irb
70
70
 
71
- ws = IRB::WorkSpace.new *args
71
+ ws = IRB::WorkSpace.new *args
72
72
 
73
- $openwfe_irb = IRB::Irb.new ws
73
+ $openwfe_irb = IRB::Irb.new ws
74
74
 
75
- IRB::conf[:MAIN_CONTEXT] = $openwfe_irb.context
75
+ IRB::conf[:MAIN_CONTEXT] = $openwfe_irb.context
76
76
 
77
- trap 'INT' do
78
- $openwfe_irb.signal_handle
79
- end
77
+ trap 'INT' do
78
+ $openwfe_irb.signal_handle
79
+ end
80
80
 
81
- $openwfe_irb.eval_input
81
+ $openwfe_irb.eval_input
82
82
 
83
- puts "\nbye!"
84
- end
83
+ puts "\nbye!"
84
+ end
85
85
  end
86
86