Pachelbel 1.1.1 → 1.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/project/Pachelbel.rb +27 -0
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aea4875ded467e66eb745597ecd7e59105247c74
4
- data.tar.gz: 0c9f982b8d275cd225c45458f1a9b2b377344885
3
+ metadata.gz: a1db4add5dbc5c87afe3f908be78189e4cb7119d
4
+ data.tar.gz: 3a4d363014c9299837d9d5962dd746e64ae01fc5
5
5
  SHA512:
6
- metadata.gz: 50c8ba64eaafc27cf70fc01eac5586c7429c29e10f9991e843c4381d9d2a44adbf033fe87bc724e26e06c1c9f87d8297da659e9b50ff2098a01adf4725dcde0c
7
- data.tar.gz: 6ccb28117de4cbacb0e82c36ceb2ed75bbeebe3899e8c6e29b84a4e4b4d53dc7e3551795ea06b86aaadd1ce0316d2094978938374c9b6bfbff7169f068a79fba
6
+ metadata.gz: 049cffb1cba4b97f6f378fa4623cda461688a8e5f0e73a71f51a0e6f24685426ab6e31b98bd16a4ed8db9785fb3abe434af38e8adad7cfac1ee2817d38d3b8fe
7
+ data.tar.gz: c18a5b399c16eedde445fb24104cabeba6bb7a4008ecd900ad0390ae0ca552d24f8a5a2145d3dcc7f1a295a43c42d36ff87b60f034dc3979c815d892e201dfd1
@@ -1,15 +1,22 @@
1
1
  module Pachelbel
2
2
  class AudioContext
3
3
  attr_reader :webview
4
+ attr_reader :locked
4
5
 
5
6
  HTML = '<script>' + 'window.AudioContext = window.AudioContext || window.webkitAudioContext;' +
6
7
  'var audio_context = new AudioContext();' + 'var audio_nodes = [audio_context.destination];' + '</script>'
7
8
 
9
+ def on_ready(&block)
10
+ @on_ready.push block
11
+ end
12
+
8
13
  def run_js(script)
9
14
  @webview.stringByEvaluatingJavaScriptFromString script
10
15
  end
11
16
 
12
17
  def initialize
18
+ @locked = true
19
+ @on_ready = []
13
20
  @webview = UIWebView.new
14
21
  @webview.delegate = self
15
22
  @webview.loadHTMLString HTML, baseURL: nil
@@ -17,6 +24,26 @@ module Pachelbel
17
24
 
18
25
  def webViewDidFinishLoad(_)
19
26
  run_js 'audio_context.createOscillator();' # workaround to start timer
27
+
28
+ run_js 'var unlock_iframe = document.createElement("IFRAME");
29
+ unlock_iframe.setAttribute("src", "let://freedom.ring");'
30
+
31
+ run_js 'unlock_function = function() { document.documentElement.appendChild(unlock_iframe); }'
32
+
33
+ run_js 'pollster = function() { if (audio_context.currentTime === 0) { setTimeout(pollster, 0); } else { unlock_function(); } }'
34
+ run_js 'setTimeout(pollster, 0);'
35
+ end
36
+
37
+ def webView(_, shouldStartLoadWithRequest: request, navigationType: _)
38
+ case request.URL.absoluteString
39
+ when "let://freedom.ring"
40
+ @locked = false
41
+ @on_ready.each(&:call)
42
+ @on_ready.clear
43
+ return false
44
+ else
45
+ return true
46
+ end
20
47
  end
21
48
 
22
49
  # API Attributes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Pachelbel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Drew Carey Buglione
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-06 00:00:00.000000000 Z
11
+ date: 2014-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake