Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  mnemonic-clashes   Sprache: C

 

#!/bin/sh

srcdir="`dirname \"$0\"`/.."

find_actions () {
    for f in "$srcdir"/app/actions/*-actions.c; do
        < $f \
        tr '\n' ' ' | \
        grep -Po '{ *".*?".*?(NC_\("/*?" *, *)?".*?".*?}' | \
        perl -pe 's/{ *(".*?").*?(?:NC_\(".*?" *, *)?(".*?").*?}/\1: \2,/g'
    done
}

python3 - $@ <<END
from sys import argv
from itertools import chain
from glob import glob
from xml.etree.ElementTree import ElementTree

actions = {`find_actions`}

found_clashes = False

for file in glob ("$srcdir/menus/*.xml*"):
    tree = ElementTree (file = file)

    parents = {c: p for p in tree.iter () for c in p}

    def menu_path (menu):
        path = ""

        while menu:
            if menu.tag == "menu":
                if path:
                    path = " -> " + path

                path = menu.get ("name") + path

            menu = parents.get (menu)

        return path

    for menu in chain (tree.iter ("menubar-and-popup"),
                       tree.iter ("menu"),
                       tree.iter ("popup")):
        if len (argv) > 1 and menu.tag != argv[1]:
            continue

        mnemonics = {}

        found_clashes_in_menu = False

        for element in menu:
            action = element.get ("action")

            if action in actions:
                label = actions[action]

                if "_" in label:
                    mnemonic = label[label.find ("_") + 1].upper ()

                    if mnemonic not in mnemonics:
                        mnemonics[mnemonic] = []

                    mnemonics[mnemonic] += [action]

        mnemonic_list = list (mnemonics.keys ())
        mnemonic_list.sort ()

        for mnemonic in mnemonic_list:
            action_list = mnemonics[mnemonic]

            if len (action_list) > 1:
                if found_clashes:
                    print ()

                if not found_clashes_in_menu:

                    if menu.tag == "menu":
                        print ("In %s (%s):" % (menu.get ("action"),
                                                menu_path (menu)))
                    elif menu.tag == "popup":
                        print ("In %s:" % menu.get ("action"))
                    else:
                        print ("In top-level menu bar:")

                found_clashes         = True
                found_clashes_in_menu = True

                print ("    Mnemonic clash for '%s':" % mnemonic)

                for action in action_list:
                    print ("        %s: %s" % (action, actions[action]))

exit (found_clashes)
END

Messung
CHZG
859710094

¤ Dauer der Verarbeitung: 0.5 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1104838
#Domains=499075