Использование rb-appscript для написания маркированного / нумерованного списка на страницах или textedit

Мне нужно использовать rb-appscript для создания нового документа Pages, который содержит маркированные и нумерованные списки. Глядя на это, я вижу, что у абзацев есть свойство list_style, но я недостаточно знаком с rb-appscript или applecript, чтобы понять, как установить это свойство. Я прочитал документацию, сгенерированную ASDictionary, но мои знания AppleScript, по-видимому, слишком малы, чтобы понять это.

Будем весьма благодарны за любую помощь в понимании того, как использовать информацию, представленную в документации, или в написании списка с использованием rb-appscript на страницах.

Изменить: я не застрял на страницах, textedit также является жизнеспособным вариантом.

2 ответа

Решение

Гь -appscript:

require 'rubygems'
require 'appscript'; include Appscript

lst=["a", "b"]
doc = app('Pages').documents[0]
doc.selection.get.paragraph_style.set("Body Bullet")
doc.selection.set(lst.join("\n"))

AppleScript:

set lst to {"a", "b"}
set text item delimiters to linefeed
tell application "Pages" to tell document 1
    set paragraph style of (get selection) to "Body Bullet"
    set selection to (lst as text)
end tell

Текущий урожай приложений Apple странный для сценария. Я не использую rb-appscript, но вот рабочий код для Applescript, который вы сможете изменить по вкусу и портированию:

property dummyList : {"Tyler Durden", "Marla Singer", "Robert Paulson"}

tell application "Pages"

    set theDocument to make new document
    tell theDocument

        set bulletListStyle to ""
        set lastListStyle to (count list styles)
        repeat with thisListStyle from 1 to lastListStyle
            set theListStyle to item thisListStyle of list styles
            if name of theListStyle is "Bullet" then
                set bulletListStyle to theListStyle
            end if
        end repeat

        repeat with thisItem from 1 to (count dummyList)
            set body text to body text & item thisItem of dummyList & return
        end repeat

        set paraCount to count paragraphs of theDocument
        repeat with thisPara from 1 to paraCount
            select paragraph thisPara
            set theSelection to selection
            set paragraph style of theSelection to "Body Bullet"
        end repeat

    end tell
end tell

По сути, это означает, что каждый элемент списка помещается в отдельный абзац (то есть для всех намерений и целей используется элемент списка: абзац с отступом и маркером), по очереди выбирается каждый параграф, затем применяется стиль абзаца списка. выбор. paragraph Объект просто возвращает текст данного абзаца и по какой-то причине не содержит никакого состояния. Это не лучший способ справиться с этим сценарием, но, по крайней мере, все компоненты готовы предоставить вам то, что вам нужно.

Другие вопросы по тегам