xash 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ea6ec31fe55c1fad359d00416d8fa91a19067ee
4
- data.tar.gz: b59f781bf66869db18f9920312793a7710c04381
3
+ metadata.gz: ef39f5bc4d2c7429a9ba6ec3d46c7d2f418df55d
4
+ data.tar.gz: d18458646ddda4f2fd67b52524a4676866e5f7c5
5
5
  SHA512:
6
- metadata.gz: b0c76d221977d272ccddc6243d2002a83b4d964c094dfc8395b747e8adcc6804d70c2cb9cc42058f1ed050af9a8772d4a36b68d46bbc00b39c0af41df6354944
7
- data.tar.gz: a71041ae1493cc35a094d93582ab744d1299b90b07bdfc634e314834be6abbd1f5af961e4e3edf17966efd60986201cee47af03ffff69ee5c0e2f9188112edd6
6
+ metadata.gz: 47eec271a3c622e599a222de098c9bc5c45a06d0659468b66bdded3d284598b18a47eb913d553d9417c6e23d7ce4ad625782ea7077a144ab399f040130b55d4c
7
+ data.tar.gz: 139bd4dd4930b70271e64975b16099adbe13b1db22b3920bfcef0decbecfcd75315db926480a299a71025a8ce27c2cc37f711569741b2f74d1f0a00d572b7cea
@@ -18,7 +18,7 @@ module XASH
18
18
  if @pseudo_functions.has_key? name
19
19
  variables[name] = '<internal>'
20
20
  end
21
- end
21
+ end
22
22
  end
23
23
  raise klass, {
24
24
  current_name: cc.name || 'nil',
@@ -63,7 +63,7 @@ module XASH
63
63
  'alias' => wrap_pseudo_function(['old', 'new'], '__alias'),
64
64
 
65
65
  'import_yaml' => wrap_pseudo_function([], '__import_yaml'),
66
-
66
+
67
67
  'boot' => wrap_pseudo_function(['lambda'], '__boot'),
68
68
  'method' => wrap_pseudo_function([], '__method'),
69
69
  'get' => wrap_pseudo_function(['obj', 'name'], '__get'),
@@ -72,7 +72,10 @@ module XASH
72
72
 
73
73
  #for arrays
74
74
  'index' => wrap_pseudo_function(['ary', 'i'], '__index'),
75
+ 'head' => wrap_pseudo_function(['ary'], '__head'),
75
76
  'tail' => wrap_pseudo_function(['ary'], '__tail'),
77
+ 'cons' => wrap_pseudo_function(['val', 'ary'], '__cons'),
78
+ 'join' => wrap_pseudo_function(['ary', 'sep'], '__join'),
76
79
 
77
80
  'meta_context' => wrap_pseudo_function(%w(lambda_args lambda), '__meta_context'),
78
81
  'expr' => wrap_pseudo_function([], '__expr')
@@ -132,7 +135,7 @@ module XASH
132
135
  to_rpn(tokens[0...idx], rpn)
133
136
  to_rpn(tokens[(idx + 1)...tokens.size], rpn)
134
137
  rpn << ope
135
- return
138
+ return
136
139
  end
137
140
  end
138
141
  rpn << tokens[0]
@@ -304,11 +307,25 @@ module XASH
304
307
 
305
308
  ary[i]
306
309
 
310
+ when '__head'
311
+ check_args(v, :array)
312
+ v[0][0]
313
+
307
314
  when '__tail'
308
315
  check_args(v, :array)
309
316
  ary = v[0]
310
317
  ary[1...ary.size]
311
318
 
319
+ when '__cons'
320
+ check_args(v, nil, :array)
321
+ val, ary = v
322
+ ary.dup.unshift(val)
323
+
324
+ when '__join'
325
+ check_args(v, :array, :string)
326
+ ary, sep = v
327
+ ary.join(sep)
328
+
312
329
  when '__meta_context'
313
330
  check_args(v, :array, :executable)
314
331
 
@@ -333,7 +350,7 @@ module XASH
333
350
  end
334
351
 
335
352
  when '__expr'
336
-
353
+
337
354
  tokens = @context_stack.variable('args')
338
355
 
339
356
  rpn = []
@@ -367,12 +384,12 @@ module XASH
367
384
  #function call
368
385
  else #others
369
386
  exec(@context_stack.variable(k), v, k)
370
- end
371
- when /\$(\w+)/ #local variables
387
+ end
388
+ when /\A\$(\w+)/ #local variables
372
389
  var_name = $1
373
390
  @context_stack.variable(var_name)
374
- when /(\d+)(\.\.\.|\.\.)(\d+)/ #range expr
375
- { 'range' => [$1, $2, $3] }
391
+ when /([\w\$]+)(\.\.\.|\.\.)([\w\$]+)/ #range expr
392
+ { 'range' => [$1, $2, $3].map{|e| eval_expr(e) } }
376
393
  else
377
394
  #primitives
378
395
  expr
@@ -383,4 +400,4 @@ module XASH
383
400
  exec({ 'do' => code }, [])
384
401
  end
385
402
  end
386
- end
403
+ end
@@ -1,3 +1,3 @@
1
1
  module XASH
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - long-long-float
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-09 00:00:00.000000000 Z
11
+ date: 2016-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop