示例#1
0
文件: parser.py 项目: hemebond/PyWO
def size_callback(option, opt_str, value, parser):
    """Parse width, height, size options to Size."""
    largs_callback(option, opt_str, value, parser)
    # TODO: allow relative size, and absolute size
    try:
        if option.dest == 'width':
            width = Size.parse_value(value)
            size = Size(width, 0)
        elif option.dest == 'height':
            height = Size.parse_value(value)
            size = Size(0, height)
        elif option.dest == 'size':
            size = Size.parse(*value)
    except (ValueError, TypeError):
        msg = 'option %s: error parsing Size value: %s' % (opt_str, value)
        raise optparse.OptionValueError(msg)
    setattr(parser.values, option.dest, size)
示例#2
0
 def test_parse_value(self):
     self.assertEqual(Size.parse_value('FULL'), 1.0)
     self.assertEqual(Size.parse_value('F'), 1.0)
     self.assertEqual(Size.parse_value('1'), 1.0)
     self.assertEqual(Size.parse_value('1.0'), 1.0)
     self.assertEqual(Size.parse_value('H+H'), 1.0)
     self.assertEqual(Size.parse_value('H+0.5'), 1.0)
     self.assertEqual(Size.parse_value('0.25*4'), 1.0)
     self.assertEqual(Size.parse_value('Q*4'), 1.0)
     self.assertEqual(Size.parse_value('0.25*2+H'), 1.0)
     self.assertEqual(Size.parse_value('8*HALF/4'), 1.0)
     self.assertEqual(Size.parse_value('8*HALF/2-FULL'), 1.0)
     self.assertEqual(Size.parse_value('HALF'), 0.5)
     self.assertEqual(Size.parse_value('H'), 0.5)
     self.assertEqual(Size.parse_value('0.5'), 0.5)
     self.assertEqual(Size.parse_value('THIRD'), 1.0/3)
     self.assertEqual(Size.parse_value('T'), 1.0/3)
     self.assertEqual(Size.parse_value('QUARTER'), 0.25)
     self.assertEqual(Size.parse_value('Q'), 0.25)
     self.assertEqual(Size.parse_value('0.25'), 0.25)
     self.assertEqual(Size.parse_value('HALF,FULL'), [0.5, 1])
     self.assertEqual(Size.parse_value(''), None)
     self.assertEqual(Size.parse_value(' '), None)
     self.assertRaises(ValueError, Size.parse_value, 'fasdfa')