def test_block_media(): block = Block( Comment("comment", False, False), Block(String("hello"), String("There!")), ) block.append(Media("fizz")) assert block.has_properties() is False assert block.has_media() is True
def test_block_properties(): block = Block( Comment("comment", False, False), Block(String("hello"), String("There!")), ) block.append(Property(["foo", "bar"], Expression())) assert block.has_properties() is True assert block.has_media() is False
def test_block_append(): block = Block( Comment("comment", False, False), Block(String("hello"), String("There!")), ) block.append(Literal("Literal")) block.append(true) assert block.nodes == [Literal("Literal"), true] assert block.has_properties() is False assert block.has_media() is False assert block.is_empty() is False
def visit_block(self, block: Block): # noqa: C901 if self.compress: separator = "" else: separator = "\n" if block.has_properties() and not block.lacks_rendered_selectors: last_property_index = 0 if self.compress: for i, node in reversed(list(enumerate(block.nodes))): if node.node_name == "property": last_property_index = i break needs_brackets = self.need_brackets(block.node) if needs_brackets: self.buf += self.out("{" if self.compress else " {\n") self.indents += 1 for i, node in enumerate(block.nodes): self.last = last_property_index == i if node.node_name in [ "null", "expression", "function", "group", "block", "unit", "media", "keyframes", "atrule", "supports", ]: continue elif ( node.node_name == "comment" and node.inline and not self.compress ): self.buf = self.buf[0:-1] self.buf += self.out(f" {self.visit(node)}\n", node) elif node.node_name == "property": ret = self.visit(node) + separator self.buf += ret if self.compress else self.out(ret, node) else: self.buf += self.out(self.visit(node) + separator, node) if needs_brackets: self.indents -= 1 self.buf += self.out(self.indent() + "}" + separator) # nesting index = 0 while index < len(block.nodes): node = block.nodes[index] if node.node_name in ["group", "block", "keyframes"]: if self.linenos: self.debug_info(node) self.visit(node) elif node.node_name in ["media", "import", "atrule", "supports"]: self.visit(node) elif node.node_name == "comment": if not node.suppress: self.buf += self.out( self.indent() + self.visit(node) + "\n", node ) elif node.node_name in ["charset", "literal", "namespace"]: self.buf += self.out(self.visit(node) + "\n", node) index += 1