def oes_cwpled_cywydd(self, cwpled): log.info('prawf: cwpled cywydd') sylwadau = [] dad = Dadansoddwr() adro1 = dad.oes_cynghanedd(cwpled.cyntaf) adro2 = dad.oes_cynghanedd(cwpled.ail) ateb = True if cwpled.cyntaf.nifer_sillau() != 7 : sylwadau.append('cwpled cywydd: methiant: nid oes saith sill yn y linell gyntaf') ateb = False if cwpled.ail.nifer_sillau() != 7: sylwadau.append('cwpled cywydd: methiant: nid oes saith sill yn yr ail linell') ateb = False if cwpled.cyntaf.ybrifodl.pwyslais() == cwpled.ail.ybrifodl.pwyslais(): sylwadau.append('cwpled cywydd: methiant: acenion o\'r un fath') ateb = False if adro1.cynghanedd == 'DIM': sylwadau.append('cwpled cywydd: methiant: dim cynghanedd yn y linell gyntaf') ateb = False if adro2.cynghanedd == 'DIM': sylwadau.append('cwpled cywydd: methiant: dim cynghanedd yn yr ail linell') ateb = False if adro2.cynghanedd in ['LLU', 'LLL']: sylwadau.append('cwpled cywydd: methiant: cynghanedd lusg yn yr ail linell') ateb = False if not od.oes_odl( cwpled.cyntaf.geiriau[-1], cwpled.ail.geiriau[-1] ) : sylwadau.append('cwpled cywydd: methiant: dim odl') ateb = False return [ateb, [adro1, adro2], sylwadau]
def oes_hir_a_thoddaid(self, pennill): log.info('prawf hir-a-thoddaid') dad = Dadansoddwr() ateb = True adro = [] sylwadau = [] llinellau = list(pennill.llinellau) llinellau.reverse() # creu rhestr cwpledi cwpledi = [] while llinellau: cyntaf = llinellau.pop() if not llinellau: sylwadau.append('torr mesur (hir-a-thoddaid): llinell unigol') ateb = False break ail = llinellau.pop() cwpledi.append( Cwpled(cyntaf,ail) ) if len(cwpledi) < 2: sylwadau.append('torr mesur (hir-a-thoddaid): dim digon o linellau') ateb = False # profi cynghanedd y cwpledi, ar wahan i'r olaf adro = [] for cwpled in cwpledi[:-1]: # nifer sillau if cwpled.cyntaf.nifer_sillau() != 10 or cwpled.ail.nifer_sillau() != 10: sylwadau.append('torr mesur (hir-a-thoddaid): mae angen 10 sill fan hyn') ateb = False # cynghanedd adro1 = dad.oes_cynghanedd( cwpled.cyntaf ) if adro1.cynghanedd == 'DIM': sylwadau.append('torr mesur (hir-a-thoddaid): dim cynghanedd yn y linell gyntaf') ateb = False adro2 = dad.oes_cynghanedd( cwpled.ail ) if adro2.cynghanedd == 'DIM': sylwadau.append('torr mesur (hir-a-thoddaid): dim cynghanedd yn yr ail linell') ateb = False # odl if not od.oes_odl( cwpled.cyntaf.geiriau[-1], cwpled.ail.geiriau[-1] ) : sylwadau.append('torr mesur (hir-a-thoddaid): dim odl') ateb = False # adro.extend([ adro1, adro2 ]) adro.append(adro1) adro.append(adro2) # profi toddaid hi cwpled olaf # olaf = cwpledi[-1] toh = self.oes_toddaid( cwpledi[-1], hir=True ) if not toh[0]: sylwadau.append('torr mesur (hir-a-thoddaid): dim toddaid byr yn y ddwy linell olaf') ateb = False # adro.extend( toh[1] ) adro.append( toh[1][0] ) adro.append( toh[1][0] ) return [ ateb, adro, sylwadau ]
def oes_sain_gadwynog(self, llinell): ''' ffwythiant: oes_sain_gadwynog mewnbwn: llinell allbwn: adroddiad ''' log.info('prawf sain gadwynog') ybrifodl = llinell.geiriau[-1] # iteru er mwyn darganfod yr orffwysfa gyntaf for i in range(len(llinell.geiriau) - 3): yr_orffwysfa_gyntaf = llinell.geiriau[i] if yr_orffwysfa_gyntaf.llinyn() in cy.geiriau_gwan: continue # iteru er mwyn darganfod yr ail orffwysfa for j in range(i + 1, len(llinell.geiriau) - 2): yr_ail_orffwysfa = llinell.geiriau[j] if yr_ail_orffwysfa.llinyn() in cy.geiriau_gwan: continue # iteru er mwyn darganfod yr ail orffwysfa for k in range(j + 1, len(llinell.geiriau) - 1): y_drydedd_orffwysfa = llinell.geiriau[k] if y_drydedd_orffwysfa.llinyn() in cy.geiriau_gwan: continue log.debug(yr_orffwysfa_gyntaf.llinyn() + '/' + yr_ail_orffwysfa.llinyn() + '/' + y_drydedd_orffwysfa.llinyn() + '/' + ybrifodl.llinyn()) # profi am odl rhwng yr orffwysfa gyntaf a'r drydedd odl, syl = oes_odl(yr_orffwysfa_gyntaf, y_drydedd_orffwysfa) if odl: dosb = None # os oes odl, profi an gytseinedd dosb_cyts, bai, data = oes_cytseinedd( llinell.geiriau[i + 1:j + 1], llinell.geiriau[k + 1:]) if dosb_cyts and dosb_cyts[0] in ['C', 'T']: dosb = 'SAG' # dianc os oes angen if dosb: data['gorffwysfeydd'] = (yr_orffwysfa_gyntaf, yr_ail_orffwysfa, y_drydedd_orffwysfa) data['odl'] = odl return Adroddiad(llinell=llinell, cynghanedd=dosb, aceniad=aceniad( yr_ail_orffwysfa, ybrifodl), data=data) return None
def oes_sain_gadwynog(self, llinell): ''' ffwythiant: oes_sain_gadwynog mewnbwn: llinell allbwn: adroddiad ''' log.info('prawf sain gadwynog') ybrifodl = llinell.geiriau[-1] # iteru er mwyn darganfod yr orffwysfa gyntaf for i in range( len(llinell.geiriau)-3 ): yr_orffwysfa_gyntaf = llinell.geiriau[i] if yr_orffwysfa_gyntaf.llinyn() in cy.geiriau_gwan: continue # iteru er mwyn darganfod yr ail orffwysfa for j in range( i+1, len(llinell.geiriau)-2 ): yr_ail_orffwysfa = llinell.geiriau[j] if yr_ail_orffwysfa.llinyn() in cy.geiriau_gwan: continue # iteru er mwyn darganfod yr ail orffwysfa for k in range( j+1, len(llinell.geiriau)-1 ): y_drydedd_orffwysfa = llinell.geiriau[k] if y_drydedd_orffwysfa.llinyn() in cy.geiriau_gwan: continue log.debug( yr_orffwysfa_gyntaf.llinyn() + '/' + yr_ail_orffwysfa.llinyn() + '/' + y_drydedd_orffwysfa.llinyn() + '/' + ybrifodl.llinyn() ) # profi am odl rhwng yr orffwysfa gyntaf a'r drydedd odl,syl = oes_odl( yr_orffwysfa_gyntaf, y_drydedd_orffwysfa ) if odl: dosb = None # os oes odl, profi an gytseinedd dosb_cyts, bai, data = oes_cytseinedd( llinell.geiriau[i+1:j+1], llinell.geiriau[k+1:] ) if dosb_cyts and dosb_cyts[0] in ['C','T']: dosb = 'SAG' # dianc os oes angen if dosb: data['gorffwysfeydd'] = (yr_orffwysfa_gyntaf,yr_ail_orffwysfa,y_drydedd_orffwysfa) data['odl'] = odl return Adroddiad( llinell = llinell, cynghanedd = dosb, aceniad = aceniad( yr_ail_orffwysfa, ybrifodl ), data = data ) return None
def oes_cyhydedd_nawban(self, pennill): log.info('prawf cyhydedd nawban') dad = Dadansoddwr() ateb = True sylwadau = [] adro = [] # nifer llinellau if not pennill.llinellau or len(pennill.llinellau) != 4: sylwadau.append('torr mesur (cyhydedd nawban): nid oes 4 llinell') ateb = False # llinellau unigol for llinell in pennill.llinellau: # nifer sillau if llinell.nifer_sillau() != 9: sylwadau.append( 'torr mesur (cyhydedd nawban): rhaid cael naw sill ymhob llinell' ) ateb = False # cynghanedd ad = dad.oes_cynghanedd(llinell) adro.append(ad) if ad.cynghanedd == 'DIM': sylwadau.append( 'torr mesur (cyhydedd nawban): dim cynghanedd (%s)' % llinell.llinyn()) ateb = False break # odl for j in range(len(pennill.llinellau) - 1): odl = od.oes_odl(pennill.llinellau[j].geiriau[-1], pennill.llinellau[j + 1].geiriau[-1]) if not odl: sylwadau.append('torr mesur (cyhydedd nawban): dim odl') ateb = False break return [ateb, adro, sylwadau]
def oes_cwpled_cywydd(self, cwpled): log.info('prawf: cwpled cywydd') sylwadau = [] dad = Dadansoddwr() adro1 = dad.oes_cynghanedd(cwpled.cyntaf) adro2 = dad.oes_cynghanedd(cwpled.ail) ateb = True if cwpled.cyntaf.nifer_sillau() != 7: sylwadau.append( 'cwpled cywydd: methiant: nid oes saith sill yn y linell gyntaf' ) ateb = False if cwpled.ail.nifer_sillau() != 7: sylwadau.append( 'cwpled cywydd: methiant: nid oes saith sill yn yr ail linell') ateb = False if cwpled.cyntaf.ybrifodl.pwyslais() == cwpled.ail.ybrifodl.pwyslais(): sylwadau.append('cwpled cywydd: methiant: acenion o\'r un fath') ateb = False if adro1.cynghanedd == 'DIM': sylwadau.append( 'cwpled cywydd: methiant: dim cynghanedd yn y linell gyntaf') ateb = False if adro2.cynghanedd == 'DIM': sylwadau.append( 'cwpled cywydd: methiant: dim cynghanedd yn yr ail linell') ateb = False if adro2.cynghanedd in ['LLU', 'LLL']: sylwadau.append( 'cwpled cywydd: methiant: cynghanedd lusg yn yr ail linell') ateb = False if not od.oes_odl(cwpled.cyntaf.geiriau[-1], cwpled.ail.geiriau[-1]): sylwadau.append('cwpled cywydd: methiant: dim odl') ateb = False return [ateb, [adro1, adro2], sylwadau]
def oes_cyhydedd_nawban(self, pennill): log.info('prawf cyhydedd nawban') dad = Dadansoddwr() ateb = True sylwadau = [] adro = [] # nifer llinellau if not pennill.llinellau or len(pennill.llinellau) != 4: sylwadau.append('torr mesur (cyhydedd nawban): nid oes 4 llinell') ateb = False # llinellau unigol for llinell in pennill.llinellau: # nifer sillau if llinell.nifer_sillau() != 9: sylwadau.append('torr mesur (cyhydedd nawban): rhaid cael naw sill ymhob llinell') ateb = False # cynghanedd ad = dad.oes_cynghanedd( llinell ) adro.append(ad) if ad.cynghanedd == 'DIM': sylwadau.append( 'torr mesur (cyhydedd nawban): dim cynghanedd (%s)' % llinell.llinyn() ) ateb = False break # odl for j in range( len(pennill.llinellau) - 1 ): odl = od.oes_odl(pennill.llinellau[j].geiriau[-1], pennill.llinellau[j+1].geiriau[-1]) if not odl: sylwadau.append('torr mesur (cyhydedd nawban): dim odl') ateb = False break return [ ateb, adro, sylwadau ]
def oes_sain(self, llinell): ''' ffwythiant: oes_sain mewnbwn: llinell allbwn: adroddiad ''' log.info('prawf sain') # sain gadwynog adro_sain_gadwynog = self.oes_sain_gadwynog(llinell) if adro_sain_gadwynog: return adro_sain_gadwynog ybrifodl = llinell.geiriau[-1] # iteru er mwyn darganfod yr orffwysfa gyntaf for j in range(len(llinell.geiriau) - 2): yr_orffwysfa_gyntaf = llinell.geiriau[j] if yr_orffwysfa_gyntaf.llinyn() in cy.geiriau_gwan: continue # iteru er mwyn darganfod yr ail orffwysfa for k in range(j + 1, len(llinell.geiriau) - 1): yr_ail_orffwysfa = llinell.geiriau[k] if yr_ail_orffwysfa.llinyn() in cy.geiriau_gwan: continue log.debug(yr_orffwysfa_gyntaf.llinyn() + '/' + yr_ail_orffwysfa.llinyn() + '/' + ybrifodl.llinyn()) # profi am odl yrolynydd = llinell.geiriau[j + 1] odl, syl = oes_odl(yr_orffwysfa_gyntaf, yr_ail_orffwysfa, olynydd=yrolynydd) if not odl: yrolynydd = llinell.geiriau[k + 1] odl, syl = oes_odl(yr_ail_orffwysfa, yr_orffwysfa_gyntaf, olynydd=yrolynydd) # os oes odl, profi am gytseinedd if odl: dosb = None dosb_cyts, bai, data = oes_cytseinedd( yr_ail_orffwysfa, llinell.geiriau[k + 1:]) if dosb_cyts == 'LLA': dosb = 'SAL' elif data and data.has_key('parau'): if data['parau']: if dosb_cyts == 'COG': dosb = 'SOG' else: dosb = 'SAI' # dianc os oes angen if dosb: data['gorffwysfeydd'] = (yr_orffwysfa_gyntaf, yr_ail_orffwysfa) data['odl'] = odl data['sylwadau'] = syl return Adroddiad(llinell=llinell, cynghanedd=dosb, aceniad=aceniad( yr_ail_orffwysfa, ybrifodl), data=data) return None
def oes_sain(self, llinell): ''' ffwythiant: oes_sain mewnbwn: llinell allbwn: adroddiad ''' log.info('prawf sain') # sain gadwynog adro_sain_gadwynog = self.oes_sain_gadwynog(llinell) if adro_sain_gadwynog: return adro_sain_gadwynog ybrifodl = llinell.geiriau[-1] # iteru er mwyn darganfod yr orffwysfa gyntaf for j in range( len(llinell.geiriau)-2 ): yr_orffwysfa_gyntaf = llinell.geiriau[j] if yr_orffwysfa_gyntaf.llinyn() in cy.geiriau_gwan: continue # iteru er mwyn darganfod yr ail orffwysfa for k in range( j+1, len(llinell.geiriau)-1 ): yr_ail_orffwysfa = llinell.geiriau[k] if yr_ail_orffwysfa.llinyn() in cy.geiriau_gwan: continue log.debug(yr_orffwysfa_gyntaf.llinyn() + '/' + yr_ail_orffwysfa.llinyn() + '/' + ybrifodl.llinyn()) # profi am odl yrolynydd = llinell.geiriau[j+1] odl, syl = oes_odl( yr_orffwysfa_gyntaf, yr_ail_orffwysfa, olynydd=yrolynydd) if not odl: yrolynydd = llinell.geiriau[k+1] odl, syl = oes_odl( yr_ail_orffwysfa, yr_orffwysfa_gyntaf, olynydd=yrolynydd) # os oes odl, profi am gytseinedd if odl: dosb = None dosb_cyts, bai, data = oes_cytseinedd( yr_ail_orffwysfa, llinell.geiriau[k+1:] ) if dosb_cyts == 'LLA': dosb = 'SAL' elif data and data.has_key('parau'): if data['parau']: if dosb_cyts == 'COG': dosb = 'SOG' else: dosb = 'SAI' # dianc os oes angen if dosb: data['gorffwysfeydd'] = (yr_orffwysfa_gyntaf,yr_ail_orffwysfa) data['odl'] = odl data['sylwadau'] = syl return Adroddiad( llinell = llinell, cynghanedd = dosb, aceniad = aceniad( yr_ail_orffwysfa, ybrifodl ), data = data ) return None
def oes_toddaid(self, cwpled, byr=False, hir=False): if byr: enw = 'toddaid_byr' elif hir: enw = 'toddaid_hir' else: enw = 'toddaid' log.info('prawf: ' + enw) sylwadau = [] dad = Dadansoddwr() ateb = True # profi am air luosill ar ddiwedd yr ail linell if cwpled.ail.geiriau[-1].nifer_sillau() < 2: sylwadau.append(enw + ': methiant: dim gair lluosill ar ddiwedd yr ail linell.') ateb = False # profi nifer sillau if cwpled.cyntaf.nifer_sillau() != 10: sylwadau.append(enw + ': nid oes 10 sill yn y linell gyntaf') ateb = False if byr: if cwpled.ail.nifer_sillau() != 6: sylwadau.append(enw + ': nid oes 6 sill i\'r ail linell') ateb = False elif hir: if cwpled.ail.nifer_sillau() != 10: sylwadau.append(enw + ': nid oes 10 sill i\'r ail linell') ateb = False else: if cwpled.ail.nifer_sillau() != 9: sylwadau.append(enw + ': nid oes 9 sill i\'r ail linell') ateb = False # prosesu'r linell gyntaf (hollti ar gysylltnod) rhestr_cyntaf = [] rhestr_cyrch = [] heibio = False for gair in cwpled.cyntaf.geiriau: if gair.llinyn() == '-': heibio = True elif not heibio: rhestr_cyntaf.append(gair) else: rhestr_cyrch.append(gair) llinell_cyntaf = Llinell( rhestr_cyntaf ) # profi presenoldeb cysylltnod if not heibio: sylwadau.append(enw + ': methiant: dim cysylltnod yn y linell gyntaf.') ateb = False # profi nifer sillau y cyrch ns_cyrch = sum([ g.nifer_sillau() for g in rhestr_cyrch ]) if ns_cyrch < 1 or ns_cyrch > 3: sylwadau.append(enw + ': methiant: nid oes 1-3 sill yn y cyrch.') ateb = False # profi am gynghanedd yn y linell gyntaf adro1 = dad.oes_cynghanedd(llinell_cyntaf) if adro1.cynghanedd == 'DIM': sylwadau.append(enw + ': dim cynghanedd yn y linell gyntaf') ateb = False # prosesu'r ail linell (dibynnu ar pa fath o doddaid) if not byr: adro2 = dad.oes_cynghanedd(cwpled.ail) # cyrch yn bengoll mewn toddaid neu doddaid hir if adro2.cynghanedd == 'DIM': sylwadau.append(enw + ': dim cynghanedd yn yr ail linell') ateb = False else: rhestr_ail = list(rhestr_cyrch) rhestr_pengoll = [] llwyddiant = False for gair in cwpled.ail.geiriau: if not llwyddiant: rhestr_ail.append(gair) adro2 = dad.oes_cynghanedd( Llinell( rhestr_ail ) ) if adro2.cynghanedd not in ['DIM', 'LLU', 'LLL']: llwyddiant = True else: rhestr_pengoll.append(gair) if not llwyddiant: sylwadau.append(enw + ': dim cynghanedd yn y cyrch a rhan gyntaf yr ail linell') ateb = False # mae bob amser angen odl rhwng prifodl y gynghanedd gyntaf a diwedd yr ail linell if not od.oes_odl( rhestr_cyntaf[-1], cwpled.ail.geiriau[-1] ): sylwadau.append(enw + 'methiant: dim odl rhwng prifodl y gynghanedd gyntaf a diwedd yr ail linell') ateb = False # os toddaid neu doddaid hir, mae hefyd angen odl rhwng y cyrch a gorffwysfa'r ail linell # TODO: os oes mwy nag un gorffwysfa (e.e. sain), gall y cyrch odli gyda unrhyw un ohonynt if not byr: if adro2.data.has_key('gorffwysfeydd'): gorffwysfeydd = adro2.data['gorffwysfeydd'] if rhestr_cyrch and not any([ od.oes_odl(rhestr_cyrch[-1], gorff) for gorff in gorffwysfeydd ]): sylwadau.append(enw + 'methiant: dim odl rhwng y cyrch a gorffwysfa yr ail linell') ateb = False # print ateb # print adro1 # print adro2 # print sylwadau # diwedd return [ateb, [adro1, adro2], sylwadau]
def oes_toddaid(self, cwpled, byr=False, hir=False): if byr: enw = 'toddaid_byr' elif hir: enw = 'toddaid_hir' else: enw = 'toddaid' log.info('prawf: ' + enw) sylwadau = [] dad = Dadansoddwr() ateb = True # profi am air luosill ar ddiwedd yr ail linell if cwpled.ail.geiriau[-1].nifer_sillau() < 2: sylwadau.append( enw + ': methiant: dim gair lluosill ar ddiwedd yr ail linell.') ateb = False # profi nifer sillau if cwpled.cyntaf.nifer_sillau() != 10: sylwadau.append(enw + ': nid oes 10 sill yn y linell gyntaf') ateb = False if byr: if cwpled.ail.nifer_sillau() != 6: sylwadau.append(enw + ': nid oes 6 sill i\'r ail linell') ateb = False elif hir: if cwpled.ail.nifer_sillau() != 10: sylwadau.append(enw + ': nid oes 10 sill i\'r ail linell') ateb = False else: if cwpled.ail.nifer_sillau() != 9: sylwadau.append(enw + ': nid oes 9 sill i\'r ail linell') ateb = False # prosesu'r linell gyntaf (hollti ar gysylltnod) rhestr_cyntaf = [] rhestr_cyrch = [] heibio = False for gair in cwpled.cyntaf.geiriau: if gair.llinyn() == '-': heibio = True elif not heibio: rhestr_cyntaf.append(gair) else: rhestr_cyrch.append(gair) llinell_cyntaf = Llinell(rhestr_cyntaf) # profi presenoldeb cysylltnod if not heibio: sylwadau.append(enw + ': methiant: dim cysylltnod yn y linell gyntaf.') ateb = False # profi nifer sillau y cyrch ns_cyrch = sum([g.nifer_sillau() for g in rhestr_cyrch]) if ns_cyrch < 1 or ns_cyrch > 3: sylwadau.append(enw + ': methiant: nid oes 1-3 sill yn y cyrch.') ateb = False # profi am gynghanedd yn y linell gyntaf adro1 = dad.oes_cynghanedd(llinell_cyntaf) if adro1.cynghanedd == 'DIM': sylwadau.append(enw + ': dim cynghanedd yn y linell gyntaf') ateb = False # prosesu'r ail linell (dibynnu ar pa fath o doddaid) if not byr: adro2 = dad.oes_cynghanedd( cwpled.ail) # cyrch yn bengoll mewn toddaid neu doddaid hir if adro2.cynghanedd == 'DIM': sylwadau.append(enw + ': dim cynghanedd yn yr ail linell') ateb = False else: rhestr_ail = list(rhestr_cyrch) rhestr_pengoll = [] llwyddiant = False for gair in cwpled.ail.geiriau: if not llwyddiant: rhestr_ail.append(gair) adro2 = dad.oes_cynghanedd(Llinell(rhestr_ail)) if adro2.cynghanedd not in ['DIM', 'LLU', 'LLL']: llwyddiant = True else: rhestr_pengoll.append(gair) if not llwyddiant: sylwadau.append( enw + ': dim cynghanedd yn y cyrch a rhan gyntaf yr ail linell') ateb = False # mae bob amser angen odl rhwng prifodl y gynghanedd gyntaf a diwedd yr ail linell if not od.oes_odl(rhestr_cyntaf[-1], cwpled.ail.geiriau[-1]): sylwadau.append( enw + 'methiant: dim odl rhwng prifodl y gynghanedd gyntaf a diwedd yr ail linell' ) ateb = False # os toddaid neu doddaid hir, mae hefyd angen odl rhwng y cyrch a gorffwysfa'r ail linell # TODO: os oes mwy nag un gorffwysfa (e.e. sain), gall y cyrch odli gyda unrhyw un ohonynt if not byr: if adro2.data.has_key('gorffwysfeydd'): gorffwysfeydd = adro2.data['gorffwysfeydd'] if rhestr_cyrch and not any([ od.oes_odl(rhestr_cyrch[-1], gorff) for gorff in gorffwysfeydd ]): sylwadau.append( enw + 'methiant: dim odl rhwng y cyrch a gorffwysfa yr ail linell' ) ateb = False # print ateb # print adro1 # print adro2 # print sylwadau # diwedd return [ateb, [adro1, adro2], sylwadau]
def oes_hir_a_thoddaid(self, pennill): log.info('prawf hir-a-thoddaid') dad = Dadansoddwr() ateb = True adro = [] sylwadau = [] llinellau = list(pennill.llinellau) llinellau.reverse() # creu rhestr cwpledi cwpledi = [] while llinellau: cyntaf = llinellau.pop() if not llinellau: sylwadau.append('torr mesur (hir-a-thoddaid): llinell unigol') ateb = False break ail = llinellau.pop() cwpledi.append(Cwpled(cyntaf, ail)) if len(cwpledi) < 2: sylwadau.append( 'torr mesur (hir-a-thoddaid): dim digon o linellau') ateb = False # profi cynghanedd y cwpledi, ar wahan i'r olaf adro = [] for cwpled in cwpledi[:-1]: # nifer sillau if cwpled.cyntaf.nifer_sillau() != 10 or cwpled.ail.nifer_sillau( ) != 10: sylwadau.append( 'torr mesur (hir-a-thoddaid): mae angen 10 sill fan hyn') ateb = False # cynghanedd adro1 = dad.oes_cynghanedd(cwpled.cyntaf) if adro1.cynghanedd == 'DIM': sylwadau.append( 'torr mesur (hir-a-thoddaid): dim cynghanedd yn y linell gyntaf' ) ateb = False adro2 = dad.oes_cynghanedd(cwpled.ail) if adro2.cynghanedd == 'DIM': sylwadau.append( 'torr mesur (hir-a-thoddaid): dim cynghanedd yn yr ail linell' ) ateb = False # odl if not od.oes_odl(cwpled.cyntaf.geiriau[-1], cwpled.ail.geiriau[-1]): sylwadau.append('torr mesur (hir-a-thoddaid): dim odl') ateb = False # adro.extend([ adro1, adro2 ]) adro.append(adro1) adro.append(adro2) # profi toddaid hi cwpled olaf # olaf = cwpledi[-1] toh = self.oes_toddaid(cwpledi[-1], hir=True) if not toh[0]: sylwadau.append( 'torr mesur (hir-a-thoddaid): dim toddaid byr yn y ddwy linell olaf' ) ateb = False # adro.extend( toh[1] ) adro.append(toh[1][0]) adro.append(toh[1][0]) return [ateb, adro, sylwadau]