fest 1.2.10 → 1.3.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d50c7542a471b18e485824b82e1b2bb9167a731
4
- data.tar.gz: dba013463a29ac9cc600d8a5409cbb31ae9b2a41
3
+ metadata.gz: 162120a716861b8e7afe36ae975895af52eee799
4
+ data.tar.gz: ce28d4db581b858d5165640155388073edcbaa82
5
5
  SHA512:
6
- metadata.gz: a5b23bba2ab84449c1d0f39fc860e42ebdc6cd44d07b6e970ee404e953a012e803af17448e4325b3e1ac8def3ab080b57aa816d61a2b3602e038f4ad2f3b7fb4
7
- data.tar.gz: f986e9e00655b709cf5cb7fba4c82599be713bfba578c80ed4729f54a4bdc8dc86c2d2532c43d7e0dc3a8230f5a0938799b123e88f3446927c7025b3b98b37e3
6
+ metadata.gz: 34fed53a50413d0484681508ba00d25f8c1c00283f21fbeb2abff3c06a062c35585971647bb6efc0b181b751309d0c0b99d650809a9550c8e36cbbc9a0b36b2c
7
+ data.tar.gz: aab8528a178264dff0bb486670e8bc208ce90ac9e201d23cd149d6fdcfa758232e4e74bf06a93c8b5eaaf9347ae7fea786cb933a5e0e067f3f292d84307faad0
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format progress
3
+ --backtrace
data/.travis.yml CHANGED
@@ -1,9 +1,11 @@
1
1
  language: ruby
2
+ cache:
3
+ - bundler
2
4
  rvm:
3
5
  - 1.9.3
4
6
  - 2.0.0
5
- - 2.1.3
6
- - 2.1.4
7
+ - 2.1.0
8
+ - 2.2.0
7
9
  - ruby-head
8
10
  before_install:
9
11
  - 'echo ''gem: --no-ri --no-rdoc'' > ~/.gemrc'
data/README.md CHANGED
@@ -34,42 +34,27 @@ require 'fest'
34
34
  @fest.say("Пример")
35
35
  # => Say "Пример"
36
36
 
37
- # Expanded option
38
- @fest.params = {:language => "cmu_us_slt_arctic_hts"}
37
+ @fest = Fest.new({'language' => "cmu_us_slt_arctic_hts"})
39
38
  @fest.say("This is an example")
40
39
  # => Say "This is an example"
41
40
 
42
41
  # All options
43
42
  # params || default value
44
- params[:path] || "/tmp"
45
- params[:min_volume] || 20
46
- params[:max_volume] || 60
47
- params[:step] || 4
48
- params[:backlight] || nil # disable check backlight
49
- params[:language] || "voice_msu_ru_nsh_clunits"
50
-
51
- # Declension
52
- text = @fest.pluraform(2, %w(Сообщение Сообщения Сообщений))
53
- puts text
54
- # => "Сообщения"
55
- ```
43
+ params['path'] || "/tmp"
44
+ params['min_volume'] || 20
45
+ params['max_volume'] || 60
46
+ params['step'] || 4
47
+ params['backlight'] || nil # disable check backlight
48
+ params['language'] || "voice_msu_ru_nsh_clunits"
56
49
 
57
50
  ## Сustomization
58
51
 
59
- ```.ruby
60
- @fest.init(params)
52
+ @fest.initialize(params = {})
61
53
  # check @current_volume
62
54
  # @path, @index, @min_volume, @max_volume ...
63
55
 
64
56
  @fest.check_conditions
65
- # @fest.check_say_wav
66
- # check_light и check_home_theater
67
-
68
- @fest.check_light # (with xbacklight)
69
- # exit if backlight equal 0
70
-
71
- @fest.check_home_theater
72
- # exit if run (vlc, kodi(xbmc))
57
+ # eval config/conditions.yml
73
58
 
74
59
  @fest.make_wav(text)
75
60
 
data/Rakefile CHANGED
@@ -10,5 +10,11 @@ rescue Bundler::BundlerError => e
10
10
  end
11
11
 
12
12
  require 'rspec/core/rake_task'
13
- RSpec::Core::RakeTask.new(:spec)
14
- task :default => :spec
13
+ RSpec::Core::RakeTask.new(:spec) do |task|
14
+ file_list = FileList['spec/**/*_spec.rb']
15
+ file_list -= ['spec/fest_spec.rb',
16
+ 'spec/volume_spec.rb']
17
+ task.pattern = file_list
18
+ end
19
+
20
+ task default: :spec
data/changelog.org CHANGED
@@ -1,3 +1,9 @@
1
+ ** 1.3.10 (2015-28-09 Пн)
2
+ - initialize with params for yml file
3
+ - check conditions @params['conditions'] or conditions.yml
4
+ - delete module conditions
5
+ - delete pluraform ...
6
+ - delete accessor params ...
1
7
  ** 1.2.10 (2015-03-11 Ср)
2
8
  - say without params
3
9
  - attr_accessor params
@@ -0,0 +1,7 @@
1
+ ---
2
+ light:
3
+ - "exit if @backlight.nil? && `xbacklight`.to_i == 0"
4
+ players:
5
+ - "['xbmc', 'kodi', 'vlc'].each do |player|"
6
+ - "exit if `ps -el | grep '#{player}' | wc -l`.to_i > 0"
7
+ - "end"
@@ -0,0 +1,20 @@
1
+ ---
2
+ path:
3
+ '/tmp'
4
+ current_volume:
5
+ - "`amixer | grep -o '[0-9]*' | sed '5 ! d' `.to_i"
6
+ index:
7
+ - "index = `ls -r #{@path} | grep -o '[0-9]*' | sed '1 ! d'`.to_i"
8
+ - "index > 0 ? index += 1 : index = 1"
9
+ min_volume:
10
+ 20
11
+ max_volume:
12
+ 60
13
+ step:
14
+ 4
15
+ language:
16
+ 'voice_msu_ru_nsh_clunits'
17
+ backlight:
18
+ nil
19
+ conditions:
20
+ {}
data/fest.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'fest'
3
- gem.version = '1.2.10'
3
+ gem.version = '1.3.10'
4
4
  gem.authors = 'Alexsey Ermolaev'
5
5
  gem.email = 'afay.zangetsu@gmail.com'
6
6
  gem.homepage = 'https://github.com/AfsmNGhr/fest'
@@ -8,11 +8,11 @@ Gem::Specification.new do |gem|
8
8
  gem.summary = 'Ruby wrapper for festival speech engine'
9
9
  gem.license = 'MIT'
10
10
 
11
- gem.add_development_dependency 'rake', '~> 0'
12
- gem.add_development_dependency 'rspec', '3.2.0'
11
+ gem.add_development_dependency 'rake', '~> 10.4'
12
+ gem.add_development_dependency 'rspec', '~> 3.3'
13
13
 
14
14
  gem.files = `git ls-files`.split("\n")
15
- gem.require_paths = ['lib']
15
+ gem.require_paths = ['lib', 'config']
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
 
18
18
  gem.extra_rdoc_files = ['License.org', 'README.md']
data/lib/fest/volume.rb CHANGED
@@ -17,28 +17,17 @@ module Volume
17
17
  )
18
18
  end
19
19
 
20
- def inputs
21
- @inputs = `pactl list sink-inputs | grep № | grep -o '[0-9]*'`.split("\n")
20
+ def sink_inputs
21
+ @inputs = `pactl list sink-inputs | grep '' | grep -o '[0-9]*'`.split("\n")
22
22
  end
23
23
 
24
- def turn_down_volume
24
+ def change_volume(volume, break_volume, step)
25
+ change = volume > break_volume ? 'down' : 'up'
25
26
  @inputs.each do |input|
26
- volume = @current_volume
27
27
  loop do
28
28
  system("pactl set-sink-input-volume #{input} '#{volume * 655}'")
29
- volume -= @step
30
- break if volume < @volume
31
- end
32
- end
33
- end
34
-
35
- def return_current_volume
36
- @inputs.each do |input|
37
- volume = @volume
38
- loop do
39
- system("pactl set-sink-input-volume #{input} '#{volume * 655}'")
40
- volume += @step
41
- break if volume > @current_volume
29
+ change == 'up' ? volume += step : volume -= step
30
+ break if change == 'up' ? volume > break_volume : volume < break_volume
42
31
  end
43
32
  end
44
33
  end
data/lib/fest.rb CHANGED
@@ -2,33 +2,38 @@
2
2
  # Ruby wrapper for Festival speech engine
3
3
  # author Alexsey Ermolaev afay.zangetsu@gmail.com
4
4
 
5
- require_relative './fest/params'
5
+ require 'bundler'
6
+ GEM_ROOT = Bundler.rubygems.find_name('fest').first.full_gem_path
6
7
  require_relative './fest/volume'
7
- require_relative './fest/conditions'
8
- #
8
+ require 'yaml'
9
+
9
10
  class Fest
10
- include Params
11
11
  include Volume
12
- include Conditions
13
- attr_accessor :params
14
12
 
15
13
  def say(string)
16
- init
17
14
  check_conditions
18
15
  make_wav(string)
19
16
  expect_if_paplay_now
20
17
  play_wav
21
18
  end
22
19
 
23
- def init
24
- @params ||= {}
25
- current_volume
26
- min_volume
27
- max_volume
28
- language
29
- index
30
- path
31
- step
20
+ def initialize(params = {})
21
+ params =
22
+ YAML.load_file("#{GEM_ROOT}/config/default.yml") if params == {}
23
+ params.each do |key, value|
24
+ instance_variable_set(
25
+ "@#{key}",
26
+ value.is_a?(Array) ? eval(value.join('; ')) : value
27
+ )
28
+ end
29
+ end
30
+
31
+ def check_conditions
32
+ @conditions =
33
+ YAML.load_file("#{GEM_ROOT}/config/conditions.yml") if @conditions == {}
34
+ @conditions.values.each do |value|
35
+ eval(value.join('; '))
36
+ end
32
37
  end
33
38
 
34
39
  def make_wav(string)
@@ -46,26 +51,17 @@ class Fest
46
51
  def play_wav
47
52
  check_optimal_volume
48
53
  optimize_volume
49
- inputs
50
- turn_down_volume
54
+ sink_inputs
55
+ change_volume(@current_volume, @volume, @step)
51
56
  system("paplay #{@path}/say_#{@index}.wav \
52
57
  --volume='#{@optimize_volume * 655}' > /dev/null 2>&1")
53
- return_current_volume
54
- system("rm -f #{@path}/say_#{@index}.wav")
58
+ change_volume(@volume, @current_volume, @step)
59
+ delete_wav
55
60
  end
56
61
 
57
- def pluralform(number, array)
58
- n = number % 100
59
- m = n % 10
60
-
61
- if n > 10 && n < 20
62
- array[2]
63
- elsif m > 1 && m < 5
64
- array[1]
65
- elsif m == 1
66
- array[0]
67
- else
68
- array[2]
62
+ def delete_wav
63
+ if File.exist?("#{@path}/say_#{@index}.wav")
64
+ File.delete("#{@path}/say_#{@index}.wav")
69
65
  end
70
66
  end
71
67
  end
data/spec/fest_spec.rb ADDED
@@ -0,0 +1,61 @@
1
+ # coding: utf-8
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Fest do
5
+ before(:each) do
6
+ @fest = Fest.new
7
+ params = YAML.load_file("#{GEM_ROOT}/config/default.yml")
8
+ @index = params['index']
9
+ @path = params['path']
10
+ end
11
+
12
+ context '#say' do
13
+ it 'check successfull say' do
14
+ @fest.say('Начинаю тъэ+с т+ирова ние')
15
+ expect($?.success?).to be_truthy
16
+ end
17
+ end
18
+
19
+ context '#make_wav' do
20
+ it 'successfull make wav?' do
21
+ @fest.make_wav('Пример')
22
+ expect($?.success?).to be_truthy
23
+ end
24
+
25
+ it 'pid not eq latest' do
26
+ pid = $?.pid
27
+ @fest.make_wav('Пример')
28
+ expect(pid).not_to eq($?.pid)
29
+ end
30
+
31
+ it 'index change after make wav' do
32
+ i = `ls -r #{@path} | grep -o '[0-9]*' | sed "1 ! d"`.to_i
33
+ @fest.make_wav('Пример')
34
+ expect(@index).not_to eq(i)
35
+ end
36
+ end
37
+
38
+ context '#delete_wav' do
39
+ it 'with successfull?' do
40
+ @fest.make_wav('Пример')
41
+ @fest.delete_wav
42
+ expect($?.success?).to be_truthy
43
+ end
44
+
45
+ it 'index change' do
46
+ i = `ls -r #{@path} | grep -o '[0-9]*' | sed "1 ! d"`.to_i
47
+ @fest.make_wav('Пример')
48
+ @fest.delete_wav
49
+ x = `ls -r #{@path} | grep -o '[0-9]*' | sed "1 ! d"`.to_i
50
+ expect(i).to eq(x)
51
+ end
52
+ end
53
+
54
+ context 'for pause' do
55
+ it '#play_wav' do
56
+ @fest.make_wav('Вы числ+яю энт ро+п+ии ю вселенной')
57
+ @fest.play_wav
58
+ expect($?.success?).to be_truthy
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Fest do
4
+ describe '#initialize' do
5
+ params = YAML.load_file("#{GEM_ROOT}/config/default.yml")
6
+ let(:loader) { described_class.new(params) }
7
+
8
+ params.each do |key, value|
9
+ let(":#{key}") { value.is_a?(Array) ? eval(value.join('; ')) : value }
10
+
11
+ context "when initialized with a set of @#{key}" do
12
+ it "from params['#{key}']" do
13
+ @path = params['path'] if key == 'index'
14
+ expect(loader.instance_variable_get("@#{key}".to_sym)).
15
+ to eq(value.is_a?(Array) ? eval(value.join('; ')) : value)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe Fest do
4
+ describe '#initialize' do
5
+ params = YAML.load_file("#{GEM_ROOT}/config/default.yml")
6
+ let(:loader) { described_class.new }
7
+
8
+ params.each do |key, value|
9
+ let(":#{key}") { value.is_a?(Array) ? eval(value.join('; ')) : value }
10
+
11
+ context "when initialized with a set of @#{key}" do
12
+ it "from params['#{key}']" do
13
+ @path = params['path'] if key == 'index'
14
+ expect(loader.instance_variable_get("@#{key}".to_sym)).
15
+ to eq(value.is_a?(Array) ? eval(value.join('; ')) : value)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fest
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.10
4
+ version: 1.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexsey Ermolaev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-11 00:00:00.000000000 Z
11
+ date: 2015-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '10.4'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '10.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.2.0
33
+ version: '3.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 3.2.0
40
+ version: '3.3'
41
41
  description: Ruby wrapper for festival scripts
42
42
  email: afay.zangetsu@gmail.com
43
43
  executables: []
@@ -47,19 +47,21 @@ extra_rdoc_files:
47
47
  - README.md
48
48
  files:
49
49
  - ".gitignore"
50
+ - ".rspec"
50
51
  - ".travis.yml"
51
52
  - Gemfile
52
53
  - License.org
53
54
  - README.md
54
55
  - Rakefile
55
56
  - changelog.org
57
+ - config/conditions.yml
58
+ - config/default.yml
56
59
  - fest.gemspec
57
60
  - lib/fest.rb
58
- - lib/fest/conditions.rb
59
- - lib/fest/params.rb
60
61
  - lib/fest/volume.rb
61
- - spec/custom_params_spec.rb
62
- - spec/default_params_spec.rb
62
+ - spec/fest_spec.rb
63
+ - spec/params/custom_spec.rb
64
+ - spec/params/default_spec.rb
63
65
  - spec/spec_helper.rb
64
66
  homepage: https://github.com/AfsmNGhr/fest
65
67
  licenses:
@@ -69,6 +71,7 @@ post_install_message:
69
71
  rdoc_options: []
70
72
  require_paths:
71
73
  - lib
74
+ - config
72
75
  required_ruby_version: !ruby/object:Gem::Requirement
73
76
  requirements:
74
77
  - - ">="
@@ -85,12 +88,12 @@ requirements:
85
88
  - Festival snpeech engine
86
89
  - xbacklight
87
90
  rubyforge_project:
88
- rubygems_version: 2.4.6
91
+ rubygems_version: 2.5.0
89
92
  signing_key:
90
93
  specification_version: 4
91
94
  summary: Ruby wrapper for festival speech engine
92
95
  test_files:
93
- - spec/custom_params_spec.rb
94
- - spec/default_params_spec.rb
96
+ - spec/fest_spec.rb
97
+ - spec/params/custom_spec.rb
98
+ - spec/params/default_spec.rb
95
99
  - spec/spec_helper.rb
96
- has_rdoc:
@@ -1,19 +0,0 @@
1
- # coding: utf-8
2
- #
3
- module Conditions
4
- def check_conditions
5
- check_light
6
- check_home_theater
7
- end
8
-
9
- def check_light
10
- exit if @params[:backlight].nil? && `xbacklight`.to_i == 0
11
- end
12
-
13
- def check_home_theater
14
- xbmc = `ps -el | grep xbmc | wc -l`.to_i
15
- vlc = `ps -el | grep vlc | wc -l`.to_i
16
- kodi = `ps -el | grep kodi | wc -l`.to_i
17
- exit if xbmc > 0 || vlc > 0 || kodi > 0
18
- end
19
- end
data/lib/fest/params.rb DELETED
@@ -1,32 +0,0 @@
1
- # coding: utf-8
2
- #
3
- module Params
4
- def path
5
- @path = @params[:path] || '/tmp'
6
- end
7
-
8
- def current_volume
9
- @current_volume = `amixer | grep -o '[0-9]*' | sed "5 ! d"`.to_i
10
- end
11
-
12
- def index
13
- @index = `ls -r #{@path} | grep -o '[0-9]*' | sed "1 ! d"`.to_i
14
- @index > 0 ? @index += 1 : @index = 1
15
- end
16
-
17
- def min_volume
18
- @min_volume = @params[:min_volume] || 20
19
- end
20
-
21
- def max_volume
22
- @max_volume = @params[:max_volume] || 60
23
- end
24
-
25
- def step
26
- @step = @params[:step] || 4
27
- end
28
-
29
- def language
30
- @language = @params[:language] || 'voice_msu_ru_nsh_clunits'
31
- end
32
- end
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Fest do
4
- before(:each) do
5
- @fest = Fest.new
6
- @fest.params = {:language => 'cmu_us_slt_arctic_hts',
7
- :min_volume => 30,
8
- :max_volume => 70,
9
- :step => 3,
10
- :path => '~/'}
11
- end
12
-
13
- it 'check custom params' do
14
- params = {:language => 'cmu_us_slt_arctic_hts',
15
- :min_volume => 30,
16
- :max_volume => 70,
17
- :step => 3,
18
- :path => '~/'}
19
- expect(@fest.params).to eq(params)
20
- end
21
-
22
- it 'check custom path in params' do
23
- expect(@fest.path).to eq('~/')
24
- end
25
-
26
- it 'check custom min volume' do
27
- expect(@fest.min_volume).to eq(30)
28
- end
29
-
30
- it 'check custom max volume' do
31
- expect(@fest.max_volume).to eq(70)
32
- end
33
-
34
- it 'check custom step' do
35
- expect(@fest.step).to eq(3)
36
- end
37
-
38
- it 'check custom language' do
39
- expect(@fest.language).to eq('cmu_us_slt_arctic_hts')
40
- end
41
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Fest do
4
- before(:each) do
5
- @fest = Fest.new
6
- @fest.params = {}
7
- end
8
-
9
- it 'check default params' do
10
- expect(@fest.params).to eq({})
11
- end
12
-
13
- it 'check default path' do
14
- expect(@fest.path).to eq('/tmp')
15
- end
16
-
17
- it 'check current volume' do
18
- vol = `amixer | grep -o '[0-9]*' | sed "5 ! d"`.to_i
19
- expect(@fest.current_volume).to eq(vol)
20
- end
21
-
22
- it 'check index' do
23
- i = `ls -r #{@path} | grep -o '[0-9]*' | sed "1 ! d"`.to_i
24
- expect(@fest.index).not_to eq(i)
25
- end
26
-
27
- it 'check default min volume' do
28
- expect(@fest.min_volume).to eq(20)
29
- end
30
-
31
- it 'check default max volume' do
32
- expect(@fest.max_volume).to eq(60)
33
- end
34
-
35
- it 'check default step' do
36
- expect(@fest.step).to eq(4)
37
- end
38
-
39
- it 'check default language' do
40
- expect(@fest.language).to eq('voice_msu_ru_nsh_clunits')
41
- end
42
- end