pione 0.1.4 → 0.2.0

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 (270) hide show
  1. data/.gitignore +4 -3
  2. data/.simplecov +7 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +3 -0
  5. data/History.txt +13 -0
  6. data/README.md +2 -0
  7. data/Rakefile +16 -6
  8. data/bin/pione-val +5 -0
  9. data/example/AbstractRule/package.yml +1 -0
  10. data/example/HelloWorld/package.yml +2 -0
  11. data/example/HelloWorld/scenario/scenario.yml +2 -0
  12. data/example/LoopByTouch/LoopByTouch.pione +28 -0
  13. data/example/LoopByTouch/package.yml +1 -0
  14. data/example/MakePair/package.yml +2 -0
  15. data/example/MakePair/{data → scenario/input}/1.i +0 -0
  16. data/example/MakePair/{data → scenario/input}/2.i +0 -0
  17. data/example/MakePair/{data → scenario/input}/3.i +0 -0
  18. data/example/MakePair/{data → scenario/input}/4.i +0 -0
  19. data/example/MakePair/{data → scenario/input}/5.i +0 -0
  20. data/example/MakePair/scenario/scenario.yml +1 -0
  21. data/example/ScoreAggregation/ScoreAggregation.pione +122 -0
  22. data/example/ScoreAggregation/bin/apply-template.rb +10 -0
  23. data/example/ScoreAggregation/bin/histgram-graph.sh +18 -0
  24. data/example/ScoreAggregation/bin/mean-summary.rb +10 -0
  25. data/example/ScoreAggregation/bin/personal-bar-graph.sh +18 -0
  26. data/example/ScoreAggregation/bin/personal-pre-statistics.rb +37 -0
  27. data/example/ScoreAggregation/bin/total-mean.rb +10 -0
  28. data/example/ScoreAggregation/bin/total-statistics.rb +43 -0
  29. data/example/ScoreAggregation/generate-data.rb +63 -0
  30. data/example/ScoreAggregation/package.yml +1 -0
  31. data/example/ScoreAggregation/scenario/case1/input/A.score +15 -0
  32. data/example/ScoreAggregation/scenario/case1/input/B.score +15 -0
  33. data/example/ScoreAggregation/scenario/case1/input/C.score +15 -0
  34. data/example/ScoreAggregation/scenario/case1/input/D.score +15 -0
  35. data/example/ScoreAggregation/scenario/case1/input/E.score +15 -0
  36. data/example/ScoreAggregation/scenario/case1/input/F.score +15 -0
  37. data/example/ScoreAggregation/scenario/case1/input/G.score +15 -0
  38. data/example/ScoreAggregation/scenario/case1/input/H.score +15 -0
  39. data/example/ScoreAggregation/scenario/case1/input/I.score +15 -0
  40. data/example/ScoreAggregation/scenario/case1/input/J.score +15 -0
  41. data/example/ScoreAggregation/scenario/case1/input/K.score +15 -0
  42. data/example/ScoreAggregation/scenario/case1/input/L.score +15 -0
  43. data/example/ScoreAggregation/scenario/case1/input/M.score +15 -0
  44. data/example/ScoreAggregation/scenario/case1/input/N.score +15 -0
  45. data/example/ScoreAggregation/scenario/case1/input/O.score +15 -0
  46. data/example/ScoreAggregation/scenario/case1/input/P.score +15 -0
  47. data/example/ScoreAggregation/scenario/case1/input/Q.score +15 -0
  48. data/example/ScoreAggregation/scenario/case1/input/R.score +15 -0
  49. data/example/ScoreAggregation/scenario/case1/input/S.score +15 -0
  50. data/example/ScoreAggregation/scenario/case1/input/T.score +15 -0
  51. data/example/ScoreAggregation/scenario/case1/input/U.score +15 -0
  52. data/example/ScoreAggregation/scenario/case1/input/V.score +15 -0
  53. data/example/ScoreAggregation/scenario/case1/input/W.score +15 -0
  54. data/example/ScoreAggregation/scenario/case1/input/X.score +15 -0
  55. data/example/ScoreAggregation/scenario/case1/input/Y.score +15 -0
  56. data/example/ScoreAggregation/scenario/case1/input/Z.score +15 -0
  57. data/example/ScoreAggregation/scenario/case1/input/stat-template.erb +24 -0
  58. data/example/ScoreAggregation/scenario/case1/scenario.yml +3 -0
  59. data/example/{SequentialProcess/SequentialProcess.pione → SerialProcessing/SerialProcessing.pione} +0 -0
  60. data/example/SerialProcessing/package.yml +1 -0
  61. data/example/WorkflowPatterns/01_Sequence/Sequence.pione +21 -0
  62. data/example/WorkflowPatterns/02_PrallelSplit/ParallelSplit.pione +29 -0
  63. data/example/WorkflowPatterns/03_Synchronization/Synchronization.pione +30 -0
  64. data/example/WorkflowPatterns/04_ExclusiveChoice/ExclusiveChoice.pione +44 -0
  65. data/example/WorkflowPatterns/05_SimpleMerge/SimpleMerge.pione +44 -0
  66. data/example/WorkflowPatterns/06_MultiChoice/MultiChoice.pione +48 -0
  67. data/example/WorkflowPatterns/07_StructuredSynchronizingMerge/StructuredSynchronizingMerge.pione +71 -0
  68. data/example/WorkflowPatterns/08_MultiMerge/MultiMerge.pione +44 -0
  69. data/example/WorkflowPatterns/11_ImplicitTermination/ImplicitTermination.pione +29 -0
  70. data/example/WorkflowPatterns/12_MultipleInstancesWithoutSynchronization/MultipleInstancesWithoutSynchronization.pione +29 -0
  71. data/example/WorkflowPatterns/13_MultipleInstancesWithDesignTimeKnowledge/MultipleInstancesWithDesignTimeKnowledge.pione +28 -0
  72. data/example/WorkflowPatterns/14_MultipleInstancesWithRunTimeKnowledge/MultipleInstancesWithRunTimeKnowledge.pione +33 -0
  73. data/example/WorkflowPatterns/33_GeneralizedANDJoin/GeneralizedANDJoin.pione +21 -0
  74. data/example/WorkflowPatterns/37_LocalSynchronizingMerge/LocalSynchronizingMerge.pione +101 -0
  75. data/example/WorkflowPatterns/41_ThreadMerge/ThreadMerge.pione +43 -0
  76. data/example/WorkflowPatterns/42_ThreadSplit/ThreadSplit.pione +16 -0
  77. data/lib/pione.rb +23 -47
  78. data/lib/pione/agent/broker.rb +1 -1
  79. data/lib/pione/agent/input-generator.rb +1 -1
  80. data/lib/pione/agent/logger.rb +62 -49
  81. data/lib/pione/agent/messenger.rb +38 -0
  82. data/lib/pione/agent/rule-provider.rb +3 -3
  83. data/lib/pione/agent/task-worker.rb +14 -2
  84. data/lib/pione/agent/tuple-space-client.rb +1 -1
  85. data/lib/pione/agent/tuple-space-server-client-life-checker.rb +5 -3
  86. data/lib/pione/command.rb +2 -0
  87. data/lib/pione/command/basic-command.rb +1 -1
  88. data/lib/pione/command/pione-client.rb +57 -16
  89. data/lib/pione/command/pione-log.rb +5 -5
  90. data/lib/pione/command/pione-syntax-checker.rb +22 -7
  91. data/lib/pione/command/pione-task-worker.rb +36 -19
  92. data/lib/pione/command/pione-tuple-space-viewer.rb +3 -3
  93. data/lib/pione/command/pione-val.rb +40 -0
  94. data/lib/pione/component.rb +8 -0
  95. data/lib/pione/{system → component}/document.rb +13 -11
  96. data/lib/pione/component/package.rb +269 -0
  97. data/lib/pione/component/rule.rb +206 -0
  98. data/lib/pione/location/basic-location.rb +49 -7
  99. data/lib/pione/location/ftp-location.rb +19 -6
  100. data/lib/pione/location/local-location.rb +15 -6
  101. data/lib/pione/log.rb +4 -1
  102. data/lib/pione/log/{domain-info.rb → domain-log.rb} +23 -11
  103. data/lib/pione/{util/console-message.rb → log/message-log.rb} +16 -15
  104. data/lib/pione/log/process-log.rb +35 -86
  105. data/lib/pione/log/process-record.rb +24 -11
  106. data/lib/pione/log/system-log.rb +107 -0
  107. data/lib/pione/log/xes-log.rb +54 -48
  108. data/lib/pione/model.rb +1 -3
  109. data/lib/pione/model/assignment.rb +1 -0
  110. data/lib/pione/model/basic-model.rb +31 -15
  111. data/lib/pione/model/block.rb +1 -1
  112. data/lib/pione/model/boolean.rb +10 -23
  113. data/lib/pione/model/constraints.rb +12 -0
  114. data/lib/pione/model/data-expr.rb +31 -36
  115. data/lib/pione/model/feature-expr.rb +6 -23
  116. data/lib/pione/model/float.rb +29 -18
  117. data/lib/pione/model/integer.rb +44 -56
  118. data/lib/pione/model/keyed-sequence.rb +11 -4
  119. data/lib/pione/model/message.rb +4 -4
  120. data/lib/pione/model/ordinal-sequence.rb +12 -14
  121. data/lib/pione/model/package-expr.rb +53 -0
  122. data/lib/pione/model/parameters.rb +12 -11
  123. data/lib/pione/model/pione-method.rb +2 -2
  124. data/lib/pione/model/rule-expr.rb +30 -52
  125. data/lib/pione/model/sequence.rb +26 -26
  126. data/lib/pione/model/string.rb +13 -54
  127. data/lib/pione/model/ticket-expr.rb +12 -53
  128. data/lib/pione/model/type.rb +7 -1
  129. data/lib/pione/model/variable-table.rb +5 -4
  130. data/lib/pione/model/variable.rb +0 -5
  131. data/lib/pione/option/common-option.rb +2 -1
  132. data/lib/pione/option/task-worker-owner-option.rb +1 -1
  133. data/lib/pione/patch/drb-patch.rb +1 -1
  134. data/lib/pione/patch/em-ftpd-patch.rb +7 -0
  135. data/lib/pione/patch/rinda-patch.rb +53 -0
  136. data/lib/pione/patch/uri-patch.rb +5 -0
  137. data/lib/pione/relay/relay-socket.rb +2 -2
  138. data/lib/pione/rule-handler/action-handler.rb +71 -64
  139. data/lib/pione/rule-handler/basic-handler.rb +50 -32
  140. data/lib/pione/rule-handler/flow-handler.rb +51 -34
  141. data/lib/pione/rule-handler/update-criteria.rb +43 -20
  142. data/lib/pione/system.rb +13 -0
  143. data/lib/pione/system/domain-info.rb +34 -0
  144. data/lib/pione/system/global.rb +8 -1
  145. data/lib/pione/system/object.rb +1 -1
  146. data/lib/pione/transformer/expr-transformer.rb +3 -3
  147. data/lib/pione/transformer/literal-transformer.rb +3 -3
  148. data/lib/pione/transformer/rule-definition-transformer.rb +11 -9
  149. data/lib/pione/tuple-space/tuple-space-server-interface.rb +19 -1
  150. data/lib/pione/tuple-space/tuple-space-server.rb +9 -2
  151. data/lib/pione/tuple.rb +30 -0
  152. data/lib/pione/tuple/data-null-tuple.rb +14 -0
  153. data/lib/pione/tuple/message-tuple.rb +7 -0
  154. data/lib/pione/tuple/process-log-tuple.rb +13 -0
  155. data/lib/pione/tuple/touch-tuple.rb +14 -0
  156. data/lib/pione/uri-scheme/myftp-scheme.rb +45 -0
  157. data/lib/pione/util.rb +18 -0
  158. data/lib/pione/util/cpu.rb +20 -0
  159. data/lib/pione/util/error-report.rb +9 -1
  160. data/lib/pione/util/evaluatable.rb +47 -0
  161. data/lib/pione/util/ftp-server.rb +468 -0
  162. data/lib/pione/util/id.rb +39 -0
  163. data/lib/pione/util/indentation.rb +19 -0
  164. data/lib/pione/util/ip-address.rb +35 -0
  165. data/lib/pione/util/misc.rb +0 -47
  166. data/lib/pione/util/uuid.rb +28 -0
  167. data/lib/pione/util/variable-holdable.rb +38 -0
  168. data/lib/pione/version.rb +1 -1
  169. data/pione.gemspec +16 -14
  170. data/test/agent/spec_logger.rb +35 -44
  171. data/test/agent/spec_messenger.rb +25 -0
  172. data/test/agent/spec_rule-provider.rb +1 -1
  173. data/test/agent/spec_task-worker.rb +7 -13
  174. data/test/{system → component}/spec_document.rb +20 -20
  175. data/test/component/spec_package.rb +77 -0
  176. data/test/component/spec_package/TestPackage/Test.pione +14 -0
  177. data/test/component/spec_package/TestPackage/bin/count +3 -0
  178. data/test/component/spec_package/TestPackage/package.yml +7 -0
  179. data/test/component/spec_package/TestPackage/scenario/case1/input/1.txt +1 -0
  180. data/test/component/spec_package/TestPackage/scenario/case1/scenario.yml +1 -0
  181. data/test/component/spec_rule.rb +140 -0
  182. data/test/endurance-test/graph.plt +12 -0
  183. data/test/endurance-test/run.sh +65 -0
  184. data/test/location/location-behavior.rb +125 -0
  185. data/test/location/spec_ftp-location.rb +28 -90
  186. data/test/location/spec_local-location.rb +26 -76
  187. data/test/log/raw-process-log/pione-process.log +710 -0
  188. data/test/log/spec_domain-log.rb +57 -0
  189. data/test/log/spec_message-log.rb +44 -0
  190. data/test/log/spec_process-log.rb +88 -0
  191. data/test/log/spec_process-record.rb +148 -0
  192. data/test/log/spec_system-log.rb +142 -0
  193. data/test/log/spec_xes-log.rb +2 -2
  194. data/test/model/spec_assignment.rb +26 -25
  195. data/test/model/spec_block.rb +51 -97
  196. data/test/model/spec_boolean.rb +0 -5
  197. data/test/model/spec_call-rule.rb +6 -6
  198. data/test/model/spec_data-expr.rb +0 -7
  199. data/test/model/spec_data-expr.yml +8 -0
  200. data/test/model/spec_float.rb +1 -1
  201. data/test/model/spec_float.yml +13 -0
  202. data/test/model/spec_integer.rb +1 -1
  203. data/test/model/spec_integer.yml +12 -1
  204. data/test/model/spec_keyed-sequence.yml +5 -0
  205. data/test/model/spec_message.rb +2 -4
  206. data/test/model/spec_package-expr.rb +19 -0
  207. data/test/model/spec_parameters.rb +56 -88
  208. data/test/model/spec_pione-method.rb +15 -14
  209. data/test/model/spec_rule-expr.rb +4 -52
  210. data/test/model/spec_rule-expr.yml +11 -0
  211. data/test/model/spec_sequence.yml +6 -0
  212. data/test/model/spec_string.rb +21 -13
  213. data/test/model/spec_string.yml +10 -2
  214. data/test/model/spec_ticket-expr.rb +25 -3
  215. data/test/model/spec_variable.rb +8 -8
  216. data/test/rule-handler/spec_action-handler.pione +37 -0
  217. data/test/rule-handler/spec_action-handler.rb +41 -97
  218. data/test/rule-handler/spec_flow-handler.rb +24 -30
  219. data/test/rule-handler/spec_update-criteria.pione +16 -0
  220. data/test/rule-handler/spec_update-criteria.rb +7 -4
  221. data/test/rule-handler/spec_update-criteria.yml +191 -0
  222. data/test/system/spec_domain-info.rb +25 -0
  223. data/test/test-util.rb +38 -228
  224. data/test/transformer/spec_block-transformer.rb +1 -1
  225. data/test/transformer/spec_expr-transformer.rb +30 -39
  226. data/test/transformer/spec_flow-element-transformer.rb +17 -17
  227. data/test/transformer/spec_literal-transformer.rb +3 -3
  228. data/test/transformer/spec_rule-definition-transformer.rb +55 -76
  229. data/test/{spec_data-finder.rb → tuple-space/spec_data-finder.rb} +1 -1
  230. data/test/{spec_data-finder.yml → tuple-space/spec_data-finder.yml} +0 -0
  231. data/test/tuple/spec_data-tuple.rb +5 -76
  232. data/test/tuple/spec_finished-tuple.rb +5 -46
  233. data/test/tuple/spec_message-tuple.rb +10 -0
  234. data/test/tuple/spec_task-tuple.rb +4 -110
  235. data/test/tuple/spec_touch-tuple.rb +14 -0
  236. data/test/tuple/tuple-behavior.rb +14 -0
  237. data/test/uri-scheme/spec_local-scheme.rb +1 -1
  238. data/test/uri-scheme/spec_myftp-scheme.rb +73 -0
  239. data/test/uri-scheme/spec_myftp-scheme.yml +85 -0
  240. data/test/util/spec_cpu.rb +8 -0
  241. data/test/util/spec_error-report.rb +42 -0
  242. data/test/util/spec_evaluatable.rb +18 -0
  243. data/test/util/spec_ftp-server.rb +249 -0
  244. data/test/util/spec_id.pione +14 -0
  245. data/test/util/spec_id.rb +77 -0
  246. data/test/util/spec_indentation.rb +77 -0
  247. data/test/util/spec_ip-address.rb +15 -0
  248. data/test/util/spec_uuid.rb +11 -0
  249. data/test/util/spec_variable-holdable.rb +69 -0
  250. metadata +282 -83
  251. data/bin/pione-eval +0 -111
  252. data/demo/demo.rb +0 -311
  253. data/demo/public/base.css +0 -94
  254. data/demo/public/demo.js +0 -107
  255. data/demo/public/index.html +0 -91
  256. data/demo/public/jquery-1.8.3.min.js +0 -2
  257. data/lib/pione/model/binary-operator.rb +0 -90
  258. data/lib/pione/model/list.rb +0 -108
  259. data/lib/pione/model/package.rb +0 -56
  260. data/lib/pione/model/rule-io.rb +0 -178
  261. data/lib/pione/model/rule.rb +0 -295
  262. data/lib/pione/system/identifier.rb +0 -61
  263. data/lib/pione/tuple/log-tuple.rb +0 -14
  264. data/lib/pione/util/terminal.rb +0 -78
  265. data/test/log/data/sample.log +0 -1003
  266. data/test/model/spec_binary-operator.rb +0 -39
  267. data/test/model/spec_package.rb +0 -15
  268. data/test/model/spec_rule.rb +0 -158
  269. data/test/spec_identifier.rb +0 -29
  270. data/test/spec_log.rb +0 -52
data/.gitignore CHANGED
@@ -1,15 +1,16 @@
1
1
  *~
2
- input
2
+ ~/input
3
3
  output*
4
4
  result
5
5
  html
6
6
  log.txt
7
7
  doc
8
8
  .yardoc
9
- vendor/bundle
9
+ vendor
10
10
  .bundle
11
11
  pkg
12
12
  \#*
13
13
  nohup.out
14
14
  Gemfile.lock
15
- gems
15
+ gems
16
+ coverage
data/.simplecov ADDED
@@ -0,0 +1,7 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
4
+ SimpleCov::Formatter::HTMLFormatter,
5
+ Coveralls::SimpleCov::Formatter
6
+ ]
7
+ SimpleCov.start {add_filter 'test'}
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ # - "1.9.2" # PIONE doesn't support 1.9.2
4
+ - "1.9.3"
5
+ # - "2.0.0" # pione doesn't work with 2.0
6
+ - jruby-19mode
7
+ # - rbx-19mode # pione doesn't work with 2.0
8
+ script: rake test
data/Gemfile CHANGED
@@ -3,3 +3,6 @@
3
3
 
4
4
  source "https://rubygems.org"
5
5
  gemspec
6
+
7
+ gem 'simplecov', :require => false, :group => :test
8
+ gem 'coveralls', :require => false, :group => :test
data/History.txt CHANGED
@@ -1,5 +1,18 @@
1
1
  # History
2
2
 
3
+ ## 0.2.0(2013/05/31)
4
+
5
+ * Added initial package system.
6
+ * Added pione-val.
7
+ * Improved sequence.
8
+ * Improved message log framework.
9
+ * Added system log framework.
10
+ * Changed to unify process log.
11
+ * Added endurance test scripts.
12
+ * Added embedded FTP server.
13
+ * Reduced OS dependencies.
14
+ * Added examples of WorkflowPatterns.
15
+
3
16
  ## 0.1.4(2013/05/13)
4
17
 
5
18
  * Sequence based expressions.
data/README.md CHANGED
@@ -6,6 +6,8 @@ distributing many machines easily.
6
6
 
7
7
  Currently PIONE is beta version under heavy development.
8
8
 
9
+ [![Gem Version](https://badge.fury.io/rb/pione.png)](http://badge.fury.io/rb/pione) [![Build Status](https://travis-ci.org/pione/pione.png?branch=master)](https://travis-ci.org/pione/pione) [![Coverage Status](https://coveralls.io/repos/pione/pione/badge.png?branch=master)](https://coveralls.io/r/pione/pione) [![Code Climate](https://codeclimate.com/github/pione/pione.png)](https://codeclimate.com/github/pione/pione)
10
+
9
11
  ## Features
10
12
 
11
13
  * multi-agent rule system
data/Rakefile CHANGED
@@ -80,34 +80,44 @@ task 'example:Fib:debug' do
80
80
  ]
81
81
  end
82
82
 
83
+ desc 'execute basic tests'
84
+ task 'test' do
85
+ sh "bundle exec bacon -I lib -rsimplecov test/parser/spec_*.rb test/transformer/spec_*.rb test/model/spec_*.rb test/log/spec_*.rb test/location/spec_*.rb test/component/spec_*.rb test/util/spec_*.rb test/tuple/spec_*.rb test/uri-scheme/spec_*.rb test/agent/spec_logger.rb test/agent/spec_messenger.rb test/rule-handler/spec_action-handler.rb test/rule-handler/spec_update-criteria.rb test/tuple-space/spec_data-finder.rb test/system/spec_*.rb"
86
+ end
87
+
83
88
  desc 'parser test'
84
89
  task 'test:parser' do
85
- sh "bacon -I lib -I test test/parser/spec_*.rb"
90
+ sh "bundle exec bacon -I lib test/parser/spec_*.rb"
86
91
  end
87
92
 
88
93
  desc 'transformer test'
89
94
  task 'test:transformer' do
90
- sh "bacon -I lib -I test test/transformer/spec_*.rb"
95
+ sh "bundle exec bacon -I lib test/transformer/spec_*.rb"
91
96
  end
92
97
 
93
98
  desc 'model test'
94
99
  task 'test:model' do
95
- sh "bacon -I lib -I test test/model/spec_*.rb"
100
+ sh "bundle exec bacon -I lib test/model/spec_*.rb"
96
101
  end
97
102
 
98
103
  desc 'agent test'
99
104
  task 'test:agent' do
100
- sh "bacon -I lib -I test test/agent/spec_*.rb"
105
+ sh "bundle exec bacon -I lib test/agent/spec_*.rb"
101
106
  end
102
107
 
103
108
  desc 'rule-handler test'
104
109
  task 'test:rule-handler' do
105
- sh "bacon -I lib -I test test/rule-handler/spec_*.rb"
110
+ sh "bundle exec bacon -I lib test/rule-handler/spec_*.rb"
111
+ end
112
+
113
+ desc 'log test'
114
+ task 'test:log' do
115
+ sh "bundle exec bacon -I lib test/log/spec_*.rb"
106
116
  end
107
117
 
108
118
  desc 'other test'
109
119
  task 'test:other' do
110
- sh "bacon -I lib -I test test/spec_*.rb"
120
+ sh "bundle exec bacon -I lib test/spec_*.rb"
111
121
  end
112
122
 
113
123
  desc 'clean'
data/bin/pione-val ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # -*- ruby -*-
3
+
4
+ require 'pione'
5
+ Pione::Command::PioneEval.run
@@ -0,0 +1 @@
1
+ PackageName: AbstractRule
@@ -0,0 +1,2 @@
1
+ PackageName: HelloWorld
2
+ Parameters: nil
@@ -0,0 +1,2 @@
1
+ ScenarioName: HelloWorld
2
+ Parameters: nil
@@ -0,0 +1,28 @@
1
+ Rule Main
2
+ output '1' or '2' or '3'
3
+ Flow
4
+ rule Init
5
+ rule A
6
+ rule B
7
+ rule C
8
+ End
9
+
10
+ Rule Init
11
+ output '1'.touch
12
+ End
13
+
14
+ Rule A
15
+ input '1'
16
+ output '2'.touch
17
+ End
18
+
19
+ Rule B
20
+ input '2'
21
+ output '3'.touch
22
+ End
23
+
24
+ Rule C
25
+ input '3'
26
+ output '1'.touch
27
+ End
28
+
@@ -0,0 +1 @@
1
+ PackageName: LoopByTouch
@@ -0,0 +1,2 @@
1
+ PackageName: MakePair
2
+
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ ScenarioName: from 1 to 5
@@ -0,0 +1,122 @@
1
+ #
2
+ # Main Flow
3
+ #
4
+
5
+ Rule Main
6
+ input '*.score'.all
7
+ input 'stat-template.erb'
8
+ output '*.stat.md'.all
9
+ output '*.png'.all
10
+ output '*.html'.all
11
+ Flow
12
+ rule PersonalPreStatistics
13
+ rule PersonalStatistics
14
+ rule PersonalBarGraph
15
+ rule TotalMean
16
+ rule TotalStatistics
17
+ rule Histgram
18
+ rule BuildHTML
19
+ End
20
+
21
+ #
22
+ # Personal Aggregations
23
+ #
24
+
25
+ Rule PersonalPreStatistics
26
+ input '*.score'
27
+ output '{$*}.pre-stat.md'
28
+ output '{$*}.mean'
29
+ Action
30
+ personal-pre-statistics.rb
31
+ End
32
+
33
+ Rule PersonalStatistics
34
+ input '*.pre-stat.md'
35
+ input '{$*}.dev'
36
+ output '{$*}.stat.md'
37
+ Action
38
+ echo "| Deviaion | `cat {$I[2]}` |" | cat {$I[1]} - > {$O[1]}
39
+ End
40
+
41
+ Rule PersonalBarGraph
42
+ input '*.score'
43
+ output '{$*}_bar-graph.png'
44
+ Action
45
+ personal-bar-graph.sh
46
+ End
47
+
48
+ #
49
+ # Total Aggregations
50
+ #
51
+
52
+ Rule TotalMean
53
+ input '*.mean'.all
54
+ output 'total.mean'
55
+ Action
56
+ total-mean.rb > {$O[1]}
57
+ End
58
+
59
+ Rule TotalStatistics
60
+ input '*.score'.all
61
+ input '*.mean'.except('total.mean').all
62
+ input 'total.mean'
63
+ output '*.dev'.all
64
+ output 'total.stat.md'
65
+ Action
66
+ total-statistics.rb
67
+ End
68
+
69
+ #
70
+ # Histgram
71
+ #
72
+
73
+ Rule Histgram
74
+ input '*.mean'.except('total.mean').all
75
+ output 'histgram.png'
76
+ Flow
77
+ rule MeanSummary
78
+ rule HistgramGraph
79
+ End
80
+
81
+ Rule MeanSummary
82
+ input '*.mean'.all
83
+ output 'total.histgram'
84
+ Action
85
+ mean-summary.rb > {$O[1]}
86
+ End
87
+
88
+ Rule HistgramGraph
89
+ input 'total.histgram'
90
+ output 'histgram.png'
91
+ Action
92
+ histgram-graph.sh
93
+ End
94
+
95
+ #
96
+ # Build HTML View
97
+ #
98
+
99
+ Rule BuildHTML
100
+ input '*.stat.md'
101
+ input 'stat-template.erb'
102
+ output '{$*}.html'
103
+ Flow
104
+ rule MD2HTML
105
+ rule ApplyTemplate
106
+ End
107
+
108
+ Rule MD2HTML
109
+ input '*.stat.md'
110
+ output '{$*}.html.part'
111
+ Action
112
+ redcarpet --parse-tables {$I[1]} > {$O[1]}
113
+ End
114
+
115
+ Rule ApplyTemplate
116
+ input '*.html.part'
117
+ input 'stat-template.erb'
118
+ output '{$*}.html'
119
+ Action
120
+ apply-template.rb > {$O[1]}
121
+ End
122
+
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "pione"
4
+ require "erb"
5
+
6
+ title = Pione.val "$*"
7
+ content = Location[Pione.val("$I[1]")].read
8
+ template = Pione.val "$I[2]"
9
+
10
+ puts ERB.new(File.read(template)).result(binding)
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ DATA=`pione-val '$I[1]'`
4
+ OUT=`pione-val '$O[1]'`
5
+
6
+ gnuplot <<EOF
7
+ set title "Histgram of member's mean score"
8
+
9
+ set style fill solid border lc rgb "black"
10
+ set xrange [0:10]
11
+ set yrange [0:20]
12
+
13
+ set terminal png
14
+ set output "$OUT"
15
+
16
+ plot "$DATA" using 0:2:xtic(1) with boxes notitle
17
+ EOF
18
+
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "pione"
4
+
5
+ means = Pione.val("$I[1]").split(":").map{|filename| File.read(filename).chomp.to_f}
6
+
7
+ 10.times do |i|
8
+ count = means.select{|mean| i*10 <= mean and mean < (i+1)*10}.size
9
+ puts '"%s-%s" %s' % [i*10, (i+1)*10-1, count]
10
+ end
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ NAME=`pione-val '$*'`
4
+ OUT=`pione-val '$O[1]'`
5
+ DATA=`pione-val '$I[1]'`
6
+
7
+ gnuplot <<EOF
8
+ set title "scores of $NAME"
9
+ set style fill solid border lc rgb "black"
10
+ set ylabel "score"
11
+ set xrange [-1:16]
12
+ set yrange [0:100]
13
+
14
+ set terminal png
15
+ set output "$OUT"
16
+
17
+ plot "$DATA" using 0:2:xtic(1) with boxes notitle
18
+ EOF
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pione'
4
+
5
+ # infos
6
+ name = Pione.val "$*"
7
+ score_f = Pione.val "$I[1]"
8
+
9
+ # calc stat
10
+ scores = File.readlines(score_f).map{|line| line.split(" ")[1].to_i}
11
+ mean = scores.reduce(:+).to_f / scores.size
12
+ sd = Math.sqrt(scores.map{|i| (mean-i) ** 2}.reduce(:+) / scores.size)
13
+
14
+ # build report
15
+ report = <<TXT
16
+ # Statistics of #{name}
17
+
18
+ ## Scores
19
+
20
+ ![Score of #{name}](#{name}_bar-graph.png)
21
+
22
+ ## Statistics
23
+
24
+ | stat | value |
25
+ |-------|--------------------------|
26
+ | Sum | #{scores.reduce(:+)} |
27
+ | Count | #{scores.size} |
28
+ | Max | #{scores.max} |
29
+ | Min | #{scores.min} |
30
+ | Med | #{scores[scores.size/2]} |
31
+ | Mean | #{mean} |
32
+ | SD | #{sd} |
33
+ TXT
34
+
35
+ # output
36
+ Pione::Location[Pione.val("$O[1]")].write(report)
37
+ Pione::Location[Pione.val("$O[2]")].write(mean)
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "pione"
4
+
5
+ # info
6
+ means = Pione.val "$I[1]"
7
+
8
+ # calc & output
9
+ totals = means.split(":").map{|filename| File.read(filename).chomp.to_f}
10
+ print totals.reduce(:+) / totals.size
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "pione"
4
+
5
+ name_list = Pione.val "$*"
6
+ scores_f = Pione.val "$I[1]"
7
+ means_f = Pione.val "$I[2]"
8
+
9
+ total_mean = Pione::Location[Pione.val("$I[3]")].read.to_f
10
+
11
+ means = means_f.split(":").map{|file| File.read(file).to_f}
12
+ total_sd = Math.sqrt(means.map{|mean| (total_mean-mean) ** 2}.reduce(:+) / means.size)
13
+ names = name_list.split(":").sort
14
+
15
+ devs = names.inject({}) do |tbl, name|
16
+ mean = Pione::Location["%s.mean" % name].read.to_i
17
+ dev = 50 + 10 * (mean - total_mean) / total_sd
18
+ Pione::Location["%s.dev" % name].write(dev)
19
+ tbl.tap {|x| x[name] = dev}
20
+ end
21
+
22
+ lines = names.map do |name|
23
+ scores = File.readlines("%s.score" % name).map{|line| line.split(" ")[1].to_i}
24
+ mean = Pione::Location["%s.mean" % name].read.to_f
25
+ [name, scores, mean, devs[name]].flatten.join(" | ")
26
+ end
27
+
28
+ report = <<TXT
29
+ # Total Statistics
30
+
31
+ ## Histgram
32
+
33
+ ![Histgram of mean scores](histgram.png)
34
+
35
+ ## Scores
36
+
37
+ | name | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Mean | Deviation |
38
+ |------|---|---|---|---|---|---|---|---|---|----|----|----|----|----|----|------|-----------|
39
+ #{lines.map{|line| "| %s |" % line}.join("\n")}
40
+ TXT
41
+
42
+ Pione::Location[Pione.val("$O[2]")].write(report)
43
+