Example #1
0
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
Example #2
0
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
Example #3
0
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