personify 1.1.0 → 1.1.1
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.
- data/VERSION +1 -1
- data/lib/personify/parser/personify_node_classes.rb +7 -3
- data/lib/personify.rb +13 -4
- data/test/context_test.rb +5 -3
- data/test/parser_test.rb +8 -5
- data/test/test_helper.rb +2 -1
- metadata +3 -4
- data/script/generate_parser.rb +0 -6
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.1.
|
|
1
|
+
1.1.1
|
|
@@ -74,8 +74,8 @@ module PersonifyLanguage
|
|
|
74
74
|
ne = next_expression.eval(env)
|
|
75
75
|
|
|
76
76
|
case operator.text_value
|
|
77
|
-
when "&&"
|
|
78
|
-
when "||"
|
|
77
|
+
when "&&" then fe && ne
|
|
78
|
+
when "||" then fe || ne
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -89,7 +89,11 @@ module PersonifyLanguage
|
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
if fn && fn.respond_to?(:call)
|
|
92
|
-
|
|
92
|
+
params = self.function_parameters(env)
|
|
93
|
+
if fn.arity >= 0
|
|
94
|
+
params = params[0,fn.arity]
|
|
95
|
+
end
|
|
96
|
+
fn.call(*params)
|
|
93
97
|
else
|
|
94
98
|
fn
|
|
95
99
|
end
|
data/lib/personify.rb
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
require 'treetop'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
|
|
3
|
+
unless Kernel.respond_to?(:require_relative)
|
|
4
|
+
module Kernel
|
|
5
|
+
def require_relative(path)
|
|
6
|
+
require File.join(File.dirname(caller[0]), path.to_str)
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
require_relative 'personify/parser/personify_node_classes'
|
|
12
|
+
require_relative 'personify/parser/personify'
|
|
13
|
+
require_relative 'personify/template'
|
|
14
|
+
require_relative 'personify/context'
|
|
6
15
|
|
|
7
16
|
module Personify
|
|
8
17
|
end
|
data/test/context_test.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
require
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
|
|
3
3
|
Treetop.load File.dirname(__FILE__) + "/../lib/personify/parser/personify"
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
# Use this if you want to test the generated parser
|
|
6
|
+
# require_relative "../personify"
|
|
5
7
|
|
|
6
8
|
class ContextTest < Test::Unit::TestCase
|
|
7
9
|
include ParserTestHelper
|
data/test/parser_test.rb
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
require
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "test_helper")
|
|
3
3
|
Treetop.load File.dirname(__FILE__) + "/../lib/personify/parser/personify"
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
# Use this if you want to test the generated parser
|
|
6
|
+
# require_relative "../personify"
|
|
5
7
|
|
|
6
8
|
class ParserTest < Test::Unit::TestCase
|
|
7
9
|
include ParserTestHelper
|
|
@@ -130,7 +132,8 @@ class ParserTest < Test::Unit::TestCase
|
|
|
130
132
|
end
|
|
131
133
|
should "eval substitution with non endpoint key" do
|
|
132
134
|
# Will just call to_s
|
|
133
|
-
|
|
135
|
+
p = {"l3" => "v"}
|
|
136
|
+
assert_equal p.to_s, parse("[L1.L2]").eval({"l1" => {"l2" => p}})
|
|
134
137
|
end
|
|
135
138
|
end
|
|
136
139
|
|
|
@@ -151,7 +154,7 @@ class ParserTest < Test::Unit::TestCase
|
|
|
151
154
|
assert_equal "v1+v2v3", parse("[FUNC(\"v1\",\"v2\",\"v3\")]").eval("func" => Proc.new{|v1,*v2| v1 + "+" + v2.join })
|
|
152
155
|
end
|
|
153
156
|
should "eval with too much parameters" do
|
|
154
|
-
assert_equal "
|
|
157
|
+
assert_equal "p1", parse("[FUNC(\"p1\",\"p2\")]").eval("func" => Proc.new{|v1| v1 })
|
|
155
158
|
end
|
|
156
159
|
should "eval with no parameters" do
|
|
157
160
|
assert_equal "val", parse("[FUNC()]").eval("func" => Proc.new{ "val" })
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: personify
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 17
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 1
|
|
8
8
|
- 1
|
|
9
|
-
-
|
|
10
|
-
version: 1.1.
|
|
9
|
+
- 1
|
|
10
|
+
version: 1.1.1
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Flurin Egger
|
|
@@ -71,7 +71,6 @@ files:
|
|
|
71
71
|
- lib/personify/parser/personify.treetop
|
|
72
72
|
- lib/personify/parser/personify_node_classes.rb
|
|
73
73
|
- lib/personify/template.rb
|
|
74
|
-
- script/generate_parser.rb
|
|
75
74
|
- test/context_test.rb
|
|
76
75
|
- test/fixtures/multiple_tags.txt
|
|
77
76
|
- test/parse_runner.rb
|
data/script/generate_parser.rb
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + "/../vendor/treetop/lib/treetop"
|
|
2
|
-
|
|
3
|
-
target_dir = File.dirname(__FILE__) + "/../lib/parser/"
|
|
4
|
-
|
|
5
|
-
compiler = Treetop::Compiler::GrammarCompiler.new
|
|
6
|
-
compiler.compile(File.join(target_dir,"personify.treetop"), File.join(target_dir,"personify.rb"))
|