Applescript suchen/ersetzen mit Regex

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Applescript suchen/ersetzen mit Regex

    Hallo,

    ich habe hier mal ne Suchen/Ersetzen-Funktion für Applescript "entwickelt" und diese kann sicher optimiert werden.

    Frage??
    - wie kann man die als OSAX schreiben.
    - kann man die Funktion noch optimieren?

    Quellcode

    1. on regex(s, e, aValue)
    2. -- aValue: String oder Liste
    3. -- s zu suchen
    4. -- e zu ersetzen
    5. -- \ ist in s oder e als \\\\ anzugeben, in aValue reicht \\
    6. if s is equal to "" then
    7. return aValue
    8. end if
    9. set oldTID to AppleScript's text item delimiters
    10. set retL to {}
    11. if class of aValue as string is equal to "list" then
    12. set noList to false
    13. set myList to aValue
    14. else
    15. set noList to true
    16. set myList to {}
    17. set the end of myList to aValue
    18. end if
    19. if s contains "/" then
    20. set AppleScript's text item delimiters to "/"
    21. set theList to (every text item of s)
    22. set AppleScript's text item delimiters to "\\/"
    23. set s to theList as string
    24. end if
    25. if e contains "/" then
    26. set AppleScript's text item delimiters to "/"
    27. set theList to (every text item of e)
    28. set AppleScript's text item delimiters to "\\/"
    29. set e to theList as string
    30. end if
    31. repeat with p in myList
    32. if p is equal to "" then
    33. ret = ""
    34. else
    35. if p contains "\"" then
    36. set AppleScript's text item delimiters to "\""
    37. set theList to (every text item of p)
    38. set AppleScript's text item delimiters to "\\\""
    39. set p to theList as string
    40. end if
    41. if p contains "\\" then
    42. set AppleScript's text item delimiters to "\\"
    43. set theList to (every text item of p)
    44. set AppleScript's text item delimiters to "\\\\"
    45. set p to theList as string
    46. end if
    47. -- set ret to do shell script " echo " & quoted form of p & " | " & ¬
    48. set perlScript to "$_=\"" & p & "\";s/" & s & "/" & e & "/g;print;"
    49. set ret to do shell script "perl -e " & quoted form of perlScript
    50. end if
    51. set the end of retL to ret
    52. end repeat
    53. set AppleScript's text item delimiters to oldTID
    54. if noList then
    55. return item 1 of retL
    56. else
    57. return retL
    58. end if
    59. return ret
    60. end regex
    Alles anzeigen


    In s und e kann man alle möglichen Regex reinsschreiben, ich konnte keinen Fehler mehr feststellen, wenn man den Backslash beachtet.

    Gruß fiveyears
  • RE: Applescript suchen/ersetzen mit Regex

    Genau, ich habe bis jetzt alles programmiert, aber die TechNote für OSAX ist mir einfach unverständlich! Und zweitens, auch ich kenne das Satimage OSAX, aber als Gehirnjogging würde ich lieber so was selber machen, weil ich habe gemerkt. dass man die OSAX zwar ins Bundle schieben kann, aber wenn man programmieren will, dann müssen sie doch in die /Library/Script Additions!!
  • RE: Applescript suchen/ersetzen mit Regex

    In der TechNote ist eine Skelett-Applikaton verlinkt, die Du als Basis für ein eigenes OSAX verwenden solltest. Du musst Deine Funktionalität in C/Objective-C neu schreiben und eine SDEF mit Deinen Scriptkommandos erstellen. Ein OSAX ist nicht einfach nur ein Apple Script,

    Original von fiveyears
    Und zweitens, auch ich kenne das Satimage OSAX, aber als Gehirnjogging würde ich lieber so was selber machen, weil ich habe gemerkt. dass man die OSAX zwar ins Bundle schieben kann, aber wenn man programmieren will, dann müssen sie doch in die /Library/Script Additions!!

    Ein OSAX ist ein Bundle, dass Scripting Additions enthält. Es hat, wie in der TN beschrieben, einen festgelegten Aufbau. Das OSAX wird in einen ScriptingAdditions-Ordner gelegt, damit es in Skripten verwendet werden kann.

    In der TN ist auch eine Referenz auf das Bundle Programming Guide. Den solltest Du Dir auch anschauen.
    „Meine Komplikation hatte eine Komplikation.“