statsailr 0.7.5 → 0.7.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/statsailr/block_to_r/proc_setting_support/proc_block_finalizer.rb +10 -0
- data/lib/statsailr/block_to_r/proc_setting_support/proc_opt_validator.rb +2 -2
- data/lib/statsailr/block_to_r/proc_setting_support/proc_setting_module.rb +12 -0
- data/lib/statsailr/block_to_r/sts_block_to_r.rb +9 -0
- data/lib/statsailr/block_to_r/sts_lazy_func_gen.rb +86 -0
- data/lib/statsailr/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3404e4a53509861318d70a8309cf54fb82326f98d3715893ac3a1fe447eb94f5
|
4
|
+
data.tar.gz: cd48566b46c5ea5bdfd9fb38beb2381095f857b58ad1d0cbf2998ad5de4dded9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4ec746898a33f909803d6dbc4fc284818e3a65ba89c1e93199b0582c061e85ca6be472f77abdde9b9c9937bb43315e3ac8e9f4caa8e9d947b062c7c098c048d
|
7
|
+
data.tar.gz: ba926958960340cbd9ad2e278ef78841509ca2db771a1cab93def58b6b8eb305e7b40b29adb8410d8d48662c2e3568868183f739f89ce02937928f0f7d9a6010
|
@@ -18,7 +18,7 @@ class ProcOptValidator
|
|
18
18
|
raise "#{opt_name} is required for this PROC option"
|
19
19
|
end
|
20
20
|
end
|
21
|
-
if ! validator["is_a"].nil?
|
21
|
+
if ! param_manager.param_hash[opt_name].nil? && ! validator["is_a"].nil?
|
22
22
|
if validator["is_a"].is_a?(Array)
|
23
23
|
if ! validator["is_a"].include? class_name_in_param_manager
|
24
24
|
raise "#{opt_name} needs to be one of #{validator["is_a"].join("|")}, but #{class_name_in_param_manager} is assigned"
|
@@ -30,7 +30,7 @@ class ProcOptValidator
|
|
30
30
|
end
|
31
31
|
|
32
32
|
end
|
33
|
-
if ! validator["as"].nil?
|
33
|
+
if ! param_manager.param_hash[opt_name].nil? && ! validator["as"].nil?
|
34
34
|
if validator["as"] != class_name_in_param_manager
|
35
35
|
case validator["as"]
|
36
36
|
when "SymbolR"
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require "pathname"
|
2
2
|
require_relative("./proc_opt_validator.rb")
|
3
|
+
require_relative("./proc_block_finalizer.rb")
|
3
4
|
|
4
5
|
module ProcSettingModule
|
5
6
|
def self.included base
|
6
7
|
base.extend ClassMethods
|
7
8
|
base.instance_variable_set(:@validator, ProcOptValidator.new())
|
9
|
+
base.instance_variable_set(:@finalizer, ProcBlockFinalizer.new())
|
8
10
|
base.send :include, InstanceMethods
|
9
11
|
end
|
10
12
|
|
@@ -12,6 +14,8 @@ module ProcSettingModule
|
|
12
14
|
def extend_object( extender )
|
13
15
|
extender.instance_variable_set(:@validator, @validator)
|
14
16
|
extender.singleton_class.__send__( :attr_accessor, :validator)
|
17
|
+
extender.instance_variable_set(:@finalizer, @finalizer)
|
18
|
+
extender.singleton_class.__send__( :attr_accessor, :finalizer)
|
15
19
|
super
|
16
20
|
end
|
17
21
|
|
@@ -36,6 +40,14 @@ module ProcSettingModule
|
|
36
40
|
def validator
|
37
41
|
@validator
|
38
42
|
end
|
43
|
+
|
44
|
+
def finalizer_enabled
|
45
|
+
@finalizer.enabled = true
|
46
|
+
end
|
47
|
+
|
48
|
+
def finalizer
|
49
|
+
@finalizer
|
50
|
+
end
|
39
51
|
end
|
40
52
|
|
41
53
|
module InstanceMethods
|
@@ -69,6 +69,8 @@ require_relative("proc_setting_support/proc_setting_module.rb")
|
|
69
69
|
|
70
70
|
module ProcBlockToR
|
71
71
|
include BlockToRSupport
|
72
|
+
FINALIZER_NAME = "finalizer"
|
73
|
+
|
72
74
|
def self.create_lazy_funcs( blk , proc_setting_manager )
|
73
75
|
proc_command = blk.command
|
74
76
|
param_manager = RBridge::RParamManager.new( blk.opts )
|
@@ -90,6 +92,13 @@ module ProcBlockToR
|
|
90
92
|
proc_lazy_funcs_with_print_result_opts = proc_stmts.map(){|proc_stmt|
|
91
93
|
lzf_gen.gen_lazy_func( proc_command, proc_stmt, param_manager )
|
92
94
|
}
|
95
|
+
|
96
|
+
finalizer = lzf_gen.finalizer
|
97
|
+
if finalizer.enabled?
|
98
|
+
finalizer_func = lzf_gen.gen_lazy_func( proc_command , [ FINALIZER_NAME, "", nil] , param_manager )
|
99
|
+
proc_lazy_funcs_with_print_result_opts.push( finalizer_func )
|
100
|
+
end
|
101
|
+
|
93
102
|
return proc_lazy_funcs_with_print_result_opts
|
94
103
|
end
|
95
104
|
end
|
@@ -84,6 +84,88 @@ module LazyFuncGeneratorSettingUtility
|
|
84
84
|
return RBridge.create_strvec( result_ary )
|
85
85
|
end
|
86
86
|
|
87
|
+
def read_named_args_as_named_strvec(ary)
|
88
|
+
arg_num_ary = Array.new( ary.size )
|
89
|
+
deapth_ary = Array.new( ary.size )
|
90
|
+
idx = 0
|
91
|
+
last_idx = ary.size - 1
|
92
|
+
arg_num = nil
|
93
|
+
deapth = nil
|
94
|
+
|
95
|
+
while( idx <= last_idx )
|
96
|
+
if( idx == 0 )
|
97
|
+
# name starts
|
98
|
+
unless ( deapth.nil? && ary[idx].is_a?(RBridge::SymbolR) && (ary[idx + 1].is_a?(RBridge::SignR) && ary[idx + 1].to_s == "="))
|
99
|
+
raise "read_named_args_as_named_strvec requires an argument to start with name=expr"
|
100
|
+
end
|
101
|
+
arg_num = 0
|
102
|
+
deapth = 0
|
103
|
+
elsif( deapth == 0 && ary[idx].is_a?(RBridge::SymbolR) && (ary[idx + 1].is_a?(RBridge::SignR) && ary[idx + 1].to_s == "="))
|
104
|
+
# name starts
|
105
|
+
arg_num = arg_num + 1
|
106
|
+
elsif( ary[idx].is_a?(RBridge::SymbolR) && (ary[idx + 1].is_a?(RBridge::SignR) && ary[idx + 1].to_s == "("))
|
107
|
+
# function starts
|
108
|
+
deapth_ary[idx] = deapth
|
109
|
+
arg_num_ary[idx] = arg_num
|
110
|
+
deapth = deapth + 1
|
111
|
+
idx = idx + 1
|
112
|
+
deapth_ary[idx] = deapth
|
113
|
+
elsif( ary[idx].is_a?(RBridge::SignR) && ary[idx].to_s == "(")
|
114
|
+
# parenthesis starts
|
115
|
+
deapth = deapth + 1
|
116
|
+
deapth_ary[idx] = deapth
|
117
|
+
elsif( ary[idx].is_a?(RBridge::SignR) && ary[idx].to_s == ")")
|
118
|
+
# parenthesis ends or function ends
|
119
|
+
deapth_ary[idx] = deapth
|
120
|
+
deapth = deapth - 1
|
121
|
+
else
|
122
|
+
deapth_ary[idx] = deapth
|
123
|
+
end
|
124
|
+
arg_num_ary[idx] = arg_num
|
125
|
+
idx = idx + 1
|
126
|
+
end
|
127
|
+
|
128
|
+
result_ary = []
|
129
|
+
name_ary = []
|
130
|
+
prev_arg_num = -1
|
131
|
+
idx = 0
|
132
|
+
elem_arg_num_ary = ary.zip( arg_num_ary )
|
133
|
+
while( idx < elem_arg_num_ary.size )
|
134
|
+
elem = ary[idx]
|
135
|
+
arg_num = arg_num_ary[idx]
|
136
|
+
if elem.respond_to? :to_s_for_r_parsing
|
137
|
+
elem_str = elem.to_s_for_r_parsing
|
138
|
+
else
|
139
|
+
elem_str = elem.to_s
|
140
|
+
end
|
141
|
+
|
142
|
+
if( arg_num != prev_arg_num ) # starts new 'name=expr'
|
143
|
+
name_ary.push elem_str
|
144
|
+
idx = idx + 1
|
145
|
+
if( ary[idx].to_s != "=" )
|
146
|
+
raise "An argument should be in the form of 'name=expr'"
|
147
|
+
end
|
148
|
+
else
|
149
|
+
if( result_ary[arg_num].nil? )
|
150
|
+
unless result_ary.size == arg_num
|
151
|
+
raise "arg_num is not an appropriate number."
|
152
|
+
end
|
153
|
+
result_ary[arg_num] = [elem_str]
|
154
|
+
else
|
155
|
+
result_ary[arg_num].push( elem_str )
|
156
|
+
end
|
157
|
+
end
|
158
|
+
idx = idx + 1
|
159
|
+
prev_arg_num = arg_num
|
160
|
+
end
|
161
|
+
|
162
|
+
result_vec = RBridge.create_strvec( result_ary.map(){|ary| ary.join(" ") } )
|
163
|
+
name_vec = RBridge.create_strvec( name_ary )
|
164
|
+
add_name_func = RBridge.create_ns_function_call("stats", "setNames", {"object" => result_vec, "nm" => name_vec })
|
165
|
+
result_name_vec = RBridge.exec_function( add_name_func )
|
166
|
+
return result_name_vec
|
167
|
+
end
|
168
|
+
|
87
169
|
def result( name , *addl )
|
88
170
|
if addl.empty?
|
89
171
|
return RBridge::RResultName.new(name)
|
@@ -103,6 +185,10 @@ module LazyFuncGeneratorSettingUtility
|
|
103
185
|
return RBridge::RResultPrevious.new( default_obj )
|
104
186
|
end
|
105
187
|
|
188
|
+
def previous_inst_name()
|
189
|
+
return RBridge::RInstPrevious.new()
|
190
|
+
end
|
191
|
+
|
106
192
|
def r_obj( val )
|
107
193
|
return RBridge.convert_to_r_object( val )
|
108
194
|
end
|
data/lib/statsailr/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: statsailr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toshihiro Umehara
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: r_bridge
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/statsailr.rb
|
85
85
|
- lib/statsailr/block_builder/sts_block.rb
|
86
86
|
- lib/statsailr/block_builder/sts_block_parse_proc_opts.rb
|
87
|
+
- lib/statsailr/block_to_r/proc_setting_support/proc_block_finalizer.rb
|
87
88
|
- lib/statsailr/block_to_r/proc_setting_support/proc_opt_validator.rb
|
88
89
|
- lib/statsailr/block_to_r/proc_setting_support/proc_setting_manager.rb
|
89
90
|
- lib/statsailr/block_to_r/proc_setting_support/proc_setting_module.rb
|
@@ -111,7 +112,7 @@ metadata:
|
|
111
112
|
homepage_uri: https://github.com/niceume/statsailr
|
112
113
|
source_code_uri: https://github.com/niceume/statsailr
|
113
114
|
changelog_uri: https://github.com/niceume/statsailr
|
114
|
-
post_install_message:
|
115
|
+
post_install_message:
|
115
116
|
rdoc_options: []
|
116
117
|
require_paths:
|
117
118
|
- lib
|
@@ -126,8 +127,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
127
|
- !ruby/object:Gem::Version
|
127
128
|
version: '0'
|
128
129
|
requirements: []
|
129
|
-
rubygems_version: 3.
|
130
|
-
signing_key:
|
130
|
+
rubygems_version: 3.2.31
|
131
|
+
signing_key:
|
131
132
|
specification_version: 4
|
132
133
|
summary: Provides a platform to focus on statistics
|
133
134
|
test_files: []
|