def main(): s1 = "Hen linell bell nad yw'n bod," s2 = "Hen derfyn nad yw'n darfod." s1 = "Talog, boed law, boed heulwen, - y saif hi" s2 = "Er oes faith, anniben;" # s1 = "Wedi blwng ymosod blin, - encilio:" # s2 = "Wedi'n creithio dianc i'r eithin." s1 = "A'u gweld yn eu dillad gwaith - trwy'r oriau" s2 = "Yn rhwygo o greigiau eu goreugwaith" # s1 = "Mae antur dan y mintys - ac anial" # s2 = "Yw'r creithiau mâl lle bu'r crythau melys." s1 = "Wele rith fel ymyl rhod - o'n cwmpas," s2 = "Campwaith dewin hynod;" s1 = "Rhwydd gamwr, hawdd ei gymell - i'r mynydd" s2 = "a'r mannau anghysbell" cwpled = Cwpled(Llinell(s1), Llinell(s2)) dad = DadansoddwrPennill() cwc = dad.oes_cwpled_cywydd(cwpled) tod = dad.oes_toddaid(cwpled) tob = dad.oes_toddaid(cwpled, byr=True) toh = dad.oes_toddaid(cwpled, hir=True) if cwc[0]: print lliw.cyan('CWC') for ad in cwc[1]: print ad print cwc[2] elif tod[0]: print lliw.cyan('TOD') for ad in tod[1]: print ad print tod[2] elif tob[0]: print lliw.cyan('TOB') for ad in tob[1]: print ad print tob[2] elif toh[0]: print lliw.cyan('TOH') for ad in toh[1]: print ad print toh[2] else: print lliw.cyan('DIM') for ad in tob[1]: print ad print tob[2]
def run_demo(verbose=True): dad = Dadansoddwr() for key in [ 'croes', 'croes_o_gyswllt', 'traws', 'traws_fantach', 'llusg', 'llusg_lafarog', 'llusg_odl_gudd', 'llusg_odl_ewinog', 'sain', 'sain_odl_gudd', 'sain_odl_ewinog', 'sain_lafarog', 'sain_o_gyswllt', 'sain_gadwynog', 'trychben', 'cysylltben', 'seingroes', # 'trawsgroes', 'seindraws', 'croeslusg', 'seinlusg', 'trawslusg', ]: call(["clear"]) val = llinellau[key] print '==============================' print key.upper() print '==============================' for s in val: ad = dad.oes_cynghanedd(Llinell(s)) if verbose: print ad else: print lliw.magenta(ad.cynghanedd) + ': ' + s.strip() print try: aros = raw_input(">> bwrwch y dychwelwr i barhau ...") except KeyboardInterrupt: print return
def run_demo(verbose=True): dad = DadansoddwrPennill() for key in [ 'cwpled_cywydd', 'toddaid_byr', 'toddaid', 'toddaid_hir', 'cywydd', 'englyn', 'cyhydedd_nawban', # 'hir_a_thoddaid' ]: val = penillion[key] for s in val: call(["clear"]) print '========================================' print key.upper() print '========================================' llinynnau = s.split('\n') llinellau = [Llinell(s) for s in llinynnau] pennill = Pennill(llinellau) ateb = dad.oes_mesur(pennill) if ateb: print lliw.cyan(ateb[0]) for adro in ateb[1]: if verbose: print adro else: print lliw.magenta( adro.cynghanedd) + ': ' + adro.llinell.llinyn( ).strip() else: print lliw.magenta('DIM') print '========================================' print try: aros = raw_input(">> bwrwch y dychwelwr i barhau ...") except KeyboardInterrupt: print return continue
def test_llusg(self): for s in self.llinellau: ad = pe.oes_cynghanedd(Llinell(s)) self.assertEqual(ad.cynghanedd, 'LLU')
def test_sain(self): for s in self.llinellau: ad = pe.oes_cynghanedd(Llinell(s)) self.assertEqual(ad.cynghanedd, 'SAI')
def test_traws(self): for s in self.llinellau: ad = pe.oes_cynghanedd(Llinell(s)) self.assertEqual(ad.cynghanedd, 'TRA')
def test_croes(self): for s in self.llinellau: ad = pe.oes_cynghanedd(Llinell(s)) self.assertEqual(ad.cynghanedd, 'CRO')
def main(): dad = Dadansoddwr() s = None # s = "Gwr enwog yw o ran gwaith" # methiant: croes-o-gyswllt (hefyd yn traws-fantach) # s = "Si'r oerwynt a sêr araul" # cdi # s = "Ochain cloch a chanu clir" # s = "Awdur mad a dramodydd" # s = "Beiddgar yw geiriau cariad" # s = "Un distaw ei wrandawiad" # s = "Gwynt y rhew yn distewi" # s = "Y mae arogl yn goglais" # s = "Pell ydyw coed yr ellyll" # s = "Y mae Morfudd yn cuddio" # s = "Yr haul ar dawel heli" # s = "Y brawd o bellafion bro" # s = "Awdur mad yw'r dramodydd" # s = "Gwynt y rhew yn distewra" # s = "Y mae Morfudd yn cuddio" # s = "Heddychwr gŵr rhagorol" # s = "Cân ddiddig ar frig y fron" # s = "Ochain cloch a chanu clir" # s = "canlyniad cariad yw cosb" # s = "Ni all lladd ond ennyn llid" # s = "Cân hardd croyw fardd Caerfyrddin" # s = "Mae'n gas gennyf dras y dref" # s = "Dy fab rhad O! Dad yw ef" # methiant! # s = "Galarnad groch a chloch leddf" # s = "Bydd sug i'r grug a'r egin" # s = "Fe ddaeth pob croes i'w oes ef" # s = "Canlyniad cariad yw cosb" # s = "Ymysg y bedw yn ddedwydd" # s = "da oedd bardwn dydd bwrdais," # s = "cloch y ffair ciliwch o'i ffordd." # s = "dwyglust feinion aflonydd" # s = "ail y carw olwg gorwyllt" # s = "y cawn ar lan Conwy'r wledd" # s = "Wele rith fel ymyl rhod" # s = "o'n cwmpas, campwaith" # s = "Hen derfyn nad yw'n darfod." # s = "Trech wyt na Christ yng ngwlad y Cristion" # s = "Hyd yr êl yr hylithr awelon," # s = "Hyd y tywyn haul, duw wyt yn hon." # s = "Talog, boed law, boed heulwen" # s = "Ond hiroes yw braint derwen" # s = "Hel a didoli diadell" # s = "Trydar mwyn yr adar mynydd" # s = "Un dydd gwelais brydydd gwiw" # s = "Gweled y pren aeddfed, praff" # s = "Ac yma bu cydnabod" # s = "Gwr amhur yn sur ei sen" # s = "Fe ddaeth pob croes i'w oes ef" # s = "Golud a gwae Gwlad y Gân" # CYFATEBIAETH GAIR-AM-AIR = GWENDID # s = "Nid â dy gariad o gof" # s = "Eu plaid yw duw rhai drwy'u hoes" # s = "Wedi blwng ymosod blin" s = "Rhwydd gamwr, hawdd ei gymell" s = "i'r mynydd a'r mannau" s = "Cain yw awen cân eos" if s: print '++++++++++++++++++++++++++++++' print s ll = Llinell(s) print dad.oes_cynghanedd(ll)
def main(args=None): # dechrau log.info('peiriant: dechrau') # parser = OptionParser(usage="%prog [-v] [-q] [-d] [llinyn] [-i infile] [-o outfile]", version="%prog: fersiwn 1.0", add_help_option=False) parser = OptionParser( usage="%prog [-v] [-q] [-d] [-p] [-r] [llinyn] [-i infile]", version="%prog: fersiwn 0.1", add_help_option=False) parser.add_option("-d", "--demo", action="store_true", dest="demo", help="showan off") parser.add_option("-p", "--penillion", action="store_true", dest="demo_penillion", help="mwy o showan off") parser.add_option("-v", "--verbose", action="store_true", dest="verbose", help="allbwn amleiriog") parser.add_option("-q", "--quiet", action="store_false", dest="verbose", help="allbwn cryno") parser.add_option("-r", "--rhyddiaith", action="store_true", dest="rhyddiaith", help="mewnbwn rhyddiaith") parser.add_option("-i", "--input", dest="infile", help="ffeil mewnbwn") parser.add_option("-h", "--help", action="help", help="cymorth") parser.set_defaults(verbose=True, demo=False, rhyddiaith=False) (options, args) = parser.parse_args() # dosrannu'r dewisiadau llinyn = '' if not args: args = sys.argv[1:] else: llinyn = args[0] # 1. llinyn unigol neu demos if llinyn: dad = Dadansoddwr() adro = dad.oes_cynghanedd(Llinell(llinyn)) if options.verbose: print adro else: print lliw.magenta(adro.cynghanedd) + ': ' + llinyn.strip() return # 2. demos if options.demo: import demo demo.run_demo(verbose=options.verbose) return if options.demo_penillion: import demo_penillion demo_penillion.run_demo(verbose=options.verbose) return # 3. darllen o ffeil if options.infile: # rhyddiaith (hac, ond ok) if options.rhyddiaith: with codecs.open(options.infile, "r", "utf-8") as f: s = f.read() br = s.split('.') br = [b.strip() for b in br] brawddegau = [] for b in br: if len(b) > 0: brawddegau.append(b + u'.') print('----------------------------------------') dad = Dadansoddwr() for b in brawddegau: geiriau = [Gair(s) for s in b.split(' ')] ns = 0 idx_ch = 0 idx_dd = 1 rhestr = [] llinellau = [] while idx_dd < len(geiriau): while idx_dd < len(geiriau) and sum( [g.nifer_sillau() for g in geiriau[idx_ch:idx_dd]]) < 7: rhestr.append(geiriau[idx_dd]) idx_dd = idx_dd + 1 while sum( [g.nifer_sillau() for g in geiriau[idx_ch:idx_dd]]) > 7: rhestr.reverse() rhestr.pop() rhestr.reverse() idx_ch = idx_ch + 1 if geiriau[idx_dd - 1].llinyn() not in cy.geiriau_gwan: llinellau.append(Llinell(geiriau[idx_ch:idx_dd])) idx_ch = idx_ch + 1 for llinell in llinellau: adro = dad.oes_cynghanedd(llinell) if not adro.cynghanedd in ['DIM', 'SAL']: if options.verbose: print adro else: print lliw.magenta( adro.cynghanedd) + '\t' + adro.llinell.llinyn( ) print('----------------------------------------') return # cerdd with open(options.infile) as f: rhestr_llinynnau = f.readlines() # creu rhestr llinellau llinellau = [] for s in rhestr_llinynnau: s.strip() if re.search(r'^#', s) or re.search(r'^\s*$', s): continue llinellau.append(Llinell(s)) # allbwn # if options.verbose: # print('========================================') # for llinell in llinellau: # print llinell.llinyn() # print('========================================') # dadansoddi pob llinell yn unigol (beth am doddeidiau? Mae angen darganfod cysylltnod) dad = Dadansoddwr() adro_llinellau_unigol = [] for llinell in llinellau: adro = dad.oes_cynghanedd(llinell) adro_llinellau_unigol.append(adro) # profi mesurau dad = DadansoddwrPennill() pennill = Pennill(llinellau) cyw = dad.oes_cywydd(pennill) eng = dad.oes_englyn(pennill) cyh = dad.oes_cyhydedd_nawban(pennill) hat = dad.oes_hir_a_thoddaid(pennill) dosb = None if cyw[0]: dosb = 'CYW' adro = cyw[1] elif eng[0]: dosb = 'ENG' adro = eng[1] elif cyh[0]: dosb = 'CYH' adro = cyh[1] elif hat[0]: dosb = 'HAT' adro = hat[1] else: dosb = 'DIM' adro = adro_llinellau_unigol # allbwn print('----------------------------------------') if dosb: print lliw.cyan(dosb) if adro: for ad in adro: if options.verbose: if ad.cynghanedd == 'DIM': print lliw.magenta(ad.cynghanedd) print ad.llinyn_acenion() print ad.llinell.llinyn() else: print ad else: ss = ad.cynghanedd + ': ' + ad.llinell.llinyn().strip() if ad.cynghanedd == 'DIM': print lliw.magenta(ss) else: print ss print('----------------------------------------') # diwedd print "hwyl fawr...\n" time_str = time.strftime("%Y.%m.%d.%H.%M.%S") log.info('peiriant: diwedd')
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]