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

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

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

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


person rm-rf    schedule 20.06.2011    source источник


Ответы (2)


рб-приложение:

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
person Lri    schedule 24.06.2011

Нынешний урожай приложений 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 просто возвращает текст данного абзаца и по какой-то причине не содержит никакого состояния сам по себе. Это не лучший способ справиться с этим сценарием, но, по крайней мере, все компоненты готовы предоставить вам то, что вам нужно.

person Philip Regan    schedule 23.06.2011