@@ -15,7 +15,7 @@ class Liquid < Scanner
15
15
16
16
FILTER_KEYWORDS = /#{ FILTER_WITH_VALUE_KEYWORDS } |textilize|capitalize|downcase|upcase|first|last|sort|map|size|escape_once|escape|strip_html|strip_newlines|newline_to_br/
17
17
18
- SELECTOR_KEYWORDS = /in|with|snippet|script|content_item|folder|widget|wrapper|category|asset_folder|asset/
18
+ SELECTOR_KEYWORDS = /tagged| in|with|snippet|script|content_item|folder|widget|wrapper|category|asset_folder|asset/
19
19
20
20
LIQUID_DIRECTIVE_BLOCK = /
21
21
{{1,2}%
@@ -74,20 +74,43 @@ def scan_csv_list(encoder, list)
74
74
end
75
75
end
76
76
77
+ def scan_key_of_key_value_pair ( encoder , options , match )
78
+ scan_spaces ( encoder )
79
+ key = scan ( /\w +/ )
80
+
81
+ if key =~ /#{ SELECTOR_KEYWORDS } /o
82
+ encoder . text_token key , :directive
83
+ else
84
+ encoder . text_token key , :key
85
+ end
86
+ end
87
+
88
+ def scan_value_of_key_value_pair ( encoder , options , match )
89
+ scan_spaces ( encoder )
90
+ first_character = peek ( 1 )
91
+
92
+ if values = scan ( /\S +,\S +/ )
93
+ #match is set, so do nothing else
94
+ elsif first_character == '"' || first_character == "'"
95
+ values = scan ( /#{ first_character } .*?#{ first_character } / )
96
+ else
97
+ values = scan ( /\S +/ )
98
+ end
99
+ #scan_spaces(encoder)
100
+ scan_csv_list ( encoder , values )
101
+ end
102
+
77
103
def scan_key_value_pair ( encoder , options , match )
78
104
scan_spaces ( encoder )
79
105
if match = check ( /#{ KEY_VALUE_REGEX } /o )
80
- key = scan ( /\w +/ )
81
- delimiter , values = scan ( /(:)(\S +)|(".*?")|('.*?')/ ) . match ( /(:)(\S +)|(".*?")|('.*?')/ ) . captures
82
-
83
- if key =~ /#{ SELECTOR_KEYWORDS } /o
84
- encoder . text_token key , :directive
85
- else
86
- encoder . text_token key , :key
87
- end
106
+ scan_key_of_key_value_pair ( encoder , options , match )
88
107
108
+ delimiter = scan ( /:/ )
89
109
encoder . text_token delimiter , :delimiter
90
- scan_csv_list ( encoder , values )
110
+
111
+ scan_value_of_key_value_pair ( encoder , options , match )
112
+
113
+ scan_spaces ( encoder )
91
114
true
92
115
else
93
116
false
0 commit comments