function selectedText(context)
    local text = {}
    
    context.doWithSelection(
        function(range)
            text = range:extractText()
        end
    )
    
    return text
end


function getObjects(context)
    local objects = {}
    
    -- 1. Предполагаем, что весь текст - это фрагмент
    context.doWithSelection(
        function(range)
            text = range:extractText()
            table.insert(objects, text)
        end
    )
    
    -- 2. Создаем 
    if isEmpty(text) then
        context.doWithDocument(
            function(document)
                blocks = document:getBlocks()

                -- 2.1 Пробегаем по таблицам
                for tbl in blocks:enumerateTables() do
                    rowsCount = tbl:getRowsCount()
                    columnsCount = tbl:getColumnsCount()

                    for i=0,rowsCount-1 do
                        for j=0,columnsCount-1 do
                            cell = tbl:getCell(DocumentAPI.CellPosition(i, j))
                            cellRange = cell:getRange()
                            cellText = cellRange:extractText()
                            if not isEmpty(cellText) then
                                table.insert(objects, cellText)
                            end
                        end
                    end
                end

                -- 2.1 Пробегаем по абзацам
                for para in blocks:enumerateParagraphs() do
                    text = para:getRange():extractText()
                    table.insert(objects, text)
                end

                -- 2.3 Поля
                -- TODO?

                -- 2.4 Фигуры
                -- TODO?
            end
        )
    end    
    
    return objects
end