@@ -47,14 +47,62 @@ describe('Test strings', function() {
47
47
it ( '...' , function ( ) {
48
48
var ast = parser . parseEval ( 'echo "Hello {$obj->name} !";' ) ;
49
49
} ) ;
50
- it ( '... ' , function ( ) {
50
+ it ( 'Encapsed variable / curly varname ' , function ( ) {
51
51
var ast = parser . parseEval ( 'echo "Hello ${obj}->name !";' ) ;
52
+ ast . children [ 0 ] . kind . should . be . exactly ( 'echo' ) ;
53
+ ast . children [ 0 ] . arguments . length . should . be . exactly ( 1 ) ;
54
+ var arg1 = ast . children [ 0 ] . arguments [ 0 ] ;
55
+ arg1 . kind . should . be . exactly ( 'encapsed' ) ;
56
+ arg1 . type . should . be . exactly ( 'string' ) ;
57
+ arg1 . value . length . should . be . exactly ( 3 ) ;
58
+ // test constant parts
59
+ arg1 . value [ 0 ] . kind . should . be . exactly ( 'string' ) ;
60
+ arg1 . value [ 0 ] . value . should . be . exactly ( 'Hello ' ) ;
61
+ arg1 . value [ 2 ] . kind . should . be . exactly ( 'string' ) ;
62
+ arg1 . value [ 2 ] . value . should . be . exactly ( '->name !' ) ;
63
+ // test the varname
64
+ arg1 . value [ 1 ] . kind . should . be . exactly ( 'variable' ) ;
65
+ arg1 . value [ 1 ] . name . should . be . exactly ( 'obj' ) ;
66
+ arg1 . value [ 1 ] . curly . should . be . exactly ( true ) ;
67
+ } ) ;
68
+ it ( 'Encapsed variable / curly constant' , function ( ) {
69
+ var ast = parser . parseEval ( 'echo "Hello ${ obj }";' ) ;
70
+ ast . children [ 0 ] . kind . should . be . exactly ( 'echo' ) ;
71
+ ast . children [ 0 ] . arguments . length . should . be . exactly ( 1 ) ;
72
+ var arg1 = ast . children [ 0 ] . arguments [ 0 ] ;
73
+ arg1 . kind . should . be . exactly ( 'encapsed' ) ;
74
+ arg1 . type . should . be . exactly ( 'string' ) ;
75
+ arg1 . value . length . should . be . exactly ( 2 ) ;
76
+ // test constant parts
77
+ arg1 . value [ 0 ] . kind . should . be . exactly ( 'string' ) ;
78
+ arg1 . value [ 0 ] . value . should . be . exactly ( 'Hello ' ) ;
79
+ // test the varname
80
+ arg1 . value [ 1 ] . kind . should . be . exactly ( 'variable' ) ;
81
+ arg1 . value [ 1 ] . name . kind . should . be . exactly ( 'constref' ) ;
82
+ arg1 . value [ 1 ] . name . name . kind . should . be . exactly ( 'identifier' ) ;
83
+ arg1 . value [ 1 ] . name . name . name . should . be . exactly ( 'obj' ) ;
84
+ arg1 . value [ 1 ] . curly . should . be . exactly ( true ) ;
52
85
} ) ;
53
86
it ( '...' , function ( ) {
54
87
var ast = parser . parseEval ( 'echo "\\"$parts[0]\\"\\n";' ) ;
55
88
} ) ;
56
- it ( '... ' , function ( ) {
89
+ it ( 'Encapsed variable / offsetlookup ' , function ( ) {
57
90
var ast = parser . parseEval ( 'echo "${$parts[$i]}\\n";' ) ;
91
+ ast . children [ 0 ] . kind . should . be . exactly ( 'echo' ) ;
92
+ ast . children [ 0 ] . arguments . length . should . be . exactly ( 1 ) ;
93
+ var arg1 = ast . children [ 0 ] . arguments [ 0 ] ;
94
+ arg1 . kind . should . be . exactly ( 'encapsed' ) ;
95
+ arg1 . type . should . be . exactly ( 'string' ) ;
96
+ arg1 . value . length . should . be . exactly ( 2 ) ;
97
+ // check the varvar
98
+ arg1 . value [ 0 ] . kind . should . be . exactly ( 'variable' ) ;
99
+ // check the lookup structure
100
+ arg1 . value [ 0 ] . name . kind . should . be . exactly ( 'offsetlookup' ) ;
101
+ arg1 . value [ 0 ] . name . what . name . should . be . exactly ( 'parts' ) ;
102
+ arg1 . value [ 0 ] . name . offset . name . should . be . exactly ( 'i' ) ;
103
+ // check ending string
104
+ arg1 . value [ 1 ] . kind . should . be . exactly ( 'string' ) ;
105
+ arg1 . value [ 1 ] . value . should . be . exactly ( '\n' ) ;
58
106
} ) ;
59
107
it ( '...' , function ( ) {
60
108
var ast = parser . parseEval ( 'echo "yo : {$feeds[0][\'title[0][value]\']}";' ) ;
0 commit comments