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 +4 -4
- data/lib/xash/evaluator.rb +26 -9
- data/lib/xash/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef39f5bc4d2c7429a9ba6ec3d46c7d2f418df55d
|
4
|
+
data.tar.gz: d18458646ddda4f2fd67b52524a4676866e5f7c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47eec271a3c622e599a222de098c9bc5c45a06d0659468b66bdded3d284598b18a47eb913d553d9417c6e23d7ce4ad625782ea7077a144ab399f040130b55d4c
|
7
|
+
data.tar.gz: 139bd4dd4930b70271e64975b16099adbe13b1db22b3920bfcef0decbecfcd75315db926480a299a71025a8ce27c2cc37f711569741b2f74d1f0a00d572b7cea
|
data/lib/xash/evaluator.rb
CHANGED
@@ -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
|
387
|
+
end
|
388
|
+
when /\A\$(\w+)/ #local variables
|
372
389
|
var_name = $1
|
373
390
|
@context_stack.variable(var_name)
|
374
|
-
when /(\
|
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
|
data/lib/xash/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2016-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slop
|