11const Ast = @This ();
22
33const std = @import ("std" );
4- const Writer = std .Io .Writer () ;
4+ const Writer = std .Io .Writer ;
55const Tokenizer = @import ("Tokenizer.zig" );
66const root = @import ("../root.zig" );
77const Span = root .Span ;
@@ -47,7 +47,7 @@ pub const Rule = struct {
4747 ast : Ast ,
4848 src : []const u8 ,
4949 w : * Writer ,
50- ) ! void {
50+ ) Writer.Error ! void {
5151 if (self .element_name ) | element_name | {
5252 switch (element_name ) {
5353 .name = > | name | _ = try w .write (name .slice (src )),
@@ -100,7 +100,7 @@ pub const Rule = struct {
100100 src : []const u8 ,
101101 w : * Writer ,
102102 depth : usize ,
103- ) ! void {
103+ ) Writer.Error ! void {
104104 for (0.. depth ) | _ | _ = try w .write (" " );
105105 for (ast .selectors [style .selectors .start .. style .selectors .end ], 0.. ) | selector , i | {
106106 if (i != 0 ) {
@@ -187,7 +187,7 @@ pub const Rule = struct {
187187 src : []const u8 ,
188188 w : * Writer ,
189189 depth : usize ,
190- ) ! void {
190+ ) Writer.Error ! void {
191191 for (0.. depth ) | _ | _ = try w .write (" " );
192192
193193 _ = try w .write ("@media " );
@@ -231,7 +231,7 @@ pub const Rule = struct {
231231 src : []const u8 ,
232232 w : * Writer ,
233233 depth : usize ,
234- ) anyerror ! void {
234+ ) Writer.Error ! void {
235235 switch (rule .type ) {
236236 .style = > | style | try style .render (ast , src , w , depth ),
237237 .media = > | media | try media .render (ast , src , w , depth ),
@@ -267,12 +267,12 @@ const State = struct {
267267 tokenizer : Tokenizer ,
268268 src : []const u8 ,
269269 reconsumed : ? Tokenizer.Token ,
270- errors : std .ArrayListUnmanaged (Error ),
271- rules : std .ArrayListUnmanaged (Rule ),
272- selectors : std .ArrayListUnmanaged (Rule .Style .Selector ),
273- declarations : std .ArrayListUnmanaged (Rule .Style .Declaration ),
274- specifiers : std .ArrayListUnmanaged (Rule .Style .Selector .Simple .Specifier ),
275- media_queries : std .ArrayListUnmanaged (Span ),
270+ errors : std .ArrayList (Error ),
271+ rules : std .ArrayList (Rule ),
272+ selectors : std .ArrayList (Rule .Style .Selector ),
273+ declarations : std .ArrayList (Rule .Style .Declaration ),
274+ specifiers : std .ArrayList (Rule .Style .Selector .Simple .Specifier ),
275+ media_queries : std .ArrayList (Span ),
276276
277277 fn consume (self : * State ) error {OutOfMemory }! ? Tokenizer.Token {
278278 if (self .reconsumed ) | tok | {
@@ -311,8 +311,8 @@ const Formatter = struct {
311311 ast : Ast ,
312312 src : []const u8 ,
313313
314- pub fn format (f : Formatter , w : * Writer ) ! void {
315- try f .ast .render (f .src , w );
314+ pub fn format (f : Formatter , w : * Writer ) Writer.Error ! void {
315+ return f .ast .render (f .src , w );
316316 }
317317};
318318
@@ -323,7 +323,7 @@ pub fn formatter(self: Ast, src: []const u8) Formatter {
323323 };
324324}
325325
326- pub fn render (ast : Ast , src : []const u8 , w : * Writer ) ! void {
326+ pub fn render (ast : Ast , src : []const u8 , w : * Writer ) Writer.Error ! void {
327327 var first = true ;
328328 var rule = ast .rules [ast .first_rule orelse return ];
329329 while (true ) {
@@ -364,12 +364,12 @@ pub fn init(allocator: std.mem.Allocator, src: []const u8) error{OutOfMemory}!As
364364 .tokenizer = .{},
365365 .src = src ,
366366 .reconsumed = null ,
367- .errors = .{} ,
368- .rules = .{} ,
369- .selectors = .{} ,
370- .declarations = .{} ,
371- .specifiers = .{} ,
372- .media_queries = .{} ,
367+ .errors = .empty ,
368+ .rules = .empty ,
369+ .selectors = .empty ,
370+ .declarations = .empty ,
371+ .specifiers = .empty ,
372+ .media_queries = .empty ,
373373 };
374374
375375 const first_rule = try parseRules (& state );
@@ -410,7 +410,7 @@ fn parseRules(s: *State) error{OutOfMemory}!?u32 {
410410 if (std .ascii .eqlIgnoreCase (name , at_rule .name )) {
411411 s .reconsume (token );
412412
413- const rule = . {
413+ const rule = Rule {
414414 .type = @unionInit (
415415 @TypeOf (@as (Rule , undefined ).type ),
416416 at_rule .name ,
@@ -469,7 +469,7 @@ fn parseRules(s: *State) error{OutOfMemory}!?u32 {
469469 else = > {
470470 s .reconsume (token );
471471
472- const rule = . {
472+ const rule = Rule {
473473 .type = .{
474474 .style = try parseStyleRule (s ),
475475 },
@@ -803,15 +803,15 @@ test "simple stylesheet" {
803803 defer ast .deinit (std .testing .allocator );
804804
805805 try std .testing .expect (ast .errors .len == 0 );
806- try std .testing .expectFmt (expected , "{s }" , .{ast .formatter (src )});
806+ try std .testing .expectFmt (expected , "{f }" , .{ast .formatter (src )});
807807}
808808
809809test "empty" {
810810 const ast = try Ast .init (std .testing .allocator , "" );
811811 defer ast .deinit (std .testing .allocator );
812812
813813 try std .testing .expect (ast .errors .len == 0 );
814- try std .testing .expectFmt ("" , "{s }" , .{ast .formatter ("" )});
814+ try std .testing .expectFmt ("" , "{f }" , .{ast .formatter ("" )});
815815}
816816
817817test "full example" {
@@ -834,7 +834,7 @@ test "full example" {
834834 defer ast .deinit (std .testing .allocator );
835835
836836 try std .testing .expect (ast .errors .len == 0 );
837- try std .testing .expectFmt (src , "{s }" , .{ast .formatter (src )});
837+ try std .testing .expectFmt (src , "{f }" , .{ast .formatter (src )});
838838}
839839
840840test "example.org" {
@@ -872,7 +872,7 @@ test "example.org" {
872872 defer ast .deinit (std .testing .allocator );
873873
874874 try std .testing .expect (ast .errors .len == 0 );
875- try std .testing .expectFmt (src , "{s }" , .{ast .formatter (src )});
875+ try std .testing .expectFmt (src , "{f }" , .{ast .formatter (src )});
876876}
877877
878878test "minimized example.org" {
@@ -913,7 +913,7 @@ test "minimized example.org" {
913913 defer ast .deinit (std .testing .allocator );
914914
915915 try std .testing .expect (ast .errors .len == 0 );
916- try std .testing .expectFmt (expected , "{s }" , .{ast .formatter (src )});
916+ try std .testing .expectFmt (expected , "{f }" , .{ast .formatter (src )});
917917}
918918
919919test "media queries" {
@@ -941,7 +941,7 @@ test "media queries" {
941941 defer ast .deinit (std .testing .allocator );
942942
943943 try std .testing .expect (ast .errors .len == 0 );
944- try std .testing .expectFmt (src , "{s }" , .{ast .formatter (src )});
944+ try std .testing .expectFmt (src , "{f }" , .{ast .formatter (src )});
945945}
946946
947947test "invalid at rule" {
@@ -989,7 +989,7 @@ test "pseudo-classes and pseudo-elements" {
989989 defer ast .deinit (std .testing .allocator );
990990
991991 try std .testing .expect (ast .errors .len == 0 );
992- try std .testing .expectFmt (src , "{s }" , .{ast .formatter (src )});
992+ try std .testing .expectFmt (src , "{f }" , .{ast .formatter (src )});
993993}
994994
995995test "truncated string" {
@@ -1024,5 +1024,5 @@ test "number literals" {
10241024 defer ast .deinit (std .testing .allocator );
10251025
10261026 try std .testing .expect (ast .errors .len == 0 );
1027- try std .testing .expectFmt (src , "{s }" , .{ast .formatter (src )});
1027+ try std .testing .expectFmt (src , "{f }" , .{ast .formatter (src )});
10281028}
0 commit comments