pione 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -3
- data/.simplecov +7 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/History.txt +13 -0
- data/README.md +2 -0
- data/Rakefile +16 -6
- data/bin/pione-val +5 -0
- data/example/AbstractRule/package.yml +1 -0
- data/example/HelloWorld/package.yml +2 -0
- data/example/HelloWorld/scenario/scenario.yml +2 -0
- data/example/LoopByTouch/LoopByTouch.pione +28 -0
- data/example/LoopByTouch/package.yml +1 -0
- data/example/MakePair/package.yml +2 -0
- data/example/MakePair/{data → scenario/input}/1.i +0 -0
- data/example/MakePair/{data → scenario/input}/2.i +0 -0
- data/example/MakePair/{data → scenario/input}/3.i +0 -0
- data/example/MakePair/{data → scenario/input}/4.i +0 -0
- data/example/MakePair/{data → scenario/input}/5.i +0 -0
- data/example/MakePair/scenario/scenario.yml +1 -0
- data/example/ScoreAggregation/ScoreAggregation.pione +122 -0
- data/example/ScoreAggregation/bin/apply-template.rb +10 -0
- data/example/ScoreAggregation/bin/histgram-graph.sh +18 -0
- data/example/ScoreAggregation/bin/mean-summary.rb +10 -0
- data/example/ScoreAggregation/bin/personal-bar-graph.sh +18 -0
- data/example/ScoreAggregation/bin/personal-pre-statistics.rb +37 -0
- data/example/ScoreAggregation/bin/total-mean.rb +10 -0
- data/example/ScoreAggregation/bin/total-statistics.rb +43 -0
- data/example/ScoreAggregation/generate-data.rb +63 -0
- data/example/ScoreAggregation/package.yml +1 -0
- data/example/ScoreAggregation/scenario/case1/input/A.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/B.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/C.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/D.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/E.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/F.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/G.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/H.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/I.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/J.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/K.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/L.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/M.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/N.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/O.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/P.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/Q.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/R.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/S.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/T.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/U.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/V.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/W.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/X.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/Y.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/Z.score +15 -0
- data/example/ScoreAggregation/scenario/case1/input/stat-template.erb +24 -0
- data/example/ScoreAggregation/scenario/case1/scenario.yml +3 -0
- data/example/{SequentialProcess/SequentialProcess.pione → SerialProcessing/SerialProcessing.pione} +0 -0
- data/example/SerialProcessing/package.yml +1 -0
- data/example/WorkflowPatterns/01_Sequence/Sequence.pione +21 -0
- data/example/WorkflowPatterns/02_PrallelSplit/ParallelSplit.pione +29 -0
- data/example/WorkflowPatterns/03_Synchronization/Synchronization.pione +30 -0
- data/example/WorkflowPatterns/04_ExclusiveChoice/ExclusiveChoice.pione +44 -0
- data/example/WorkflowPatterns/05_SimpleMerge/SimpleMerge.pione +44 -0
- data/example/WorkflowPatterns/06_MultiChoice/MultiChoice.pione +48 -0
- data/example/WorkflowPatterns/07_StructuredSynchronizingMerge/StructuredSynchronizingMerge.pione +71 -0
- data/example/WorkflowPatterns/08_MultiMerge/MultiMerge.pione +44 -0
- data/example/WorkflowPatterns/11_ImplicitTermination/ImplicitTermination.pione +29 -0
- data/example/WorkflowPatterns/12_MultipleInstancesWithoutSynchronization/MultipleInstancesWithoutSynchronization.pione +29 -0
- data/example/WorkflowPatterns/13_MultipleInstancesWithDesignTimeKnowledge/MultipleInstancesWithDesignTimeKnowledge.pione +28 -0
- data/example/WorkflowPatterns/14_MultipleInstancesWithRunTimeKnowledge/MultipleInstancesWithRunTimeKnowledge.pione +33 -0
- data/example/WorkflowPatterns/33_GeneralizedANDJoin/GeneralizedANDJoin.pione +21 -0
- data/example/WorkflowPatterns/37_LocalSynchronizingMerge/LocalSynchronizingMerge.pione +101 -0
- data/example/WorkflowPatterns/41_ThreadMerge/ThreadMerge.pione +43 -0
- data/example/WorkflowPatterns/42_ThreadSplit/ThreadSplit.pione +16 -0
- data/lib/pione.rb +23 -47
- data/lib/pione/agent/broker.rb +1 -1
- data/lib/pione/agent/input-generator.rb +1 -1
- data/lib/pione/agent/logger.rb +62 -49
- data/lib/pione/agent/messenger.rb +38 -0
- data/lib/pione/agent/rule-provider.rb +3 -3
- data/lib/pione/agent/task-worker.rb +14 -2
- data/lib/pione/agent/tuple-space-client.rb +1 -1
- data/lib/pione/agent/tuple-space-server-client-life-checker.rb +5 -3
- data/lib/pione/command.rb +2 -0
- data/lib/pione/command/basic-command.rb +1 -1
- data/lib/pione/command/pione-client.rb +57 -16
- data/lib/pione/command/pione-log.rb +5 -5
- data/lib/pione/command/pione-syntax-checker.rb +22 -7
- data/lib/pione/command/pione-task-worker.rb +36 -19
- data/lib/pione/command/pione-tuple-space-viewer.rb +3 -3
- data/lib/pione/command/pione-val.rb +40 -0
- data/lib/pione/component.rb +8 -0
- data/lib/pione/{system → component}/document.rb +13 -11
- data/lib/pione/component/package.rb +269 -0
- data/lib/pione/component/rule.rb +206 -0
- data/lib/pione/location/basic-location.rb +49 -7
- data/lib/pione/location/ftp-location.rb +19 -6
- data/lib/pione/location/local-location.rb +15 -6
- data/lib/pione/log.rb +4 -1
- data/lib/pione/log/{domain-info.rb → domain-log.rb} +23 -11
- data/lib/pione/{util/console-message.rb → log/message-log.rb} +16 -15
- data/lib/pione/log/process-log.rb +35 -86
- data/lib/pione/log/process-record.rb +24 -11
- data/lib/pione/log/system-log.rb +107 -0
- data/lib/pione/log/xes-log.rb +54 -48
- data/lib/pione/model.rb +1 -3
- data/lib/pione/model/assignment.rb +1 -0
- data/lib/pione/model/basic-model.rb +31 -15
- data/lib/pione/model/block.rb +1 -1
- data/lib/pione/model/boolean.rb +10 -23
- data/lib/pione/model/constraints.rb +12 -0
- data/lib/pione/model/data-expr.rb +31 -36
- data/lib/pione/model/feature-expr.rb +6 -23
- data/lib/pione/model/float.rb +29 -18
- data/lib/pione/model/integer.rb +44 -56
- data/lib/pione/model/keyed-sequence.rb +11 -4
- data/lib/pione/model/message.rb +4 -4
- data/lib/pione/model/ordinal-sequence.rb +12 -14
- data/lib/pione/model/package-expr.rb +53 -0
- data/lib/pione/model/parameters.rb +12 -11
- data/lib/pione/model/pione-method.rb +2 -2
- data/lib/pione/model/rule-expr.rb +30 -52
- data/lib/pione/model/sequence.rb +26 -26
- data/lib/pione/model/string.rb +13 -54
- data/lib/pione/model/ticket-expr.rb +12 -53
- data/lib/pione/model/type.rb +7 -1
- data/lib/pione/model/variable-table.rb +5 -4
- data/lib/pione/model/variable.rb +0 -5
- data/lib/pione/option/common-option.rb +2 -1
- data/lib/pione/option/task-worker-owner-option.rb +1 -1
- data/lib/pione/patch/drb-patch.rb +1 -1
- data/lib/pione/patch/em-ftpd-patch.rb +7 -0
- data/lib/pione/patch/rinda-patch.rb +53 -0
- data/lib/pione/patch/uri-patch.rb +5 -0
- data/lib/pione/relay/relay-socket.rb +2 -2
- data/lib/pione/rule-handler/action-handler.rb +71 -64
- data/lib/pione/rule-handler/basic-handler.rb +50 -32
- data/lib/pione/rule-handler/flow-handler.rb +51 -34
- data/lib/pione/rule-handler/update-criteria.rb +43 -20
- data/lib/pione/system.rb +13 -0
- data/lib/pione/system/domain-info.rb +34 -0
- data/lib/pione/system/global.rb +8 -1
- data/lib/pione/system/object.rb +1 -1
- data/lib/pione/transformer/expr-transformer.rb +3 -3
- data/lib/pione/transformer/literal-transformer.rb +3 -3
- data/lib/pione/transformer/rule-definition-transformer.rb +11 -9
- data/lib/pione/tuple-space/tuple-space-server-interface.rb +19 -1
- data/lib/pione/tuple-space/tuple-space-server.rb +9 -2
- data/lib/pione/tuple.rb +30 -0
- data/lib/pione/tuple/data-null-tuple.rb +14 -0
- data/lib/pione/tuple/message-tuple.rb +7 -0
- data/lib/pione/tuple/process-log-tuple.rb +13 -0
- data/lib/pione/tuple/touch-tuple.rb +14 -0
- data/lib/pione/uri-scheme/myftp-scheme.rb +45 -0
- data/lib/pione/util.rb +18 -0
- data/lib/pione/util/cpu.rb +20 -0
- data/lib/pione/util/error-report.rb +9 -1
- data/lib/pione/util/evaluatable.rb +47 -0
- data/lib/pione/util/ftp-server.rb +468 -0
- data/lib/pione/util/id.rb +39 -0
- data/lib/pione/util/indentation.rb +19 -0
- data/lib/pione/util/ip-address.rb +35 -0
- data/lib/pione/util/misc.rb +0 -47
- data/lib/pione/util/uuid.rb +28 -0
- data/lib/pione/util/variable-holdable.rb +38 -0
- data/lib/pione/version.rb +1 -1
- data/pione.gemspec +16 -14
- data/test/agent/spec_logger.rb +35 -44
- data/test/agent/spec_messenger.rb +25 -0
- data/test/agent/spec_rule-provider.rb +1 -1
- data/test/agent/spec_task-worker.rb +7 -13
- data/test/{system → component}/spec_document.rb +20 -20
- data/test/component/spec_package.rb +77 -0
- data/test/component/spec_package/TestPackage/Test.pione +14 -0
- data/test/component/spec_package/TestPackage/bin/count +3 -0
- data/test/component/spec_package/TestPackage/package.yml +7 -0
- data/test/component/spec_package/TestPackage/scenario/case1/input/1.txt +1 -0
- data/test/component/spec_package/TestPackage/scenario/case1/scenario.yml +1 -0
- data/test/component/spec_rule.rb +140 -0
- data/test/endurance-test/graph.plt +12 -0
- data/test/endurance-test/run.sh +65 -0
- data/test/location/location-behavior.rb +125 -0
- data/test/location/spec_ftp-location.rb +28 -90
- data/test/location/spec_local-location.rb +26 -76
- data/test/log/raw-process-log/pione-process.log +710 -0
- data/test/log/spec_domain-log.rb +57 -0
- data/test/log/spec_message-log.rb +44 -0
- data/test/log/spec_process-log.rb +88 -0
- data/test/log/spec_process-record.rb +148 -0
- data/test/log/spec_system-log.rb +142 -0
- data/test/log/spec_xes-log.rb +2 -2
- data/test/model/spec_assignment.rb +26 -25
- data/test/model/spec_block.rb +51 -97
- data/test/model/spec_boolean.rb +0 -5
- data/test/model/spec_call-rule.rb +6 -6
- data/test/model/spec_data-expr.rb +0 -7
- data/test/model/spec_data-expr.yml +8 -0
- data/test/model/spec_float.rb +1 -1
- data/test/model/spec_float.yml +13 -0
- data/test/model/spec_integer.rb +1 -1
- data/test/model/spec_integer.yml +12 -1
- data/test/model/spec_keyed-sequence.yml +5 -0
- data/test/model/spec_message.rb +2 -4
- data/test/model/spec_package-expr.rb +19 -0
- data/test/model/spec_parameters.rb +56 -88
- data/test/model/spec_pione-method.rb +15 -14
- data/test/model/spec_rule-expr.rb +4 -52
- data/test/model/spec_rule-expr.yml +11 -0
- data/test/model/spec_sequence.yml +6 -0
- data/test/model/spec_string.rb +21 -13
- data/test/model/spec_string.yml +10 -2
- data/test/model/spec_ticket-expr.rb +25 -3
- data/test/model/spec_variable.rb +8 -8
- data/test/rule-handler/spec_action-handler.pione +37 -0
- data/test/rule-handler/spec_action-handler.rb +41 -97
- data/test/rule-handler/spec_flow-handler.rb +24 -30
- data/test/rule-handler/spec_update-criteria.pione +16 -0
- data/test/rule-handler/spec_update-criteria.rb +7 -4
- data/test/rule-handler/spec_update-criteria.yml +191 -0
- data/test/system/spec_domain-info.rb +25 -0
- data/test/test-util.rb +38 -228
- data/test/transformer/spec_block-transformer.rb +1 -1
- data/test/transformer/spec_expr-transformer.rb +30 -39
- data/test/transformer/spec_flow-element-transformer.rb +17 -17
- data/test/transformer/spec_literal-transformer.rb +3 -3
- data/test/transformer/spec_rule-definition-transformer.rb +55 -76
- data/test/{spec_data-finder.rb → tuple-space/spec_data-finder.rb} +1 -1
- data/test/{spec_data-finder.yml → tuple-space/spec_data-finder.yml} +0 -0
- data/test/tuple/spec_data-tuple.rb +5 -76
- data/test/tuple/spec_finished-tuple.rb +5 -46
- data/test/tuple/spec_message-tuple.rb +10 -0
- data/test/tuple/spec_task-tuple.rb +4 -110
- data/test/tuple/spec_touch-tuple.rb +14 -0
- data/test/tuple/tuple-behavior.rb +14 -0
- data/test/uri-scheme/spec_local-scheme.rb +1 -1
- data/test/uri-scheme/spec_myftp-scheme.rb +73 -0
- data/test/uri-scheme/spec_myftp-scheme.yml +85 -0
- data/test/util/spec_cpu.rb +8 -0
- data/test/util/spec_error-report.rb +42 -0
- data/test/util/spec_evaluatable.rb +18 -0
- data/test/util/spec_ftp-server.rb +249 -0
- data/test/util/spec_id.pione +14 -0
- data/test/util/spec_id.rb +77 -0
- data/test/util/spec_indentation.rb +77 -0
- data/test/util/spec_ip-address.rb +15 -0
- data/test/util/spec_uuid.rb +11 -0
- data/test/util/spec_variable-holdable.rb +69 -0
- metadata +282 -83
- data/bin/pione-eval +0 -111
- data/demo/demo.rb +0 -311
- data/demo/public/base.css +0 -94
- data/demo/public/demo.js +0 -107
- data/demo/public/index.html +0 -91
- data/demo/public/jquery-1.8.3.min.js +0 -2
- data/lib/pione/model/binary-operator.rb +0 -90
- data/lib/pione/model/list.rb +0 -108
- data/lib/pione/model/package.rb +0 -56
- data/lib/pione/model/rule-io.rb +0 -178
- data/lib/pione/model/rule.rb +0 -295
- data/lib/pione/system/identifier.rb +0 -61
- data/lib/pione/tuple/log-tuple.rb +0 -14
- data/lib/pione/util/terminal.rb +0 -78
- data/test/log/data/sample.log +0 -1003
- data/test/model/spec_binary-operator.rb +0 -39
- data/test/model/spec_package.rb +0 -15
- data/test/model/spec_rule.rb +0 -158
- data/test/spec_identifier.rb +0 -29
- data/test/spec_log.rb +0 -52
data/lib/pione/model/block.rb
CHANGED
@@ -157,7 +157,7 @@ module Pione
|
|
157
157
|
# rule Test2
|
158
158
|
# end
|
159
159
|
# #=> ConditionalBlock.new(
|
160
|
-
#
|
160
|
+
# Message.new("==", Variable.new('X'), StringSequence.new([PioneString.new("a")])),
|
161
161
|
# { true => [CallRule.new('Test1')],
|
162
162
|
# :else => [CallRule.new('Test2')] })
|
163
163
|
# @example
|
data/lib/pione/model/boolean.rb
CHANGED
@@ -60,11 +60,6 @@ module Pione
|
|
60
60
|
@value = value
|
61
61
|
end
|
62
62
|
|
63
|
-
# @api private
|
64
|
-
def task_id_string
|
65
|
-
"Boolean<#{@value}>"
|
66
|
-
end
|
67
|
-
|
68
63
|
# @api private
|
69
64
|
def textize
|
70
65
|
@value.to_s
|
@@ -86,14 +81,6 @@ module Pione
|
|
86
81
|
@value == false
|
87
82
|
end
|
88
83
|
|
89
|
-
# Return ruby's boolean value.
|
90
|
-
#
|
91
|
-
# @return [Boolean]
|
92
|
-
# ruby's boolean value
|
93
|
-
def to_ruby
|
94
|
-
return @value
|
95
|
-
end
|
96
|
-
|
97
84
|
def to_seq
|
98
85
|
BooleanSequence.new([self])
|
99
86
|
end
|
@@ -131,49 +118,49 @@ module Pione
|
|
131
118
|
#
|
132
119
|
|
133
120
|
TypeBoolean.instance_eval do
|
134
|
-
define_pione_method("and", [TypeBoolean], TypeBoolean) do |rec, other|
|
121
|
+
define_pione_method("and", [TypeBoolean], TypeBoolean) do |vtable, rec, other|
|
135
122
|
sequential_map2(TypeBoolean, rec, other) do |rec_elt, other_elt|
|
136
123
|
rec_elt.value && other_elt.value
|
137
124
|
end
|
138
125
|
end
|
139
126
|
|
140
|
-
define_pione_method("or", [TypeBoolean], TypeBoolean) do |rec, other|
|
127
|
+
define_pione_method("or", [TypeBoolean], TypeBoolean) do |vtable, rec, other|
|
141
128
|
sequential_map2(TypeBoolean, rec, other) do |rec_elt, other_elt|
|
142
129
|
rec_elt.value || other_elt.value
|
143
130
|
end
|
144
131
|
end
|
145
132
|
|
146
|
-
define_pione_method("as_integer", [], TypeInteger) do |rec|
|
133
|
+
define_pione_method("as_integer", [], TypeInteger) do |vtable, rec|
|
147
134
|
sequential_map1(TypeInteger, rec) {|rec| rec.value ? 1 : 0}
|
148
135
|
end
|
149
136
|
|
150
|
-
define_pione_method("as_float", [], TypeFloat) do |rec|
|
137
|
+
define_pione_method("as_float", [], TypeFloat) do |vtable, rec|
|
151
138
|
sequential_map1(TypeFloat, rec) {|rec| rec.value ? 1.0 : 0.0}
|
152
139
|
end
|
153
140
|
|
154
|
-
define_pione_method("as_string", [], TypeString) do |rec|
|
141
|
+
define_pione_method("as_string", [], TypeString) do |vtable, rec|
|
155
142
|
sequential_map1(TypeString, rec) {|rec| rec.value.to_s}
|
156
143
|
end
|
157
144
|
|
158
|
-
define_pione_method("as_data_expr", [], TypeDataExpr) do |rec|
|
145
|
+
define_pione_method("as_data_expr", [], TypeDataExpr) do |vtable, rec|
|
159
146
|
sequential_map1(TypeDataExpr, rec) {|rec| rec.value.to_s}
|
160
147
|
end
|
161
148
|
|
162
|
-
define_pione_method("not", [], TypeBoolean) do |rec|
|
149
|
+
define_pione_method("not", [], TypeBoolean) do |vtable, rec|
|
163
150
|
sequential_map1(TypeBoolean, rec) do |elt|
|
164
151
|
not(elt.value)
|
165
152
|
end
|
166
153
|
end
|
167
154
|
|
168
|
-
define_pione_method("every?", [], TypeBoolean) do |rec|
|
155
|
+
define_pione_method("every?", [], TypeBoolean) do |vtable, rec|
|
169
156
|
PioneBoolean.new(not(rec.elements.include?(PioneBoolean.false))).to_seq
|
170
157
|
end
|
171
158
|
|
172
|
-
define_pione_method("any?", [], TypeBoolean) do |rec|
|
159
|
+
define_pione_method("any?", [], TypeBoolean) do |vtable, rec|
|
173
160
|
PioneBoolean.new(rec.elements.include?(PioneBoolean.true)).to_seq
|
174
161
|
end
|
175
162
|
|
176
|
-
define_pione_method("one?", [], TypeBoolean) do |rec|
|
163
|
+
define_pione_method("one?", [], TypeBoolean) do |vtable, rec|
|
177
164
|
PioneBoolean.new(rec.elements.select{|elt| elt == PioneBoolean.true}.size == 1).to_seq
|
178
165
|
end
|
179
166
|
end
|
@@ -11,6 +11,8 @@ module Pione
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
attr_reader :exprs
|
15
|
+
|
14
16
|
# @param exprs [Array<BasicModel>]
|
15
17
|
# constraint expressions
|
16
18
|
def initialize(exprs)
|
@@ -29,6 +31,16 @@ module Pione
|
|
29
31
|
res.kind_of?(BooleanSequence) and res.value
|
30
32
|
end
|
31
33
|
end
|
34
|
+
|
35
|
+
def ==(other)
|
36
|
+
return false unless other.kind_of?(self.class)
|
37
|
+
@exprs == other.exprs
|
38
|
+
end
|
39
|
+
alias :eql? :"=="
|
40
|
+
|
41
|
+
def hash
|
42
|
+
@exprs.hash
|
43
|
+
end
|
32
44
|
end
|
33
45
|
end
|
34
46
|
end
|
@@ -122,11 +122,6 @@ module Pione
|
|
122
122
|
VariableTable.check_include_variable(name)
|
123
123
|
end
|
124
124
|
|
125
|
-
# @api private
|
126
|
-
def task_id_string
|
127
|
-
"DataExpr<#{name}, [%s]>" % exceptions.map{|exc| exc.task_id_string}.join(",")
|
128
|
-
end
|
129
|
-
|
130
125
|
# @api private
|
131
126
|
def textize
|
132
127
|
"data_expr(\"#{name}\", [%s])" % [
|
@@ -412,127 +407,125 @@ module Pione
|
|
412
407
|
|
413
408
|
forward! Proc.new{@elements.first}, :match, :name
|
414
409
|
|
415
|
-
# Return true if the sequence accepts nonexistence matching. This is
|
416
|
-
# determined that it includes null expression.
|
417
410
|
def accept_nonexistence?
|
418
|
-
@elements.
|
411
|
+
@elements.first.accept_nonexistence?
|
419
412
|
end
|
420
413
|
end
|
421
414
|
|
422
415
|
TypeDataExpr.instance_eval do
|
423
|
-
define_pione_method("==", [TypeDataExpr], TypeBoolean) do |rec, other|
|
416
|
+
define_pione_method("==", [TypeDataExpr], TypeBoolean) do |vtable, rec, other|
|
424
417
|
PioneBoolean.new(rec == other).to_seq
|
425
418
|
end
|
426
419
|
|
427
|
-
define_pione_method("[]", [TypeInteger], TypeString) do |rec, index|
|
420
|
+
define_pione_method("[]", [TypeInteger], TypeString) do |vtable, rec, index|
|
428
421
|
sequential_map2(TypeString, rec, index) do |rec_elt, index_elt|
|
429
422
|
rec_elt.matched_data[index_elt.value]
|
430
423
|
end.set_separator(DataExpr::SEPARATOR)
|
431
424
|
end
|
432
425
|
|
433
|
-
define_pione_method("all", [], TypeDataExpr) do |rec|
|
426
|
+
define_pione_method("all", [], TypeDataExpr) do |vtable, rec|
|
434
427
|
rec.set_all
|
435
428
|
end
|
436
429
|
|
437
|
-
define_pione_method("all?", [], TypeBoolean) do |rec|
|
430
|
+
define_pione_method("all?", [], TypeBoolean) do |vtable, rec|
|
438
431
|
rec.all?
|
439
432
|
end
|
440
433
|
|
441
|
-
define_pione_method("each", [], TypeDataExpr) do |rec|
|
434
|
+
define_pione_method("each", [], TypeDataExpr) do |vtable, rec|
|
442
435
|
rec.set_each
|
443
436
|
end
|
444
437
|
|
445
|
-
define_pione_method("each?", [], TypeBoolean) do |rec|
|
438
|
+
define_pione_method("each?", [], TypeBoolean) do |vtable, rec|
|
446
439
|
rec.each?
|
447
440
|
end
|
448
441
|
|
449
|
-
define_pione_method("stdout", [], TypeDataExpr) do |rec|
|
442
|
+
define_pione_method("stdout", [], TypeDataExpr) do |vtable, rec|
|
450
443
|
rec.set_stdout
|
451
444
|
end
|
452
445
|
|
453
|
-
define_pione_method("stdout?", [], TypeBoolean) do |rec|
|
446
|
+
define_pione_method("stdout?", [], TypeBoolean) do |vtable, rec|
|
454
447
|
rec.stdout?
|
455
448
|
end
|
456
449
|
|
457
|
-
define_pione_method("stderr", [], TypeDataExpr) do |rec|
|
450
|
+
define_pione_method("stderr", [], TypeDataExpr) do |vtable, rec|
|
458
451
|
rec.set_stderr
|
459
452
|
end
|
460
453
|
|
461
|
-
define_pione_method("stderr?", [], TypeBoolean) do |rec|
|
454
|
+
define_pione_method("stderr?", [], TypeBoolean) do |vtable, rec|
|
462
455
|
rec.stderr?
|
463
456
|
end
|
464
457
|
|
465
|
-
define_pione_method("neglect", [], TypeDataExpr) do |rec|
|
458
|
+
define_pione_method("neglect", [], TypeDataExpr) do |vtable, rec|
|
466
459
|
rec.set_neglect
|
467
460
|
end
|
468
461
|
|
469
|
-
define_pione_method("neglect?", [], TypeBoolean) do |rec|
|
462
|
+
define_pione_method("neglect?", [], TypeBoolean) do |vtable, rec|
|
470
463
|
rec.neglect?
|
471
464
|
end
|
472
465
|
|
473
|
-
define_pione_method("care", [], TypeDataExpr) do |rec|
|
466
|
+
define_pione_method("care", [], TypeDataExpr) do |vtable, rec|
|
474
467
|
rec.set_care
|
475
468
|
end
|
476
469
|
|
477
|
-
define_pione_method("care?", [], TypeBoolean) do |rec|
|
470
|
+
define_pione_method("care?", [], TypeBoolean) do |vtable, rec|
|
478
471
|
rec.care?
|
479
472
|
end
|
480
473
|
|
481
|
-
define_pione_method("write", [], TypeDataExpr) do |rec|
|
474
|
+
define_pione_method("write", [], TypeDataExpr) do |vtable, rec|
|
482
475
|
rec.set_write
|
483
476
|
end
|
484
477
|
|
485
|
-
define_pione_method("write?", [], TypeBoolean) do |rec|
|
478
|
+
define_pione_method("write?", [], TypeBoolean) do |vtable, rec|
|
486
479
|
rec.write?
|
487
480
|
end
|
488
481
|
|
489
|
-
define_pione_method("remove", [], TypeDataExpr) do |rec|
|
482
|
+
define_pione_method("remove", [], TypeDataExpr) do |vtable, rec|
|
490
483
|
rec.set_remove
|
491
484
|
end
|
492
485
|
|
493
|
-
define_pione_method("remove?", [], TypeBoolean) do |rec|
|
486
|
+
define_pione_method("remove?", [], TypeBoolean) do |vtable, rec|
|
494
487
|
rec.remove?
|
495
488
|
end
|
496
489
|
|
497
|
-
define_pione_method("touch", [], TypeDataExpr) do |rec|
|
490
|
+
define_pione_method("touch", [], TypeDataExpr) do |vtable, rec|
|
498
491
|
rec.set_touch
|
499
492
|
end
|
500
493
|
|
501
|
-
define_pione_method("touch?", [], TypeBoolean) do |rec|
|
494
|
+
define_pione_method("touch?", [], TypeBoolean) do |vtable, rec|
|
502
495
|
rec.touch?
|
503
496
|
end
|
504
497
|
|
505
|
-
define_pione_method("except", [TypeDataExpr], TypeDataExpr) do |rec, target|
|
498
|
+
define_pione_method("except", [TypeDataExpr], TypeDataExpr) do |vtable, rec, target|
|
506
499
|
map2(rec, target) do |rec_elt, target_elt|
|
507
500
|
rec_elt.except(target_elt)
|
508
501
|
end
|
509
502
|
end
|
510
503
|
|
511
|
-
define_pione_method("exceptions", [], TypeDataExpr) do |rec|
|
504
|
+
define_pione_method("exceptions", [], TypeDataExpr) do |vtable, rec|
|
512
505
|
rec.elements.map do |elt|
|
513
506
|
elt.exceptions
|
514
507
|
end.flatten.tap{|x| break DataExprSequence.new(x)}
|
515
508
|
end
|
516
509
|
|
517
|
-
define_pione_method("or", [TypeDataExpr], TypeDataExpr) do |rec, other|
|
510
|
+
define_pione_method("or", [TypeDataExpr], TypeDataExpr) do |vtable, rec, other|
|
518
511
|
map2(rec, other) do |rec_elt, other_elt|
|
519
512
|
DataExprOr.new([rec_elt, other_elt])
|
520
513
|
end
|
521
514
|
end
|
522
515
|
|
523
|
-
define_pione_method("match", [TypeString], TypeString) do |rec, name|
|
516
|
+
define_pione_method("match", [TypeString], TypeString) do |vtable, rec, name|
|
524
517
|
rec.match(name.value).to_a.inject(StringSequence.empty) do |seq, matched|
|
525
518
|
seq.push(PioneString.new(matched))
|
526
519
|
end
|
527
520
|
end
|
528
521
|
|
529
|
-
define_pione_method("match?", [TypeString], TypeBoolean) do |rec, name|
|
522
|
+
define_pione_method("match?", [TypeString], TypeBoolean) do |vtable, rec, name|
|
530
523
|
sequential_map2(TypeBoolean, rec, name) do |rec_elt, name_elt|
|
531
524
|
not(rec_elt.match(name_elt.value).nil?)
|
532
525
|
end
|
533
526
|
end
|
534
527
|
|
535
|
-
define_pione_method("as_string", [], TypeString) do |rec|
|
528
|
+
define_pione_method("as_string", [], TypeString) do |vtable, rec|
|
536
529
|
sequential_map1(TypeString, rec) do |rec_elt|
|
537
530
|
case rec_elt
|
538
531
|
when DataExprNull
|
@@ -545,8 +538,10 @@ module Pione
|
|
545
538
|
end.set_separator(DataExpr::SEPARATOR)
|
546
539
|
end
|
547
540
|
|
548
|
-
define_pione_method("accept_nonexistence?", [], TypeBoolean) do |rec|
|
549
|
-
|
541
|
+
define_pione_method("accept_nonexistence?", [], TypeBoolean) do |vtable, rec|
|
542
|
+
TypeBoolean.map1(rec) do |elt|
|
543
|
+
PioneBoolean.new(elt.accept_nonexistence?)
|
544
|
+
end
|
550
545
|
end
|
551
546
|
end
|
552
547
|
end
|
@@ -84,11 +84,6 @@ module Pione::Model
|
|
84
84
|
|
85
85
|
# SpecialFeature is a class for empty feature and boundless feature.
|
86
86
|
class SpecialFeature < Expr
|
87
|
-
# @api private
|
88
|
-
def task_id_string
|
89
|
-
"Feature::SpecialFeature<#{symbol}>"
|
90
|
-
end
|
91
|
-
|
92
87
|
# @api private
|
93
88
|
def textize
|
94
89
|
symbol
|
@@ -192,11 +187,6 @@ module Pione::Model
|
|
192
187
|
super()
|
193
188
|
end
|
194
189
|
|
195
|
-
# @api private
|
196
|
-
def task_id_string
|
197
|
-
"Feature::UnaryOperator<#{self.operator},#{@symbol}>"
|
198
|
-
end
|
199
|
-
|
200
190
|
# @api private
|
201
191
|
def textize
|
202
192
|
"%s%s" % [self.operator, @symbol]
|
@@ -361,13 +351,6 @@ module Pione::Model
|
|
361
351
|
return @elements.first.empty?
|
362
352
|
end
|
363
353
|
|
364
|
-
# @api private
|
365
|
-
def task_id_string
|
366
|
-
"Feature::Connective<#{self.class.name},[%s]>" % [
|
367
|
-
@elements.map{|elt| elt.task_id_string}.join(",")
|
368
|
-
]
|
369
|
-
end
|
370
|
-
|
371
354
|
# @api private
|
372
355
|
def textize
|
373
356
|
"#{self.class.name}(%s)" % @elements.map{|elt| elt.textize}.join(",")
|
@@ -873,20 +856,20 @@ module Pione::Model
|
|
873
856
|
end
|
874
857
|
|
875
858
|
TypeFeature.instance_eval do
|
876
|
-
define_pione_method("==", [TypeFeature], TypeBoolean) do |rec, other|
|
859
|
+
define_pione_method("==", [TypeFeature], TypeBoolean) do |vtable, rec, other|
|
877
860
|
PioneBoolean.new(rec == other).to_seq
|
878
861
|
end
|
879
862
|
|
880
|
-
define_pione_method("!=", [TypeFeature], TypeBoolean) do |rec, other|
|
881
|
-
PioneBoolean.not(rec.call_pione_method("==", other)).to_seq
|
863
|
+
define_pione_method("!=", [TypeFeature], TypeBoolean) do |vtable, rec, other|
|
864
|
+
PioneBoolean.not(rec.call_pione_method(vtable, "==", other)).to_seq
|
882
865
|
end
|
883
866
|
|
884
|
-
define_pione_method("as_string", [], TypeString) do |rec|
|
867
|
+
define_pione_method("as_string", [], TypeString) do |vtable, rec|
|
885
868
|
PioneString.new(rec.as_string).to_seq
|
886
869
|
end
|
887
870
|
|
888
|
-
define_pione_method("str", [], TypeString) do |rec|
|
889
|
-
rec.call_pione_method("as_string")
|
871
|
+
define_pione_method("str", [], TypeString) do |vtable, rec|
|
872
|
+
rec.call_pione_method(vtable, "as_string")
|
890
873
|
end
|
891
874
|
end
|
892
875
|
end
|
data/lib/pione/model/float.rb
CHANGED
@@ -7,14 +7,6 @@ module Pione
|
|
7
7
|
"#PioneFloat{%s}" % @value
|
8
8
|
end
|
9
9
|
|
10
|
-
# Return ruby's value.
|
11
|
-
#
|
12
|
-
# @return [Float]
|
13
|
-
# ruby's value
|
14
|
-
def to_ruby
|
15
|
-
return @value
|
16
|
-
end
|
17
|
-
|
18
10
|
# @api private
|
19
11
|
def ==(other)
|
20
12
|
return false unless other.kind_of?(self.class)
|
@@ -40,55 +32,74 @@ module Pione
|
|
40
32
|
end
|
41
33
|
|
42
34
|
TypeFloat.instance_eval do
|
43
|
-
define_pione_method(">", [TypeFloat], TypeBoolean) do |rec, other|
|
35
|
+
define_pione_method(">", [TypeFloat], TypeBoolean) do |vtable, rec, other|
|
44
36
|
BooleanSequence.new([PioneBoolean.new(rec.value > other.value)])
|
45
37
|
end
|
46
38
|
|
47
|
-
define_pione_method("<", [TypeFloat], TypeBoolean) do |rec, other|
|
39
|
+
define_pione_method("<", [TypeFloat], TypeBoolean) do |vtable, rec, other|
|
48
40
|
BooleanSequence.new([PioneBoolean.new(rec.value < other.value)])
|
49
41
|
end
|
50
42
|
|
51
|
-
define_pione_method("+", [TypeFloat], TypeFloat) do |rec, other|
|
43
|
+
define_pione_method("+", [TypeFloat], TypeFloat) do |vtable, rec, other|
|
52
44
|
map2(rec, other) do |rec_elt, other_elt|
|
53
45
|
PioneFloat.new(rec_elt.value + other_elt.value)
|
54
46
|
end
|
55
47
|
end
|
56
48
|
|
57
|
-
define_pione_method("-", [TypeFloat], TypeFloat) do |rec, other|
|
49
|
+
define_pione_method("-", [TypeFloat], TypeFloat) do |vtable, rec, other|
|
58
50
|
map2(rec, other) do |rec_elt, other_elt|
|
59
51
|
PioneFloat.new(rec_elt.value - other_elt.value)
|
60
52
|
end
|
61
53
|
end
|
62
54
|
|
63
|
-
define_pione_method("*", [TypeFloat], TypeFloat) do |rec, other|
|
55
|
+
define_pione_method("*", [TypeFloat], TypeFloat) do |vtable, rec, other|
|
64
56
|
PioneFloat.new(rec.value * other.value)
|
65
57
|
end
|
66
58
|
|
67
|
-
define_pione_method("%", [TypeFloat], TypeFloat) do |rec, other|
|
59
|
+
define_pione_method("%", [TypeFloat], TypeFloat) do |vtable, rec, other|
|
68
60
|
# TODO: zero division error
|
69
61
|
PioneFloat.new(rec.value % other.value)
|
70
62
|
end
|
71
63
|
|
72
|
-
define_pione_method("/", [TypeFloat], TypeFloat) do |rec, other|
|
64
|
+
define_pione_method("/", [TypeFloat], TypeFloat) do |vtable, rec, other|
|
73
65
|
# TODO: zero division error
|
74
66
|
PioneFloat.new(rec.value / other.value)
|
75
67
|
end
|
76
68
|
|
77
|
-
define_pione_method("as_string", [], TypeString) do |rec|
|
69
|
+
define_pione_method("as_string", [], TypeString) do |vtable, rec|
|
78
70
|
sequential_map1(TypeString, rec) do |elt|
|
79
71
|
elt.value.to_s
|
80
72
|
end
|
81
73
|
end
|
82
74
|
|
83
|
-
define_pione_method("as_integer", [], TypeInteger) do |rec|
|
75
|
+
define_pione_method("as_integer", [], TypeInteger) do |vtable, rec|
|
84
76
|
sequential_map1(TypeInteger, rec) do |elt|
|
85
77
|
elt.value.to_i
|
86
78
|
end
|
87
79
|
end
|
88
80
|
|
89
|
-
define_pione_method("as_float", [], TypeFloat) do |rec|
|
81
|
+
define_pione_method("as_float", [], TypeFloat) do |vtable, rec|
|
90
82
|
rec
|
91
83
|
end
|
84
|
+
|
85
|
+
# sin : float
|
86
|
+
define_pione_method("sin", [], TypeFloat) do |vtable, rec|
|
87
|
+
sequential_map1(TypeFloat, rec) do |elt|
|
88
|
+
Math.sin(elt.value)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# cos : float
|
93
|
+
define_pione_method("cos", [], TypeFloat) do |vtable, rec|
|
94
|
+
sequential_map1(TypeFloat, rec) do |elt|
|
95
|
+
Math.cos(elt.value)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
# abs : float
|
100
|
+
define_pione_method("abs", [], TypeFloat) do |vtable, rec|
|
101
|
+
sequential_map1(TypeFloat, rec) {|elt| elt.value.abs}
|
102
|
+
end
|
92
103
|
end
|
93
104
|
end
|
94
105
|
end
|