def pretty_rules(): rules = RB() # Scalars and identifiers rules.pmclasses(".{@quaint.ast} .{@str}", "identifier", {"@str", "scalar"}) rules.css_padding(".identifier, .{@int}, .{$lib}", "4px") rules.css_color(".{$lib}", "#8f8") # # Operators and juxtaposition # for cls, color in [(".{+oper}", "#ff8"), # (".{+juxt}", "#fff"), # (".{+send}", "#fff")]: # rules.mclasses(cls, "object") # rules.css_border_bottom(".{+oper}" + " > * > " + cls, "2px solid " + color) # rules.css_border_bottom(".{+juxt}" + " > * > " + cls, "2px solid " + color) # rules.css_border_bottom(".{+send}" + " > * > " + cls, "2px solid " + color) # rules.css_margin(cls, "6px") # def rearrange_oper(classes, children): # op = children[0] # results = [children[1]] # for child in children[2:]: # results += [[{"operator"}, op], child] # return results # rules.css_color(".operator", "#ff8") # rules.rearrange(".{+oper}", rearrange_oper) for cls, color in [(".{@quaint.ast.InlineOp}", "#f80"), (".{@quaint.ast.BlockOp}", "#08f")]: rules.builder_for(cls) \ .mclasses("object") \ .css_background_color(color) \ .css_margin("4px") \ .css_padding("4px") \ .css_border_radius("5px") rules.builder_for(cls + " > *") \ .css_background_color("#000") \ .css_margin_left("2px") \ .css_margin_right("2px") \ .css_border_radius("5px") rules.builder_for(cls + " > :first-child") \ .css_background_color(color) \ .css_color("#000") \ .css_font_weight("bold") # # Boxes # for cls, color in [(".{+square}", "#f80"), # (".{+curly}", "#0a0"), # (".{+begin}", "#08f"), # (".{+seq}", "#f80")]: # rules.builder_for(cls) \ # .mclasses("object") \ # .css_background_color(color) \ # .css_margin("4px") \ # .css_padding("4px") \ # .css_border_radius("5px") # rules.builder_for(cls + " > *") \ # .css_background_color("#000") \ # .css_margin_left("2px") \ # .css_margin_right("2px") \ # .css_border_radius("5px") rules.css_margin_top(".{@quaint.ast.BlockOp} > *", "6px") rules.css_margin_bottom(".{@quaint.ast.BlockOp} > *", "6px") # Begin rules.css_display(".{@quaint.ast.BlockOp} > *", "block") # rules.hide(".{+void}") rules.mclasses(".{@quaint.ast.Void}", "object") rules.pclasses(".{@quaint.ast.Void}", "identifier") rules.rearrange(".{@quaint.ast.Void}", lambda classes, contents: "\u2205") rules.css_color(".{@quaint.ast.Void}", "#888") return rules
def pretty_rules(): rules = RB() # Scalars and identifiers rules.pmclasses(".{@struct} .{@str}", "identifier", {"@str", "scalar"}) rules.css_padding(".identifier, .{@int}, .{$lib}", "4px") rules.css_color(".{$lib}", "#8f8") # Values rules.mclasses(".{+#value}", "object") rules.mclasses(".{@struct} .{@int}", {"scalar"}) rules.css_color(".{+#value} .identifier", "#f88") rules.css_padding(".{+#value}", "4px") rules.css_border(".{+#value} > .{@int}", "1px dotted #88f") rules.css_border(".{+#value} > .identifier", "1px dotted #f88") rules.css_border(".{+#value} > .{$lib}", "1px dotted #8f8") rules.css_border(".{+#value} > *", "1px dotted #888") # Operators and juxtaposition for cls, color in [(".{+#oper}", "#ff8"), (".{+#juxt}", "#fff"), (".{+#send}", "#fff")]: rules.mclasses(cls, "object") rules.css_border_bottom(".{+#oper}" + " > * > " + cls, "2px solid " + color) rules.css_border_bottom(".{+#juxt}" + " > * > " + cls, "2px solid " + color) rules.css_border_bottom(".{+#send}" + " > * > " + cls, "2px solid " + color) rules.css_margin(cls, "6px") rules.css_color(".operator", "#ff8") rules.rearrange( ".{+#oper}", lambda classes, children: [children[1], [{"operator"}, children[0]], children[2]]) # Boxes for cls, color in [(".{+#square}", "#f80"), (".{+#curly}", "#0a0"), (".{+#begin}", "#08f"), (".{+#tuple}", "#f80")]: rules.builder_for(cls) \ .mclasses("object") \ .css_background_color(color) \ .css_margin("4px") \ .css_padding("4px") \ .css_border_radius("5px") rules.builder_for(cls + " > *") \ .css_background_color("#000") \ .css_margin_left("2px") \ .css_margin_right("2px") \ .css_border_radius("5px") rules.css_margin_top(".{+#begin} > *", "6px") rules.css_margin_bottom(".{+#begin} > *", "6px") # Begin rules.css_display(".{+#begin} > *", "block") # Assign rules.mclasses(".{+#assign}", "object") rules.rearrange( ".{+#assign}", lambda classes, children: [children[0], [{"operator"}, ":="], children[1]]) # Lambda, declaring for cls, kw in [(".{+#lambda}", "λ"), (".{+#declaring}", "declaring")]: rules.mclasses(cls, "object") rules.rearrange(cls, lambda classes, children, kw=kw: [[{"assoc"}, [{"arguments"}, [{"shortheader"}, kw]] + list(children[0]), children[1]]]) rules.mclasses(".arguments", "@list") rules.css_color(".shortheader", "#88f") rules.css_padding(".shortheader", "3px") # # Void # rules.hide(".{@Void}") # UniqueVar rules.builder_for(".{@UniqueVar}") \ .css_padding("3px").css_margin("3px") rules.builder_for(".{@UniqueVar} .identifier") \ .css_padding("0px").css_margin("0px") rules.builder_for(".{@UniqueVar} .{@int}") \ .css_color("#fff").css_padding("0px").css_margin("0px") rules.builder_for(".{@UniqueVar}>:last-child") \ .css_vertical_align("sub").css_font_size("3pt") return rules
def pretty_rules(): rules = RB() # Scalars and identifiers rules.pmclasses(".{@struct} .{@str}", "identifier", {"@str", "scalar"}) rules.css_padding(".identifier, .{@int}, .{$lib}", "4px") rules.css_color(".{$lib}", "#8f8") # Values rules.mclasses(".{+#value}", "object") rules.mclasses(".{@struct} .{@int}", {"scalar"}) rules.css_color(".{+#value} .identifier", "#f88") rules.css_padding(".{+#value}", "4px") rules.css_border(".{+#value} > .{@int}", "1px dotted #88f") rules.css_border(".{+#value} > .identifier", "1px dotted #f88") rules.css_border(".{+#value} > .{$lib}", "1px dotted #8f8") rules.css_border(".{+#value} > *", "1px dotted #888") # Operators and juxtaposition for cls, color in [(".{+#oper}", "#ff8"), (".{+#juxt}", "#fff"), (".{+#send}", "#fff")]: rules.mclasses(cls, "object") rules.css_border_bottom(".{+#oper}" + " > * > " + cls, "2px solid " + color) rules.css_border_bottom(".{+#juxt}" + " > * > " + cls, "2px solid " + color) rules.css_border_bottom(".{+#send}" + " > * > " + cls, "2px solid " + color) rules.css_margin(cls, "6px") def rearrange_oper(classes, children): op = children[0] results = [children[1]] for child in children[2:]: results += [[{"operator"}, op], child] return results rules.css_color(".operator", "#ff8") rules.rearrange(".{+#oper}", rearrange_oper) # Boxes for cls, color in [(".{+#square}", "#f80"), (".{+#curly}", "#0a0"), (".{+#begin}", "#08f"), (".{+#seq}", "#f80")]: rules.builder_for(cls) \ .mclasses("object") \ .css_background_color(color) \ .css_margin("4px") \ .css_padding("4px") \ .css_border_radius("5px") rules.builder_for(cls + " > *") \ .css_background_color("#000") \ .css_margin_left("2px") \ .css_margin_right("2px") \ .css_border_radius("5px") rules.css_margin_top(".{+#begin} > *", "6px") rules.css_margin_bottom(".{+#begin} > *", "6px") # Begin rules.css_display(".{+#begin} > *", "block") # Assign rules.mclasses(".{+#assign}", "object") rules.rearrange(".{+#assign}", lambda classes, children: [children[0], [{"operator"}, ":="], children[1]]) # Lambda, declaring for cls, kw in [(".{+#lambda}", "λ"), (".{+#declaring}", "declaring")]: rules.mclasses(cls, "object") rules.rearrange(cls, lambda classes, children, kw=kw: [[{"assoc"}, [{"arguments"}, [{"shortheader"}, kw]] + list(children[0]), children[1]]]) rules.mclasses(".arguments", "@list") rules.css_color(".shortheader", "#88f") rules.css_padding(".shortheader", "3px") # # Void # rules.hide(".{@Void}") # UniqueVar rules.builder_for(".{@UniqueVar}") \ .css_padding("3px").css_margin("3px") rules.builder_for(".{@UniqueVar} .identifier") \ .css_padding("0px").css_margin("0px") rules.builder_for(".{@UniqueVar} .{@int}") \ .css_color("#fff").css_padding("0px").css_margin("0px") rules.builder_for(".{@UniqueVar}>:last-child") \ .css_vertical_align("sub").css_font_size("3pt") return rules