Example #1
0
def test_pygments_style_to_stylesheet():
    def matching_style(style_sheet, token_type):
        match, = style_sheet.find_matches(Token('text', token_type), None)
        return style_sheet[match.style_name]

    class SimpleStyle(Style):
        background_color = "#f0f0f0"
        default_style = ""

        styles = {
            Comment: "italic #60a0b0",
            Keyword: "bold #007020",
            Number:  "#40a070",
        }

    style_sheet = pygments_style_to_stylesheet(SimpleStyle)

    comment_style = matching_style(style_sheet, Comment)
    assert comment_style.keys() == set(['font_slant', 'font_color'])
    assert comment_style.font_slant == FontSlant.ITALIC
    assert comment_style.font_color == HexColor('#60a0b0')

    keyword_style = matching_style(style_sheet, Keyword)
    assert keyword_style.keys() == set(['font_weight', 'font_color'])
    assert keyword_style.font_weight == FontWeight.BOLD
    assert keyword_style.font_color == HexColor('#007020')

    number_style = matching_style(style_sheet, Number)
    assert number_style.keys() == set(['font_color'])
    assert number_style.font_color == HexColor('#40a070')

    for token in (Text, Name, Punctuation, Operator, Literal, Name.Builtin,
                  Name.Builtin.Pseudo, Literal.String):
        style = matching_style(style_sheet, token)
        assert not style.keys()
Example #2
0
def test_color_from_string():
    assert Color.from_string('none') == None
    assert Color.from_string('#ffffff') == HexColor('#FFFFFF')
    assert Color.from_string('#aBc123') == HexColor('#Abc123')
    assert Color.from_string('#123456aa') == HexColor('#123456aa')
    assert Color.from_string('#5e1') == HexColor('#5e1')
    assert Color.from_string('#5e10') == HexColor('#5e10')
Example #3
0
def test_stroke_from_string():
    assert Stroke.from_string('1pt,#fff') == Stroke(1*PT, HexColor('#FFF'))
    assert Stroke.from_string('99cm,#123456aa') == Stroke(99*CM,
                                                         HexColor('#123456aa'))
    with pytest.raises(ValueError):
        assert Stroke.from_string('8,#fff')
    with pytest.raises(ValueError):
        assert Stroke.from_string('1pt,1')
    with pytest.raises(ValueError):
        assert Stroke.from_string('xyz')
Example #4
0
def test_variable():
    assert emphasized.get_style('font_size', container) == 20 * PT
    assert emphasized2.get_style('font_size', container) == 20 * PT
    assert emphasized3.get_style('font_size', container) == 20 * PT

    assert paragraph.get_style('text_align', container) == 'right'
    assert paragraph.get_style('font_color', container) == HexColor('f00')
    assert paragraph.get_style('indent_first', container) == 0.5 * CM

    assert paragraph4.get_style('text_align', container) == 'right'
    assert paragraph4.get_style('font_color', container) == HexColor('f00')
    assert paragraph4.get_style('indent_first', container) == 0.5 * CM
Example #5
0
    def test_short_hex_color(self):
        color3 = HexColor('#A49')
        self.assertEqual(color3.r, 0xAA / 255)
        self.assertEqual(color3.g, 0x44 / 255)
        self.assertEqual(color3.b, 0x99 / 255)
        self.assertEqual(repr(color3), '#a49')

        color4 = HexColor('#2c6e')
        self.assertEqual(color4.r, 0x22 / 255)
        self.assertEqual(color4.g, 0xCC / 255)
        self.assertEqual(color4.b, 0x66 / 255)
        self.assertEqual(color4.a, 0xEE / 255)
        self.assertEqual(repr(color4), '#2c6e')
Example #6
0
def test_short_hex_color():
    color3 = HexColor('#A49')
    assert color3.r == 0xAA / 255
    assert color3.g == 0x44 / 255
    assert color3.b == 0x99 / 255
    assert str(color3) == '#a49'

    color4 = HexColor('#2c6e')
    assert color4.r == 0x22 / 255
    assert color4.g == 0xCC / 255
    assert color4.b == 0x66 / 255
    assert color4.a == 0xEE / 255
    assert str(color4) == '#2c6e'
Example #7
0
    def test_hex_color(self):
        color = HexColor('#1023F6')
        self.assertEqual(color.r, 0x10 / 255)
        self.assertEqual(color.g, 0x23 / 255)
        self.assertEqual(color.b, 0xF6 / 255)
        self.assertEqual(color.a, 1.0)
        self.assertEqual(repr(color), '#1023f6')

        color2 = HexColor('E30BCAD7')
        self.assertEqual(color2.r, 0xE3 / 255)
        self.assertEqual(color2.g, 0x0B / 255)
        self.assertEqual(color2.b, 0xCA / 255)
        self.assertEqual(color2.a, 0xD7 / 255)
        self.assertEqual(repr(color2), '#e30bcad7')
Example #8
0
def test_hex_color():
    color = HexColor('#1023F6')
    assert color.r == 0x10 / 255
    assert color.g == 0x23 / 255
    assert color.b == 0xF6 / 255
    assert color.a == 1.0
    assert str(color) == '#1023f6'

    color2 = HexColor('E30BCAD7')
    assert color2.r == 0xE3 / 255
    assert color2.g == 0x0B / 255
    assert color2.b == 0xCA / 255
    assert color2.a == 0xD7 / 255
    assert str(color2) == '#e30bcad7'
Example #9
0
def test_get_style():
    assert emphasized.get_style('font_weight', container) == 'medium'
    assert emphasized.get_style('font_width', container) == 'condensed'
    assert emphasized.get_style('font_slant', container) == 'italic'

    assert emphasized2.get_style('font_weight', container) == 'medium'
    assert emphasized2.get_style('font_width', container) == 'normal'
    assert emphasized2.get_style('font_slant', container) == 'oblique'

    assert emphasized3.get_style('font_weight', container) == 'medium'
    assert emphasized3.get_style('font_width', container) == 'normal'
    assert emphasized3.get_style('font_slant', container) == 'oblique'

    assert highlighted2.get_style('font_color', container) == HexColor('00f')
    assert highlighted2.get_style('font_size', container) == 12 * PT
    assert highlighted2.get_style('font_slant', container) == 'italic'

    assert paragraph.get_style('margin_left', container) == 0
    assert paragraph.get_style('margin_right', container) == 55 * PT
    assert paragraph.get_style('space_above', container) == 5 * PT
    assert paragraph.get_style('space_below', container) == 10 * PT
    assert paragraph.get_style('font_weight', container) == 'medium'
    assert paragraph.get_style('font_width', container) == 'condensed'
    assert paragraph.get_style('font_slant', container) == 'upright'
    assert paragraph.get_style('font_size', container) == 8 * PT

    assert paragraph2.get_style('margin_left', container) == 0
    assert paragraph2.get_style('margin_right', container) == 0
    assert paragraph2.get_style('space_above', container) == 0
    assert paragraph2.get_style('space_below', container) == 0
    assert paragraph2.get_style('padding_top', container) == 0
    assert paragraph2.get_style('padding_bottom', container) == 3 * PT
    assert paragraph2.get_style('font_weight', container) == 'medium'
    assert paragraph2.get_style('font_width', container) == 'normal'
    assert paragraph2.get_style('font_slant', container) == 'upright'
    assert paragraph2.get_style('font_size', container) == 10 * PT

    assert paragraph3.get_style('margin_left', container) == 1 * PT
    assert paragraph3.get_style('margin_right', container) == 0
    assert paragraph3.get_style('space_above', container) == 0
    assert paragraph3.get_style('space_below', container) == 0
    assert paragraph3.get_style('padding_top', container) == 0
    assert paragraph3.get_style('padding_bottom', container) == 3 * PT
    assert paragraph3.get_style('font_weight', container) == 'medium'
    assert paragraph3.get_style('font_width', container) == 'normal'
    assert paragraph3.get_style('font_slant', container) == 'upright'
    assert paragraph3.get_style('font_size', container) == 10 * PT

    # from 'paragraph' in ssheet1
    assert paragraph4.get_style('margin_right', container) == 55 * PT
    assert paragraph4.get_style('space_above', container) == 5 * PT
    assert paragraph4.get_style('font_size', container) == 8 * PT
    # from 'paragraph' in ssheet2
    assert paragraph4.get_style('space_below', container) == 10 * PT
    assert paragraph4.get_style('font_width', container) == 'condensed'
    # from 'paragraph 4' in sheet1
    assert paragraph4.get_style('padding_top', container) == 5 * PT
    # from 'paragraph 4' in sheet2
    assert paragraph4.get_style('padding_right', container) == 2 * PT

    assert paragraph5.get_style('font_slant', container) == 'upright'
Example #10
0
matcher = StyledMatcher({
    'emphasized text': emphasis_selector,
    'emphasized text 2': emphasis2_selector,
    'highlighted text': highlight_selector,
    'highlighted text 2': highlight2_selector,
    'paragraph': paragraph_selector,
    'paragraph 2': paragraph2_selector,
    'paragraph 4': paragraph4_selector,
    'missing style': missing_selector,
})

ssheet1 = StyleSheet('ssheet1', matcher)

ssheet1.variables['font-size'] = 5 * PT
ssheet1.variables['text-align'] = 'center'
ssheet1.variables['font-color'] = HexColor('f00')

ssheet1('emphasized text', font_slant='italic', font_size=Var('font-size'))
ssheet1('emphasized text 2', base='emphasized text', font_slant='oblique')
ssheet1('highlighted text', font_color=HexColor('00f'))
ssheet1('highlighted text 2', base='highlighted text', font_size=12 * PT)
ssheet1('paragraph',
        margin_right=55 * PT,
        space_above=5 * PT,
        text_align=Var('text-align'),
        font_size=8 * PT,
        font_color=Var('font-color'),
        indent_first=2 * PT)
ssheet1('paragraph 2', padding_bottom=3 * PT)
ssheet1('paragraph 4', base='paragraph', padding_top=5 * PT)
Example #11
0
def test_get_style():
    assert emphasized.get_style('font_weight', container) == FontWeight.MEDIUM
    assert emphasized.get_style('font_width', container) == FontWidth.CONDENSED
    assert emphasized.get_style('font_slant', container) == FontSlant.ITALIC

    assert emphasized2.get_style('font_weight', container) == FontWeight.MEDIUM
    assert emphasized2.get_style('font_width', container) == FontWidth.NORMAL
    assert emphasized2.get_style('font_slant', container) == FontSlant.OBLIQUE

    assert emphasized3.get_style('font_weight', container) == FontWeight.MEDIUM
    assert emphasized3.get_style('font_width', container) == FontWidth.NORMAL
    assert emphasized3.get_style('font_slant', container) == FontSlant.OBLIQUE

    assert highlighted2.get_style('font_color', container) == HexColor('00f')
    assert highlighted2.get_style('font_size', container) == 12 * PT
    assert highlighted2.get_style('font_slant', container) == FontSlant.ITALIC

    assert paragraph.get_style('margin_left', container) == 0
    assert paragraph.get_style('margin_right', container) == 55 * PT
    assert paragraph.get_style('space_above', container) == 5 * PT
    assert paragraph.get_style('space_below', container) == 10 * PT
    assert paragraph.get_style('font_weight', container) == FontWeight.MEDIUM
    assert paragraph.get_style('font_width', container) == FontWidth.CONDENSED
    assert paragraph.get_style('font_slant', container) == FontSlant.UPRIGHT
    assert paragraph.get_style('font_size', container) == 8 * PT

    assert paragraph2.get_style('margin_left', container) == 0
    assert paragraph2.get_style('margin_right', container) == 0
    assert paragraph2.get_style('space_above', container) == 0
    assert paragraph2.get_style('space_below', container) == 0
    assert paragraph2.get_style('padding_top', container) == 0
    assert paragraph2.get_style('padding_bottom', container) == 3 * PT
    assert paragraph2.get_style('font_weight', container) == FontWeight.MEDIUM
    assert paragraph2.get_style('font_width', container) == FontWidth.NORMAL
    assert paragraph2.get_style('font_slant', container) == FontSlant.UPRIGHT
    assert paragraph2.get_style('font_size', container) == 10 * PT

    assert paragraph3.get_style('margin_left', container) == 1 * PT
    assert paragraph3.get_style('margin_right', container) == 0
    assert paragraph3.get_style('space_above', container) == 0
    assert paragraph3.get_style('space_below', container) == 0
    assert paragraph3.get_style('padding_top', container) == 0
    assert paragraph3.get_style('padding_bottom', container) == 3 * PT
    assert paragraph3.get_style('font_weight', container) == FontWeight.MEDIUM
    assert paragraph3.get_style('font_width', container) == FontWidth.NORMAL
    assert paragraph3.get_style('font_slant', container) == FontSlant.UPRIGHT
    assert paragraph3.get_style('font_size', container) == 10 * PT

    # from 'paragraph' in ssheet1
    assert paragraph4.get_style('margin_right', container) == 55 * PT
    assert paragraph4.get_style('space_above', container) == 5 * PT
    assert paragraph4.get_style('font_size', container) == 8 * PT
    # from 'paragraph' in ssheet2
    assert paragraph4.get_style('space_below', container) == 10 * PT
    assert paragraph4.get_style('font_width', container) == FontWidth.CONDENSED
    # from 'paragraph 4' in sheet1
    assert paragraph4.get_style('padding_top', container) == 5 * PT
    # from 'paragraph 4' in sheet2
    assert paragraph4.get_style('padding_right', container) == 2 * PT

    assert paragraph5.get_style('font_slant', container) == FontSlant.UPRIGHT

    before_p4 = paragraph4.get_style('before', container)
    assert before_p4 == SingleStyledText('before p4', source=ssheet1)

    after_p4 = paragraph4.get_style('after', container)
    assert after_p4 == SingleStyledText('after p4', source=ssheet2)

    assert grouped1.get_style('padding_top', container) == 3 * PT
    assert paragraph7.get_style('margin_left', container) == 7 * PT
    assert paragraph7.get_style('padding_top', container) == 3 * PT
Example #12
0
def test_bad_hex_value():
    for hex_string in ['', 'zz0000', '0011223', 'a', '0011223344']:
        with pytest.raises(ValueError):
            HexColor(hex_string)
Example #13
0
matcher = StyledMatcher({
    'emphasized text': emphasis_selector,
    'emphasized text 2': emphasis2_selector,
    'highlighted text': highlight_selector,
    'highlighted text 2': highlight2_selector,
    'paragraph': paragraph_selector,
    'paragraph 2': paragraph2_selector,
    'paragraph 4': paragraph4_selector,
    'missing style': missing_selector,
})

ssheet1 = StyleSheet('ssheet1', matcher)

ssheet1.variables['font-size'] = 5*PT
ssheet1.variables['text-align'] = 'center'
ssheet1.variables['font-color'] = HexColor('f00')

ssheet1('emphasized text',
        font_slant='italic',
        font_size=Var('font-size'))
ssheet1('emphasized text 2',
        base='emphasized text',
        font_slant='oblique')
ssheet1('highlighted text',
        font_color=HexColor('00f'))
ssheet1('highlighted text 2',
        base='highlighted text',
        font_size=12*PT)
ssheet1('paragraph',
        margin_right=55*PT,
        space_above=5*PT,
Example #14
0
#     return path.join(path.dirname(__file__),
#                      path.pardir, path.pardir, path.pardir, 'rinohdemo',
#                      'fonts', 'OpenSans-{}.ttf'.format(variant))
#
# os_regular = OpenTypeFont(os_filename('Regular'), weight=REGULAR)
# os_italic = OpenTypeFont(os_filename('Italic'), weight=REGULAR, slant=ITALIC)
# os_light = OpenTypeFont(os_filename('Light'), weight=LIGHT)
# os_bold = OpenTypeFont(os_filename('Bold'), weight=BOLD)
#
# open_sans = TypeFace('TeXGyrePagella', os_regular, os_italic, os_light, os_bold)
#
# stylesheet.variables['fonts'] = TypeFamily(serif=open_sans,
#                                            sans=SPHINX.variables['fonts'].sans,
#                                            mono=SPHINX.variables['fonts'].mono)

stylesheet.variables['title_color'] = HexColor('#4466FF')
# stylesheet.variables['title_color'] = HexColor('#2F455A')
# stylesheet.variables['title_color'] = HexColor('#42617e')
# stylesheet.variables['title_color'] = HexColor('#537a9f')

stylesheet('chapter', base=SPHINX['chapter'], page_break=None)

stylesheet('heading level 1',
           base=SPHINX['heading level 1'],
           font_size=14 * PT,
           font_color=Var('title_color'),
           number_format=None)

stylesheet('table of contents title', base='heading level 1', space_above=0)

stylesheet('header', base=SPHINX['header'], font_weight=REGULAR)