@@ -1992,6 +1992,47 @@ def exit_node(self, fileid_stack: FileIdStack, node: n.Node) -> None:
19921992 self .collapsible_detected = False
19931993
19941994
1995+ class DismissibleSkillsCardHandler (Handler ):
1996+ """Handles 'dismissible-skills-card' directives on a page.
1997+ Only one is allowed per page. Adds the data to page AST options."""
1998+
1999+ @dataclass
2000+ class DismissibleSkillsCard :
2001+ skill : str
2002+ url : str
2003+
2004+ def __init__ (self , context : Context ) -> None :
2005+ super ().__init__ (context )
2006+ self .dismissible_skills_card : Optional [
2007+ DismissibleSkillsCardHandler .DismissibleSkillsCard
2008+ ] = None
2009+
2010+ def enter_page (self , fileid_stack : FileIdStack , page : Page ) -> None :
2011+ self .dismissible_skills_card = None
2012+
2013+ def enter_node (self , fileid_stack : FileIdStack , node : n .Node ) -> None :
2014+ if not isinstance (node , n .Directive ) or node .name != "dismissible-skills-card" :
2015+ return
2016+ if self .dismissible_skills_card :
2017+ self .context .diagnostics [fileid_stack .current ].append (
2018+ DuplicateDirective (node .name , node .span [0 ])
2019+ )
2020+
2021+ skill = node .options .get ("skill" )
2022+ url = node .options .get ("url" )
2023+ if skill and url :
2024+ self .dismissible_skills_card = self .DismissibleSkillsCard (
2025+ skill = skill , url = url
2026+ )
2027+
2028+ def exit_page (self , fileid_stack : FileIdStack , page : Page ) -> None :
2029+ if self .dismissible_skills_card :
2030+ page .ast .options ["dismissible_skills_card" ] = {
2031+ "skill" : self .dismissible_skills_card .skill ,
2032+ "url" : self .dismissible_skills_card .url ,
2033+ }
2034+
2035+
19952036class NestedDirectiveHandler (Handler ):
19962037 """Prevents a directive from being nested deeper than intended on a page and from being used twice in a single page."""
19972038
@@ -2261,6 +2302,7 @@ class Postprocessor:
22612302 ImageHandler ,
22622303 CollapsibleHandler ,
22632304 WayfindingHandler ,
2305+ DismissibleSkillsCardHandler ,
22642306 MethodSelectorHandler ,
22652307 MultiPageTutorialHandler ,
22662308 ComposableTutorialHandler ,
0 commit comments