alphred 1.2.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/README.md +0 -28
- data/alphred.gemspec +14 -13
- data/lib/alphred.rb +4 -10
- data/lib/alphred/error.rb +22 -18
- data/lib/alphred/item.rb +43 -49
- data/lib/alphred/items.rb +9 -10
- data/lib/alphred/struct.rb +71 -0
- data/lib/alphred/version.rb +1 -1
- metadata +18 -7
- data/lib/alphred/config.rb +0 -59
- data/lib/alphred/icon.rb +0 -39
- data/lib/alphred/mods.rb +0 -22
- data/lib/alphred/text.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e16e15e9c29efb59e1db59f3c521e7434a72792
|
4
|
+
data.tar.gz: e9e42358283d6f3b43f89c7a5e93e658de747bdf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5fc789dedf8233a24917d2084f4c8340525b97df36932036acccd1a9223299dd0fad05ec258c85cd5ecaa394c75c6ed5746b6df2ce9728d15eef64f0c0df64a0
|
7
|
+
data.tar.gz: b9bac5f7129ebf6f67488c318c5b8a200ed0cb2a819ffd87afa71786440482fac4b0a157f7a3040becfdf69365f0e1ff8e5b578a7af2232fbdde1d56de261300
|
data/Gemfile
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
ruby
|
3
|
+
ruby '2.0.0'
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in alphred.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
8
|
group :development do
|
9
|
-
gem
|
10
|
-
gem
|
11
|
-
gem
|
9
|
+
gem 'guard'
|
10
|
+
gem 'guard-minitest'
|
11
|
+
gem 'pry'
|
12
12
|
end
|
data/README.md
CHANGED
@@ -86,34 +86,6 @@ This produces the following XML:
|
|
86
86
|
</items>
|
87
87
|
```
|
88
88
|
|
89
|
-
### Workflow Configuration
|
90
|
-
|
91
|
-
`Alphred::Config` provides some helpers for managing configuration that should
|
92
|
-
persist when updating the workflow. This configuration is stored in an JSON
|
93
|
-
file in the workflow data directory.
|
94
|
-
|
95
|
-
``` ruby
|
96
|
-
# config.rb
|
97
|
-
|
98
|
-
module Workflow
|
99
|
-
defaults = { foo: "bar" }
|
100
|
-
Config = Alphred::Config.new(**defaults)
|
101
|
-
```
|
102
|
-
|
103
|
-
The corresponding Script Filter input and Run Action output then look like this:
|
104
|
-
|
105
|
-
``` shell
|
106
|
-
# script filter
|
107
|
-
|
108
|
-
ruby -r./config -e'puts Workflow::Config.filter_xml("{query}")'
|
109
|
-
```
|
110
|
-
|
111
|
-
``` shell
|
112
|
-
# run action
|
113
|
-
|
114
|
-
ruby -r./config -e'Forecast::Config.update!("{query}")'
|
115
|
-
```
|
116
|
-
|
117
89
|
### Releasing
|
118
90
|
|
119
91
|
Including `alphred/tasks` in your `Rakefile` will allow access to Alphred's
|
data/alphred.gemspec
CHANGED
@@ -1,26 +1,27 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require 'alphred/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'alphred'
|
8
8
|
spec.version = Alphred::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Alpha Chen']
|
10
|
+
spec.email = ['alpha.chen@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = %q{Helper utilities for making Alfred workflows.}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/kejadlen/alphred'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
17
|
-
spec.bindir =
|
17
|
+
spec.bindir = 'bin'
|
18
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency
|
21
|
+
spec.add_dependency 'builder', '~> 3.2'
|
22
22
|
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.10'
|
24
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
25
|
+
spec.add_development_dependency 'listen', '~> 3.0.0'
|
26
|
+
spec.add_development_dependency 'minitest'
|
26
27
|
end
|
data/lib/alphred.rb
CHANGED
@@ -1,11 +1,5 @@
|
|
1
|
-
|
1
|
+
require_relative 'alphred/version'
|
2
2
|
|
3
|
-
require_relative
|
4
|
-
|
5
|
-
require_relative
|
6
|
-
require_relative "alphred/error"
|
7
|
-
require_relative "alphred/icon"
|
8
|
-
require_relative "alphred/item"
|
9
|
-
require_relative "alphred/items"
|
10
|
-
require_relative "alphred/mods"
|
11
|
-
require_relative "alphred/text"
|
3
|
+
require_relative 'alphred/error'
|
4
|
+
require_relative 'alphred/item'
|
5
|
+
require_relative 'alphred/items'
|
data/lib/alphred/error.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
-
require_relative
|
2
|
-
require_relative
|
1
|
+
require_relative 'item'
|
2
|
+
require_relative 'items'
|
3
|
+
|
4
|
+
require 'json'
|
3
5
|
|
4
6
|
module Alphred
|
5
7
|
class Error < StandardError
|
6
|
-
ASSETS = File.expand_path(
|
8
|
+
ASSETS = File.expand_path('../../../assets', __FILE__)
|
7
9
|
|
8
10
|
def self.try
|
9
11
|
yield
|
10
12
|
rescue Exception => e
|
11
|
-
|
13
|
+
print self.new(e).to_json
|
12
14
|
end
|
13
15
|
|
14
16
|
attr_reader :error
|
@@ -17,30 +19,32 @@ module Alphred
|
|
17
19
|
@error = error
|
18
20
|
end
|
19
21
|
|
22
|
+
def to_json(options=nil)
|
23
|
+
to_items.to_json(options)
|
24
|
+
end
|
25
|
+
|
20
26
|
def to_items
|
21
|
-
icon = File.join(ASSETS,
|
27
|
+
icon = File.join(ASSETS, 'close.png')
|
22
28
|
items = [ Alphred::Item.new(title: "#{self.error.class}: #{self.error}",
|
23
29
|
icon: icon) ]
|
24
30
|
items.concat(self.backtrace_items)
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
def to_xml
|
29
|
-
self.to_items.to_xml
|
31
|
+
Items[*items]
|
30
32
|
end
|
31
33
|
|
32
34
|
def backtrace_items
|
33
|
-
icon = File.join(ASSETS,
|
35
|
+
icon = File.join(ASSETS, 'more.png')
|
34
36
|
|
35
|
-
base_dirs = $LOAD_PATH + [ENV[
|
37
|
+
base_dirs = $LOAD_PATH + [ENV['alfred_preferences']]
|
36
38
|
to_delete = /^#{base_dirs.join(?|)}/
|
37
39
|
|
38
|
-
self.error.backtrace.map {|line|
|
39
|
-
title = line.sub(to_delete,
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
40
|
+
self.error.backtrace.map { |line|
|
41
|
+
title = line.sub(to_delete, '...')
|
42
|
+
Item.new(
|
43
|
+
title: title,
|
44
|
+
subtitle: line,
|
45
|
+
arg: line,
|
46
|
+
icon: icon,
|
47
|
+
)
|
44
48
|
}
|
45
49
|
end
|
46
50
|
end
|
data/lib/alphred/item.rb
CHANGED
@@ -1,59 +1,53 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative "mods"
|
4
|
-
require_relative "text"
|
1
|
+
require_relative 'struct'
|
5
2
|
|
6
3
|
module Alphred
|
7
|
-
class Item
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
@text = Text.new(kwargs[:text]) if kwargs.has_key?(:text)
|
23
|
-
@mods = Mods.new(kwargs[:mods]) if kwargs.has_key?(:mods)
|
24
|
-
|
25
|
-
self.type = kwargs[:type] if kwargs.has_key?(:type)
|
26
|
-
end
|
4
|
+
class Item < Struct
|
5
|
+
attribute :valid, coerce: ->(x) { !!x }
|
6
|
+
attribute :uid
|
7
|
+
attribute :type,
|
8
|
+
coerce: ->(x) { x.to_s.gsub(?_, ?:) },
|
9
|
+
enum: %w[ default file file:skipcheck ]
|
10
|
+
attribute :title, required: true
|
11
|
+
attribute :subtitle
|
12
|
+
attribute :arg
|
13
|
+
attribute :autocomplete
|
14
|
+
attribute :icon, coerce: ->(x) { Icon(x) }
|
15
|
+
attribute :quicklookurl
|
16
|
+
attribute :mods, coerce: ->(x) { Mods.new(x) }
|
17
|
+
attribute :text, coerce: ->(x) { Text.new(x) }
|
18
|
+
end
|
27
19
|
|
28
|
-
|
29
|
-
|
20
|
+
class Icon < Struct
|
21
|
+
attribute :type, enum: %i[ fileicon filetype ]
|
22
|
+
attribute :path, required: true
|
23
|
+
end
|
30
24
|
|
31
|
-
|
32
|
-
|
25
|
+
class Mod < Struct
|
26
|
+
attribute :valid, coerce: ->(x) { !!x }
|
27
|
+
attribute :arg
|
28
|
+
attribute :subtitle
|
29
|
+
end
|
33
30
|
|
34
|
-
|
35
|
-
|
36
|
-
|
31
|
+
class Mods < Struct
|
32
|
+
attribute :ctrl, coerce: ->(x) { Mod.new(x) }
|
33
|
+
attribute :alt, coerce: ->(x) { Mod.new(x) }
|
34
|
+
attribute :cmd, coerce: ->(x) { Mod.new(x) }
|
35
|
+
attribute :fn, coerce: ->(x) { Mod.new(x) }
|
36
|
+
attribute :shift, coerce: ->(x) { Mod.new(x) }
|
37
|
+
end
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
self.icon.to_xml(xml) unless self.icon.nil?
|
44
|
-
self.mods.to_xml(xml) unless self.mods.nil?
|
45
|
-
self.text.to_xml(xml) unless self.text.nil?
|
46
|
-
end
|
47
|
-
end
|
39
|
+
class Text < Struct
|
40
|
+
attribute :copy
|
41
|
+
attribute :largetype
|
42
|
+
end
|
43
|
+
end
|
48
44
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
attrs[:valid] = (self.valid) ? "yes" : "no" unless self.valid.nil?
|
56
|
-
attrs
|
45
|
+
module Kernel
|
46
|
+
def Icon(arg)
|
47
|
+
case arg
|
48
|
+
when Alphred::Icon then arg
|
49
|
+
when String then Alphred::Icon.new(path: arg)
|
50
|
+
when Hash then Alphred::Icon.new(**arg)
|
57
51
|
end
|
58
52
|
end
|
59
53
|
end
|
data/lib/alphred/items.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'delegate'
|
2
|
+
|
3
|
+
require 'json'
|
3
4
|
|
4
5
|
module Alphred
|
5
6
|
class Items < DelegateClass(Array)
|
7
|
+
def self.[](*args)
|
8
|
+
new(*args)
|
9
|
+
end
|
10
|
+
|
6
11
|
attr_reader :items
|
7
12
|
|
8
13
|
def initialize(*items)
|
@@ -10,14 +15,8 @@ module Alphred
|
|
10
15
|
super(@items)
|
11
16
|
end
|
12
17
|
|
13
|
-
def
|
14
|
-
|
15
|
-
xml.instruct! :xml
|
16
|
-
xml.items do
|
17
|
-
self.items.each do |item|
|
18
|
-
item.to_xml(xml)
|
19
|
-
end
|
20
|
-
end
|
18
|
+
def to_json(options=nil)
|
19
|
+
{ items: items }.to_json(options)
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module Alphred
|
4
|
+
class Struct
|
5
|
+
class RequiredAttributeError < StandardError; end
|
6
|
+
class InvalidEnumError < StandardError; end
|
7
|
+
class InvalidAttributeError < StandardError; end
|
8
|
+
|
9
|
+
def self.attribute(name, **options)
|
10
|
+
attributes << Attribute.new(name, **options)
|
11
|
+
|
12
|
+
define_method(name) do
|
13
|
+
attributes[name]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.attributes
|
18
|
+
return @attributes if defined?(@attributes)
|
19
|
+
@attributes = []
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :attributes
|
23
|
+
|
24
|
+
def initialize(**input)
|
25
|
+
validate_input(input)
|
26
|
+
|
27
|
+
@attributes = self.class.attributes.select { |attr|
|
28
|
+
attr.required? || input.keys.include?(attr.name)
|
29
|
+
}.reduce({}) { |hash, attr|
|
30
|
+
hash.merge(attr.value_from(input))
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_json(options=nil)
|
35
|
+
attributes.to_json(options)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def validate_input(input)
|
41
|
+
attribute_names = self.class.attributes.map(&:name)
|
42
|
+
invalid_keys = input.keys.reject {|key| attribute_names.include?(key) }
|
43
|
+
unless invalid_keys.empty?
|
44
|
+
msg = "Invalid attribute(s): #{invalid_keys.join(', ')}"
|
45
|
+
raise InvalidAttributeError.new(msg)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Attribute
|
50
|
+
attr_reader :name, :coerce, :enum
|
51
|
+
|
52
|
+
def initialize(name, **options)
|
53
|
+
@name = name
|
54
|
+
@required = options.fetch(:required, false)
|
55
|
+
@coerce = options.fetch(:coerce, ->(x) { x })
|
56
|
+
@enum = options[:enum]
|
57
|
+
end
|
58
|
+
|
59
|
+
def required?
|
60
|
+
!!@required
|
61
|
+
end
|
62
|
+
|
63
|
+
def value_from(hash)
|
64
|
+
uncoerced = hash.fetch(name) { raise RequiredAttributeError.new(name) }
|
65
|
+
coerced = coerce.call(uncoerced)
|
66
|
+
raise InvalidEnumError.new(coerced) if enum && !enum.include?(coerced)
|
67
|
+
{ name => coerced }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/alphred/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alphred
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alpha Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: builder
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: listen
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 3.0.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 3.0.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: minitest
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,16 +101,13 @@ files:
|
|
87
101
|
- assets/close.png
|
88
102
|
- assets/more.png
|
89
103
|
- lib/alphred.rb
|
90
|
-
- lib/alphred/config.rb
|
91
104
|
- lib/alphred/error.rb
|
92
|
-
- lib/alphred/icon.rb
|
93
105
|
- lib/alphred/item.rb
|
94
106
|
- lib/alphred/items.rb
|
95
|
-
- lib/alphred/
|
107
|
+
- lib/alphred/struct.rb
|
96
108
|
- lib/alphred/tasks.rb
|
97
|
-
- lib/alphred/text.rb
|
98
109
|
- lib/alphred/version.rb
|
99
|
-
homepage: https://github.com/kejadlen/
|
110
|
+
homepage: https://github.com/kejadlen/alphred
|
100
111
|
licenses:
|
101
112
|
- MIT
|
102
113
|
metadata: {}
|
data/lib/alphred/config.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
module Alphred
|
5
|
-
class Config
|
6
|
-
def self.load(**defaults)
|
7
|
-
config = new(**defaults)
|
8
|
-
config.load!
|
9
|
-
config
|
10
|
-
end
|
11
|
-
|
12
|
-
attr_reader :data
|
13
|
-
|
14
|
-
def initialize(**defaults)
|
15
|
-
@data = Hash[defaults.map {|k,v| [k.to_s, v.to_s] }]
|
16
|
-
end
|
17
|
-
|
18
|
-
def load!
|
19
|
-
return unless File.exist?(path)
|
20
|
-
data.merge!(JSON.load(File.open(path)))
|
21
|
-
end
|
22
|
-
|
23
|
-
def update!(json)
|
24
|
-
data = self.data.merge(JSON.load(json))
|
25
|
-
FileUtils.mkdir_p(File.dirname(path))
|
26
|
-
File.write(path, JSON.dump(data), mode: ?w)
|
27
|
-
end
|
28
|
-
|
29
|
-
def [](key)
|
30
|
-
data[key.to_s]
|
31
|
-
end
|
32
|
-
|
33
|
-
def filter_xml(filter=nil)
|
34
|
-
filter ||= ''
|
35
|
-
|
36
|
-
items = data.map do |key, value|
|
37
|
-
title = if filter.empty?
|
38
|
-
"Unset #{key}"
|
39
|
-
else
|
40
|
-
"Set #{key} to #{filter}"
|
41
|
-
end
|
42
|
-
Item.new(
|
43
|
-
uid: key,
|
44
|
-
arg: JSON.dump(key => filter),
|
45
|
-
title: title,
|
46
|
-
subtitle: self[key]
|
47
|
-
)
|
48
|
-
end
|
49
|
-
|
50
|
-
Items.new(*items).to_xml
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def path
|
56
|
-
File.join(ENV['alfred_workflow_data'], 'config.json')
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
data/lib/alphred/icon.rb
DELETED
@@ -1,39 +0,0 @@
|
|
1
|
-
require "builder"
|
2
|
-
|
3
|
-
module Alphred
|
4
|
-
class Icon
|
5
|
-
VALID_TYPES = %i[ fileicon filetype ]
|
6
|
-
|
7
|
-
attr_accessor *%i[ value type ]
|
8
|
-
|
9
|
-
def initialize(**kwargs)
|
10
|
-
raise ArgumentError.new("missing keyword: value") unless kwargs.has_key?(:value)
|
11
|
-
|
12
|
-
@value = kwargs[:value]
|
13
|
-
self.type = kwargs[:type] if kwargs.has_key?(:type)
|
14
|
-
end
|
15
|
-
|
16
|
-
def type=(type)
|
17
|
-
raise ArgumentError.new("`type` must be one of #{VALID_TYPES}") unless type.nil? || VALID_TYPES.include?(type)
|
18
|
-
|
19
|
-
@type = type
|
20
|
-
end
|
21
|
-
|
22
|
-
def to_xml(xml=nil)
|
23
|
-
xml ||= Builder::XmlMarkup.new(indent: 2)
|
24
|
-
attrs = {}
|
25
|
-
attrs[:type] = self.type unless self.type.nil?
|
26
|
-
xml.icon self.value, attrs
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
module Kernel
|
32
|
-
def Icon(value)
|
33
|
-
case value
|
34
|
-
when Alphred::Icon then value
|
35
|
-
when String then Alphred::Icon.new(value: value)
|
36
|
-
when Hash then Alphred::Icon.new(**value)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/lib/alphred/mods.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require "builder"
|
2
|
-
|
3
|
-
module Alphred
|
4
|
-
class Mods
|
5
|
-
MODS = %i[ shift fn ctrl alt cmd ]
|
6
|
-
|
7
|
-
attr_accessor *MODS
|
8
|
-
|
9
|
-
def initialize(**kwargs)
|
10
|
-
MODS.each do |mod|
|
11
|
-
self.instance_variable_set("@#{mod}", kwargs[mod]) if kwargs.has_key?(mod)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def to_xml(xml)
|
16
|
-
MODS.each do |mod|
|
17
|
-
value = self.send(mod)
|
18
|
-
xml.subtitle value, mod: mod unless value.nil?
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/lib/alphred/text.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require "builder"
|
2
|
-
|
3
|
-
module Alphred
|
4
|
-
class Text
|
5
|
-
attr_accessor *%i[ copy largetype ]
|
6
|
-
|
7
|
-
def initialize(copy: nil, largetype: nil)
|
8
|
-
@copy = copy
|
9
|
-
@largetype = largetype
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_xml(xml)
|
13
|
-
xml.text copy, type: :copy unless self.copy.nil?
|
14
|
-
xml.text largetype, type: :largetype unless self.largetype.nil?
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|