Module: TextTube::EmbeddingAudio
- Extended by:
- Filterable
- Defined in:
- lib/texttube/filters/embedding_audio.rb
Overview
Embed some audio via [audio]
Constant Summary collapse
- DEFAULTS =
default attributes
{ src_base: "/streams/", preload: "metadata", fallback_text: "Your browser does not support HTML5, update your browser you fool!", controls: "controls", }
- R_link =
/ # [audio[url|description]] \[audio\[ # opening square brackets ([^\|]+) # link \| # separator ([^\[]+) # description \]\] # closing square brackets /x
Class Method Summary collapse
-
.render_tag(link, desc, attributes) ⇒ Object
Does the grunt work of rendering the tag.
- .run(content, options = {}) ⇒ String
Methods included from Filterable
Class Method Details
.render_tag(link, desc, attributes) ⇒ Object
Does the grunt work of rendering the tag.
51 52 53 54 55 56 57 58 |
# File 'lib/texttube/filters/embedding_audio.rb', line 51 def self.render_tag(link,desc,attributes) fallback_text = attributes.delete(:fallback_text) src_base = attributes.delete(:src_base) make_inner = ->(lnk){%Q!<source src='#{src_base}#{lnk}' type='audio/#{File.extname(lnk)[1..-1]}' />!} inner = make_inner.( link ) inner += make_inner.( link.sub(/m4a$/, "ogg") ) if File.extname(link) == ".m4a" %Q!<div class='audio'><h3>#{desc}</h3><audio #{attributes.map{|(k,v)| "#{k}='#{v}'" }.join(" ")}>#{inner}#{fallback_text}</audio></div>!.strip.gsub /\s+/, " " end |
.run(content, options = {}) ⇒ String
35 36 37 38 39 40 41 42 43 |
# File 'lib/texttube/filters/embedding_audio.rb', line 35 def self.run(content, ={}) ||= {} attributes = DEFAULTS.merge content.gsub( R_link ) { |m| url,desc = $1,$2 EmbeddingAudio::render_tag(url,desc,attributes) } end |