xash 0.0.2 → 0.0.3

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.
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