Class: Yadriggy::Parameters Abstract
- Includes:
- AstHelper
- Defined in:
- lib/yadriggy/ast.rb
Overview
Instance Attribute Summary collapse
-
#block_param ⇒ ASTnode|nil
readonly
The parameter preceded by an ampersand (‘&`).
-
#keywords ⇒ Array<Array<ASTnode>>
readonly
The keyword parameters.
-
#optionals ⇒ Array<Array<ASTnode>>
readonly
The list of parameters with default values.
-
#params ⇒ Array<ASTnode>
readonly
The parameter list.
-
#params_after_rest ⇒ Array<ASTnode>
readonly
The parameters following the parameter with asterisk (‘*`).
-
#rest_of_keywords ⇒ ASTnode|nil
readonly
The parameters preceded by two asterisks (‘**`).
-
#rest_of_params ⇒ ASTnode|nil
readonly
The parameter preceded by an asterisk (‘*`).
Attributes inherited from ASTnode
Instance Method Summary collapse
-
#initialize(params) ⇒ Parameters
constructor
A new instance of Parameters.
- #initialize_params(params) ⇒ Object
Methods included from AstHelper
#has_tag?, #to_node, #to_nodes
Methods inherited from ASTnode
#add_child, #add_children, #const_value, #const_value_in_class, #get_context_class, #get_receiver_object, #is_proc?, #pretty_print, #root, #source_location, #source_location_string, #value, #value_in_class
Constructor Details
#initialize(params) ⇒ Parameters
Returns a new instance of Parameters.
1227 1228 1229 |
# File 'lib/yadriggy/ast.rb', line 1227 def initialize(params) initialize_params(params) end |
Instance Attribute Details
#block_param ⇒ ASTnode|nil (readonly)
Returns the parameter preceded by an ampersand (‘&`).
1224 1225 1226 |
# File 'lib/yadriggy/ast.rb', line 1224 def block_param @block_param end |
#keywords ⇒ Array<Array<ASTnode>> (readonly)
Returns the keyword parameters. Each element is ‘[keyword, value]`.
1220 1221 1222 |
# File 'lib/yadriggy/ast.rb', line 1220 def keywords @keywords end |
#optionals ⇒ Array<Array<ASTnode>> (readonly)
Returns the list of parameters with default values. Each element is ‘[name, value]`.
1212 1213 1214 |
# File 'lib/yadriggy/ast.rb', line 1212 def optionals @optionals end |
#params ⇒ Array<ASTnode> (readonly)
Returns the parameter list.
1209 1210 1211 |
# File 'lib/yadriggy/ast.rb', line 1209 def params @params end |
#params_after_rest ⇒ Array<ASTnode> (readonly)
Returns the parameters following the parameter with asterisk (‘*`).
1217 1218 1219 |
# File 'lib/yadriggy/ast.rb', line 1217 def params_after_rest @params_after_rest end |
#rest_of_keywords ⇒ ASTnode|nil (readonly)
Returns the parameters preceded by two asterisks (‘**`).
1222 1223 1224 |
# File 'lib/yadriggy/ast.rb', line 1222 def rest_of_keywords @rest_of_keywords end |
#rest_of_params ⇒ ASTnode|nil (readonly)
Returns the parameter preceded by an asterisk (‘*`).
1214 1215 1216 |
# File 'lib/yadriggy/ast.rb', line 1214 def rest_of_params @rest_of_params end |
Instance Method Details
#initialize_params(params) ⇒ Object
1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 |
# File 'lib/yadriggy/ast.rb', line 1231 def initialize_params(params) if params.nil? @params = [] @optionals = [] @rest_of_params = nil @params_after_rest = [] @keywords = [] @rest_of_keywords = nil @block_param = nil else if params[1].nil? @params = [] else @params = to_nodes(params[1]) add_children(@params) end if params[2].nil? @optionals = [] else # [[name, value], ...] @optionals = params[2].map {|p| to_nodes(p) } @optionals.map {|p| add_children(p) } end if params[3].nil? @rest_of_params = nil else @rest_of_params = to_node(has_tag?(params[3], :rest_param)[1]) add_child(@rest_of_params) end if params[4].nil? @params_after_rest = [] else @params_after_rest = to_nodes(params[4]) add_children(@params_after_rest) end if params[5].nil? @keywords = [] else # [[keyword, value], ...] value may be nil @keywords = params[5].map do |p| default_value = if p[1] then to_node(p[1]) else nil end [ to_node(p[0]), default_value ] end @keywords.map {|p| add_children(p) } end if params[6].nil? @rest_of_keywords = nil else rkeys = if params[6][0] == :@ident params[6] # Ruby 2.4 or earlier else has_tag?(params[6], :kwrest_param)[1] end @rest_of_keywords = to_node(has_tag?(rkeys, :@ident)) end if params[7].nil? @block_param = nil else @block_param = to_node(has_tag?(params[7], :blockarg)[1]) add_child(@block_param) end end end |