class Keynote::Theme

Attributes

id[R]
name[R]

Public Class Methods

all() click to toggle source
# File lib/keynote/theme.rb, line 18
def self.all
  self.find_with_conditions
end
default() click to toggle source
# File lib/keynote/theme.rb, line 14
def self.default
  self.all.first
end
find_by(args) click to toggle source
# File lib/keynote/theme.rb, line 22
def self.find_by(args)
  raise ArgumentError.new('nil argument is given') unless args

  if args.is_a?(Hash) && args.has_key?(:name)
    conditions = ".whose({ name: '#{args[:name]}' })"
  else
    raise ArgumentError.new('Unsupported argument is given')
  end

  find_with_conditions(conditions)
end
new(id: nil, name: nil) click to toggle source
# File lib/keynote/theme.rb, line 9
def initialize(id: nil, name: nil)
  @id = id
  @name = name
end

Private Class Methods

find_with_conditions(conditions = '') click to toggle source
# File lib/keynote/theme.rb, line 36
    def self.find_with_conditions(conditions = '')
      results = eval_script <<-APPLE.unindent
        var themes = Application("Keynote").themes#{conditions};
        var results = [];
        for(var i = 0, len = themes.length; i < len; i++) {
          var theme = themes[i];
          results.push({ id: theme.id(), name: theme.name() });
        }
        JSON.stringify(results);
      APPLE

      return [] unless results

      results.map do |result|
        self.new(id: result["id"], name: result["name"])
      end
    end