def reference_to_string(bookname, chapter, verse=None,
                        end_chapter=None, end_verse=None):
    book=None

    bn, c, v, ec, ev = normalize_reference(bookname, chapter, verse,
        end_chapter, end_verse)

    book = get_book(bn)

    if c == ec and len(book[3]) == 1: # single chapter book
        if v == ev: # single verse
            return '{0} {1}'.format(bn, v)
        else: # multiple verses
            return '{0} {1}-{2}'.format(bn, v, ev)
    else: # multichapter book
        if c == ec: # same start and end chapters
            if v == 1 and ev == book[3][c-1]: # full chapter
                return '{0} {1}'.format(bn, c)
            elif v == ev: # single verse
                return '{0} {1}:{2}'.format(bn, c, v)
            else: # multiple verses
                return '{0} {1}:{2}-{3}'.format(
                    bn, c, v, ev)
        else: # multiple chapters
            if v == 1 and ev == book[3][ec-1]: # multichapter ref
                return '{0} {1}-{2}'.format(bn, c, ec)
            else: # multi-chapter, multi-verse ref
                return '{0} {1}:{2}-{3}:{4}'.format(bn, c, v, ec, ev)
``list_volumes`` returns ``BlockDeviceVolume`` s that have the
dataset/ETHPy150Open davisd/python-scriptures/scriptures/references.py/reference_to_string--crossover with--dataset/ETHPy150Open ClusterHQ/flocker/flocker/node/agents/testtools/_blockdevice.py/IBlockDeviceAPITestsMixin.test_listed_volume_attributes