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

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

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

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

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...