james 0.5.0 → 0.6.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.
- data/lib/james.rb +2 -0
- data/lib/james/builtin/core_dialog.rb +1 -1
- data/lib/james/controller.rb +2 -4
- data/lib/james/outputs/audio.rb +3 -3
- data/lib/james/outputs/terminal.rb +1 -1
- data/lib/james/preferences.rb +60 -0
- metadata +33 -33
data/lib/james.rb
CHANGED
data/lib/james/controller.rb
CHANGED
@@ -28,6 +28,7 @@ module James
|
|
28
28
|
def initialize dialog = nil
|
29
29
|
@initial = dialog || CoreDialog.new
|
30
30
|
@conversation = Conversation.new @initial.current
|
31
|
+
@preferences = James::Preferences.new
|
31
32
|
end
|
32
33
|
|
33
34
|
# Convenience method to add a dialog to the current system.
|
@@ -53,9 +54,6 @@ module James
|
|
53
54
|
@input_class = options[:input] || Inputs::Audio
|
54
55
|
@output_class = options[:output] || Outputs::Audio
|
55
56
|
|
56
|
-
@output_options ||= {}
|
57
|
-
@output_options[:voice] = options[:voice] || 'com.apple.speech.synthesis.voice.Alex'
|
58
|
-
|
59
57
|
app = NSApplication.sharedApplication
|
60
58
|
app.delegate = self
|
61
59
|
|
@@ -84,7 +82,7 @@ module James
|
|
84
82
|
# Start speaking.
|
85
83
|
#
|
86
84
|
def start_output
|
87
|
-
@output = @output_class.new @
|
85
|
+
@output = @output_class.new @preferences
|
88
86
|
end
|
89
87
|
|
90
88
|
# Callback method from dialog.
|
data/lib/james/outputs/audio.rb
CHANGED
@@ -7,10 +7,10 @@ module James
|
|
7
7
|
# Create a new audio output.
|
8
8
|
#
|
9
9
|
# Options:
|
10
|
-
# *
|
10
|
+
# * preferences # A James::Preferences
|
11
11
|
#
|
12
|
-
def initialize
|
13
|
-
@output = NSSpeechSynthesizer.alloc.initWithVoice
|
12
|
+
def initialize preferences
|
13
|
+
@output = NSSpeechSynthesizer.alloc.initWithVoice preferences.voice
|
14
14
|
end
|
15
15
|
|
16
16
|
# Say the given text out loud.
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module James
|
4
|
+
|
5
|
+
# This class loads the .james preferences
|
6
|
+
# and handles them.
|
7
|
+
#
|
8
|
+
# The preferences are loaded once, at startup. To reload
|
9
|
+
# the preferences, you have to restart James.
|
10
|
+
#
|
11
|
+
# It loads them in the following order of precedence:
|
12
|
+
# * .james
|
13
|
+
# * ~/.james
|
14
|
+
#
|
15
|
+
# If no dotfile is found, it will
|
16
|
+
#
|
17
|
+
class Preferences
|
18
|
+
|
19
|
+
attr_reader :preferences
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
load
|
23
|
+
end
|
24
|
+
|
25
|
+
# Preference accessors & defaults.
|
26
|
+
#
|
27
|
+
|
28
|
+
# Default is the OSX Alex voice.
|
29
|
+
#
|
30
|
+
def voice
|
31
|
+
preferences['voice'] || 'com.apple.speech.synthesis.voice.Alex'
|
32
|
+
end
|
33
|
+
|
34
|
+
# Loads a set of preferences.
|
35
|
+
#
|
36
|
+
def load
|
37
|
+
@preferences = load_from_file || {}
|
38
|
+
end
|
39
|
+
|
40
|
+
# Load the preferences from a file if
|
41
|
+
# a suitable .james is found.
|
42
|
+
#
|
43
|
+
def load_from_file
|
44
|
+
dotfile = find_file
|
45
|
+
YAML.load_file dotfile if dotfile
|
46
|
+
end
|
47
|
+
|
48
|
+
# Finds dotfiles in order of precedence.
|
49
|
+
# * .james
|
50
|
+
# * ~/.james
|
51
|
+
#
|
52
|
+
# Returns nil if none is found.
|
53
|
+
#
|
54
|
+
def find_file
|
55
|
+
Dir['.james', File.expand_path('~/.james')].first
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
metadata
CHANGED
@@ -1,38 +1,41 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: james
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.6.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Florian Hanke
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-06-15 00:00:00 +10:00
|
12
|
+
date: 2011-06-28 00:00:00 +10:00
|
14
13
|
default_executable: james
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
17
16
|
name: rspec
|
18
17
|
prerelease: false
|
19
|
-
requirement:
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
20
19
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
20
|
+
requirements:
|
21
|
+
- - '>='
|
22
|
+
- !ruby/object:Gem::Version
|
24
23
|
version: "0"
|
25
24
|
type: :development
|
26
|
-
version_requirements:
|
27
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: "0"
|
31
|
+
description: Modular Electronic Butler. Using a simple dialog system where you can
|
32
|
+
easily add more dialogs.
|
28
33
|
email: florian.hanke+james@gmail.com
|
29
|
-
executables:
|
34
|
+
executables:
|
30
35
|
- james
|
31
36
|
extensions: []
|
32
|
-
|
33
37
|
extra_rdoc_files: []
|
34
|
-
|
35
|
-
files:
|
38
|
+
files:
|
36
39
|
- lib/james/builtin/core_dialog.rb
|
37
40
|
- lib/james/controller.rb
|
38
41
|
- lib/james/conversation.rb
|
@@ -48,6 +51,7 @@ files:
|
|
48
51
|
- lib/james/markers/memory.rb
|
49
52
|
- lib/james/outputs/audio.rb
|
50
53
|
- lib/james/outputs/terminal.rb
|
54
|
+
- lib/james/preferences.rb
|
51
55
|
- lib/james/state_api.rb
|
52
56
|
- lib/james/state_internals.rb
|
53
57
|
- lib/james.rb
|
@@ -56,30 +60,26 @@ files:
|
|
56
60
|
has_rdoc: true
|
57
61
|
homepage: http://floere.github.com/james
|
58
62
|
licenses: []
|
59
|
-
|
60
63
|
post_install_message:
|
61
64
|
rdoc_options: []
|
62
|
-
|
63
|
-
require_paths:
|
65
|
+
require_paths:
|
64
66
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
68
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
69
|
+
requirements:
|
70
|
+
- - '>='
|
71
|
+
- !ruby/object:Gem::Version
|
70
72
|
version: "0"
|
71
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
74
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
75
|
+
requirements:
|
76
|
+
- - '>='
|
77
|
+
- !ruby/object:Gem::Version
|
76
78
|
version: "0"
|
77
79
|
requirements: []
|
78
|
-
|
79
80
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.
|
81
|
+
rubygems_version: 1.4.2
|
81
82
|
signing_key:
|
82
83
|
specification_version: 3
|
83
|
-
summary:
|
84
|
+
summary: 'James: Modular Electronic Butler with modular Dialogs.'
|
84
85
|
test_files: []
|
85
|
-
|