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()
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')
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')
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
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')
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'
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')
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'
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'
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)
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
def test_bad_hex_value(): for hex_string in ['', 'zz0000', '0011223', 'a', '0011223344']: with pytest.raises(ValueError): HexColor(hex_string)
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,
# 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)